Verilog學(xué)習(xí)總結(jié).ppt_第1頁(yè)
Verilog學(xué)習(xí)總結(jié).ppt_第2頁(yè)
Verilog學(xué)習(xí)總結(jié).ppt_第3頁(yè)
Verilog學(xué)習(xí)總結(jié).ppt_第4頁(yè)
Verilog學(xué)習(xí)總結(jié).ppt_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Verilog學(xué)習(xí)總結(jié),verilog特點(diǎn), 區(qū)分大小寫(xiě),所有關(guān)鍵字都要求小寫(xiě) 不是強(qiáng)類型語(yǔ)言,不同類型數(shù)據(jù)之間可以賦值和運(yùn)算 /是單行注釋 可以跨行注釋 描述風(fēng)格有系統(tǒng)級(jí)描述、行為級(jí)描述、RTL級(jí)描述、門(mén)級(jí)描述,其中RTL級(jí)和門(mén)級(jí)別與具體電路結(jié)構(gòu)有關(guān),行為級(jí)描述要遵守可綜合原 門(mén)級(jí)描述使用門(mén)級(jí)模型或者用戶自定義模型UDP來(lái)代替具體基本元件,在IDE中針對(duì)不同F(xiàn)PGA器件已經(jīng)有對(duì)應(yīng)的基本元件原語(yǔ),verlog語(yǔ)法要點(diǎn), module endmodule之間由兩部分構(gòu)成:接口描述和邏輯功能描述 IO端口種類: input output inout 相同位寬的輸入輸出信號(hào)可以一起聲明, input

2、3:0 a,b; 不同位寬的必須分開(kāi)寫(xiě) 內(nèi)部信號(hào)為reg類型,內(nèi)部信號(hào)信號(hào)的狀態(tài): 0 1 x z, 3bx1=3bxx1 x/z會(huì)往左擴(kuò)展 3b1=3b001 數(shù)字不往左擴(kuò)展 邏輯功能描述中常用assign描述組合邏輯電路,always既可以描述組合邏輯電路又可以描述時(shí)序邏輯電路,還可以用元件調(diào)用方法描述邏輯功能 always之間、assign之間、實(shí)例引用之間以及它們之間都是并行執(zhí)行,always內(nèi)部是順序執(zhí)行,verlog語(yǔ)法要點(diǎn),常量格式: : 默認(rèn)進(jìn)制為10進(jìn)制 默認(rèn)位寬為32位 位寬是從二進(jìn)制寬度角度而言的 由位寬決定從低位截取二進(jìn)制數(shù)2hFF=2b11,通常由被賦值的reg變量位

3、寬決定 parameter常用于定義延遲和變量位寬,可用常量或常量表達(dá)式定義,verlog語(yǔ)法要點(diǎn),變量種類: wire reg memory IO信號(hào)默認(rèn)為wire類型,除非指定為reg類型wire可以用作任何輸入輸出端口 wire包括input output inoutwire不帶寄存功能 assign賦值語(yǔ)句中,被賦值的信號(hào)都是wire類型assign之所以稱為連續(xù)賦值,是因?yàn)椴粩鄼z測(cè)表達(dá)式的變化reg類型可以被賦值后再使用,而不是向wire一樣只能輸出 reg類型變量初始值為x always模塊里被賦值的信號(hào)都必須定義為reg類型,因?yàn)閍lways可以反復(fù)執(zhí)行,而reg表示信號(hào)的寄存,

4、可以保留上次執(zhí)行的值reg類型變量與integer變量不同,即使賦負(fù)值,實(shí)質(zhì)上也是按二進(jìn)制無(wú)符號(hào)數(shù)存儲(chǔ)的,integer是有符號(hào)數(shù),verlog語(yǔ)法要點(diǎn),verilog中所有內(nèi)部信號(hào)都是靜態(tài)變量,因?yàn)樗鼈兊闹刀荚趓eg中存儲(chǔ)起來(lái) memory型只有一維數(shù)組,由reg型變量組成 memory初始化只能按地址賦值,不能一次性賦值 1*256的memory寫(xiě)法: reg mema255:0 mema3=0; 不同位寬的變量之間賦值,處理之前都以被賦值的變量位寬為準(zhǔn)擴(kuò)展或截取 Aa:b 無(wú)論a b誰(shuí)大,a總是實(shí)際電路的信號(hào)高位,b總是實(shí)際電路的信號(hào)低位 算術(shù)運(yùn)算中如果有X值則結(jié)果為X for循環(huán)中的變

