版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2HDL語言簡介語言簡介Verilog 中的模塊(中的模塊(Module)Verilog語言中常用語句語言中常用語句Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog的的語言要素語言要素Verilog語言的語言的4大法寶大法寶3456Verilog語言中常用語句語言中常用語句Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog的的語言要素語言要素Verilog語言的語言的4大法寶大法寶Verilog 中的模塊(中的模塊(Module)7 模塊是Verilog 的
2、基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。 整個(gè)邏輯設(shè)計(jì)就是通過模塊之間的例化(instantiation)來構(gòu)成一個(gè)整體的。 邏輯設(shè)計(jì)的思想體現(xiàn)了自頂向下的設(shè)計(jì)方法系統(tǒng)級的頂層模塊模塊A模塊C模塊B模塊A1模塊C2模塊C1模塊A28 要求:每個(gè)文件只包含一個(gè)模塊 。模塊名和文件名保持一致。模塊名實(shí)例名端口信號映射關(guān)系9module module_name (port_list) ; Declarations : reg, wire, parameter, input, output, inout, function, task, . . . Statements
3、 : Initial statement Always statement Module instantiation Gate instantiation UDP instantiation Continuous assignmentendmodule模塊的結(jié)構(gòu)需按上面的順序進(jìn)行,聲明區(qū)用來對信號方向、信號數(shù)據(jù)類型、函數(shù)、任務(wù)、參數(shù)等進(jìn)行描述。語句區(qū)用來對功能進(jìn)行描述如:器件調(diào)用 (Module instantiation )等。10Verilog語言中常用語句語言中常用語句Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog語
4、言的語言的4大法寶大法寶Verilog的語言要素的語言要素11Verilog的語言要素的語言要素12 標(biāo)識符( identifier)用于定義模塊名、端口名、信號名等。 Verilog HDL 中的標(biāo)識符( identifier )可以是任意一組字母、數(shù)字、$符號和_(下劃線)符號的組合,但標(biāo)識符的第一個(gè)字符必須是字母或者下劃線。另外,標(biāo)識符是區(qū)分大小寫敏感的。以下是標(biāo)識符的幾個(gè)例子: Verilog HDL 定義了一系列保留字,叫做關(guān)鍵詞,附錄A 列出了語言中的所有保留字。注意只有小寫的關(guān)鍵詞才是保留字。例如,標(biāo)識符always (這是個(gè)關(guān)鍵詞)與標(biāo)識符ALWAYS(非關(guān)鍵詞)是不同的。13
5、 兩種注釋的方式: 以“/*”符號開始,“*/” 結(jié)束,在兩個(gè)符號之間的語句都是注釋語句,因此可擴(kuò)展到多行。如: /* statement1 , statement2, . . statementn */ 以上n個(gè)語句都是注釋語句。 是以 / 開頭的語句,它表示以 / 開始到本行結(jié)束都屬于注釋語句。14 自由的書寫格式: Verilog HDL的書寫格式是自由的,即一條語句可多行書寫;一行可寫多個(gè)語句。白空(新行、制表符、空格)沒有特殊意義。 如: input A;input B;與 input A; input B; 功能是一樣的,但是這方面公司有嚴(yán)格的書寫規(guī)范。15 以$字符開始的標(biāo)識符表
6、示系統(tǒng)任務(wù)。 任務(wù)提供了一種封裝行為的機(jī)制。這種機(jī)制可在設(shè)計(jì)的不同部分被調(diào)用。任務(wù)可以返回0個(gè)或多個(gè)值。 函數(shù)在0時(shí)刻執(zhí)行,即不允許延遲。 $d i s p l a y (Hi, you have reached LT today); /* $d i s p l a y 系統(tǒng)任務(wù)在新的一行中顯示。* / $t i m e / /該系統(tǒng)任務(wù)返回當(dāng)前的模擬時(shí)間。16 以(反引號)開始的某些標(biāo)識符是編譯器指令。 在Verilog 語言編譯時(shí),特定的編譯器指令在整個(gè)編譯過程中有效(編譯過程可跨越多個(gè)文件),直到遇到其它的不同編譯程序指令。 完整的標(biāo)準(zhǔn)編譯器指令如下: define, undef ifd
7、ef, else, endif default_nettype include resetall timescale unconnected_drive, nounconnected_drive celldefine, endcelldefine17 四種基本的值類型: 0:邏輯0或“假”; 1:邏輯1或“真”; X:未知值; Z:高阻。注意這四種值的解釋都內(nèi)置于語言中。如一個(gè)為z 的值總是意味著高阻抗,一個(gè)為0 的值通常是指邏輯0 。18 兩種數(shù)據(jù)類型:線網(wǎng)類型(net type) 和 寄存器類型(reg type)。 線網(wǎng)類型代表的是物理連接線,因此它不存貯邏輯值。必須由器件所驅(qū)動(dòng)。ass
8、ign賦值語句必須用線網(wǎng)類型。 定義:wire a; assign A = B C; 當(dāng)一個(gè)wire 類型的信號沒有被驅(qū)動(dòng)時(shí),缺省值為Z(高阻)。 信號沒有定義數(shù)據(jù)類型時(shí),缺省為 wire 類型。 寄存器類型通常用于對存儲(chǔ)單元的描述,如D型觸發(fā)器、ROM等。存儲(chǔ)器類型的信號當(dāng)在某種觸發(fā)機(jī)制下分配了一個(gè)值,在分配下一個(gè)值之時(shí)保留原值。但必須注意的是,reg 類型的變量,不一定是存儲(chǔ)單元。 注意在always,initial 語句中必須用reg 類型的變量。定義: reg msb: lsb reg1, reg2, . . . r e g N;19 參數(shù)是一個(gè)常量。參數(shù)經(jīng)常用于定義時(shí)延和變量的寬度。
9、使用參數(shù)說明的參數(shù)只被賦值一次。參數(shù)說明形式如下: 下面為具體實(shí)例: p a r a m e t e r L I N E L E N G T H = 132; p a r a m e t e r A L L _ X _ S = 16bx;20 三種常量:整型、實(shí)型、字符串型。 整型數(shù)可以按如下兩種方式書寫: 1) 簡單的十進(jìn)制數(shù)格式 32 十進(jìn)制數(shù)32 2) 基數(shù)格式: size base value size 定義以位計(jì)的常量的位長;base 為o 或O(表示八進(jìn)制),b 或B(表示二進(jìn)制),d 或D (表示十進(jìn)制),h 或H (表示十六進(jìn)制)之一;value 是基于base 的值的數(shù)字序列
10、。值x 和z 以及十六進(jìn)制中的a 到f 不區(qū)分大小寫。如: 3b101 1h6 字符串是雙引號內(nèi)的字符序列。字符串不能分成多行書寫。如: INTERNAL ERROR REACHEDHERE 21 算術(shù)運(yùn)算符 加法(二元運(yùn)算符):“+”; 減法 (二元運(yùn)算符): “-”; 乘法(二元運(yùn)算符):“*”; 關(guān)系運(yùn)算符有:(大于)=(不小于)=(不大于)= = (邏輯相等)!= (邏輯不等)22 按位邏輯運(yùn)算符 條件運(yùn)算符 cond_expr ? expr1 : expr2 連接運(yùn)算符 連接操作:將小表達(dá)式合并形成大表達(dá)式或者說總線的操作。形式如下: expr1, expr2, . . .,expr
11、N 例如: wire 7:0 Dbus; assign Dbus 7:4 = Dbus 0, Dbus 1, Dbus2, Dbus 3 ;23Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog語言的語言的4大法寶大法寶Verilog語言中常用語句語言中常用語句24 If語句25當(dāng)比較向量時(shí),verilog將對位數(shù)小的向量做 0 擴(kuò)展以使它們的長度相匹配,它的自動(dòng)擴(kuò)展為隱式的。建議采用顯示擴(kuò)展。每一個(gè)If 都應(yīng)有一個(gè)else 和它相對應(yīng),防止產(chǎn)生latch;if語句的嵌套時(shí),應(yīng)注意每個(gè)If 條件的優(yōu)先級;建議采用于 if (v
12、ariable = = 1),不要采用If (variable) ,以增強(qiáng)程序的可讀性。26 Case語句27 所有的Case 應(yīng)該有一個(gè)default case ,以免生成不必要的鎖存器。允許空語句: Default : ; 避免使用casex。28 case語句通常綜合成一級多路復(fù)用器,而if-then-else則綜合成優(yōu)先編碼的串接的多個(gè)多路復(fù)用器。 case 語句仿真要比條件賦值語句快,因?yàn)閮?yōu)先編碼器的結(jié)構(gòu)僅在信號的到達(dá)有先后時(shí)使用。 if語句有優(yōu)先級,case語句沒有。29 兩者綜合實(shí)現(xiàn)后結(jié)果:If語句 case語句3031initial waitrepeat whileforeve
13、r named eventsfork/join deassignforce/releaseprocedural assignmentsoperators : case equality and inequality = != 另外for語句雖然可以綜合,但也不建議使用32Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog語言的語言的4大法寶大法寶33 Wire-數(shù)據(jù)類型:Verilog結(jié)構(gòu)化元件間的物理連線。 Reg -數(shù)據(jù)類型:寄存器類型 Assign-連續(xù)賦值語句 Always-Always語句只要條件滿足始終重復(fù)執(zhí)行Co
14、mbLogicDQQSETCL RDQQSETCL RDQQSETCL RDQQSETCL RDQQSETCL RExternalInput34 連續(xù)賦值語句的執(zhí)行是:只要右邊表達(dá)式任一個(gè)變量有變化,表達(dá)式立即被計(jì)算,計(jì)算的結(jié)果立即賦給左邊信號。 連續(xù)賦值語句之間是并行語句,因此與位置順序無關(guān)。35 Verilog HDL 有兩種過程賦值語句: initial 和 always 語句,實(shí)現(xiàn)行為建模。這兩種語句之間的執(zhí)行是并行的,即語句的執(zhí)行與位置順序無關(guān)。這兩種語句通常與語句塊(begin .end)相結(jié)合,則語句塊中的執(zhí)行是按順序執(zhí)行的。 initial 語句只執(zhí)行一次,即在設(shè)計(jì)被開始模擬執(zhí)
15、行時(shí)開始(0時(shí)刻)。通常只用在對設(shè)計(jì)進(jìn)行仿真的測試文件中,用于對一些信號進(jìn)行初始化和產(chǎn)生特定的信號波形。 always 語句與initial 語句相反,是被重復(fù)執(zhí)行,執(zhí)行機(jī)制是通過對一個(gè)稱為敏感變量表的事件驅(qū)動(dòng)來實(shí)現(xiàn)的36 assign、always例子:37 在assign語句中賦值的變量要定義為wire。 在always塊中被賦值的變量要定義為reg。 reg變量并不一定被綜合為寄存器。always塊也可以用來描述組合邏輯。Reg 變量wire 變量38 整個(gè)邏輯設(shè)計(jì)中的Module,以及Module中的Always語句塊、Assign語句都是并行動(dòng)作的。 因此Module中的Always
16、語句塊、 Assign語句、例化Module語句書寫位置是沒有要求的。39Verilog語言中常見的錯(cuò)誤語言中常見的錯(cuò)誤Verilog語言中阻塞和非阻塞賦值語言中阻塞和非阻塞賦值40 阻塞賦值賦值操作符是“=”的過程賦值是阻塞性過程賦值。阻塞性過程賦值在其后所有語句執(zhí)行前執(zhí)行,即在下一語句執(zhí)行前該賦值語句完成執(zhí)行。T1賦值首先發(fā)生,計(jì)算T1;接著執(zhí)行第二條語句, T2被賦值;然后執(zhí)行第三條語句, T3被賦值;依此類推。41 非阻塞賦值在非阻塞性過程賦值中,使用賦值符號“ =”。當(dāng)非阻塞性過程賦值被執(zhí)行時(shí),計(jì)算右端表達(dá)式,右端值被賦于左端目標(biāo),并繼續(xù)執(zhí)行下一條語句。非阻塞語句并行執(zhí)行第一條語句的
17、執(zhí)行使Clr 在第5個(gè)時(shí)間單位被賦于值1;第二條語句的執(zhí)行使Clr在第4個(gè)時(shí)間單位被賦值為0 (從0時(shí)刻開始的第4個(gè)時(shí)間單位);最終,第3條語句的執(zhí)行使Clr在第10個(gè)時(shí)間單位被賦值為0 (從0時(shí)刻開始的第10個(gè)時(shí)間單位)。注意3條語句都是在0時(shí)刻執(zhí)行的。此時(shí),非阻塞性賦值執(zhí)行次序變得彼此不相關(guān)。42 原則1:對時(shí)序邏輯建模時(shí),使用非阻塞賦值。 原則2:對鎖存器建模時(shí),使用非阻塞賦值。 原則3:用always塊對組合邏輯建模時(shí),使用阻塞賦值。 原則4:在同一always塊中對時(shí)序邏輯和組合邏輯同時(shí)建模時(shí),使用非阻塞賦值。 原則5:在同一always塊中,不要混合使用阻塞和非阻塞賦值。 原則6:不要用多
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石材供應(yīng)購銷合同
- 食品材料采購合同書
- 酒駕者自律書
- 智能化濕地監(jiān)控系統(tǒng)招標(biāo)
- 花卉育苗合作方案
- 巖棉板采購合同示例
- 青春守護(hù)堅(jiān)守底線抵制早戀
- 代理合同補(bǔ)充協(xié)議要點(diǎn)
- 簡易分包合同勞務(wù)部分
- 催辦房屋買賣合同辦理事宜
- 老年人睡眠障礙的護(hù)理(PPT課件)
- 會(huì)陰阻滯麻醉完整版PPT課件
- 《家庭禮儀》PPT課件
- 應(yīng)聘人員面試登記表(應(yīng)聘者填寫)
- T∕CAAA 005-2018 青貯飼料 全株玉米
- s鐵路預(yù)應(yīng)力混凝土連續(xù)梁(鋼構(gòu))懸臂澆筑施工技術(shù)指南
- 撥叉831006設(shè)計(jì)說明書
- 程序語言課程設(shè)計(jì)任意兩個(gè)高次多項(xiàng)式的加法和乘法運(yùn)算
- 石油鉆井八大系統(tǒng)ppt課件
- 北師大版二年級數(shù)學(xué)上冊期末考試復(fù)習(xí)計(jì)劃
- 人教PEP版六年級英語上冊《Unit4_B_Let’s_learn教學(xué)設(shè)計(jì)》
評論
0/150
提交評論