verilog學習筆記(加法器)


編程語言,光看書其實作用不大的,關鍵還需要自己進行實踐。看書的時候,你覺得自己明白了、弄懂了,等到用modelsim實踐的時候還是會出現這樣那樣的問題。因此,還是希望自己能夠不斷地訓練和練習,這樣可以達到熟能生巧的程度。就今天的加法器來說,其實內容還是比較簡單的。主要就是數值和進位之間的關系。這些內容在計算機組成原理上面都會提到,關鍵是自己是否真正掌握。閑話不多說,可以編寫一個verilog代碼試試。

 

[cpp]  view plain  copy
 
  1. module add(a, b, in, c, out);  
  2.   
  3.     input a;  
  4.     input b;  
  5.     input in;  
  6.     output c;  
  7.     output out;  
  8.       
  9.     assign {out, c} = a + b + in;  
  10. endmodule  

    這里直接用數據流的形式解決。當然,大家可以根據自己的情況選擇門電路編寫也是可以的,畢竟條條大路通羅馬嘛。不多說,繼續編寫testbench文件,

 

 

[cpp]  view plain  copy
 
  1. `timescale 1ns/1ns  
  2.   
  3. module count_t;  
  4.     
  5.   reg clk;  
  6.   reg a;  
  7.   reg b;  
  8.   reg in;  
  9.   wire c;  
  10.   wire out;  
  11.     
  12.   add process(a, b, in, c, out);  
  13.     
  14.   initial  
  15.       clk = 0;  
  16.   always    
  17.       forever  #5 clk = ~clk;  
  18.     
  19.   initial  
  20.   begin  
  21.         a = 0; b = 0; in = 0;  
  22.         #10  a = 0; b = 0; in = 1;  
  23.         #10  a = 0; b = 1; in = 0;  
  24.         #10  a = 0; b = 1; in = 1;  
  25.         #10  a = 1; b = 0; in = 0;  
  26.         #10  a = 1; b = 0; in = 1;  
  27.         #10  a = 1; b = 1; in = 0;  
  28.         #10  a = 1; b = 1; in = 1;  
  29.    
  30.  end     
  31.         
  32.   initial  
  33.   begin  
  34.       #200 $finish;  
  35.   end     
  36.         
  37.   initial  
  38.     $monitor(" out = %d, c = %d\n", out, c);  
  39.     
  40. endmodule  

    我們知道,兩個數字相加,此時如果還有進位信息的話,那么就會出現8種情況。如果大家不覺得煩的話,可以把這8種情況都測試一遍。當然如果不想看波形,直接用minitor打印出來也是可以的。

測試模塊用於檢測模塊設計是否正確。它給出模塊的輸入信號,觀察模塊的內部信號和輸出信號,如果發現結果與預期有偏差,則需要對模塊進行修改

綜合就是把xxx.v文件送到綜合器處理,在選定實現器件和選取生成Verilog網表的前提下,啟動綜合器的編譯。綜合器會自動生成一系列文件,向操作者報告綜合的結果。其中生成的Verilog Netlist文件(擴展名為xxx.vm),表示自動生成的門級邏輯結構網表,仍然用Verilog語句表示,但是比輸入的源文件更加具體,可以用測試模塊調用它做同樣的仿真,運行結果更接近實際器件

布局布線就是把綜合后生成的另一種文件(EDIF),在不顯工具控制下進行處理,啟動布線工具的編譯。布局布線工具會自動生成一系列文件,向操作者報告布局布線的結果。其中生成的Verilog Netlist文件(擴展名為xxx.vo),表示自動生成的具體基本門級結構和連接的延遲,仍然用了Verilog基本不見結構語句和連接線的延遲參數的重新定義表示,庫中的基本部件也進一步具體化,比綜合后的擴展名為xxx.vm的文件更具體。可以用同一個測試模塊調用它做同樣的仿真,運行結果與實際器件運行結果幾乎完全一致。

學習網址:http://blog.csdn.net/feixiaoxing/article/details/8927675


免責聲明!

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



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