




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、主要主要內(nèi)容內(nèi)容10.1 10.1 設(shè)計的可綜合性設(shè)計的可綜合性10.2 10.2 流水線設(shè)計(流水線設(shè)計(Pipeline DesignPipeline Design)技術(shù))技術(shù)10.3 10.3 資源共享(資源共享(Resource SharingResource Sharing)10.4 10.4 過程過程10.5 10.5 阻塞賦值與非阻塞賦值阻塞賦值與非阻塞賦值10.6 FPGA10.6 FPGA設(shè)計中毛刺的消除設(shè)計中毛刺的消除o用用FPGA/CPLD器件實現(xiàn)的設(shè)計中,綜合就器件實現(xiàn)的設(shè)計中,綜合就是將是將Verilog或或VHDL語言描述的行為級或功語言描述的行為級或功能級電路模型
2、轉(zhuǎn)化為能級電路模型轉(zhuǎn)化為RTL級功能塊或門級電路級功能塊或門級電路網(wǎng)表的過程網(wǎng)表的過程 綜合過程綜合過程 n 不使用初始化語句;不使用帶有延時的描述;不使用初始化語句;不使用帶有延時的描述;不使用循環(huán)次數(shù)不確定的循環(huán)語句,如不使用循環(huán)次數(shù)不確定的循環(huán)語句,如forever,while等。等。n 應盡量采用同步方式設(shè)計電路。除非是關(guān)鍵應盡量采用同步方式設(shè)計電路。除非是關(guān)鍵路徑的設(shè)計,一般不采用調(diào)用門級元件來描述路徑的設(shè)計,一般不采用調(diào)用門級元件來描述設(shè)計的方法,建議采用行為語句來完成設(shè)計。設(shè)計的方法,建議采用行為語句來完成設(shè)計。n 用用always過程塊描述組合邏輯,應在敏感過程塊描述組合邏輯,
3、應在敏感信號列表中列出塊中出現(xiàn)的所有輸入信號。信號列表中列出塊中出現(xiàn)的所有輸入信號。 n 所有的內(nèi)部寄存器都應該能夠被復位,在使所有的內(nèi)部寄存器都應該能夠被復位,在使用用FPGA實現(xiàn)設(shè)計時,應盡量使用器件的全局實現(xiàn)設(shè)計時,應盡量使用器件的全局復位端作為系統(tǒng)總的復位,用器件的全局時鐘復位端作為系統(tǒng)總的復位,用器件的全局時鐘端作為系統(tǒng)外部時鐘輸入端。端作為系統(tǒng)外部時鐘輸入端。n 在在Verilog模塊中,任務(wù)(模塊中,任務(wù)(task)通常被綜)通常被綜合成組合邏輯的形式;每個函數(shù)(合成組合邏輯的形式;每個函數(shù)(function)在調(diào)用時通常也被綜合為一個獨立的組合電路在調(diào)用時通常也被綜合為一個獨立
4、的組合電路模塊。模塊。o流水線設(shè)計是經(jīng)常用于提高所設(shè)計系統(tǒng)運行速度的流水線設(shè)計是經(jīng)常用于提高所設(shè)計系統(tǒng)運行速度的一種有效的方法。為了保障數(shù)據(jù)的快速傳輸,必須一種有效的方法。為了保障數(shù)據(jù)的快速傳輸,必須使系統(tǒng)運行在盡可能高的頻率上,但如果某些復雜使系統(tǒng)運行在盡可能高的頻率上,但如果某些復雜邏輯功能的完成需要較長的延時,就會使系統(tǒng)難以邏輯功能的完成需要較長的延時,就會使系統(tǒng)難以運行在高的頻率上,在這種情況下,可使用流水線運行在高的頻率上,在這種情況下,可使用流水線技術(shù),即在長延時的邏輯功能塊中插入觸發(fā)器,使技術(shù),即在長延時的邏輯功能塊中插入觸發(fā)器,使復雜的邏輯操作分步完成,減小每個部分的延時,復雜
5、的邏輯操作分步完成,減小每個部分的延時,從而使系統(tǒng)的運行頻率得以提高。流水線設(shè)計的代從而使系統(tǒng)的運行頻率得以提高。流水線設(shè)計的代價是增加了寄存器邏輯,增加了芯片資源的耗用。價是增加了寄存器邏輯,增加了芯片資源的耗用。 o如某個復雜邏輯功能的實現(xiàn)需較長的延時,可如某個復雜邏輯功能的實現(xiàn)需較長的延時,可將其分解為幾個(如將其分解為幾個(如3個)步驟來實現(xiàn),每一步個)步驟來實現(xiàn),每一步的延時變小,在各步間加入寄存器,以暫存中的延時變小,在各步間加入寄存器,以暫存中間結(jié)果,這樣可大大提高整個系統(tǒng)的最高工作間結(jié)果,這樣可大大提高整個系統(tǒng)的最高工作頻率。頻率。 module adder8(cout,sum
6、,ina,inb,cin,clk);input7:0 ina,inb; input cin,clk; output7:0 sum; output cout;reg7:0 tempa,tempb,sum; reg cout,tempc;always (posedge clk)begin tempa=ina;tempb=inb;tempc=cin; end /輸入數(shù)據(jù)鎖存輸入數(shù)據(jù)鎖存always (posedge clk)begin cout,sum=tempa+tempb+tempc; endendmodulemodule adder_pipe2(cout,sum,ina,inb,cin,clk
7、);input7:0 ina,inb; input cin,clk; output reg7:0 sum;output reg cout; reg3:0 tempa,tempb,firsts; reg firstc;always (posedge clk)begin firstc,firsts=ina3:0+inb3:0+cin;tempa=ina7:4; tempb=inb7:4;endalways (posedge clk)begin cout,sum7:4=tempa+tempb+firstc;sum3:0=firsts;endendmodulemodule pipeline(cout,
8、sum,ina,inb,cin,clk);output7:0 sum;output cout;input7:0 ina,inb;input cin,clk; reg7:0 tempa,tempb,sum;reg tempci,firstco,secondco,thirdco, cout;reg1:0 firsts, thirda,thirdb;reg3:0 seconda, secondb, seconds; reg5:0 firsta, firstb, thirds;always (posedge clk)begin tempa=ina; tempb=inb; tempci=cin; end
9、 /輸入數(shù)據(jù)緩存輸入數(shù)據(jù)緩存always (posedge clk)begin firstco,firsts=tempa1:0+tempb1:0+tempci; /第一級加(低第一級加(低2位)位)firsta=tempa7:2; firstb=tempb7:2; /未參加計算的數(shù)據(jù)緩存未參加計算的數(shù)據(jù)緩存endalways (posedge clk)begin secondco,seconds=firsta1:0+firstb1:0+firstco,firsts; seconda=firsta5:2; secondb=firstb5:2; /數(shù)據(jù)緩存數(shù)據(jù)緩存endalways (posedg
10、e clk)begin thirdco,thirds=seconda1:0+secondb1:0+secondco,seconds;thirda=seconda3:2;thirdb=secondb3:2; /數(shù)據(jù)緩存數(shù)據(jù)緩存endalways (posedge clk)begin cout,sum=thirda1:0+thirdb1:0+thirdco,thirds; /第四級加(高兩位相加)第四級加(高兩位相加)end endmodule module resource1(sum,a,b,c,d,sel);parameter SIZE=4; input sel; inputSIZE-1:0
11、a,b,c,d;output regSIZE:0 sum;always (*) /使用通配符使用通配符begin if(sel) sum=a+b;else sum=c+d;end endmodule資源共享可用來減少系統(tǒng)所耗用的器件資源,尤其是將一些資源共享可用來減少系統(tǒng)所耗用的器件資源,尤其是將一些耗用資源較多的模塊進行共享,能有效降低整個系統(tǒng)耗用的耗用資源較多的模塊進行共享,能有效降低整個系統(tǒng)耗用的資源。資源。 module resource2(sum,a,b,c,d,sel);parameter SIZE=4; input sel; inputSIZE-1:0 a,b,c,d;outpu
12、t regSIZE:0 sum; regSIZE-1:0 atemp,btemp;always (*) /使用通配符使用通配符begin if(sel) begin atemp=a;btemp=b;endelse begin atemp=c;btemp=d;endsum=atemp+btemp;endendmodule 器件資源的消耗對比器件資源的消耗對比方式一需要方式一需要2個加法器,而方式二通過增加一個個加法器,而方式二通過增加一個MUX,共享,共享一個加法器,由于加法器耗用的資源比一個加法器,由于加法器耗用的資源比MUX更多,因此方式更多,因此方式二更節(jié)省資源。所以在電路設(shè)計中,應盡可能
13、使硬件代價高的二更節(jié)省資源。所以在電路設(shè)計中,應盡可能使硬件代價高的功能模塊資源共享,從而降低整個系統(tǒng)的成本。功能模塊資源共享,從而降低整個系統(tǒng)的成本。結(jié)結(jié) 論論o在在Verilog語言中,過程語句包括語言中,過程語句包括always和和initial。always過程反復執(zhí)行其中的塊語句,而過程反復執(zhí)行其中的塊語句,而initial過程中的語過程中的語句塊只執(zhí)行一次。句塊只執(zhí)行一次。always過程可綜合,過程可綜合,initial語句只能用語句只能用于仿真。于仿真。 oalways過程語句與過程語句與VHDL語言的進程語句語言的進程語句Process非常相非常相像,它既可以用來描述時序電路
14、,也可以用來描述組合電路。像,它既可以用來描述時序電路,也可以用來描述組合電路。一個一個Verilog模塊中的不同模塊中的不同always過程語句是并行運行的。過程語句是并行運行的。oassign賦值語句、實例元件的調(diào)用也都是并行運行的,我賦值語句、實例元件的調(diào)用也都是并行運行的,我們可以這樣理解:這些語句最終都綜合或翻譯成為具體的電們可以這樣理解:這些語句最終都綜合或翻譯成為具體的電路結(jié)構(gòu),而這些電路結(jié)構(gòu)是同時在運行或動作的。路結(jié)構(gòu),而這些電路結(jié)構(gòu)是同時在運行或動作的。 o將組合邏輯實現(xiàn)的電路和用時序邏輯實現(xiàn)的電將組合邏輯實現(xiàn)的電路和用時序邏輯實現(xiàn)的電路應盡量分配到不同的路應盡量分配到不同的
15、always過程中。過程中。o一個一個always過程中只允許描述對應于一個時過程中只允許描述對應于一個時鐘信號的同步時序邏輯。鐘信號的同步時序邏輯。oalways過程必須由敏感信號的變化來啟動,過程必須由敏感信號的變化來啟動,因此應精心選擇進程敏感表達式中的敏感變量。因此應精心選擇進程敏感表達式中的敏感變量。o多個多個always過程間可通過信號線進行通信和過程間可通過信號線進行通信和協(xié)調(diào)。協(xié)調(diào)。o在可綜合的硬件設(shè)計中,使用阻塞和非阻塞賦值在可綜合的硬件設(shè)計中,使用阻塞和非阻塞賦值語句時,應注意以下原則語句時,應注意以下原則(1)當用)當用“always”塊來描述組合邏輯時,既可以用阻塞塊來
16、描述組合邏輯時,既可以用阻塞賦值,也可以采用非阻塞賦值,應盡量使用阻塞賦值。賦值,也可以采用非阻塞賦值,應盡量使用阻塞賦值。(2)對時序邏輯描述和建模,使用非阻塞賦值方式。)對時序邏輯描述和建模,使用非阻塞賦值方式。(3)為鎖存器()為鎖存器(Latch)建模,應使用非阻塞賦值。)建模,應使用非阻塞賦值。(4)若在同一個)若在同一個“always”過程塊中既為組合邏輯建模,過程塊中既為組合邏輯建模,又為時序邏輯建模,最好使用非阻塞賦值方式。又為時序邏輯建模,最好使用非阻塞賦值方式。o在可綜合的硬件設(shè)計中,使用阻塞和非阻塞在可綜合的硬件設(shè)計中,使用阻塞和非阻塞賦值語句時,應注意以下原則賦值語句時
17、,應注意以下原則(5)在一個)在一個“always”過程塊中,最好不要混合使過程塊中,最好不要混合使用阻塞賦值和非阻塞賦值,雖然同時使用這兩種賦用阻塞賦值和非阻塞賦值,雖然同時使用這兩種賦值方式在綜合時并不一定會出錯,但對同一個變量值方式在綜合時并不一定會出錯,但對同一個變量不能既進行阻塞賦值,又進行非阻塞賦值,這樣在不能既進行阻塞賦值,又進行非阻塞賦值,這樣在綜合時會報錯。綜合時會報錯。(6)不能在兩個個或兩個以上的)不能在兩個個或兩個以上的“always”過程塊過程塊中對同一個變量賦值,這樣會引發(fā)沖突,在綜合時中對同一個變量賦值,這樣會引發(fā)沖突,在綜合時會報錯。會報錯。(7)仿真時使用)仿
18、真時使用$strobe顯示非阻塞賦值的變量。顯示非阻塞賦值的變量?!纠?0.9】 阻塞賦值方式描述的移位寄存器阻塞賦值方式描述的移位寄存器1module block1(q0,q1,q2,q3,din,clk);input clk,din; output reg q0,q1,q2,q3;always (posedge clk)begin q3=q2; /注意賦值語句的順序注意賦值語句的順序 q2=q1; q1=q0; q0=din;end endmoduleo例例10.9的的RTL綜合結(jié)果綜合結(jié)果 【例例10.10】 阻塞賦值方式描述的移位寄存器阻塞賦值方式描述的移位寄存器2。module b
19、lock2(q0,q1,q2,q3,din,clk);input clk,din; output reg q0,q1,q2,q3;always (posedge clk)begin q3=q2; q1=q0; /該句與下句的順序與例該句與下句的順序與例10.9顛倒顛倒 q2=q1; q0=din;end endmoduleo例例10.10的的RTL綜合結(jié)果綜合結(jié)果 【例例10.11】 阻塞賦值方式描述的移位寄存器阻塞賦值方式描述的移位寄存器3。module block3(q0,q1,q2,q3,din,clk);input clk,din; output reg q0,q1,q2,q3;alw
20、ays (posedge clk)begin q0=din; /4條賦值語句的順序與例條賦值語句的順序與例10.9中完全顛倒中完全顛倒 q1=q0; q2=q1; q3=q2;end endmoduleo例例10.11的的RTL綜合結(jié)果綜合結(jié)果 【例例10.12】 非阻塞賦值方式描述的移位寄存器。非阻塞賦值方式描述的移位寄存器。module block4(q0,q1,q2,q3,din,clk);input clk,din; output reg q0,q1,q2,q3;always (posedge clk)begin q3=q2; q1=q0; q2=q1; q0=din;end endm
21、oduleo對于阻塞賦值來說,賦值語句的順序?qū)ψ詈髮τ谧枞x值來說,賦值語句的順序?qū)ψ詈蟮木C合結(jié)果有著直接的影響。而如果采用非的綜合結(jié)果有著直接的影響。而如果采用非阻塞賦值方式來描述的話,則可以不考慮賦阻塞賦值方式來描述的話,則可以不考慮賦值語句的排列順序,只需將其連接關(guān)系描述值語句的排列順序,只需將其連接關(guān)系描述清楚即可。清楚即可。o信號在信號在FPGA器件內(nèi)部通過連線和邏輯門時,都器件內(nèi)部通過連線和邏輯門時,都有一定的延時。因此多路信號的電平值發(fā)生變化有一定的延時。因此多路信號的電平值發(fā)生變化時,在信號變化的瞬間,組合邏輯的輸出有先后時,在信號變化的瞬間,組合邏輯的輸出有先后順序,往往會出
22、現(xiàn)一些不正確的順序,往往會出現(xiàn)一些不正確的“毛刺毛刺”(Glitch),稱為),稱為“冒險冒險”(Hazard)現(xiàn)象。)現(xiàn)象。o這些毛刺在電路板的設(shè)計中由于這些毛刺在電路板的設(shè)計中由于PCB走線時,存走線時,存在分布電感和分布電容,所以許多毛刺能夠被自在分布電感和分布電容,所以許多毛刺能夠被自然濾除,而在然濾除,而在PLD內(nèi)部沒有分布電感和電容,這內(nèi)部沒有分布電感和電容,這些毛刺將被完整地保留并向下一級傳遞,所以在些毛刺將被完整地保留并向下一級傳遞,所以在FPGA設(shè)計中,如何消除毛刺就變得很重要。設(shè)計中,如何消除毛刺就變得很重要。o可通過改變設(shè)計,破壞毛刺產(chǎn)生的條件,來減可通過改變設(shè)計,破壞毛
23、刺產(chǎn)生的條件,來減少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計中,常少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計中,常常采用格雷碼計數(shù)器取代普通的二進制計數(shù)器。常采用格雷碼計數(shù)器取代普通的二進制計數(shù)器。o還可根據(jù)還可根據(jù)D觸發(fā)器的觸發(fā)器的D輸入端對毛刺不敏感的輸入端對毛刺不敏感的特點而消除毛刺,舉例說明特點而消除毛刺,舉例說明o【例例10.23】 長幀同步時鐘的產(chǎn)生長幀同步時鐘的產(chǎn)生module longframe1(clk,strb);parameter DELAY=8; input clk;output reg strb; reg7:0 counter;always(posedge clk)begin if(counter=255) counter=0;else counter=counter+1;endalways(counter)begin if(counter=(DELAY-1) strb=1; else strb=0; endendmodule毛刺時序仿真輸出波形時序仿真輸出波形o引入了引入了D觸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車公司駕駛員招聘及職業(yè)健康保障協(xié)議
- 智能車庫購置與智慧停車系統(tǒng)開發(fā)合同
- 護理改良項目實施方案
- 2025年門面房出租協(xié)議
- 高中物理專項復習:動能定理及其應用
- 疝氣解剖病因與臨床護理
- 中醫(yī)飲食護理理論與實踐
- 組成細胞的無機物
- 止血藥物合理應用
- 精原細胞減數(shù)分裂
- 2025年廣西公需科目答案02
- 2025年香熏精油市場需求分析
- 4月分子生物學練習題庫與參考答案解析
- 2025-2030中國汽車濾清器行業(yè)市場深度調(diào)研及需求分析與投資研究報告
- 酒吧經(jīng)營合伙合同書8篇
- 2025華電(海西)新能源限公司面向華電系統(tǒng)內(nèi)外公開招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 遼寧中考:歷史必考知識點
- 職業(yè)技術(shù)學院化工裝備技術(shù)專業(yè)人才培養(yǎng)調(diào)研報告
- TCERDS5-2023企業(yè)ESG管理體系
- 江蘇省南京市2025年高三第四次模擬考試英語試卷含答案
- 鋼結(jié)構(gòu)施工 課件項目3 鋼結(jié)構(gòu)工程安裝
評論
0/150
提交評論