5、量另外定義成integer,因?yàn)樗皇菍?shí)際信號(hào),有正負(fù);reg則以無(wú)符號(hào)數(shù)存在 = 和!=只比較0、1,遇到z或x時(shí)結(jié)果都為x (x在if中算做假條件),結(jié)果可能是1、0、x =和!=比較更加苛刻,包括x和z的精確比較,結(jié)果可能是0、1 end 如果A事件不發(fā)生則永遠(yuǎn)不能執(zhí)行下去,被阻塞了 由于時(shí)鐘的延時(shí)(往往在ps級(jí)),多個(gè)always(posedge)之間究竟誰(shuí)先執(zhí)行是個(gè)未知數(shù) 使用原則: 同一個(gè)always過(guò)程塊內(nèi)建立時(shí)序電路用= 純組合邏輯電路用=,生成的電路結(jié)構(gòu)最簡(jiǎn)單,執(zhí)行速度最快 同一個(gè)always塊內(nèi)不要混用=和= 不要在多個(gè)always塊內(nèi)對(duì)同一個(gè)變量賦值(多源驅(qū)動(dòng)),verl

6、og語(yǔ)法要點(diǎn),if else的三種形式,第三種形式適合描述優(yōu)先編碼器 if條件中0/x/z當(dāng)成假,1當(dāng)成真,非0的數(shù)值也當(dāng)成真 case語(yǔ)句的三種: case(四種狀態(tài)的比較) casez(忽略z) casex(忽略x和z,只看哪些位的信號(hào)有用) case語(yǔ)句中所有表達(dá)式值的位寬必須相等,default中不能將nbx用bx代 避免生成鎖存器的方法: 電平觸發(fā)時(shí)if后加else case中加default ? 使用casex會(huì)將不必要的狀態(tài)視為無(wú)關(guān)項(xiàng),使得綜合出來(lái)的電路最簡(jiǎn)單 兩種特殊的括號(hào): begin 順序語(yǔ)句. end fork 并行語(yǔ)句. join,其差別在于塊內(nèi)語(yǔ)句的起止時(shí)間、執(zhí)行順序

7、、相對(duì)延時(shí) 塊被命名后,其內(nèi)部變量可以被調(diào)用,因?yàn)樽兞慷际庆o態(tài)的(調(diào)用信號(hào):對(duì)應(yīng)電路中的一個(gè)信號(hào)線被引到另一處),verlog語(yǔ)法要點(diǎn),initial塊只無(wú)條件執(zhí)行一次 always塊在滿足條件時(shí)不斷執(zhí)行 initial常用來(lái)寫(xiě)測(cè)試文件, always塊常用來(lái)寫(xiě)電路描述 always既可以描述組合邏輯電路又可以描述時(shí)序邏輯電路 always如果后面有敏感信號(hào)列表則不能用wait語(yǔ)句 always既可以描述電平觸發(fā)又可以描述邊沿觸發(fā),wait只能描述電平觸發(fā) assign常用于描述組合邏輯電路 測(cè)試文件中一般都是現(xiàn)initial 后always 生成語(yǔ)句:生成快的本質(zhì)是使用循環(huán)內(nèi)的一條語(yǔ)句代替多

8、條重復(fù)的verilog語(yǔ)句,簡(jiǎn)化了用戶的編程。 genvar用于聲明生成變量,生成變量只能用在生成快之間 仿真時(shí),仿真器會(huì)將生成塊中的代碼展平,在確立后的方針代碼中,生成變量是不存在的。最好是先想象出來(lái)循環(huán)生成語(yǔ)句被展平后的電路樣子,再寫(xiě)相關(guān)的描述語(yǔ)句,verlog語(yǔ)法要點(diǎn),task和function的區(qū)別: task可以定義自己的仿真時(shí)間單位,function與主模塊共用同一個(gè)仿真時(shí)間單位函數(shù)不能啟動(dòng)任務(wù),任務(wù)能夠啟動(dòng)函數(shù)函數(shù)至少要有一個(gè)輸入變量,任務(wù)沒(méi)有輸入變量函數(shù)返回一個(gè)值,任務(wù)不返回值,verlog語(yǔ)法要點(diǎn),一個(gè)模塊的設(shè)計(jì)包括3個(gè)部分: 電路模塊的設(shè)計(jì) 測(cè)試模塊的設(shè)計(jì) 設(shè)計(jì)文檔的編寫(xiě)

9、設(shè)計(jì)者通過(guò)布局布線工具生成具有布線延遲的電路,再進(jìn)行 仿真,得到時(shí)序分析報(bào)告 從時(shí)序分析報(bào)告中可以知道電路的實(shí)際延遲t,同步電路內(nèi)每個(gè)時(shí)鐘周期要大于t,從而可確定該運(yùn)算邏輯的最高頻率 綜合器之所以能夠?qū)崿F(xiàn)加法器、乘法器是因?yàn)閹?kù)中已經(jīng)存在可配置的參數(shù)化器件模型 FPGA內(nèi)總線寬度容易自定義,以便實(shí)現(xiàn)高速數(shù)據(jù)流, 三態(tài)數(shù)據(jù)總線相當(dāng)于數(shù)據(jù)流的控制閥門(mén) 數(shù)字系統(tǒng)內(nèi)數(shù)據(jù)流的控制: 開(kāi)關(guān)(或三態(tài)數(shù)據(jù)總線)、數(shù)據(jù)暫存部件(寄存器)、 同步狀態(tài)機(jī)控制(整個(gè)系統(tǒng)在一個(gè)時(shí)鐘內(nèi)),verlog語(yǔ)法要點(diǎn),流水線操作pipe line: K級(jí)流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組,上一級(jí)的輸出是下一級(jí)的輸入

10、 流水線操作獲得第一個(gè)結(jié)果的時(shí)間要比不用流水線操作的時(shí)間長(zhǎng),但以后結(jié)果獲得時(shí)間都只需要一個(gè)時(shí)鐘周期,提高了數(shù)據(jù)吞吐量 流水線操作的保證:TclkK*(組合邏輯延遲+觸發(fā)器的建立保持時(shí)間/觸發(fā)時(shí)間),即時(shí)間片段要長(zhǎng)于最大路徑延遲 體現(xiàn)了面積換速度的思想,在綜合時(shí)考慮的是以面積小為主還是以速度為主 本質(zhì)上是一種同步邏輯,verlog語(yǔ)法要點(diǎn),同步時(shí)序邏輯和異步時(shí)序邏輯: 同步時(shí)序邏輯指所有寄存器組由唯一時(shí)鐘觸發(fā) always(posedgeclk) 或always(negedageclk) 異步時(shí)序邏輯指觸發(fā)條件不唯一,任意一個(gè)條件都會(huì)引起觸發(fā)always(posedgeclk or poseda

11、ge reset) 目前的綜合器是以同步時(shí)序邏輯綜合的,因?yàn)橥綍r(shí)序邏輯較異步時(shí)序邏輯可靠 嚴(yán)格的同步要求時(shí)鐘信號(hào)傳遞速度遠(yuǎn)遠(yuǎn)大于各部分的延遲,實(shí)際中clk要單獨(dú)用線,而不要經(jīng)過(guò)反相器等部件 always (posedge. ) begin .=. end 表示同步時(shí)序邏輯(同時(shí)刻賦值) 不同速率數(shù)據(jù)接口的處理方法(異步數(shù)據(jù)的處理方法):幀同步 FIFO 雙端口RAM,verlog語(yǔ)法要點(diǎn),同步狀態(tài)機(jī): 包括moore和mealy型兩種,及其反饋模型(是一種反饋控制系統(tǒng),當(dāng)前狀態(tài)就是其內(nèi)部狀態(tài)變量) 狀態(tài)機(jī)的開(kāi)發(fā)步驟: 根據(jù)實(shí)際問(wèn)題列出輸入輸出變量和狀態(tài)數(shù) 畫(huà)出狀態(tài)圖并化簡(jiǎn) 寫(xiě)出狀態(tài)轉(zhuǎn)移真值表

12、得到邏輯表達(dá)式 用D觸發(fā)器或JK觸發(fā)器構(gòu)建電路(目前用D觸發(fā)器多) verilog描述時(shí)只需要得到簡(jiǎn)化的狀態(tài)圖就可以描述 狀態(tài)編碼方式: 獨(dú)熱碼 格雷碼狀態(tài)機(jī)主體程序有單always描述方式和多always描述方式 采用case/casez/casex建立模型最好,因?yàn)閤是無(wú)關(guān)態(tài),生成的電路最簡(jiǎn)單 default: state=bx與實(shí)際情況更一致,效果等同于 default: state=idle 只有同步狀態(tài)機(jī)才能被目前的綜合,verlog語(yǔ)法要點(diǎn),for語(yǔ)句會(huì)將所有變量的情況展開(kāi),占用巨量邏輯資源,替代 辦法是用計(jì)數(shù)器和case語(yǔ)句說(shuō)明所有情況 有優(yōu)先級(jí)的if else結(jié)構(gòu)會(huì)消耗更多資源

13、,建議用無(wú)優(yōu)先級(jí)的 case替代模塊的復(fù)用往往比代碼上修改節(jié)省的資源多PLL的分 頻、倍頻、移相操作會(huì)增加設(shè)計(jì)精度同步時(shí)序電路的延時(shí)#x 通常用于仿真測(cè)試,實(shí)際硬件延時(shí)是:長(zhǎng)延遲用計(jì)數(shù)器,小 延遲用D觸發(fā)器,此方法用來(lái)取代延遲鏈同步電路中,穩(wěn)定的 數(shù)據(jù)采用必須滿足采樣寄存器的建立和保持時(shí)間reg類型在 always中不一定綜合成時(shí)序電路,也可能是組合邏輯電路乒乓操作與作用 異步時(shí)鐘域同步問(wèn)題延遲包括門(mén)延遲和線延遲組合邏輯產(chǎn)生的時(shí)鐘僅能應(yīng)用在時(shí)鐘頻率較低、精度要求不高的情況下增減敏感信號(hào)得到的結(jié)果一樣,補(bǔ)充,verilog的標(biāo)識(shí)符區(qū)分大小寫(xiě),關(guān)鍵字使用小寫(xiě); 用來(lái)進(jìn)行單行注釋,用* *來(lái)進(jìn)行跨行

14、注釋; 標(biāo)識(shí)符由字母、數(shù)字、下劃線構(gòu)成,并以字母開(kāi)頭; 關(guān)鍵字又叫保留字,只有小寫(xiě)的關(guān)鍵字才是保留字; 信號(hào)的狀態(tài)有4種: 0 1 x zx和z在描述電路時(shí)不區(qū)分大小寫(xiě),在仿真時(shí)大小寫(xiě)有不同意義;字符和字符串都以ASICII碼形式存在,也可以當(dāng)成電路內(nèi)的信號(hào); 字符串必須包含在同一行,不能分成多行書(shū)寫(xiě); 如果表達(dá)式或者賦值語(yǔ)句中將字符串當(dāng)成操作數(shù),則字符串 中的每個(gè)字符都被看成8位的ASCII值序列;,補(bǔ)充,常量表達(dá)式中:x z不區(qū)分大小寫(xiě);進(jìn)制符號(hào)h o d b與H O D B不區(qū)分大小寫(xiě);十六進(jìn)制中af不區(qū)分大小寫(xiě);下劃線_用于提高可讀性;?在數(shù)中可以代替z;x和z的左端補(bǔ)位; 可綜合的信

