版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Verilog學(xué)習(xí)總結(jié),verilog特點(diǎn), 區(qū)分大小寫,所有關(guān)鍵字都要求小寫 不是強(qiáng)類型語言,不同類型數(shù)據(jù)之間可以賦值和運(yùn)算 /是單行注釋 可以跨行注釋 描述風(fēng)格有系統(tǒng)級描述、行為級描述、RTL級描述、門級描述,其中RTL級和門級別與具體電路結(jié)構(gòu)有關(guān),行為級描述要遵守可綜合原 門級描述使用門級模型或者用戶自定義模型UDP來代替具體基本元件,在IDE中針對不同F(xiàn)PGA器件已經(jīng)有對應(yīng)的基本元件原語,verlog語法要點(diǎn), module endmodule之間由兩部分構(gòu)成:接口描述和邏輯功能描述 IO端口種類: input output inout 相同位寬的輸入輸出信號可以一起聲明, input
2、3:0 a,b; 不同位寬的必須分開寫 內(nèi)部信號為reg類型,內(nèi)部信號信號的狀態(tài): 0 1 x z, 3bx1=3bxx1 x/z會往左擴(kuò)展 3b1=3b001 數(shù)字不往左擴(kuò)展 邏輯功能描述中常用assign描述組合邏輯電路,always既可以描述組合邏輯電路又可以描述時(shí)序邏輯電路,還可以用元件調(diào)用方法描述邏輯功能 always之間、assign之間、實(shí)例引用之間以及它們之間都是并行執(zhí)行,always內(nèi)部是順序執(zhí)行,verlog語法要點(diǎn),常量格式: : 默認(rèn)進(jìn)制為10進(jìn)制 默認(rèn)位寬為32位 位寬是從二進(jìn)制寬度角度而言的 由位寬決定從低位截取二進(jìn)制數(shù)2hFF=2b11,通常由被賦值的reg變量位
3、寬決定 parameter常用于定義延遲和變量位寬,可用常量或常量表達(dá)式定義,verlog語法要點(diǎn),變量種類: wire reg memory IO信號默認(rèn)為wire類型,除非指定為reg類型wire可以用作任何輸入輸出端口 wire包括input output inoutwire不帶寄存功能 assign賦值語句中,被賦值的信號都是wire類型assign之所以稱為連續(xù)賦值,是因?yàn)椴粩鄼z測表達(dá)式的變化reg類型可以被賦值后再使用,而不是向wire一樣只能輸出 reg類型變量初始值為x always模塊里被賦值的信號都必須定義為reg類型,因?yàn)閍lways可以反復(fù)執(zhí)行,而reg表示信號的寄存,
4、可以保留上次執(zhí)行的值reg類型變量與integer變量不同,即使賦負(fù)值,實(shí)質(zhì)上也是按二進(jìn)制無符號數(shù)存儲的,integer是有符號數(shù),verlog語法要點(diǎn),verilog中所有內(nèi)部信號都是靜態(tài)變量,因?yàn)樗鼈兊闹刀荚趓eg中存儲起來 memory型只有一維數(shù)組,由reg型變量組成 memory初始化只能按地址賦值,不能一次性賦值 1*256的memory寫法: reg mema255:0 mema3=0; 不同位寬的變量之間賦值,處理之前都以被賦值的變量位寬為準(zhǔn)擴(kuò)展或截取 Aa:b 無論a b誰大,a總是實(shí)際電路的信號高位,b總是實(shí)際電路的信號低位 算術(shù)運(yùn)算中如果有X值則結(jié)果為X for循環(huán)中的變
5、量另外定義成integer,因?yàn)樗皇菍?shí)際信號,有正負(fù);reg則以無符號數(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級),多個(gè)always(posedge)之間究竟誰先執(zhí)行是個(gè)未知數(shù) 使用原則: 同一個(gè)always過程塊內(nèi)建立時(shí)序電路用= 純組合邏輯電路用=,生成的電路結(jié)構(gòu)最簡單,執(zhí)行速度最快 同一個(gè)always塊內(nèi)不要混用=和= 不要在多個(gè)always塊內(nèi)對同一個(gè)變量賦值(多源驅(qū)動),verl
6、og語法要點(diǎn),if else的三種形式,第三種形式適合描述優(yōu)先編碼器 if條件中0/x/z當(dāng)成假,1當(dāng)成真,非0的數(shù)值也當(dāng)成真 case語句的三種: case(四種狀態(tài)的比較) casez(忽略z) casex(忽略x和z,只看哪些位的信號有用) case語句中所有表達(dá)式值的位寬必須相等,default中不能將nbx用bx代 避免生成鎖存器的方法: 電平觸發(fā)時(shí)if后加else case中加default ? 使用casex會將不必要的狀態(tài)視為無關(guān)項(xiàng),使得綜合出來的電路最簡單 兩種特殊的括號: begin 順序語句. end fork 并行語句. join,其差別在于塊內(nèi)語句的起止時(shí)間、執(zhí)行順序
7、、相對延時(shí) 塊被命名后,其內(nèi)部變量可以被調(diào)用,因?yàn)樽兞慷际庆o態(tài)的(調(diào)用信號:對應(yīng)電路中的一個(gè)信號線被引到另一處),verlog語法要點(diǎn),initial塊只無條件執(zhí)行一次 always塊在滿足條件時(shí)不斷執(zhí)行 initial常用來寫測試文件, always塊常用來寫電路描述 always既可以描述組合邏輯電路又可以描述時(shí)序邏輯電路 always如果后面有敏感信號列表則不能用wait語句 always既可以描述電平觸發(fā)又可以描述邊沿觸發(fā),wait只能描述電平觸發(fā) assign常用于描述組合邏輯電路 測試文件中一般都是現(xiàn)initial 后always 生成語句:生成快的本質(zhì)是使用循環(huán)內(nèi)的一條語句代替多
8、條重復(fù)的verilog語句,簡化了用戶的編程。 genvar用于聲明生成變量,生成變量只能用在生成快之間 仿真時(shí),仿真器會將生成塊中的代碼展平,在確立后的方針代碼中,生成變量是不存在的。最好是先想象出來循環(huán)生成語句被展平后的電路樣子,再寫相關(guān)的描述語句,verlog語法要點(diǎn),task和function的區(qū)別: task可以定義自己的仿真時(shí)間單位,function與主模塊共用同一個(gè)仿真時(shí)間單位函數(shù)不能啟動任務(wù),任務(wù)能夠啟動函數(shù)函數(shù)至少要有一個(gè)輸入變量,任務(wù)沒有輸入變量函數(shù)返回一個(gè)值,任務(wù)不返回值,verlog語法要點(diǎn),一個(gè)模塊的設(shè)計(jì)包括3個(gè)部分: 電路模塊的設(shè)計(jì) 測試模塊的設(shè)計(jì) 設(shè)計(jì)文檔的編寫
9、設(shè)計(jì)者通過布局布線工具生成具有布線延遲的電路,再進(jìn)行 仿真,得到時(shí)序分析報(bào)告 從時(shí)序分析報(bào)告中可以知道電路的實(shí)際延遲t,同步電路內(nèi)每個(gè)時(shí)鐘周期要大于t,從而可確定該運(yùn)算邏輯的最高頻率 綜合器之所以能夠?qū)崿F(xiàn)加法器、乘法器是因?yàn)閹熘幸呀?jīng)存在可配置的參數(shù)化器件模型 FPGA內(nèi)總線寬度容易自定義,以便實(shí)現(xiàn)高速數(shù)據(jù)流, 三態(tài)數(shù)據(jù)總線相當(dāng)于數(shù)據(jù)流的控制閥門 數(shù)字系統(tǒng)內(nèi)數(shù)據(jù)流的控制: 開關(guān)(或三態(tài)數(shù)據(jù)總線)、數(shù)據(jù)暫存部件(寄存器)、 同步狀態(tài)機(jī)控制(整個(gè)系統(tǒng)在一個(gè)時(shí)鐘內(nèi)),verlog語法要點(diǎn),流水線操作pipe line: K級流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組,上一級的輸出是下一級的輸入
10、 流水線操作獲得第一個(gè)結(jié)果的時(shí)間要比不用流水線操作的時(shí)間長,但以后結(jié)果獲得時(shí)間都只需要一個(gè)時(shí)鐘周期,提高了數(shù)據(jù)吞吐量 流水線操作的保證:TclkK*(組合邏輯延遲+觸發(fā)器的建立保持時(shí)間/觸發(fā)時(shí)間),即時(shí)間片段要長于最大路徑延遲 體現(xiàn)了面積換速度的思想,在綜合時(shí)考慮的是以面積小為主還是以速度為主 本質(zhì)上是一種同步邏輯,verlog語法要點(diǎn),同步時(shí)序邏輯和異步時(shí)序邏輯: 同步時(shí)序邏輯指所有寄存器組由唯一時(shí)鐘觸發(fā) always(posedgeclk) 或always(negedageclk) 異步時(shí)序邏輯指觸發(fā)條件不唯一,任意一個(gè)條件都會引起觸發(fā)always(posedgeclk or poseda
11、ge reset) 目前的綜合器是以同步時(shí)序邏輯綜合的,因?yàn)橥綍r(shí)序邏輯較異步時(shí)序邏輯可靠 嚴(yán)格的同步要求時(shí)鐘信號傳遞速度遠(yuǎn)遠(yuǎn)大于各部分的延遲,實(shí)際中clk要單獨(dú)用線,而不要經(jīng)過反相器等部件 always (posedge. ) begin .=. end 表示同步時(shí)序邏輯(同時(shí)刻賦值) 不同速率數(shù)據(jù)接口的處理方法(異步數(shù)據(jù)的處理方法):幀同步 FIFO 雙端口RAM,verlog語法要點(diǎn),同步狀態(tài)機(jī): 包括moore和mealy型兩種,及其反饋模型(是一種反饋控制系統(tǒng),當(dāng)前狀態(tài)就是其內(nèi)部狀態(tài)變量) 狀態(tài)機(jī)的開發(fā)步驟: 根據(jù)實(shí)際問題列出輸入輸出變量和狀態(tài)數(shù) 畫出狀態(tài)圖并化簡 寫出狀態(tài)轉(zhuǎn)移真值表
12、得到邏輯表達(dá)式 用D觸發(fā)器或JK觸發(fā)器構(gòu)建電路(目前用D觸發(fā)器多) verilog描述時(shí)只需要得到簡化的狀態(tài)圖就可以描述 狀態(tài)編碼方式: 獨(dú)熱碼 格雷碼狀態(tài)機(jī)主體程序有單always描述方式和多always描述方式 采用case/casez/casex建立模型最好,因?yàn)閤是無關(guān)態(tài),生成的電路最簡單 default: state=bx與實(shí)際情況更一致,效果等同于 default: state=idle 只有同步狀態(tài)機(jī)才能被目前的綜合,verlog語法要點(diǎn),for語句會將所有變量的情況展開,占用巨量邏輯資源,替代 辦法是用計(jì)數(shù)器和case語句說明所有情況 有優(yōu)先級的if else結(jié)構(gòu)會消耗更多資源
13、,建議用無優(yōu)先級的 case替代模塊的復(fù)用往往比代碼上修改節(jié)省的資源多PLL的分 頻、倍頻、移相操作會增加設(shè)計(jì)精度同步時(shí)序電路的延時(shí)#x 通常用于仿真測試,實(shí)際硬件延時(shí)是:長延遲用計(jì)數(shù)器,小 延遲用D觸發(fā)器,此方法用來取代延遲鏈同步電路中,穩(wěn)定的 數(shù)據(jù)采用必須滿足采樣寄存器的建立和保持時(shí)間reg類型在 always中不一定綜合成時(shí)序電路,也可能是組合邏輯電路乒乓操作與作用 異步時(shí)鐘域同步問題延遲包括門延遲和線延遲組合邏輯產(chǎn)生的時(shí)鐘僅能應(yīng)用在時(shí)鐘頻率較低、精度要求不高的情況下增減敏感信號得到的結(jié)果一樣,補(bǔ)充,verilog的標(biāo)識符區(qū)分大小寫,關(guān)鍵字使用小寫; 用來進(jìn)行單行注釋,用* *來進(jìn)行跨行
14、注釋; 標(biāo)識符由字母、數(shù)字、下劃線構(gòu)成,并以字母開頭; 關(guān)鍵字又叫保留字,只有小寫的關(guān)鍵字才是保留字; 信號的狀態(tài)有4種: 0 1 x zx和z在描述電路時(shí)不區(qū)分大小寫,在仿真時(shí)大小寫有不同意義;字符和字符串都以ASICII碼形式存在,也可以當(dāng)成電路內(nèi)的信號; 字符串必須包含在同一行,不能分成多行書寫; 如果表達(dá)式或者賦值語句中將字符串當(dāng)成操作數(shù),則字符串 中的每個(gè)字符都被看成8位的ASCII值序列;,補(bǔ)充,常量表達(dá)式中:x z不區(qū)分大小寫;進(jìn)制符號h o d b與H O D B不區(qū)分大小寫;十六進(jìn)制中af不區(qū)分大小寫;下劃線_用于提高可讀性;?在數(shù)中可以代替z;x和z的左端補(bǔ)位; 可綜合的信
15、號類型:wire reg memory 它們用來描述數(shù)字電路不可綜合的數(shù)據(jù)類型:integer real 它們只用仿真,位于testbench中,補(bǔ)充,wire是連線的抽象模型,不能保存數(shù)據(jù),其值由驅(qū)動元的值決定; wire不能用在always或initial塊中; wire的默認(rèn)值為高阻z; wire的使用情形: 1.作為模塊的輸出端口 2.用連續(xù)賦值語句assign賦值; reg是1位寄存器(觸發(fā)器)的抽象模型,可以保存數(shù)據(jù); reg必須用在always或initial塊中; reg的默認(rèn)值為x; reg的使用情形:1.阻塞賦值= 2.非阻塞賦值= memory只能是一維的; memory
16、只能對每個(gè)單元分別初始化,方法:1.一個(gè)一個(gè)賦值 2. 通過系統(tǒng)任務(wù)$readmem賦值reg3:0 fc;/一個(gè)4位寄存器 reg fc3:0 /4個(gè)一位寄存器 parameter的作用:仿真開始以前對其進(jìn)行賦值,整個(gè)仿真過程中保持其值不變;,補(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ù)都必須以$開頭; 常見系統(tǒng)任務(wù): 顯示任務(wù)($diplay系列和$write系列) 監(jiān)控任務(wù)($monitor系列) 探測任務(wù)($strobe系列) 文件打開、輸入、關(guān)閉任務(wù)(&fopen &fclose &fdisplay.) 讀取文件任務(wù)($readmemb $readmemh) 仿真結(jié)束控制任務(wù)($finish $stop) 隨即信號任務(wù)($random),補(bǔ)充,過程塊: initial塊和always塊一個(gè)module內(nèi)可以包含多個(gè)initial或alwa
18、ys模塊;所有initial或always塊在0時(shí)刻開始并行執(zhí)行,各initial或always塊內(nèi)部順序執(zhí)行;initial過程塊主要是面向testbench的,通常不具有可綜合性;always過程塊在描述電路時(shí)既可以描述組合邏輯電路(電平敏感)又可以描述時(shí)序邏輯電路(邊沿敏感);寫testbench時(shí)initial通常用于初始化以及順序波形的描述,always通常用于重復(fù)波形的描述;,補(bǔ)充,任務(wù)task與函數(shù)function: 為了描述模塊中被多次執(zhí)行的部分以及為了增強(qiáng)代碼的易讀性verilog中的高級程序語句如for循環(huán)語句只用在寫testbench中;begin end和fork join是兩種特殊的括號if語句的第三種形式適合描述優(yōu)先編碼器,case語句適合描述
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)經(jīng)理合同協(xié)議
- 借名貸款協(xié)議書
- 空運(yùn)代理合同范本
- 建材入職合同范本
- 房屋委托持協(xié)議書
- 全國注冊協(xié)議書
- 信用證合同范本
- 電器合同范本模板
- 入館安全協(xié)議書
- 工程開票合同范本
- 小學(xué)生一、二、三年級家庭獎罰制度表
- 中石化華北分公司鉆井定額使用說明
- 礦山壓力與巖層控制智慧樹知到答案章節(jié)測試2023年湖南科技大學(xué)
- 機(jī)加工車間主任年終總結(jié)3篇
- WB/T 1119-2022數(shù)字化倉庫評估規(guī)范
- GB/T 5125-1985有色金屬沖杯試驗(yàn)方法
- GB/T 4937.3-2012半導(dǎo)體器件機(jī)械和氣候試驗(yàn)方法第3部分:外部目檢
- GB/T 23445-2009聚合物水泥防水涂料
- 我國尾管懸掛器研制(for cnpc)
- 第3章樁基工程課件
- 美國COMPASS電磁導(dǎo)航產(chǎn)品介紹課件
評論
0/150
提交評論