




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
從仿真語義的角度看Verilog中的延
時、阻塞與非阻塞賦值#/12達式置于等號右邊。阻塞賦值可以很好的建模電路中的數據流,請考慮清單6中的代碼片斷。清單6組合邏輯的阻塞賦值regtemp1,temp2;always@(XorYorCIN)begintempi=X八Y;temp2=temp1&CIN;SUM=tempi八CIN;COUT=temp2|(X&Y);End清單6是一個全加器的描述,其中所有的賦值語句都是阻塞賦值,特點是:等號“=”右邊表達式的結果計算和將計算結果賦值給左邊變量的操作,是一個統一、連續的過程,不允許在其中插入其他動作;阻塞賦值語句會阻塞其后代碼中語句的執行,也就是說Verilog仿真器在完成一句阻塞賦值語句前,不會響應其他事件。由此可見清單6中各語句的意義是:首先將X異或Y的結果賦值給tempi,接著執行第二條語句將tempi和CIN相與的結果賦值給temp2,并最終計算出SUM和COUT。很好的反映了組合邏輯中的數據流動順序。如果將這里的阻塞賦值替換為非阻塞賦值,如清單7所示。清單7組合邏輯的非阻塞賦值iregtempi,temp2;always@(XorYorCIN)begintempi<=X八Y;temp2<=tempi&CIN;SUM<=tempi八CIN;COUT<=temp2|(X&Y);endVerilog中使用小于等號“<=”來表示非阻塞賦值,被賦值的變量放在等號的左邊,計算賦值的表達式置于等號的右邊。與阻塞賦值不同,非阻塞賦值不能反映電路的數據流。因為在Verilog仿真語義中規定:非阻塞賦值對于左邊賦值變量的更新操作的優先級要低于阻塞賦值,也要低于非阻塞賦值本身等號右邊的表達式計算,需要等到當前仿真周期結束時才被執行。所謂的當前仿真周期結束,指的是某一時刻的所有仿真事件全部完成。在清單7中,某時刻當敏感事件表中的信號發生變化導致always進程啟動,進程中的賦值語句在該時刻被依次執行。由于非阻塞賦值的特點,X異或Y首先計算,但是所得的結果并不會立刻賦值給temp1,所以第二句中引用的是temp1的原值,不是第一句中X與上Y的結果。同樣,第二句中temp1和CIN相與的結果也不會立刻用于更新temp2。所有的左側變量在該仿真時刻的事件執行完畢,也就是5條賦值語句的右側表達式全部計算完畢后才被更新。這顯然不是我們所期望的邏輯結果,不過可以通過將中間變量temp1和temp2放入always語句的敏感事件表中來解決這個問題,如清單7所示。這樣在每次temp1或temp2發生變化的時候,always語句都會重新啟動,從而將temp1和temp2的更新代入計算得到正確的SUM和COUT。清單8組合邏輯的非阻塞賦值2regtempi,temp2;always@(XorYorCINortemp1ortemp2)begintempi<=X八Y;temp2<=temp1&CIN;SUM<=tempi八CIN;COUT<=temp2|(X&Y);end通過上面的示例可以看出,非阻塞賦值不能反映組合邏輯中的數據流,除非將所有的中間變量都列入敏感事件表中。所以建議在對組合邏輯建模時采用阻塞賦值。時序邏輯時序邏輯中也存在變量更新與讀取的沖突和順序問題,當更新與讀取分別在兩個always進程中時,請考慮清單9中的代碼片斷。清單9雙進程阻塞更新always@(posedgeCLK)//進程Abegintemp=X八Y;endalways@(posedgeCLK)//進程BbeginXxorY=temp;End從仿真語義的角度來看,這兩個always進程置于相同時鐘CLK的控制下,進程A更新寄存器變量temp的值,進程B讀取temp的值。當CLK的上升沿到來時兩個進程被同時啟動,習慣性的誤認為:由于語句的先后順序,進程A中的阻塞賦值首先執行。當X異或Y賦值給temp后,才會執行進程B中的讀取語句,最后XxorY得到X異或Y的結果(D觸發器)。但是如果進程A和進程B的順序顛倒過來,讀取便會阻塞更新,XxorY得到的就不是該時鐘上升沿時刻X異或Y的結果,而是上一周期temp的原值(2位移位寄存器)。實際上,在Verilog的仿真語義中,always進程的執行順序僅僅和敏感事件表相關,并不取決于代碼的先后順序。在CLK上升沿的控制下,進程A和進程B同時啟動,temp的更新與讀取操作都作為當前仿真時刻的事件被列入事件隊列。由于他們同為阻塞賦值,所以擁有相同的優先級,仿真器的執行順序是隨機的,有的仿真器會按照代碼的先后順序執行,有的則會按照隨機順序執行。這種仿真語義的不確定性會帶來綜合結果的不確定性,目前業界還沒有Verilog的綜合標準,綜合的結果取決于綜合工具對于仿真語義的理解。雖然對于清單9中的代碼,似乎任何一種執行順序都有一種仿真語義與之對應,但是設計者撰寫這段代碼所希望得到的硬件結構確是一定的:希望以temp作為中間變量,用CLK時鐘將X異或Y的結果同步后再打一拍賦值給XxorY,硬件電路相當于兩個D觸發器的串聯,可以看作是一個2位的移位寄存器,如圖9所示。
圖9圖9希望得到的硬件電路從硬件結構中可以看出,必須保證中間變量temp先被讀取再被賦值。這種保證在實際的電路中是通過觸發器的建立延時來實現的,即當CLK同步變化時,雖然兩個D觸發器被同時啟動,但是由于輸入到輸出的信號建立需要一定的時間,所以觸發器XxorY得到的是觸發器temp輸出的原值,從而使XxorY在兩個周期后得到X異或Y的結果。在仿真語義中需要顯式的表明這種順序可以對temp使用非阻塞賦值。非阻塞賦值的優先級較阻塞賦值低,temp的更新會被安排到仿真時刻的所有事件完成后執行。無論語句的先后順序如何,作為阻塞賦值的temp讀取事件都會先于temp的更新事件執行,保持了仿真語義與綜合結果的一致性。因此,建議當對變量的賦值與讀取不在同一個always進程時,使用非阻塞賦值對該變量賦值,如清單10所示。清單10雙進程非阻塞更新always@(posedgeCLK)//進程Abegintemp<=X八Y;endalways@(posedgeCLK)//進程BbeginXxorY=temp;End仿真語義是有順序的,即使多個事件可能都包含在同一個的仿真時刻下。這是因為硬件電路是并行的,同一時刻可能有多個事件發生,但是仿真工具一般都是運行在通用計算機上的軟件程序,CPU的處理機制是順序的。可以認為仿真語義是為了平衡并行的硬件電路與順序的仿真工具之間的一種橋梁。綜合結果是綜合軟件對仿真語義的理解,但是并不局限于仿真語義。實際的綜合工具會根據更多的元素來進行綜合,比如SynplifyPro對于清單8和9中的代碼均可綜合出正確的結果,但是有些綜合工具對于7中的描述,就會將中間變量temp當作是冗余邏輯而優化掉(XxorY在一個時鐘周期內就得到了X異或Y的值)。如果對變量的賦值與讀取都出現在同一個時鐘控制的always進程中,可以認為這是在一個時鐘節拍內的組合邏輯塊,示例代碼如清單11所示。清單11單進程變量更新always@(posedgeCLK)begintempalways@(posedgeCLK)begintemp=X八Y;//阻塞賦值if(~temp)XequalY<=1'b1;ElseXequalY<=1'b0;Endalways@(posedgeCLK)begintemp<=X八Y;//非阻塞賦值if(~temp)XequalY<=1'b0;if(~temp)XequalY<=1'b0;XequalY<=1'b1;ElseEnd建議對組合邏輯采用阻塞賦值,對時序邏輯采用非阻塞賦值的目的是為了避免Verilog仿真模型與最終綜合結果的不一致。但是這并不是一條規定,只要能夠理解阻塞賦值與非阻塞賦值之間的語義差別,在很多情況下靈活的運用它們往往能夠得到意想不到的結果。阻塞賦值與非阻塞賦值的總結以下是就使用“阻塞賦值”或“非阻塞賦值”的一個概括和總結:當為時序邏輯建模時,使用“非阻塞賦值”;當為鎖存器(latch)建模時,使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《課件通病》課件
- 《國際私法輔導課件》課件
- 嫦娥本月阿波羅赫爾墨斯等都是有關飛行的神話由于科學技術發展
- 《PCI術后康復指導》課件
- 天津市部分區2025屆高三下學期3月一模試題 語文 含解析
- 2025年天津從業資格證貨運考試試題和答案
- 西南政法大學《麻醉學實驗》2023-2024學年第一學期期末試卷
- 四川商務職業學院《滲流力學》2023-2024學年第二學期期末試卷
- 晉中學院《軟件分析設計與建模》2023-2024學年第二學期期末試卷
- 南昌師范學院《民族民間舞蹈》2023-2024學年第二學期期末試卷
- (完整)關于高壓線下施工安全專項方案
- 2022年新疆維吾爾自治區三校生高考語文備考試題及答案解析
- 國際學術交流英語知到章節答案智慧樹2023年哈爾濱工業大學
- 反三角函數正課
- 高考標準化考場建設的方案
- 乳腺癌NCCN指南中文版2022.v2
- GB/T 38942-2020壓力管道規范公用管道
- 家居建材全屋定制店面運營管理細則規定
- GB/T 27924-2011工業貨架規格尺寸與額定荷載
- 大班語言《他們看見了一只貓》課件
- 消毒產品進貨檢查驗收制度
評論
0/150
提交評論