我的 FPGA 學習歷程(04)—— 練習 verilog 硬件描述語言


       這篇講的是使用 verilog 硬件描述語言編寫一個 3 - 8 譯碼器。

       3 - 8 譯碼器是一個簡單的組合邏輯,用於實現並轉串,其輸入輸出關系如下:

                     | 輸入  |  輸出  |

                     -----------------

                     000 --> 0000_0001

                     001 --> 0000_0010

                     010 --> 0000_0100

                     011 --> 0000_1000

                     100 --> 0001_0000

                     101 --> 0010_0000

                     110 --> 0100_0000

                     111 --> 1000_0000

      新建工程,並新建如下的代碼的 verilog HDL 文件

module   my38decode
(
      input wire [2:0] a,  
      output reg [7:0] y
);
//*********************//
     integer i;         
//*********************//
    always @ (*)
    begin
        for (i=0;i<=7;i=i+1)  // a = 0 時,y[0] = 1'b1, y = 8'b0000_0001
          if (a == i)         // a = 1 時,u[1] = 1'b1, y = 8'b0000_0010
             y[i] = 1'b1;
          else
             y[i] = 1'b0;
     end
endmodule

這段代碼其實相當抽象(循環變量操作下標),但好在綜合工具還是能夠理解我們的用意。

建好的工程如下圖:

project

        可以在 Tool --> Netlist Viewers --> RTL Viewer 查看生成的 RTL 網表文件。

        下圖為 Tool 菜單和生成的網表文件。可以看出我們寫的代碼生成了幾個比較器,我們的輸入信號被擴大至 32 位(前29位自動填 0);比較器的 B 端口連接的是一些常量,當 32 位比較器在輸入相等時輸出 1,不等則輸出 0;7 個比較器輸出分別連接到 y 的 7 個引腳上。如圖,綜合器在 RTL(寄存器傳輸級)成功的實現了我們的要求。

Tool菜單RTL


免責聲明!

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



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