亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Verilog Basics的使用方法有哪些

發布時間:2021-12-17 16:39:24 來源:億速云 閱讀:113 作者:iii 欄目:互聯網科技

這篇文章主要講解了“Verilog Basics的使用方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Verilog Basics的使用方法有哪些”吧!

Control Statements

Verilog中的if, else, repeat, while, for, case看起來完全像C語言!

但是Verilog是HDL,我們需要用這些關鍵字來描述硬件,這意味著如果不小心對待這些控制語句,我們的硬件可能會出現問題。

If-else

if-else語句根據不同的條件來決定是否執行哪一部分代碼。

// begin and end act like curly braces in C/C++.if (enable == 1'b1) begin  data = 10; // Decimal assigned  address = 16'hDEAD; // Hexadecimal  wr_enable = 1'b1; // Binaryend else begin  data = 32'b0;  wr_enable = 1'b0;  address = address + 1;end

和C語言一樣,我們可以在Verilog條件語句中使用任何運算符,甚至嵌套if else語句。

但是在對組合邏輯進行Verilog HDL建模時,我們需要防止生成Latch。

Case

當需要檢查多個值的變量的情況下使用Case語句,而不是使用多個嵌套的if-else語句。


case(address)0 : $display ("It is 11:40PM");1 : $display ("I am feeling sleepy");2 : $display ("Let me skip this tutorial");default : $display ("Need to complete");endcase

case語句以關鍵字case開頭,以關鍵字endcase結尾。

在這兩個關鍵字中列出了這些case條件和相應的希望執行的語句。

和if-else一樣,建議在case語句中添加default case語句,因為如果組合邏輯Verilog HDL建模時,if-else和case-endcase語句中沒有涵蓋所有的情況(在If中沒有'else'或者在Case中沒有'default'),那么綜合工具可能會推斷出Latch。

While

如果判斷的條件返回true,則while語句將重復執行語句塊中的代碼。While循環通常不用于實際的硬件建模,但是它們用于測試平臺(驗證)。與其他語句塊一樣,它們由begin和end分隔。


while (free_time) begin$display ("Continue with webpage development");end

只要設置free_time變量為true,就會一直執行begin和end中的代碼。即打印“Continue with webpage development”。

module counter (clk,rst,enable,count);input clk, rst, enable;output [3:0] count;reg [3:0] count;         always @ (posedge clk or posedge rst)if (rst) begincount <= 0;end else begin : COUNTwhile (enable) begincount <= count + 1;disable COUNT;endendendmodule

上面的例子使用了Verilog的大多數結構。我們可以注意到其中有一個名為always的語句,這也說明了Verilog的一個關鍵特性:

大多數軟件語言都是按順序執行的,而Verilog程序通常會并行執行許多語句塊。 

在上面的示例中,當rst或clk達到上升沿時,always語句塊將會一直運行。在同一個verilog模塊中,可以同時執行多個always語句塊。

For loop

Verilog中的For循環與C或C ++中的循環幾乎相同。唯一的區別是Verilog不支持++和 -- 運算符,我們必須寫出完整的i = i + 1。


for (i = 0; i < 16; i = i +1) begin$display ("Current value of i is %d", i);end

上述代碼將按順序打印0到15之間的數字。

使用for循環進行寄存器傳輸級(RTL)建模時,我們需要確保我們的代碼在硬件上可以實現,既保證我們的循環次數是有限且確定的。

Repeat

Repeat和上面的for循環類似。我們在Repeat中直接明確運行了多少次。


repeat (16) begin$display ("Current value of i is %d", i);i = i + 1;end

Variable Assignment

在數字IC中,有兩種類型的元素,組合元素時序元素。 

我們如何用Verilog建模這兩 中元素呢?Verilog提供了兩種方法來建模組合邏輯,提供了一種方法來建模時序邏輯。

使用assign和always語句對組合邏輯建模。

使用always語句對時序邏輯進行建模。

另外,在測試平臺中還可以使用 Initial 語句對變量進行賦值。

Initial Blocks

顧名思義,Initial語句塊僅在仿真開始時執行一次,用于初始化變量。

initial beginclk = 0;reset = 0;req_0 = 0;req_1 = 0;end

在上面的例子中,在仿真開始時(即當t= 0時),begin和end塊內的所有變量都被初始化為零。

感謝各位的閱讀,以上就是“Verilog Basics的使用方法有哪些”的內容了,經過本文的學習后,相信大家對Verilog Basics的使用方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高密市| 卫辉市| 江源县| 固安县| 贵阳市| 万宁市| 宁津县| 西宁市| 西乌珠穆沁旗| 贵德县| 武威市| 玉林市| 电白县| 防城港市| 阳山县| 新闻| 普陀区| 佛山市| 中卫市| 延寿县| 商都县| 青海省| 安阳县| 遂平县| 大理市| 陆良县| 巍山| 札达县| 连南| 赣州市| 文化| 景宁| 旺苍县| 福州市| 宁化县| 恩施市| 太原市| 东兰县| 五大连池市| 大港区| 泽州县|