
不可綜合語(yǔ)句經(jīng)常用在測(cè)試文件中,未注明的語(yǔ)句均是可綜合的
賦值語(yǔ)句
1.連續(xù)賦值語(yǔ)句——assign語(yǔ)句,用于對(duì)wire型變量賦值,是描述組合邏輯最常用的方法之一。
例:assign c=a&b; // a,b,c 均為wire型變量
2.過(guò)程賦值語(yǔ)句——用于對(duì)reg型變量賦值,有兩種方法:
非阻塞賦值方法:符號(hào)<=
阻塞賦值方法:符號(hào)為=
阻塞與非阻塞賦值的區(qū)別:
1.非阻塞賦值方式:
always @(posedge clk)
begin
b <= a;
c <= b;
end
非阻塞賦值在塊結(jié)束時(shí)才完成賦值操作(c的值比b的值落后一個(gè)時(shí)鐘周期)

2.阻塞賦值方式
always @(posedge clk)
begin
b = a;
c = b;
end
阻塞賦值語(yǔ)句在該語(yǔ)句結(jié)束時(shí)就完成賦值操作(在塊語(yǔ)句中,如果有多條阻塞賦值語(yǔ)句,在前面的賦值語(yǔ)句沒(méi)有完成之前,后面的語(yǔ)句就不能被執(zhí)行,就像被阻塞一樣,因此稱為阻塞賦值方式。這里的c和b的值一樣。)

非阻塞賦值于阻塞賦值方式的主要區(qū)別:
非阻塞賦值:b的值被賦成新值a的操作,并不是立刻完成,而是在塊結(jié)束時(shí)才完成;
塊內(nèi)的多條語(yǔ)句在塊結(jié)束時(shí)同時(shí)賦值。
硬件有對(duì)應(yīng)電路。
阻塞賦值: b的值立刻被賦成新值a;
完成該賦值語(yǔ)句后才能執(zhí)行下一條語(yǔ)句;
硬件沒(méi)有對(duì)應(yīng)的電路,因而綜合結(jié)果未知。
塊語(yǔ)句
用來(lái)將兩條或多條語(yǔ)句組合在一起,使其在格式上更像一條語(yǔ)句,以增加程序的可讀性
塊語(yǔ)句有兩種:
begin...end語(yǔ)句——標(biāo)示順序執(zhí)行的語(yǔ)句
fork...join語(yǔ)句——標(biāo)示并行執(zhí)行的語(yǔ)句(不可綜合)
begin...end:
塊內(nèi)的語(yǔ)句是順序執(zhí)行的
每條語(yǔ)句的延遲時(shí)間是相對(duì)于前一條語(yǔ)句的仿真時(shí)間而言的
直到最后一條語(yǔ)句執(zhí)行完,程序流程控制才能跳出該順序塊
塊內(nèi)語(yǔ)句可以是參數(shù)聲明,reg變量聲明,integer變量聲明,real變量聲明語(yǔ)句
#可以用在語(yǔ)句塊中表示延遲,(在模塊調(diào)用過(guò)程中使用#表示參數(shù)的傳遞)
fork...join:
塊內(nèi)的語(yǔ)句是并行執(zhí)行的
每條語(yǔ)句的延遲時(shí)間是相對(duì)于開(kāi)始仿真時(shí)間而言的
如何跳出該順序塊由(fork...join,fork...join_any,fork...join_none)決定
塊內(nèi)語(yǔ)句可以是參數(shù)聲明,reg變量聲明,integer變量聲明,real變量聲明語(yǔ)句,time變量聲明語(yǔ)句和事件(event)說(shuō)明語(yǔ)句。
條件語(yǔ)句
條件語(yǔ)句分為兩種:if...else語(yǔ)句和case語(yǔ)句
它們都是順序語(yǔ)句,應(yīng)該放在“always”塊內(nèi);
if...else:
判定給出的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。
if...else語(yǔ)句有3中形式:
其中,表達(dá)式為邏輯表達(dá)式或關(guān)系表達(dá)式,或一位的變量
若表達(dá)的值為0或者z,則判定的結(jié)果為假,若為1,則加過(guò)為真
語(yǔ)句分為單句,也可分為多句;多句一定用“begin...end”語(yǔ)句括起來(lái),形成一個(gè)符合塊語(yǔ)句
方式1:
if (表達(dá)式) 語(yǔ)句1;
方式2:
if(表達(dá)式) 語(yǔ)句1;
else 語(yǔ)句2;
方式3:
if(表達(dá)式1) 語(yǔ)句1;
else if(表達(dá)式2) 語(yǔ)句2;
...
else if(表達(dá)式n) 語(yǔ)句n;
允許一定形式的表達(dá)式簡(jiǎn)寫方式,如:
if(expression) 等同于if(expression ==1)
if(!expression) 等同于if(expression!=1)
if 語(yǔ)句可以嵌套
若if和else的數(shù)目不一樣,要使用“begin..end”語(yǔ)句來(lái)確定if于else的配對(duì)關(guān)系。
嵌套語(yǔ)句:
if(表達(dá)式1)
if(表達(dá)式2)語(yǔ)句1;
else 語(yǔ)句2;
else
if(表達(dá)式3) 語(yǔ)句3;
else 語(yǔ)句4;
module count60(qout, cout,data,load,cin,reset,clk); output[7:0] qout; output cout; input [7:0] data; input load,cin,reset,clk; reg [7:0] qout; always@(posedge clk) begin if(reset) qout = 0; //同步復(fù)位 else if(load) qout = data; //同步置數(shù) else if (cin) /如果cin為1,執(zhí)行加1計(jì)數(shù) begin if (qout[3:0]==9) begin qout[3:0]=0; if (qout[7:4]==5) qout[7:4] = 0; else qout[7:4] =qout[7:4]+1; end else qout[3:0]=qout[3:0]+1; end end assign cout = ((qout ==8'h59)&cin)?1:0; //產(chǎn)生進(jìn)位輸出 endmodulecase語(yǔ)句
當(dāng)敏感表達(dá)式取不同的值時(shí),執(zhí)行不同的語(yǔ)句;
功能:當(dāng)某個(gè)(控制)信號(hào)取不同的值時(shí),給另一個(gè)(輸出)信號(hào)賦不同的值。常用于多條件譯碼電路(如譯碼器,數(shù)據(jù)選擇器,狀態(tài)機(jī),微處理器)
case語(yǔ)句有三種不同形式:case,casez,casex
說(shuō)明:
其中“敏感表達(dá)式”有稱為“控制表達(dá)式”,通常表示為控制信號(hào)的某些位。
值1—值n稱為分支表達(dá)式,用控制信號(hào)的具體狀態(tài)值表示,因此有分為常量表達(dá)式。
default項(xiàng)可有可無(wú),一個(gè)case語(yǔ)句中只有一個(gè)default項(xiàng);
值1—值n必須互不相同,否則矛盾;
值1—值n的位寬必須相等,且與控制表達(dá)式的位寬相同。
casez與casex語(yǔ)句:

使用條件語(yǔ)句的注意事項(xiàng):
- 應(yīng)列出所有條件分支,否則當(dāng)條件不滿足時(shí),編譯器會(huì)生成一個(gè)鎖存器保持原值;
- 這一點(diǎn)可用于設(shè)計(jì)時(shí)序電路,如計(jì)數(shù)器:條件滿足時(shí)加1,否則保持原值不變;
- 在組合電路設(shè)計(jì)中,應(yīng)避免生成隱含的鎖存器,有效的方法是在if語(yǔ)句最后寫上else,在case語(yǔ)句最后寫上default項(xiàng)。
審核編輯:湯梓紅
-
IC
+關(guān)注
關(guān)注
36文章
6410瀏覽量
185610 -
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6741文章
2700瀏覽量
219501 -
Verilog
+關(guān)注
關(guān)注
30文章
1374瀏覽量
114522 -
變量
+關(guān)注
關(guān)注
0文章
616瀏覽量
29505 -
符號(hào)
+關(guān)注
關(guān)注
0文章
56瀏覽量
4765
原文標(biāo)題:IC學(xué)霸筆記 | Verilog賦值語(yǔ)句、塊語(yǔ)句、條件語(yǔ)句
文章出處:【微信號(hào):IC修真院,微信公眾號(hào):IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言中if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句詳解
考慮x和z在verilog條件語(yǔ)句中的使用情況
Verilog中的賦值語(yǔ)句的區(qū)別
Verilog的兩種塊語(yǔ)句解析
Verilog的塊語(yǔ)句
Verilog的塊語(yǔ)句fork...join 和 begin...end
條件判斷語(yǔ)句(if語(yǔ)句)
詳解Python條件語(yǔ)句
Verilog中的If語(yǔ)句和case語(yǔ)句介紹
Verilog常用的循環(huán)語(yǔ)句及用途
條件語(yǔ)句/循環(huán)語(yǔ)句simulink的實(shí)現(xiàn)方法(一)
詳解Verilog賦值語(yǔ)句、塊語(yǔ)句、條件語(yǔ)句
評(píng)論