版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章高級(jí)Verilog設(shè)計(jì)不支持的Verilog結(jié)構(gòu)綜合工具通常不支持下列Verilog結(jié)構(gòu):initial循環(huán):
repeatforever
while(2001標(biāo)準(zhǔn)后支持但有限制)非結(jié)構(gòu)化的for語(yǔ)句數(shù)據(jù)類(lèi)型:
eventrealtimeUDPfork…join塊
wait過(guò)程持續(xù)賦值:
deassignforcerelease操作符:
===!==持續(xù)賦值moduleorand(inputwirea,b,c,d,e,outputwireout);assignout=e&(a|b)&(c|d);endmodule
持續(xù)賦值驅(qū)動(dòng)值到net上。因?yàn)轵?qū)動(dòng)是持續(xù)的,所以輸出將隨任意輸入的改變而隨時(shí)更新,因此將產(chǎn)生組合邏輯。連續(xù)賦值語(yǔ)句assign#10D’=(A&B)|C;過(guò)程塊敏感列表任意邊沿在所有輸入信號(hào)的任意邊沿進(jìn)入的過(guò)程塊稱(chēng)為組合塊。
always@(aorb)//與門(mén)
y=a&b;單個(gè)邊沿在一個(gè)控制信號(hào)的單個(gè)邊沿上進(jìn)入的過(guò)程塊產(chǎn)生同步邏輯。這種過(guò)程塊稱(chēng)為同步塊。
always@(posedgeclk)//Dflip-flopq<=d;同步塊也可以對(duì)異步復(fù)位信號(hào)的變化產(chǎn)生敏感
always@(posedgeclkornegedgerst_)if(!rst_)q<=0;elseq<=d;敏感列表敏感表不完全:modulesens(q,a,b,sl);inputa,b,sl;outputq;regq;always@(sl)beginif(!sl)q=a;elseq=b;endendmodule完全的敏感列表modulesensc(q,a,b,sl);inputa,b,sl;outputq;regq;always@(sloraorb)beginif(!sl)q=a;elseq=b;endendmodule在下面的例子,a,b,sl是塊的輸入
sl用作條件,a、b用在過(guò)程賦值語(yǔ)句的右邊將塊的所有輸入都列入敏感表是很好的描述習(xí)慣。不同的綜合工具對(duì)不完全敏感表的處理有所不同。有的將不完全敏感表當(dāng)作非法。其他的則產(chǎn)生一個(gè)警告并假設(shè)敏感表是完全的。在這種情況下,綜合輸出和RTL描述的仿真結(jié)果可能不一致。always塊可以描述時(shí)序邏輯也可以描述組合邏輯敏感變量表中不能同時(shí)包含沿事件和非沿事件敏感變量表必須完整always@(AorBorC)D=(A&B)|C;敏感變量表不完整的影響always@(AorB)D=(A&B)|C;敏感變量表不同的影響(一)rega;always@(posedgeclkornegedgerst)beginif(!rst)a<=1’b0;elsea<=b;end敏感變量表不同的影響(二)rega;always@(posedgeclk)beginif(!rst)a<=1’b0;elsea<=b;endLatch任意邊沿在所有輸入信號(hào)的任意邊沿進(jìn)入的過(guò)程塊稱(chēng)為組合塊。
always@(aorb) y=a&b;采用阻塞賦值語(yǔ)句可能產(chǎn)生組合邏輯或鎖存器過(guò)程賦值語(yǔ)句產(chǎn)生組合邏輯IF或CASE語(yǔ)句可能產(chǎn)生鎖存器moduleDFF(q,qb,d,clk,clr);outputq,qb;inputd,//inputdataclk,/*inputclock*/clr;regq;wireqb,d,clk,clr;assignqb=!q;always@(a,b,c…)begin
過(guò)程賦值語(yǔ)句;高級(jí)描述語(yǔ)句
if語(yǔ)句;
case語(yǔ)句;循環(huán)語(yǔ)句;
endendmodule鎖存器(latch)推斷modulelatch(q,data,enable);inputwiredata,enable;outputregq;
always@(enable,data)if(enable)q=data;endmodule在always塊中,條件語(yǔ)句如果沒(méi)有說(shuō)明所有條件,將產(chǎn)生latch。在下面的例子中,由于沒(méi)有定義enable為低電平時(shí)data的狀態(tài),因此enable為低電平時(shí)data的值必須保持,綜合時(shí)將產(chǎn)生一個(gè)鎖存器條件語(yǔ)句自然完全的條件語(yǔ)句modulecomcase(inputwirea,b,c,d,outputrege);
always@(aorborcord)case({a,b})2'b11:e=d;2'b10:e=~c;2'b01:e=1'b0;2'b00:e=1'b1;endcaseendmodulemodulecompif(inputwirea,b,c,d,outputrege);
always@(aorborcord)if(a&b)e=d;elseif(a&~b)e=~c;elseif(~a&b)e=1'b0;elseif(~a&~b)e=1'b1;endmodule
例中定義了所有可能的選項(xiàng),綜合結(jié)果是純組合邏輯,沒(méi)有不期望的鎖存器產(chǎn)生。不完全條件語(yǔ)句moduleinccase(inputwirea,b,c,d,outputrege);
always@(aorborcord)case({a,b})2'b11:e=d;2'b10:e=~c;endcaseendmodulemoduleincpif(inputwirea,b,c,d,outputrege);
always@(aorborcord)if(a&b)e=d;elseif(a&~b)e=~c;endmodule在上面的例子中,當(dāng)a變?yōu)榱銜r(shí),不對(duì)e賦新值。因此e保存其值直到a變?yōu)?。這是鎖存器的特性。若a變?yōu)?,e為何值default完全條件語(yǔ)句modulecomcase(inputwirea,b,c,d,outputrege);
always@(a,b,c,d)case({a,b})2'b11:e=d;2'b10:e=~c;
default:e='bx;endcaseendmodulemodulecompif(inputwirea,b,c,d,outputrege);always@(a,b,c,d)if(a&b)e=d;elseif(a&~b)e=~c;
elsee='bx;endmodule
綜合工具將‘bx作為無(wú)關(guān)值,因此if語(yǔ)句類(lèi)似于“fullcase”,可以進(jìn)行更好的優(yōu)化。例中沒(méi)有定義所有選項(xiàng),但對(duì)沒(méi)有定義的項(xiàng)給出了缺省行為。同樣,其綜合結(jié)果為純組合邏輯——沒(méi)有不期望的鎖存器產(chǎn)生。指示完全條件語(yǔ)句moduledircase(a,b,c,d);inputb,c;input[1:0]a;outputregd;
always@(aorborc)case(a)//
ambitsynthesiscase=full2'b00:d=b;2'b01:d=c;endcaseendmodule
和前例一樣,沒(méi)有定義所有case項(xiàng),但綜合指令通知優(yōu)化器缺少的case項(xiàng)不會(huì)發(fā)生。結(jié)果也為純組合邏輯,沒(méi)有不期望鎖存器產(chǎn)生。注意如果缺少的case項(xiàng)發(fā)生,而其結(jié)果未定義,綜合結(jié)果和RTL的描述的行為可能不同。綜合指令舉例這里列出部分Cadence綜合工具中綜合指令。這些與其他工具,如SynopsysDesignCompiler,中的指令很相似。
//ambitsynthesison//ambitsynthesisoff//ambitsynthesiscase=full,parallel,mux結(jié)構(gòu)指令
//ambitsynthesisarchitecture=claorrplFSM指令
//ambitsynthesisenumxyz//ambitsynthesisstate_vectorsigstate_vector_flag綜合指令—case指示case語(yǔ)句通常綜合為一個(gè)優(yōu)先級(jí)編碼器,列表中每個(gè)case項(xiàng)都比后面的case項(xiàng)的優(yōu)先級(jí)高。Case指令按下面所示指示優(yōu)化器://ambitsynthesiscase=parallel建立并行的編碼邏輯,彼此無(wú)優(yōu)先級(jí)。//ambitsynthesiscase=mux若庫(kù)中有多路器,使用多路器建立編碼邏輯。//ambitsynthesiscase=full假定所有缺少的case項(xiàng)都是“無(wú)關(guān)”項(xiàng),使邏輯更為優(yōu)化并避免產(chǎn)生鎖存器。case指示例外moduleselect(inputwire[1:0]sl,outputrega,b);
always@(sl)case(sl)//ambitsynthesiscase=full2b'00:begina=0;b=0;end2b'01:begina=1;b=1;end2b'10:begina=0;b=1;end2b'11:b=1;default:begina='bx;b='bx;endendcaseendmodule有時(shí)使用了casefull指示,case語(yǔ)句也可能綜合出latch。下面的描述綜合時(shí)產(chǎn)生了一個(gè)latch。要求:條件語(yǔ)句中各分支的賦值對(duì)象一致。moduleselect(inputwrie[1:0]sl,outputrega,b);
always@(sl)if(sl) a=0;else b=1;endmodule函數(shù)的可綜合性moduleorand(inputa,b,c,d,e,
outputwireout);assignout=forand(a,b,c,d,e);functionforand;inputa,b,c,d,e;if(e==1)forand=(a|b)&(c|d);elseforand=0;endfunctionendmodule
函數(shù)沒(méi)有時(shí)序控制,因此綜合結(jié)果為組合邏輯。函數(shù)可以在過(guò)程塊內(nèi)或持續(xù)賦值語(yǔ)句中調(diào)用。下例中的or/and塊由持續(xù)賦值語(yǔ)句調(diào)用函數(shù)實(shí)現(xiàn)任務(wù)moduleorandtask(out,a,b,c,d,e);inputa,b,c,d,e;outputout;regout;always@(aorborcordore)orand(out,a,b,c,d,e);taskorand;inputa,b,c,d,e;outputout;if(e==1)out=(a|b)&(c|d);elseout=0;endtaskendmodule任務(wù)一般只在測(cè)試程序中使用,因?yàn)椋?/p>
帶有時(shí)序控制的任務(wù)不可綜合下面是用任務(wù)描述的or/and塊:第二部分高性能編碼技術(shù)if語(yǔ)句modulesingle_if(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)beginif(sel[3])z=d;elseif(sel[2])z=c;elseif(sel[1])z=b;elseif(sel[0])z=a;elsez=0;endendmodulemodulemult_if(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)beginz=0;if(sel[0])z=a;if(sel[1])z=b;if(sel[2])z=c;if(sel[3])z=d;endendmodule例1.1a單個(gè)
if語(yǔ)句例1.1b多重
if語(yǔ)句注意代碼的優(yōu)先級(jí)推薦方式if語(yǔ)句的電路結(jié)構(gòu)case語(yǔ)句modulecase1(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)begin
casex(sel)4'b1xxx:z=d;4'bx1xx:z=c;4'bxx1x:z=b;4'bxxx1:z=a;default:z=1'b0;endcaseendendmodulecasex具有使用無(wú)關(guān)項(xiàng)的優(yōu)點(diǎn),不用列出sel的所有組合。例1.2case
語(yǔ)句例中case語(yǔ)句的電路結(jié)構(gòu)晚到達(dá)信號(hào)處理
設(shè)計(jì)時(shí)通常知道哪一個(gè)信號(hào)到達(dá)的時(shí)間要晚一些。這些信息可用于構(gòu)造HDL,使到達(dá)晚的信號(hào)離輸出近一些。下面的例子中,針對(duì)晚到達(dá)信號(hào)重新構(gòu)造if和case語(yǔ)句,以提高邏輯性能。晚到達(dá)的是數(shù)據(jù)信號(hào)-無(wú)優(yōu)先級(jí)
順序if語(yǔ)句可以根據(jù)關(guān)鍵信號(hào)構(gòu)造HDL。在例1.1a中,輸入信號(hào)d處于選擇鏈的最后一級(jí),也就是說(shuō)d最靠近輸出。假如信號(hào)b_is_late是晚到達(dá)信號(hào),我們就要重新構(gòu)造例1.1a使其最優(yōu)化。原if結(jié)構(gòu)modulesingle_if(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)beginif(sel[1])z=b_is_late;elseif(sel[3])z=d;elseif(sel[2])z=c;elseif(sel[0])z=a;elsez=0;endendmodule后if結(jié)構(gòu)modulesingle_if(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)beginif(sel[3])z=d;elseif(sel[2])z=c;elseif(sel[1])z=b;elseif(sel[0])z=a;elsez=0;endendmodule晚到達(dá)的是數(shù)據(jù)信號(hào)-保持優(yōu)先級(jí)
順序if語(yǔ)句可以根據(jù)關(guān)鍵信號(hào)構(gòu)造HDL。在例1.1a中,輸入信號(hào)d處于選擇鏈的最后一級(jí),也就是說(shuō)d最靠近輸出。假如信號(hào)b_is_late是晚到達(dá)信號(hào),我們就要重新構(gòu)造例1.1a使其最優(yōu)化。modulemult_if_improved(a,b_is_late,c,d,sel,z);inputa,b_is_late,c,d;input[3:0]sel;outputz;regz,z1;always@(aorb_is_lateorcordorsel)beginif(sel[1]&~(sel[2]|sel[3]))z=b_is_late;elseif(sel[3])z=d;elseif(sel[2])z=c;elseif(sel[0])z=a;elsez=0;endendmodule保持優(yōu)先級(jí)的if結(jié)構(gòu)原if結(jié)構(gòu)modulesingle_if(a,b,c,d,sel,z);inputa,b,c,d;input[3:0]sel;outputz;regz;always@(aorborcordorsel)beginif(sel[3])z=d;elseif(sel[2])z=c;elseif(sel[1])z=b;elseif(sel[0])z=a;elsez=0;endendmodule晚到達(dá)的是數(shù)據(jù)信號(hào)晚到達(dá)的是控制信號(hào)
如果晚到達(dá)信號(hào)作為if語(yǔ)句條件分支的條件,也應(yīng)使這個(gè)信號(hào)離輸出最近。在下面的例子中,CTRL_is_late是晚到達(dá)的控制信號(hào)modulesingle_if_late(A,C,CTRL_is_late,Z);input[6:1]A;input[5:1]C;inputCTRL_is_late;outputZ;regZ;always@(CorAorCTRL_is_late)if(C[1]==1'b1)Z=A[1];elseif(C[2]==1'b0)Z=A[2];elseif(C[3]==1'b1)Z=A[3];elseif(C[4]==1'b1&&CTRL_is_late==1'b0)//if條件中晚到達(dá)的信號(hào)
Z=A[4];elseif(C[5]==1'b0)Z=A[5];elseZ=A[6];
endmodule晚到達(dá)的是控制信號(hào)modulesingle_if_late(A,C,CTRL_is_late,Z);input[6:1]A;input[5:1]C;inputCTRL_is_late;outputZ;regZ;always@(CorAorCTRL_is_late)
//if條件中晚到達(dá)的信號(hào)
if(C[4]==1'b1&&CTRL_is_late==1'b0)Z=A[4];elseif(C[1]==1'b1)Z=A[1];elseif(C[2]==1'b0)Z=A[2];elseif(C[3]==1'b1)Z=A[3];elseif(C[5]==1'b0)Z=A[5];elseZ=A[6];
endmoduleif-case嵌套語(yǔ)句modulecase_in_if_01(A,DATA_is_late_arriving,C,sel,Z);input[8:1]A;inputDATA_is_late_arriving;input[2:0]sel;input[5:1]C;outputZ;regZ;always@(selorCorAorDATA_is_late_arriving)if(C[1])Z=A[5];elseif(C[2]==1'b0)Z=A[4];elseif(C[3])Z=A[1];elseif(C[4])case(sel)3'b010:Z=A[8];3'b011:Z=DATA_is_late_arriving;3'b101:Z=A[7];3'b110:Z=A[6];default:Z=A[2];endcaseelseif(C[5]==1'b0)Z=A[2];elseZ=A[3];endmoduleif-case嵌套語(yǔ)句—修改后always@(selorCorAorDATA_is_late_arriving)beginif(C[1])Z1=A[5];elseif(C[2]==1’b0)Z1=A[4];elseif(C[3])Z1=A[1];elseif(C[4])case(sel)3'b010:Z1=A[8];//3'b011:Z1=DATA_is_late_arriving;3'b101:Z1=A[7];3'b110:Z1=A[6];default:Z1=A[2];endcaseelseif(C[5]==1'b0)Z1=A[2];elseZ1=A[3];FIRST_IF=(C[1]==1'b1)||(C[2]==1'b0)||(C[3]==1'b1);
if(!FIRST_IF&&C[4]&&(sel==3'b011))Z=DATA_is_late_arriving;elseZ=Z1;endif-case嵌套語(yǔ)句Case語(yǔ)句if語(yǔ)句if-case嵌套語(yǔ)句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026湖南邵陽(yáng)市邵東市市直事業(yè)單位引進(jìn)博士研究生15人備考題庫(kù)及完整答案詳解一套
- 2026浙江寧波海發(fā)漁業(yè)科技有限公司招聘1人備考題庫(kù)及參考答案詳解一套
- 2026年檔案數(shù)字化管理規(guī)范操作課
- 2026年信創(chuàng)生態(tài)產(chǎn)品選型指南
- 2026西安經(jīng)開(kāi)第十四小學(xué)音樂(lè)教師招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026福建廈門(mén)市人工智能創(chuàng)新中心招聘42人備考題庫(kù)及完整答案詳解1套
- 2026甘肅天水鋰離子電池廠招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 來(lái)料部門(mén)年終總結(jié)(3篇)
- 職業(yè)發(fā)展導(dǎo)向的虛擬仿真學(xué)習(xí)路徑規(guī)劃
- 職業(yè)健康干預(yù)的成本效益優(yōu)化
- DB21-T 4279-2025 黑果腺肋花楸農(nóng)業(yè)氣象服務(wù)技術(shù)規(guī)程
- 2026廣東廣州市海珠區(qū)住房和建設(shè)局招聘雇員7人考試參考試題及答案解析
- 2026新疆伊犁州新源縣總工會(huì)面向社會(huì)招聘工會(huì)社會(huì)工作者3人考試備考題庫(kù)及答案解析
- 廣東省汕頭市2025-2026學(xué)年高三上學(xué)期期末語(yǔ)文試題(含答案)(含解析)
- 110接處警課件培訓(xùn)
- DB15∕T 385-2025 行業(yè)用水定額
- 火箭軍教學(xué)課件
- 新媒體運(yùn)營(yíng)專(zhuān)員筆試考試題集含答案
- 2025年河南省中考英語(yǔ)試題(附答案和音頻)
- 大區(qū)銷(xiāo)售經(jīng)理年終工作總結(jié)
- 《立式輥磨機(jī)用陶瓷金屬?gòu)?fù)合磨輥輥套及磨盤(pán)襯板》編制說(shuō)明
評(píng)論
0/150
提交評(píng)論