版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
阻塞和非阻塞賦值阻塞賦值
阻塞賦值的執(zhí)行可以認(rèn)為是只有一個(gè)步驟的操作: 計(jì)算RHS并更新LHS,此時(shí)不能允許有來(lái)自任何其他Verilog語(yǔ)句的干擾。所謂阻塞的概念是指在同一個(gè)always塊中,其后面的賦值語(yǔ)句從概念上(即使不設(shè)定延遲)是在前一句賦值語(yǔ)句結(jié)束后再開(kāi)始賦值的。 如果在一個(gè)過(guò)程塊中阻塞賦值的RHS變量正好是另一個(gè)過(guò)程塊中阻塞賦值的LHS變量,這兩個(gè)過(guò)程塊又用同一個(gè)時(shí)鐘沿觸發(fā),這時(shí)阻塞賦值操作會(huì)出現(xiàn)問(wèn)題,即如果阻塞賦值的次序安排不好,就會(huì)出現(xiàn)競(jìng)爭(zhēng)。2阻塞賦值modulefbosc1(y1,y2,clk,rst);outputy1,y2;inputclk,rst;regy1,y2;always@(posedgeclkorposedgerst)if(rst)y1=0;//resetelsey1=y2;always@(posedgeclkorposedgerst)if(rst)y2=1;//presetelsey2=y1;endmodule
3非阻塞賦值非阻塞賦值的操作可以看作為兩個(gè)步驟的過(guò)程:在賦值時(shí)刻開(kāi)始時(shí),計(jì)算非阻塞賦值RHS表達(dá)式。在賦值時(shí)刻結(jié)束時(shí),更新非阻塞賦值LHS表達(dá)式。4非阻塞賦值modulefbosc2(y1,y2,clk,rst);outputy1,y2;inputclk,rst;regy1,y2;always@(posedgeclkorposedgerst)if(rst)y1<=0;//resetelsey1<=y2;always@(posedgeclkorposedgerst)if(rst)y2<=1;//presetelsey2<=y1;endmodule5Verilog模塊編程要點(diǎn)時(shí)序電路建模時(shí),用非阻塞賦值。鎖存器電路建模時(shí),用非阻塞賦值。用always塊建立組合邏輯模型時(shí),用阻塞賦值。在同一個(gè)always塊中建立時(shí)序和組合邏輯電路時(shí),用非阻塞賦值。在同一個(gè)always塊中不要既用非阻塞賦值又用阻塞賦值。不要在一個(gè)以上的always塊中為同一個(gè)變量賦值。用$strobe系統(tǒng)任務(wù)來(lái)顯示用非阻塞賦值的變量值在賦值時(shí)不要使用#0延遲6移位寄存器模型q1q2q3dclk移位寄存器電路7阻塞賦值實(shí)現(xiàn)移位寄存器模型modulepipeb1(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)beginq1=d;q2=q1;q3=q2;endendmodulemodulepipeb2(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)beginq3=q2;q2=q1;q1=d;endendmodule綜合結(jié)果×√8q3dclk實(shí)際綜合的結(jié)果9阻塞賦值實(shí)現(xiàn)移位寄存器模型modulepipeb3(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)q1=d;always@(posedgeclk)q2=q1;always@(posedgeclk)q3=q2;endmodule
modulepipeb4(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)q2=q1;always@(posedgeclk)q3=q2;always@(posedgeclk)q1=d;endmodulenotgoodnotgood10非阻塞賦值實(shí)現(xiàn)移位寄存器模型modulepipen1(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)beginq1<=d;q2<=q1;q3<=q2;endendmodule
modulepipen2(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)beginq3<=q2;q2<=q1;q1<=d;endendmodule√√11非阻塞賦值實(shí)現(xiàn)移位寄存器模型modulepipen3(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)q1<=d;always@(posedgeclk)q2<=q1;always@(posedgeclk)q3<=q2;endmodulemodulepipen4(q3,d,clk);output[7:0]q3;input[7:0]d;inputclk;reg[7:0]q3,q2,q1;always@(posedgeclk)q2<=q1;always@(posedgeclk)q3<=q2;always@(posedgeclk)q1<=d;endmodule√√12移位寄存器模型描述四種阻塞賦值設(shè)計(jì)方式中有一種可以保證仿真正確四種阻塞賦值設(shè)計(jì)方式中有三種可以保證綜合正確四種非阻塞賦值設(shè)計(jì)方式全部可以保證仿真正確四種非阻塞賦值設(shè)計(jì)方式全部可以保證綜合正確13阻塞賦值簡(jiǎn)單例子moduledffb(q,d,clk,rst);outputq;inputd,clk,rst;regq;always@(posedgeclk)if(rst)q=1'b0;elseq=d;endmodulemoduledffx(q,d,clk,rst);outputq;inputd,clk,rst;regq;always@(posedgeclk)if(rst)q<=1'b0;elseq<=d;
endmodule√14時(shí)序反饋移位寄存器建模15時(shí)序反饋移位寄存器建模
modulelfsrb1(q3,clk,pre_n);outputq3;inputclk,pre_n;regq3,q2,q1;wiren1;assignn1=q1^q3;always@(posedgeclkornegedgepre_n)if(!pre_n)beginq3=1'b1;
q2=1'b1;q1=1'b1;endelsebeginq3=q2;q2=n1;q1=q3;endendmodulemodulelfsrb2(q3,clk,pre_n);outputq3;inputclk,pre_n;regq3,q2,q1;always@(posedgeclkornegedgepre_n)if(!pre_n){q3,q2,q1}=3'b111;else{q3,q2,q1}={q2,(q1^q3),q3};endmodule16時(shí)序反饋移位寄存器建模
modulelfsrb1(q3,clk,pre_n);outputq3;inputclk,pre_n;regq3,q2,q1;wiren1;assignn1=q1^q3;always@(posedgeclkornegedgepre_n)if(!pre_n)beginq3<=1'b1;
q2<=1'b1;q1<=1'b1;endelsebeginq3<=q2;q2<=n1;q1<=q3;endendmodulemodulelfsrb2(q3,clk,pre_n);outputq3;inputclk,pre_n;regq3,q2,q1;always@(posedgeclkornegedgepre_n)if(!pre_n){q3,q2,q1}<=3'b111;else{q3,q2,q1}<={q2,(q1^q3),q3};endmodule17原則1:時(shí)序電路建模時(shí),用非阻塞賦值。原則2:鎖存器電路建模時(shí),用非阻塞賦值。18組合邏輯建模時(shí)應(yīng)使用阻塞賦值
在Verilog中可以用多種方法來(lái)描述組合邏輯,但是當(dāng)用always塊來(lái)描述組合邏輯時(shí),應(yīng)該用阻塞賦值。如果always塊中只有一條賦值語(yǔ)句,使用阻塞賦值或非阻塞賦值語(yǔ)句都可以,但是為了養(yǎng)成良好的編程習(xí)慣,應(yīng)該盡量使用阻塞賦值語(yǔ)句來(lái)描述組合邏輯。19非阻塞賦值組實(shí)現(xiàn)合邏輯建模的問(wèn)題
moduleao4(y,a,b,c,d);outputy;inputa,b,c,d;regy,tmp1,tmp2;always@(aorborcord)begintmp1<=a&b;tmp2<=c&d;y<=tmp1|tmp2;endendmodule@(aorborcordortmp1ortmp2)20組合邏輯建模時(shí)應(yīng)使用阻塞賦值
moduleao4(y,a,b,c,d);outputy;inputa,b,c,d;regy,tmp1,tmp2;always@(aorborcord)begintmp1=a&b;tmp2=c&d;y=tmp1|tmp2;endendmodule21原則3:用always塊描述組合邏輯時(shí),應(yīng)采用阻塞賦值語(yǔ)句22時(shí)序和組合的混合邏輯——使用非阻塞賦值
modulenbex2(q,a,b,clk,rst_n);outputq;inputclk,rst_n;inputa,b;regq;always@(posedgeclkornegedgerst_n)if(!rst_n)q<=1'b0;//時(shí)序邏輯elseq<=a^b;//異或,為組合邏輯endmodule在一個(gè)always塊中同時(shí)實(shí)現(xiàn)組合邏輯和時(shí)序邏輯23時(shí)序和組合的混合邏輯——使用非阻塞賦值
modulenbex1(q,a,b,clk,rst_n);outputq;inputclk,rst_n;inputa,b;regq,y;always@(aorb)y=a^b;always@(posedgeclkornegedgerst_n)if(!rst_n)q<=1'b0;elseq<=y;endmodule將組合和時(shí)序邏輯分別寫(xiě)在兩個(gè)always塊中24原則4:在同一個(gè)always塊中描述時(shí)序和組合邏輯混合電路時(shí),用非阻塞賦值。
25其他將阻塞和非阻塞混合使用的原則Verilog語(yǔ)法并沒(méi)有禁止將阻塞和非阻塞賦值自由地組合在一個(gè)always塊里。不建議在可綜合模塊中采用!26在always塊中同時(shí)使用阻塞和非阻塞賦值的例子
moduleba_nba2(q,a,b,clk,rst_n);outputq;inputa,b,rst_n;inputclk;regq;always@(posedgeclkornegedgerst_n)begin:ffregtmp;if(!rst_n)q<=1'b0;elsebegintmp=a&b;q<=tmp;endendendmodule27對(duì)同一變量既進(jìn)行阻塞賦值,又進(jìn)行非阻塞賦值會(huì)產(chǎn)生綜合錯(cuò)誤
moduleba_nba6(q,a,b,clk,rst_n);outputq;inputa,b,rst_n;inputclk;regq,tmp;always@(posedgeclkornegedgerst_n)if(!rst_n)q=1'b0;//對(duì)q進(jìn)行阻塞賦值elsebegintmp=a&b;q<=tmp;//對(duì)q進(jìn)行非阻塞賦值endendmodule28原則5:不要在同一個(gè)alway
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電熱水器廣告宣傳與推廣合同范本4篇
- 二零二四年度專(zhuān)業(yè)培訓(xùn)課程委托培養(yǎng)合同3篇
- 2025年度金融數(shù)據(jù)分析派遣人員勞動(dòng)合同3篇
- 2025年個(gè)人租車(chē)合同交通事故處理指南4篇
- 2025版農(nóng)戶(hù)土地承包流轉(zhuǎn)合同附農(nóng)民培訓(xùn)及就業(yè)服務(wù)條款范本4篇
- 農(nóng)村宅基地租賃合同
- 汽車(chē)抵押借款合同
- 2025年度房產(chǎn)市場(chǎng)存量房交易風(fēng)險(xiǎn)防范合同4篇
- 2025年度個(gè)人別墅地下車(chē)位使用權(quán)轉(zhuǎn)讓合同范本2篇
- 二零二五年度門(mén)禁系統(tǒng)網(wǎng)絡(luò)安全防護(hù)服務(wù)合同2篇
- JTG∕T E61-2014 公路路面技術(shù)狀況自動(dòng)化檢測(cè)規(guī)程
- 高中英語(yǔ)短語(yǔ)大全(打印版)
- 2024年資格考試-對(duì)外漢語(yǔ)教師資格證筆試參考題庫(kù)含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以?xún)晌粩?shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計(jì)算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 五年級(jí)數(shù)學(xué)應(yīng)用題100道
- 西方經(jīng)濟(jì)學(xué)(第二版)完整整套課件(馬工程)
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評(píng)定方法
評(píng)論
0/150
提交評(píng)論