版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章行為級建模方法4.1行為級建模程序結(jié)構(gòu)4.2過程結(jié)構(gòu)語句4.3語句塊4.4時序控制4.5賦值語句4.6分支語句4.7循環(huán)語句
4.1行為級建模程序結(jié)構(gòu)
行為級建模是指對信號采用行為級的描述(不是結(jié)構(gòu)級的描述)方法來建模。行為級的描述常用于復(fù)雜數(shù)字邏輯系統(tǒng)的設(shè)計中,也就是通過行為級建模把一個復(fù)雜的系統(tǒng)分解成可操作的若干個模塊,每個模塊之間的邏輯關(guān)系通過行為模塊的仿真加以驗證。這樣就把一個大的系統(tǒng)合理地分解為若干個較小的子系統(tǒng),然后將每個子系統(tǒng)用可綜合風(fēng)格的VerilogHDL模塊(門級結(jié)構(gòu)或RTL級、算法級、系統(tǒng)級的模塊)加以描述。同時,行為級建模也可以用來生成仿真測試信號,對已設(shè)計模塊進行檢測。通過下面的例子,讀者可對行為級建模方式有個初步的概念。
例如:一位全加器的行為級建模。通過該例,應(yīng)建立以下概念:
(1)只有寄存器類型的信號才可以在always和initial語句中進行賦值,類型定義通過reg語句實現(xiàn);
(2)采用行為級描述方式,即直接采用“+”來描述加法,{Count,Sum}表示對位數(shù)的擴展,因為兩個1?bit相加,產(chǎn)生的和有兩位,低位放在Sum變量中,進位放在Count中;
(3)?always語句一直重復(fù)執(zhí)行,由敏感列表(always語句括號內(nèi)的變量)中的變量觸發(fā);
(4)?always語句從0時刻開始;
(5)在begin和end之間的語句是順序執(zhí)行的,屬于串行語句。
4.2過程結(jié)構(gòu)語句
每個過程塊是由過程語句(initial或always)和語句塊組成的,過程塊中有下列部件:過程賦值語句——賦值語句和過程連續(xù)賦值語句;時序控制——控制塊的執(zhí)行及塊中的語句時序;高級結(jié)構(gòu)(循環(huán),條件語句等)——描述塊的功能。
VerilogHDL中的多數(shù)過程模塊都從屬于以下兩種過程語句:
initial說明語句;
always說明語句;一個程序模塊可以有多個initial和always過程塊。每個initial和always說明語句在仿真的一開始即執(zhí)行。initial語句常用于仿真中的初始化,initial語句只執(zhí)行一次,而always語句則是不斷地重復(fù)執(zhí)行,直到仿真過程結(jié)束。always過程語句是可綜合的,在可綜合的電路設(shè)計中廣泛采用。4.2.1initial語句
initial語句的語法格式如下:
initial
語句塊
其中,語句塊的格式為
<塊定義語句1>
時間控制1行為語句1;
…
時間控制n行為語句n;
<塊定義語句2>
initial語句不帶觸發(fā)條件,initial過程中的塊語句沿時間軸只執(zhí)行一次,參見圖4.1。initial語句通常用于仿真模塊中對激勵信號的描述,或用于給寄存器變量賦初值,它是面向模擬仿真的過程語句,通常不能被邏輯綜合工具所支持。圖4.1initial語句執(zhí)行順序
【例4.1】用initial語句在仿真開始時對各變量進行初始化。
【例4.2】用initial語句對存儲器進行初始化。4.2.2always語句
always過程塊是由always過程語句和語句塊組成的,其語法格式如下:
always@<敏感信號表達式>
語句塊
其中,語句塊的格式為
<塊定義語句1>
時間控制1行為語句1;
…
時間控制n行為語句n;
<塊定義語句2>以上的格式中:
(1)關(guān)鍵詞always表明了該過程塊是一個“always過程塊”。
(2)?@<敏感信號表達式>是可選項,有敏感事件列表的語句塊被稱為“由事件控制的語句塊”,它的執(zhí)行要受敏感事件的控制。
(3)“時間控制”用來對過程塊內(nèi)各條語句的執(zhí)行時間進行控制,它可以是任何一種時間控制方式。
(4)語句塊中的行為語句可以是如下語句中的一種:過程賦值語句(阻塞型或非阻塞型)、過程連續(xù)賦值語句、if條件分支語句、case條件分支語句、循環(huán)控制語句(forever、repeat、while、for循環(huán)控制語句)、wait等待語句、disable中斷語句、事件觸發(fā)語句、任務(wù)調(diào)用語句(用戶定義的任務(wù)或系統(tǒng)任務(wù))。圖4.2always語句執(zhí)行順序
【例4.3】always語句示例(1)。
always#half_periodareg=~areg;
這個例子生成了一個周期為period(=2*half_period)的無限延續(xù)的信號波形,常用這種方法來描述時鐘信號,作為激勵信號來測試所設(shè)計的電路。
【例4.4】always語句示例(2)。
4.3語句塊
語句塊是由塊標(biāo)志符begin-end或fork-join界定的一組語句,當(dāng)塊語句只包含一條語句時,塊標(biāo)志符可以省略。下面分別介紹順序語句塊和并行語句塊。4.3.1順序語句塊
順序語句塊(begin-end)的語句按給定次序順序執(zhí)行。每條語句中的時延值與其前面語句執(zhí)行的模擬時間相關(guān)。一旦順序語句塊執(zhí)行結(jié)束,跟隨順序語句塊過程的下一條語句繼續(xù)執(zhí)行。順序語句塊的語法格式如下:圖4.3激勵波形4.3.2并行語句塊
并行語句塊(fork-join)內(nèi)的語句是同時執(zhí)行的,即程序流程控制一進入到該并行塊,塊內(nèi)語句就開始同時執(zhí)行;塊內(nèi)每條語句的延遲時間是相對于程序流程控制進入到塊內(nèi)的仿真時刻而言的;延遲時間是用來給賦值語句提供執(zhí)行時序的;當(dāng)按時間順序排序在最后的語句執(zhí)行完后,或一個disable語句執(zhí)行時,程序流程控制跳出該程序塊。
【例4.5】
并行語句塊舉例。4.3.3順序語句塊和并行語句塊的混合使用
順序語句塊和并行語句塊的混合使用有以下兩種情況:
(1)當(dāng)順序語句塊和并行語句塊屬于不同的過程塊(initial或always過程塊)時,順序語句塊和并行語句塊是并行執(zhí)行的。
【例4.6】順序語句塊和并行語句塊的混合使用示例(1)。圖4.4例4.6的激勵波形
(2)當(dāng)順序語句塊和并行語句塊嵌套在同一條過程塊內(nèi)時,內(nèi)層語句塊可以看做外層語句塊中的一條普通語句,內(nèi)層語句塊在什么時候得到執(zhí)行是由外層語句塊的規(guī)則所決定的;內(nèi)層語句塊開始執(zhí)行后,其內(nèi)部各條語句的執(zhí)行要遵守內(nèi)層語句塊的規(guī)則。
【例4.7】順序語句塊和并行語句塊的混合使用示例(2)。
4.4時序控制
時序控制可以用來對過程塊中各條語句的執(zhí)行時間(時序)進行控制。VerilogHDL提供了兩種類型的時序控制。
(1)延時控制:為行為語句的執(zhí)行指定一個延遲時間。
(2)事件控制:為行為語句的執(zhí)行指定觸發(fā)事件時間。事件控制分為兩種,即電平敏感事件觸發(fā)和邊沿敏感事件觸發(fā)。4.4.1延時控制
延時控制的語法格式如下:
#<延遲時間>行為語句;
或
#<延遲時間>;
其中,符號“#”是延時控制的標(biāo)識符,<延遲時間>是指定的延遲時間量,它是以多個仿真時間單位的形式給出的。
【例4.8】延時控制方式一。
【例4.9】延時控制方式二。4.4.2電平敏感事件觸發(fā)
電平敏感事件控制方式下啟動語句執(zhí)行的觸發(fā)條件是指定的條件表達式為真(1)。電平敏感事件控制用關(guān)鍵詞“wait”來表示,有以下3種所示:
wait(條件表達式)語句塊;
wait(條件表達式)行為語句;
wait(條件表達式);
【例4.10】電平敏感事件控制舉例。第三種形式中的wait后沒有包含語句塊或行為語句,在這種形式下,當(dāng)仿真進程執(zhí)行到該wait控制語句條件表達式的值為“真”時,立即結(jié)束該wait控制語句的執(zhí)行,仿真進程繼續(xù)向下進行。這種形式的電平敏感事件控制常常對順序語句中各條語句的執(zhí)行時序進行控制。
程序執(zhí)行到以下語句時將暫停,直到reset變?yōu)檎?值為1)時,立即結(jié)束該wait控制語句,繼續(xù)執(zhí)行后面的語句。
wait(reset);4.4.3邊沿敏感事件觸發(fā)
在邊沿敏感事件觸發(fā)的事件控制方式下,行為語句的執(zhí)行需要由指定事件的發(fā)生來觸發(fā),也就是在指定信號的跳變邊沿才觸發(fā)語句的執(zhí)行,而當(dāng)信號處于穩(wěn)定狀態(tài)時則不會觸發(fā)語句的執(zhí)行。
邊沿敏感事件控制的語法格式有以下4種:例如:
【例4.11】邊沿敏感事件計數(shù)器。
【例4.12】二選一多路選擇器。
4.5賦值語句
賦值語句可以分為連續(xù)賦值語句和過程賦值語句。連續(xù)賦值語句是數(shù)據(jù)流描述方式的賦值語句,而過程賦值語句則是行為描述方式的賦值語句。
過程賦值語句是最常見的賦值形式,等號左側(cè)是賦值目標(biāo),右側(cè)是表達式。它有以下幾個特點:
(1)過程賦值語句只出現(xiàn)在initial和always語句塊內(nèi)。
(2)過程賦值語句只能給寄存器變量賦值。
(3)賦值表達式的右端可以是任何表達式。
【例4.13】過程賦值語句賦值操作的一般形式。4.5.1連續(xù)賦值語句
連續(xù)賦值語句用來驅(qū)動線網(wǎng)型變量,這一線網(wǎng)型變量必須已經(jīng)事先定義過。只要輸入端操作數(shù)的值發(fā)生變化,該語句就重新計算并刷新賦值結(jié)果,我們可以使用連續(xù)賦值語句來描述組合邏輯,而不需要用門電路和互連線。連續(xù)賦值語句的語法格式如下:
assignnet_value=expression(表達式);其中:net_value為線網(wǎng)型(wire)變量,expression為賦值操作表達式,可以是常量、由運算符(如邏輯運算符、算術(shù)運算符)參與的表達式。例如:
wire[3:0]Z,a,b; //線網(wǎng)說明
assignZ=a&b; //連續(xù)賦值語句,給Z賦值
連續(xù)賦值語句執(zhí)行時,只要等號右端的操作數(shù)上有事件發(fā)生(操作數(shù)值的變化),右端表達式即被計算,如果結(jié)果值有變化,新結(jié)果就賦給等號左端的線網(wǎng)型變量。4.5.2阻塞賦值語句
阻塞賦值的操作符是等號(=),例如:
b=a;
阻塞賦值語句在執(zhí)行時,先計算右側(cè)表達式的值,然后賦值給等號左端目標(biāo),在完成整個賦值之前不能被其他語句打斷。也就是說,前面的賦值語句沒有完成之前,后面的語句不能被執(zhí)行,仿佛被阻塞了一樣,因此稱為阻塞賦值方式。
【例4.14】阻塞賦值語句示例。圖4.5阻塞賦值仿真波形4.5.3非阻塞賦值語句
非阻塞賦值的操作符是符號“<=”,例如:
b<=a;
非阻塞過程賦值只能用于寄存器賦值。非阻塞賦值在所在塊結(jié)束之后才能真正完成賦值操作,如例4.15中,b的值并不是立刻改變的。
【例4.15】非阻塞賦值語句示例。圖4.6非阻塞賦值仿真波形
4.6分支語句
4.6.1if-else語句
if語句用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。VerilogHDL語言提供了三種形式的if語句。
1.第一種形式
if(條件表達式)塊語句
說明:
(1)當(dāng)條件表達式為邏輯真和邏輯1時執(zhí)行塊語句,其他情況下(如為0、x、z)均為條件不成立;
(2)一條沒有else語句的if語句映射到硬件上,會形成一個鎖存器。例如:
always@(enableordada)
if(enbale)
out=data;
data與out的關(guān)系參見表4.1。表4.1if條件表達式的真值表
【例4.16】if-else語句示例。
3.第三種形式
【例4.17】模為60的BCD碼計數(shù)器。4.6.2case語句
case分支語句是另一種用來實現(xiàn)多路分支選擇控制的語句。case分支語句通常用于微處理器指令譯碼功能的描述和有限狀態(tài)機的描述。它有case、casez和casex三種形式。其語法格式如下:
【例4.18】一個名為
encod8_3的8-3普通編碼器。這個例子描述了一個名為encod8_3
的8-3普通編碼器,實現(xiàn)了8位輸入、3位輸出,在某一時刻只有一個輸入被轉(zhuǎn)換為二進制碼。
VerilogHDL針對電路的特性還提供了case語句的另外兩種形式:casez和casex。其中casez語句忽略比較表達式兩邊的z部分,casex語句忽略比較表達式兩邊的x部分和z部分,即在表達式進行比較時,不將該位的狀態(tài)考慮在內(nèi)。這樣,在case語句表達式進行比較時,就可以靈活地設(shè)置對信號的某些位進行比較。例如:
4.7循環(huán)語句
4.7.1forev
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財產(chǎn)保險合同(2篇)
- 智慧照明控制系統(tǒng)合同(2篇)
- 2025至2031年中國噴墨打印機耗材行業(yè)投資前景及策略咨詢研究報告
- 二零二五年度貨車司機勞動合同(含貨物保險及索賠流程)
- 2025年度游艇轉(zhuǎn)讓與船舶市場推廣合作合同
- 2025年度海域旅游開發(fā)租賃合同書
- 二零二五年度農(nóng)產(chǎn)品銷售提成與品牌溯源合同
- 二零二五年度沿街商鋪租賃服務(wù)合同(含公共區(qū)域使用權(quán))
- 2025年度房地產(chǎn)項目法律盡職調(diào)查服務(wù)合同
- 2025年度健身俱樂部租賃合同租金調(diào)整及會員服務(wù)補充協(xié)議
- 江蘇中國中煤能源集團有限公司江蘇分公司2025屆高校畢業(yè)生第二次招聘6人筆試歷年參考題庫附帶答案詳解
- 【語文】第23課《“蛟龍”探海》課件 2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 北師版七年級數(shù)學(xué)下冊第二章測試題及答案
- 2025年全體員工安全意識及安全知識培訓(xùn)
- 2025警察公安派出所年終總結(jié)工作匯報
- 機動車檢測站新?lián)Q版20241124質(zhì)量管理手冊
- 2024年決戰(zhàn)行測5000題言語理解與表達(培優(yōu)b卷)
- 中國游戲發(fā)展史課件
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 工程數(shù)學(xué)試卷及答案
- 《PLC應(yīng)用技術(shù)(西門子S7-1200)第二版》全套教學(xué)課件
評論
0/150
提交評論