3_8譯碼器Verilog HDL語言的簡單實現


最近在學Verilog HDL語言,覺得learn in doing是比較好的學習方式,所以我們來直接分析分析代碼好了。

先來一波代碼: 

 

 1 module q_decode_38(data_in,data_out);
 2       
 3         input[2:0] data_in;           //端口聲明
 4         output[7:0] data_out;   
 5         reg[7:0] data_out;
 6          
 7 always@(data_in) 
 8    begin 
 9         case(data_in)
10                  3'd0:data_out = 8'b0000_0001;
11                  3'd1:data_out = 8'b0000_0010;
12                  3'd2:data_out = 8'b0000_0100;
13                  3'd3:data_out = 8'b0000_1000;
14                  3'd4:data_out = 8'b0001_0000;
15                  3'd5:data_out = 8'b0010_0000;
16                  3'd6:data_out = 8'b0100_0000;
17                  3'd7:data_out = 8'b1000_0000;
18          endcase
19      end
20      
21 endmodule

 

代碼分析如下:

    知識點:

   (1)基本語句

     1)條件語句---case語句

         case語句很明顯了,格式跟c語言中的類似,不解釋。值得注意的是上述代碼中是不是少了defaule這種情況呢?此處省略是因為已列出所有的情況 ,不過一般不提倡省略,因為若出現了未知情況,則很容易生成不必要的鎖存器。      

    2)順序塊語句---begin...end語句

         begin...end語句沒什么特殊要求,就是在順序塊begin...end之間的語句是從上至下、從左往右逐句執行的。

    3)過程語句---always語句

        always語句的格式是always@() 后加begin...end語句,括號中為觸發條件,上述代碼中表示,只要data_in的值發生變化,就執行always后的begin...end部分,否則不執行。

    (2)基本功能實現

      這是一個比較簡單的3-8譯碼器電路程序,具體功能就不說了,不過這倒是可以下載到FPGA板子里進行觀察,比如,可以通過三個撥碼開關控制8個led燈來觀察撥碼開關與led燈之間的狀態聯系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM