verilog基本语法学习笔记
input和output
module/endmodule :表征模塊的開始與結束。
example :模塊名可由用戶指定,可包含字母、數字及下劃線,需以字母開頭,區分大小寫
assign :賦值操作關鍵字,該關鍵字后可跟一個賦值表達式,該關鍵字是實現組合邏輯操作的一種主要描述方式。
input/output :表征該信號的方向,除輸入、輸出外還有一種inout(輸入輸出)型。
reg和wire
reg相當于存儲單元,wire型相當于物理連線,即reg型變量保持最后一次的賦值,而wire型變量需要持續的驅動。
在always塊中的變量,只能是reg型
使用wire型變量時,必須搭配assign
input、output、inout聲明的變量,默認都是wire型
wire對應于連續賦值,如assign
reg對應于過程賦值,如always塊、initial塊
多bit邏輯門
對于下面5個邏輯表達式
y1 = a & b;
y2 = a | b;
y3 = a ^ b;
y4 = ~(a & b);
y5 = ~(a | b);
電路圖:
語法說明:
[3:0]:表征該信號的位寬,實例中是推薦寫法,[0:3]、[4:1]等寫法也是合法的
對于邏輯表達式 y = a[7] & a[6] & a[5] & a[4] & a[3] & a[2] & a[1] & a[0];
其電路圖為:
Verilog代碼:
a[7]:可將一個多位寬信號中的一位或多位以此種方式進行單獨處理
& :按位與、歸并與操作,如該操作符只有一個操作數時,則將該操作數的所有位進行相與操作,可以實現與注釋部分相同的功能,但寫法更簡潔
一位全加器
對于表達式 {cout,s} = a + b + cin;
Verilog代碼
wire :線網型數據類型,verilog語法中的一種主要數據類型,用于表示線網型信號,與實際電路中的信號連線相對應。wire是verilog中的默認數據類型,此例中的輸入輸出信號沒有指定數據類型,則默認為wire型。除wire外,另外一種主要數據類型為reg,表示寄存器類型數據。
內部信號 :此例中的p、g為內部信號,可以簡化設計,增加代碼可讀性
觸發器
語法說明:
時序邏輯 :電路具有記憶功能,電路狀態不但與當前輸入有關,還與前一時刻的狀態有關。
同步邏輯 :在同一的時鐘信號激勵下工作,輸出只在時鐘的上升沿(或者下降沿)發生變化。
reg :除wire類型外,另外一種常用的數據類型,一般表示寄存器類型數據,不過并不絕對,記住一條原則:在always塊內被賦值的信號應定義成reg型,用assign語句賦值的信號應定義成wire型。
always :除assign外,另外一種實現賦值操作的關鍵字,兩者都不可嵌套,區別在于,assign語句只能實現組合邏輯賦值,且一個assign語句后面只能跟一條賦值表達式。而always即能實現組合邏輯賦值,又能實現時序邏輯賦值操作,且可以包含多條賦值表達式,多條賦值表達式,則應位于begin/end對中間。
過程語句
always
initial:
賦值語句
在一個過程塊中,阻塞賦值與非阻塞賦值只能使用其中一種
在時序邏輯電路中,兩種賦值方式可能或綜合出不同的電路結構。如下所示
為避免出現一些稀奇古怪的電路,我們只需記住以下規則:
i:在組合邏輯電路中,使用阻塞式賦值方式"=";
ii: 在時序邏輯電路中,使用非阻塞式賦值方式"<="
iii:在同一個always塊內,只能存在一種賦值方式。
iv:一個信號,只能在一個always或一個assign語句下賦值。
v:原則上來說,一個always塊內只處理一個或一類信號,不同的信號可在不同的always塊內處理。
vi: always塊內只能對reg型信號進行處理,不能對wire型數據賦值,也不能實例化模塊
過程賦值和連續賦值對比:(原文鏈接:https://blog.csdn.net/J_Hang/article/details/100633261)
連續賦值:
1)語法上,有關鍵詞“assign”來標識;
2)左側被賦值的數據類型必須是線網型數據(wire);
3)連續賦值語句不能出現在過程快中(initial/always);
4)連續賦值語句主要用來對組合邏輯進行建模以及線網數據間進行描述;
5)連續賦值語句產生作用后,賦值表達式中信號的任何變化都將立即被反映到賦值線網型數據的取值上;
過程賦值:
1)語法上,沒有關鍵詞“assign”;
2)左側被賦值的數據類型必須是寄存器類型的變量(reg);
3)過程性連續賦值語句只能出現在過程塊中;
4)過程性連續賦值語句主要用來對時序邏輯電路進行行為描述;
5)在過程賦值語句的情況下,只有在過程賦值語句被執行時才執行賦值操作,語句執行完后被賦值變量的取值不再受到賦值表達式的影響;
循環語句
宏替換
電路設計舉例
總結
以上是生活随笔為你收集整理的verilog基本语法学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红外线式触摸屏
- 下一篇: 开发板Linux手指滑动方向,移动端 手