15、號(hào)類型:wire reg memory 它們用來(lái)描述數(shù)字電路不可綜合的數(shù)據(jù)類型:integer real 它們只用仿真,位于testbench中,補(bǔ)充,wire是連線的抽象模型,不能保存數(shù)據(jù),其值由驅(qū)動(dòng)元的值決定; wire不能用在always或initial塊中; wire的默認(rèn)值為高阻z; wire的使用情形: 1.作為模塊的輸出端口 2.用連續(xù)賦值語(yǔ)句assign賦值; reg是1位寄存器(觸發(fā)器)的抽象模型,可以保存數(shù)據(jù); reg必須用在always或initial塊中; reg的默認(rèn)值為x; reg的使用情形:1.阻塞賦值= 2.非阻塞賦值= memory只能是一維的; memory

16、只能對(duì)每個(gè)單元分別初始化,方法:1.一個(gè)一個(gè)賦值 2. 通過(guò)系統(tǒng)任務(wù)$readmem賦值reg3:0 fc;/一個(gè)4位寄存器 reg fc3:0 /4個(gè)一位寄存器 parameter的作用:仿真開(kāi)始以前對(duì)其進(jìn)行賦值,整個(gè)仿真過(guò)程中保持其值不變;,補(bǔ)充,關(guān)系運(yùn)算符將以邏輯1或邏輯0返回比較的結(jié)果;= !=的返回值有0 1 x三種情況,= !=的返回值只有0 1兩種情況; verilog由于是描述電路的,用于位的操作較多,有: 位邏輯操作,移位操作,并置操作,歸約操作;位邏輯運(yùn)算的結(jié)果中,位數(shù)與原操作數(shù)一樣多;歸約符是在原操作數(shù)的所有位上進(jìn)行操作,并產(chǎn)生1位結(jié)果;并置運(yùn)算可以發(fā)生在bit與bit之

17、間 bit與矢量之間 矢量與矢量之間,補(bǔ)充,用于仿真的系統(tǒng)任務(wù): 所有系統(tǒng)任務(wù)都必須在initial或always內(nèi); 所有系統(tǒng)任務(wù)都必須以$開(kāi)頭; 常見(jiàn)系統(tǒng)任務(wù): 顯示任務(wù)($diplay系列和$write系列) 監(jiān)控任務(wù)($monitor系列) 探測(cè)任務(wù)($strobe系列) 文件打開(kāi)、輸入、關(guān)閉任務(wù)(&fopen &fclose &fdisplay.) 讀取文件任務(wù)($readmemb $readmemh) 仿真結(jié)束控制任務(wù)($finish $stop) 隨即信號(hào)任務(wù)($random),補(bǔ)充,過(guò)程塊: initial塊和always塊一個(gè)module內(nèi)可以包含多個(gè)initial或alwa

18、ys模塊;所有initial或always塊在0時(shí)刻開(kāi)始并行執(zhí)行,各initial或always塊內(nèi)部順序執(zhí)行;initial過(guò)程塊主要是面向testbench的,通常不具有可綜合性;always過(guò)程塊在描述電路時(shí)既可以描述組合邏輯電路(電平敏感)又可以描述時(shí)序邏輯電路(邊沿敏感);寫(xiě)testbench時(shí)initial通常用于初始化以及順序波形的描述,always通常用于重復(fù)波形的描述;,補(bǔ)充,任務(wù)task與函數(shù)function: 為了描述模塊中被多次執(zhí)行的部分以及為了增強(qiáng)代碼的易讀性verilog中的高級(jí)程序語(yǔ)句如for循環(huán)語(yǔ)句只用在寫(xiě)testbench中;begin end和fork join是兩種特殊的括號(hào)if語(yǔ)句的第三種形式適合描述優(yōu)先編碼器,case語(yǔ)句適合描述

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論