verilog學習記(快速入門)

來源:互聯網
上載者:User

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】  

    在前面的一篇部落格中,我們說到可以使用modelsim對verilog進行測試和模擬。事實上,還有很多開源的工具可以使用,比如說iverilog+gtkwave,大家如果有興趣,可以在網上尋找相關的內容。現在的晶片設計越來越複雜,如果按照基本的門電路設計,那麼效率是非常低的。恰當地使用硬體描述語言,可以有效地提高我們工作效率。同時,如果深入瞭解了verilog,對於我們瞭解晶片的設計流程也非常有益。在購物網站上,有這麼一本書,書名為《電腦原理與設計-Verilog HDL版》,它從另外一個角度幫我們描述了電腦到底是怎麼一回事,個人感覺內容非常好,也非常實在。

    當然,回到今天的內容。有過軟體開發經驗的朋友都知道,我們編寫代碼的時候經常需要編寫測試案例對代碼功能進行測試。其實編寫verilog代碼也是一樣的。最簡單的verilog代碼也需要兩部分的內容,一部分就是實現模組功能,另外一部分就是實現testbench功能,也就是測試我們設計的模組是否滿足需求。verilog代碼和C語言很相似,大家不需要有什麼顧慮。首先,我們還是看看verilog module的代碼內容,

module add(a, b, c);    input a;  input b;  output c;    assign c = a & b;endmodule

    工科的同學都學過數字電路,一般來說數字電路包括邏輯電路和時序電路。上面的代碼實現就是一個最簡單的邏輯功能,也就是與功能。其中a、b為輸入訊號,c為輸出訊號。那麼testbench代碼是什麼樣的呢?我們接著看,

`timescale 1ns/1nsmodule add_t;    reg a;  reg b;  wire c;    add t(a,b,c);    initial    begin        #10 a = 1; b = 0;        #10 a = 0; b = 1;        #10 a = 0; b = 0;        #10 a = 1; b = 1;        #50 $finish;    end    initial    $monitor("a = %d, ", a, " b = %d, ", b, "c = %d\n", c);endmodule

    從代碼中,大家可以看到initial的內容,也可以看到add的內容。add模組表示當前實現了一個add執行個體,名稱為t。initial模組中的內容是測試內容,從10ns開始,a為高電平、b為低電平;再過10ns,a為低電平、b為高電平;依次類推,直到訊號finish為止。在每一次訊號翻轉的時候,我們都會利用monitor列印相關資料資訊。當然,這些都是一些代碼的內容,大家可以在modelsim實踐一下,看一下wave或者是dataflow,會有更多的收穫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.