在本文中,我們將研究 Verilog 模塊的基本結構,查看一些使用 Verilog “wire”數據類型及其向量形式的示例,并簡要介紹 VHDL 和 Verilog 之間的一些區別。
Verilog和VHDL是常用來描述數字電路的兩種語言。在前一篇文章中我們討論VHDL 的基本概念。本文是我們關于 Verilog 的系列文章的起點。
在開始討論之前,讓我們先解決一個顯而易見的問題:我們真的需要同時了解這兩種語言嗎?
Verilog 和 VHDL 都是強大的工具,可用于設計復雜的數字電路。盡管這兩種 HDL 之間存在一些差異,但您可以自由選擇其中一種來掌握和使用。但是,我相信在某些時候,您將受益于至少對這兩種語言有基本的了解。有時作為設計師,我們需要一個示例代碼段來了解如何編寫項目。我們在網上沖浪了幾個小時,終于找到了我們需要的東西,但這對我們來說毫無意義——它是用我們完全不熟悉的 HDL 編寫的。如果沒有對語言的基本了解,我們可能無法完全理解這些技術。
Verilog 由 Gateway Design Automation 于 1984 年初設計(大約在美國國防部發起 VHDL 三年后)。在 DoD 的支持下,VHDL 于 1987 年成為 IEEE 標準。Verilog 直到 1995 年才進入現場。今天,VHDL 和 Verilog 都是流行的 HDL,FPGA 設計工具通常支持這兩種語言。
“Verilog”這個詞是“驗證”和“邏輯”這兩個詞的組合,因為該語言最初被建議作為一種模擬和驗證工具。讓我們開始了解 Verilog 的概念和語法。
作為第一個示例,讓我們為圖 1 所示的電路編寫 Verilog 代碼。
?

有兩個輸入和一個輸出。端口都有一點寬。該電路的功能是對兩個輸入進行“與”運算并將結果放在 out1 端口上。
Circuit_1 模塊的一種可能的 Verilog 描述是:

這兩行使用關鍵字“module”和“endmodule”來指定中間的行(第 2 到 7 行)都描述了一個名為“Circuit_1”的電路。這個名字是任意的,允許我們稍后引用這個電路。
這些行指定“Circuit_1”與其周圍環境的接口。輸入和輸出端口使用關鍵字“輸入”和“輸出”來描述。這些關鍵字之后是另一個關鍵字“wire”,然后是端口名稱(參見圖 1)。關鍵字“wire”指定了什么?“連線”是一種 Verilog 數據類型,表示設計中的物理連線。我們將在以后的文章中更詳細地討論 Verilog 數據類型,但現在,我們知道在我們的模塊中將有稱為 a、b 和 out1 的三根線,并且由于它們在端口聲明中指定,它們對應于模塊接口。
該行使用按位與運算符,即 &,來描述電路的功能。關鍵字“assign”將 a&b 放在輸出端口 out1 上。這種類型的分配稱為連續分配。之所以這樣調用,是因為每當右側的操作數發生變化時,賦值始終處于活動狀態,a&b 被評估并分配給 out1。我們可以將連續分配設想為一個組合電路,其輸出根據其輸入而不斷更新。在我們的例子中,這個組合電路是一個簡單的與門。Verilog HDL 中還有一些程序分配,將在以后的文章中討論。
現在,我們可以使用 Xilinx ISE 等軟件包來驗證上述代碼。您可以在此處找到該軟件的基于 Verilog 的教程?(PDF)。
下面的圖 2 顯示了 Circuit_1 模塊的 Verilog 和 VHDL 描述。
?

如您所見,在使用 VHDL 編碼時,我們必須包含一些庫。這些庫給出了數據類型和運算符的定義。考慮到這些庫的添加和 VHDL 的一般格式,我們觀察到 VHDL 代碼更加冗長。然而,這種冗長并非沒有優點。例如,VHDL 的庫管理功能在對更高級別的系統進行建模時會很有幫助。在以后的文章中,我們偶爾會討論這兩種 HDL 的優缺點。
大多數 Verilog 數據類型使用四個基本值。清單 1 中定義的連線可以采用以下值之一:
0:邏輯低或假條件
1:邏輯高或真條件
z:為高阻態(可用于描述一個三態緩沖器的輸出)
x:對于無關值或未知值(當輸入未初始化或兩個或多個沖突輸出連接在一起時)。
VHDL std_logic 數據類型可以采用九個不同的值,但其常用值是“0”、“1”、“Z”和“-”(“-”表示不關心)。
作為另一個例子,讓我們為圖 3 所示的電路(我們將標記為 Circuit_2)編寫 Verilog 代碼。

下面的 Verilog 代碼描述了這個電路:
?

?
上述代碼中使用的元素與示例 1 中的元素類似,只是在代碼的第 10 行中定義了一個內部信號。關鍵字“wire”用于指定此連接的數據類型。如上所述,“線”數據類型將轉換為設計中的物理線。
上面的代碼還使用了一些新的 Verilog 位運算符:~ 表示 NOT 和 |?用于 OR 操作。另一個有用的按位運算符是 XOR 運算的 ^。圖 4 顯示了 Circuit_2 模塊的 Verilog 和 VHDL 描述。這樣的比較可以幫助您了解這兩種語言之間的差異和相似之處。
?

對于我們的第三個也是最后一個示例,我們將為圖 5 所示的原理圖提供 Verilog 代碼。
?

如您所見,藍色輸入端口和紅色輸入端口之間存在一定的關系:對應的輸入與 AND 運算符組合。結果分配給輸出端口。在這種情況下,我們可以將信號分組并將它們視為向量。這使得代碼緊湊且可讀。
使用 Verilog 中的向量概念,我們可以輕松地擴展清單 1 中的代碼來描述上述電路(參見下面清單 3 中的代碼)。?
?

請注意,向量的索引范圍可以是升序(如上使用的 [0:2])或降序([2:0])。盡管上面使用了升序格式,但使用降序格式通常不太容易出錯。這是因為降序樣式符合我們的看法,即二進制數的最左邊位置具有最高索引。請注意,向量也在 VHDL 中使用。
下面的圖 6 顯示了清單 3 中代碼的 ISE 模擬。
?

在本文中,我們討論了同時學習 VHDL 和 Verilog 是一個好主意,我們研究了 Verilog 模塊的基本結構,并且我們熟悉了 Verilog “wire”數據類型及其向量形式。我們還簡要介紹了 VHDL 和 Verilog 之間的一些區別。Verilog 系列的下一篇文章將討論在 Verilog 中設計組合電路。

今天小編帶來了:ISSCC2022套餐,里面有文章、PPT、Tutorial等,同學可以拿回去自己學習研究。


1、深入理解SerDes(Serializer-Deserializer)之一
2、深入理解SerDes(Serializer-Deserializer)之二
3、科普:深入理解SerDes(Serializer-Deserializer)之三
4、資深工程師的ESD設計經驗分享
5、干貨分享,ESD防護方法及設計要點!
6、科普來了,一篇看懂ESD(靜電保護)原理和設計!
7、鎖相環(PLL)基本原理?及常見構建模塊
8、當鎖相環無法鎖定時,該怎么處理的呢?
9、高性能FPGA中的高速SERDES接口
10、什么是毫米波技術?它與其他低頻技術相比有何特點?
11、如何根據數據表規格算出鎖相環(PLL)中的相位噪聲
12、了解模數轉換器(ADC):解密分辨率和采樣率
13、究竟什么是鎖相環(PLL)
14、如何模擬一個鎖相環
15、了解鎖相環(PLL)瞬態響應
16、如何優化鎖相環(PLL)的瞬態響應
17、如何設計和仿真一個優化的鎖相環
18、鎖相環(PLL)?倍頻:瞬態響應和頻率合成
19、了解SAR?ADC
20、了解?Delta-Sigma?ADC
21、什么是數字 IC 設計?
22、什么是模擬 IC 設計?
23、什么是射頻集成電路設計?
24、學習射頻設計:選擇合適的射頻收發器 IC
25、連續時間 Sigma-Delta ADC:“無混疊”ADC
26、了解電壓基準?IC?的噪聲性能
27、數字還是模擬?I和Q的合并和分離應該怎么做?
28、良好通信鏈路性能的要求:IQ 調制和解調
29、如何為系統仿真建模數據轉換器?
30、干貨!CMOS射頻集成電路設計經典講義(Prof. Thomas Lee)
31、使用有效位數 (ENOB) 對 ADC 進行建模
32、以太網供電 (PoE) 的保護建議
33、保護高速接口的設計技巧
34、保護低速接口和電源電路設計技巧
35、使用互調多項式和有效位數對 ADC 進行建模
36、向 ADC 模型和 DAC 建模添加低通濾波器
37、揭秘芯片的內部設計原理和結構
38、Delta-Sigma ADCs中的噪聲簡介(一)
39、Delta-Sigma ADCs中的噪聲簡介(二)
40、Delta-Sigma ADCs 中的噪聲簡介(三)
41、了解Delta-Sigma ADCs 中的有效噪聲帶寬(一)
42、了解Delta-Sigma ADCs 中的有效噪聲帶寬(二)
43、放大器噪聲對 Delta-Sigma ADCs 的影響(一)
44、放大器噪聲對 Delta-Sigma ADCs 的影響(二)
45、參考電壓噪聲如何影響 Delta Sigma ADCs
46、如何在高分辨率Delta-Sigma ADCs電路中降低參考噪聲
47、時鐘信號如何影響精密ADC
48、了解電源噪聲如何影響 Delta-Sigma ADCs
49、運算放大器簡介和特性
50、使用 Delta-Sigma ADCs 降低電源噪聲的影響
51、如何設計帶有運算放大器的精密電流泵
52、鎖定放大器的基本原理
53、了解鎖定放大器的類型和相關的噪聲源
54、用于降低差分 ADC 驅動器諧波失真的 PCB 布局技術
55、干貨!《實用的RFIC技術》課程講義
56、如何在您的下一個 PCB 設計中消除反射噪聲
57、硅谷“八叛徒”與仙童半導體(Fairchild)的故事!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1、免費公開課:ISCAS 2015 :The Future of Radios_ Behzad Razavi
2、免費公開課:從 5 微米到 5 納米的模擬 CMOS(Willy Sansen)
3、免費公開課:變革性射頻毫米波電路(Harish Krishnaswamy)
4、免費公開課:ESSCIRC2019-講座-Low-Power SAR ADCs
5、免費公開課:ESSCIRC2019-講座-超低功耗接收器(Ultra-Low-Power Receivers)
6、免費公開課:CICC2019-基于 ADC 的有線收發器(Yohan Frans Xilinx)
7、免費公開課:ESSCIRC 2019-有線與數據轉換器應用中的抖動
8、免費公開課:ISSCC2021 -鎖相環簡介-Behzad Razavi
9、免費公開課:ISSCC2020-DC-DC 轉換器的模擬構建塊
10、免費公開課:ISSCC2020-小數N分頻數字鎖相環設計
11、免費公開課:ISSCC2020-無線收發器電路和架構的基礎知識(從 2G 到 5G)
12、免費公開課:ISSCC2020-從原理到應用的集成變壓器基礎
13、免費公開課:ISSCC2021-射頻和毫米波功率放大器設計的基礎
摩爾學堂(www.moorext.com)--摩爾學堂專注于半導體人才培訓,在線學習服務平臺!