基本運(yùn)算邏輯和它們VerilogHDL模型_第1頁
基本運(yùn)算邏輯和它們VerilogHDL模型_第2頁
基本運(yùn)算邏輯和它們VerilogHDL模型_第3頁
基本運(yùn)算邏輯和它們VerilogHDL模型_第4頁
基本運(yùn)算邏輯和它們VerilogHDL模型_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基本運(yùn)算邏輯和它們VerilogHDL模型第一頁,共34頁。加法器

XiYiCi-1SiCi0000000110010100110110010101011100111111第二頁,共34頁。表中Xi、Yi表示兩個(gè)加數(shù),Si

表示和,Ci-1表示來自低位的進(jìn)位、Ci表示向高位的進(jìn)位。

Ci=XiYi+YiCi-1+XiCi-1

Si

=XiC’i

+YiC’i+Ci-1C’i+XiYiCi-1全加器和Si的表達(dá)式也可以表示為:

Si=Pi⊕Ci-1其中Pi=Xi⊕YiCi=Pi·Ci-1+Gi其中Gi=Xi·Yi第三頁,共34頁。圖5.1由4個(gè)1位全加器組成的超前進(jìn)位4位加法器A2B2A1B1A0B0

C2

三位超前進(jìn)位加法器C-1

S2S1S00全加器Y1X1 S1P0G0C0P1G1C1P2G2C2P3G3C-1

超前進(jìn)位加法器

全加器Y0X0 S0全加器Y2X2 S2全加器Y3X3 S3P*G*P*G*第四頁,共34頁。圖5.2由4個(gè)4位全加器組成的超前進(jìn)位16位加法器0四位全加器Y4~7

X4~7

S4~7P*0G*0C*0P*1G*1C*1P*2G*2C*2P*3G*3C-1

超前進(jìn)位加法器

P**G**四位全加器Y0~3X0~3 S0~3四位全加器Y8~11X8~11 S8~11四位全加器Y12~15X12~15 S12~15第五頁,共34頁。在實(shí)現(xiàn)算法時(shí)(如卷積運(yùn)算和快速傅立葉變換),常常用到加法運(yùn)算,由于多位并行加法器是由多層組合邏輯構(gòu)成,加上超前進(jìn)位形成邏輯雖然減少了延遲,但還是有多級(jí)門和布線的延遲,而且隨著位數(shù)的增加延遲還會(huì)積累。由于加法器的延遲,使加法器的使用頻率受到限制,這是指計(jì)算的節(jié)拍(即時(shí)鐘)必須要大于運(yùn)算電路的延遲,只有在輸出穩(wěn)定后才能輸入新的數(shù)進(jìn)行下一次運(yùn)算。如果設(shè)計(jì)的是32位或64位的加法器,延遲就會(huì)更大。為了加快計(jì)算的節(jié)拍,可以在運(yùn)算電路的組合邏輯層中加入多個(gè)寄存器組來暫存中間結(jié)果。也就是采用數(shù)字邏輯設(shè)計(jì)中常用的流水線(pipe-line)辦法,來提高運(yùn)算速度,以便更有效地利用該運(yùn)算電路。第六頁,共34頁。moduleadd_4(X,Y,sum,C);input[3:0]X,Y;output[3:0]sum;outputC; assign{C,Sum}=X+Y;endmodule而16位加法器只需要擴(kuò)大位數(shù)即可moduleadd_16(X,Y,sum,C);input[15:0]X,Y;output[15:0]sum;outputC;assign{C,Sum}=X+Y;endmodule

第七頁,共34頁。設(shè)計(jì)者可以考慮提高電路的速度,也可以考慮節(jié)省電路元件以減少電路占用硅片的面積。綜合器會(huì)自動(dòng)根據(jù)選項(xiàng)為你挑選一種基本加法器的結(jié)構(gòu)。有的高性能綜合器還可以根據(jù)用戶對(duì)運(yùn)算速度的要求插入流水線結(jié)構(gòu),來提高運(yùn)算器的性能??梢娫诰C合工具的資源庫中存有許多種基本的電路結(jié)構(gòu),通過編譯系統(tǒng)的分析,自動(dòng)為設(shè)計(jì)者選擇一種電路結(jié)構(gòu),隨著綜合器的日益成熟它的功能將越來越強(qiáng)。然后設(shè)計(jì)者還需通過布局布線工具生成具有布線延遲的電路,再進(jìn)行后仿真,便可知道該加法器的實(shí)際延時(shí)。根據(jù)實(shí)際的延遲便可以確定使用該運(yùn)算邏輯的最高頻率。若需要重復(fù)使用該運(yùn)算器,則需要在控制數(shù)據(jù)流動(dòng)的狀態(tài)機(jī)中為其安排必要的時(shí)序。第八頁,共34頁。乘法電路

設(shè)兩個(gè)n位二進(jìn)制正數(shù)X和Y:

X:Xn-1···X1X0Y:Yn-1···Y1Y0則X和Y的乘積Z有2n位。式中YiX稱為部分積,記為Pi,有顯然,兩個(gè)一位二進(jìn)制數(shù)相乘遵循如下規(guī)則:0×0=0;0×1=0;1×0=0;1×1=1因此YiXj可用一個(gè)與門實(shí)現(xiàn),記Pi.j=YiXj第九頁,共34頁。兩個(gè)4位二進(jìn)制數(shù)X和Y相乘

被乘數(shù):X3X2X1X0×)乘數(shù):Y3Y2Y1Y0______________________________________________________________ Y0X3Y0X2Y0X1Y0X0Y1X3Y1X2

Y1X1Y1X0

Y2X3Y2X2

Y2X1Y2X0

Y3X3Y3X2Y3X1Y3X0__________________________________________________________乘積:Z7Z6Z5Z4Z3Z2Z1Z0第十頁,共34頁。MUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMU0Y3X0 Y3X1 Y3X2 Y3X3 Y2X0 Y2X1 Y2X2 Y2X3 Y1X0 Y1X1 Y1X2 Y1X3 Y0X30

Y0X20

Y0X10

Y0X00

000Z7Z6Z5Z4Z3Z2Z1Z0第十一頁,共34頁。

與門

ABCo全加器Ci

SYiXjSkCICoPijSk+1

乘法單元(MU)第十二頁,共34頁。與門Y0X0 與門Y0X2 與門Y0X1 與門Y0X3 與門Y1X3 MUY2X2 與門Y2X3 MUY3X2 MUY1X2 MUY2X1 MUY3X0 MUY1X1 MUY2X0 MUY1X0 MUY3X1 A2B2A1B1A0B0

C2

三位超前進(jìn)位加法器C-1

S2S1S0與門Y3X3 00Z7Z6Z5Z4Z3Z2Z1Z0進(jìn)位節(jié)省乘法器第十三頁,共34頁。modulemult_4(X,Y,Product);input[3:0]X,Y;output[7:0]Product;assignProduct=X*Y;endmodulemodulemult_8(X,Y,Product);input[7:0]X,Y;output[15:0]Product;assignProduct=X*Y;endmodule第十四頁,共34頁。流水線(pipeline)

流水線的設(shè)計(jì)方法已經(jīng)在高性能的、需要經(jīng)常進(jìn)行大規(guī)模運(yùn)算的系統(tǒng)中得到廣泛的應(yīng)用,如CPU(中央處理器)等。目前流行的CPU,如intel的奔騰處理器在指令的讀取和執(zhí)行周期中充分地運(yùn)用了流水線技術(shù)以提高它們的性能。高性能的DSP(數(shù)字信號(hào)處理)系統(tǒng)也在它的構(gòu)件(building-blockfunctions)中使用了流水線設(shè)計(jì)技術(shù)。

第十五頁,共34頁。流水線設(shè)計(jì)的概念流水線設(shè)計(jì)(PipelineDesign)是經(jīng)常用于提高所設(shè)計(jì)系統(tǒng)運(yùn)行速度的一種有效方法。為了保障數(shù)據(jù)快速傳輸,必須使系統(tǒng)運(yùn)行在盡可能高的頻率上,但如果某些復(fù)雜邏輯功能的完成需要較長的延時(shí),就會(huì)使系統(tǒng)很難運(yùn)行在較高的頻率上。流水線技術(shù)實(shí)際上就是把規(guī)模較大、層次較多的組合邏輯電路分為幾個(gè)級(jí),在每一級(jí)插入寄存器組暫存中間數(shù)據(jù)。K級(jí)的流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組(分為K級(jí),每一級(jí)都有1個(gè)寄存器組),上一級(jí)的輸出是下一級(jí)的輸入而又無反饋的電路。第十六頁,共34頁。把組合邏輯設(shè)計(jì)轉(zhuǎn)換為流水線設(shè)計(jì)這個(gè)組合邏輯包括兩級(jí)。第一級(jí)的延遲是T1和T3兩個(gè)延遲中的最大值;第二級(jí)的延遲等于T2的延遲。為了通過這個(gè)組合邏輯得到穩(wěn)定的計(jì)算結(jié)果輸出,需要等待的傳播延遲為:[max(T1,T3)+T2]

個(gè)時(shí)間單位。在從輸入到輸出的每一級(jí)插入寄存器后,流水線設(shè)計(jì)的第一級(jí)寄存器所具有的總延遲為T1與T3時(shí)延中的最大值加上寄存器的Tco(觸發(fā)時(shí)間)。第二級(jí)寄存器延遲為T2的時(shí)延加上Tco。采用流水線設(shè)計(jì)為取得穩(wěn)定的輸出總體計(jì)算周期為:max(max(T1,T3)+Tco,(T2+Tco))

第十七頁,共34頁。流水線設(shè)計(jì)需要2個(gè)時(shí)鐘周期來獲取第一個(gè)計(jì)算結(jié)果,而只需要1個(gè)時(shí)鐘周期來獲取隨后的計(jì)算結(jié)果。開始時(shí)用來獲取第一個(gè)計(jì)算結(jié)果的2個(gè)時(shí)鐘周期被稱為采用流水線設(shè)計(jì)的首次延遲(latency)。對(duì)于CPLD來說,器件的延遲(如T1、T2和T3)相對(duì)于觸發(fā)器的Tco要長得多,并且寄存器的建立時(shí)間Tsu也要比器件的延遲快得多。只有在上述關(guān)于硬件時(shí)延的假設(shè)為真的情況下,流水線設(shè)計(jì)才能獲得比同功能的組合邏輯設(shè)計(jì)更高的性能。采用流水線設(shè)計(jì)的優(yōu)勢在于它能提高吞吐量(throughput)。假設(shè)T1、T2和T3具有同樣的傳遞延遲Tpd。對(duì)于組合邏輯設(shè)計(jì)而言,總的延遲為2*Tpd。對(duì)于流水線設(shè)計(jì)來說,計(jì)算周期為(Tpd+Tco)。第十八頁,共34頁。前面提及的首次延遲(latency)的概念實(shí)際上就是將(從輸入到輸出)最長的路徑進(jìn)行初始化所需要的時(shí)間總量;吞吐延遲則是執(zhí)行一次重復(fù)性操作所需要的時(shí)間總量。在組合邏輯設(shè)計(jì)中,首次延遲和吞吐延遲同為2*Tpd。在流水線設(shè)計(jì)中,首次延遲是2*(Tpd+Tco),而吞吐延遲是Tpd+Tco。如果CPLD硬件能提供快速的Tco,則流水線設(shè)計(jì)相對(duì)于同樣功能的組合邏輯設(shè)計(jì)能提供更大的吞吐量。典型的富含寄存器資源的CPLD器件(如Lattice的ispLSI8840)的Tpd為8.5ns,Tco為6ns。第十九頁,共34頁。流水線設(shè)計(jì)在性能上的提高是以消耗較多的寄存器資源為代價(jià)的。對(duì)于非常簡單的用于數(shù)據(jù)傳輸?shù)慕M合邏輯設(shè)計(jì),例如上述例子,將它們轉(zhuǎn)換成流水線設(shè)計(jì)可能只需增加很少的寄存器單元。隨著組合邏輯變得復(fù)雜,為了保證中間的計(jì)算結(jié)果都在同一時(shí)鐘周期內(nèi)得到,必須在各級(jí)之間加入更多的寄存器。如果需要在CPLD中實(shí)現(xiàn)復(fù)雜的流水線設(shè)計(jì),以獲取更優(yōu)良的性能,具有豐富寄存器資源的CPLD結(jié)構(gòu)并且具有可預(yù)測的延遲這兩大特點(diǎn)的FPGA是一個(gè)很有吸引力的選擇。第二十頁,共34頁。流水線加法器與組合邏輯加法器的比較

實(shí)現(xiàn)加法功能需要三級(jí)電路:(1)加法器輸入的數(shù)據(jù)產(chǎn)生器和傳送器;(2)數(shù)據(jù)產(chǎn)生器和傳送器的超前進(jìn)位部分;(3)數(shù)據(jù)產(chǎn)生、傳送功能和超前進(jìn)位三者求和部分。第二十一頁,共34頁。第二十二頁,共34頁。在n位組合邏輯全加器中插入三層寄存器或寄存器組,將它轉(zhuǎn)變?yōu)閚位流水線全加器第二十三頁,共34頁。進(jìn)位的產(chǎn)生和傳遞nn寄存器寄存器nn超前進(jìn)位單元nn寄存器n-1寄存器寄存器寄存器寄存器超前進(jìn)位單元n-1n寄存器n寄存器nnan+1bn+1c-1C-1C-1Cn+2Cn+2Cn+2Cn+2Pn+1Gn+1(b)n位流水線全加器Sn+1進(jìn)位的產(chǎn)生和傳遞nnnn超前進(jìn)位單元n-1求和單元nnSn+1Cn+1C-1Pn+1Gn+1an+1bn+1Cout(a)n位純組合邏輯全加器第二十四頁,共34頁。若用擁有840個(gè)宏單元和312個(gè)有寄存能力I/O單元的LatticeispLSI8840分別來實(shí)現(xiàn)16位組合邏輯全加器和16位流水線全加器并比較它們的運(yùn)行速度,對(duì)于16位組合邏輯全加器,共用了34個(gè)宏單元。執(zhí)行一次計(jì)算需經(jīng)過3個(gè)GLB層,每次計(jì)算總延遲為45.6ns。而16位流水線全加器共用了81個(gè)宏單元。執(zhí)行一次計(jì)算只需經(jīng)過1個(gè)GLB層,每次計(jì)算總延遲為15.10ns(但第一次計(jì)算需要多用三個(gè)時(shí)鐘周期),吞吐量約增加了三倍。第二十五頁,共34頁。Li10.1非流水線方式實(shí)現(xiàn)8位全加器moduleadder8(cout,sum,ina,inb,cin,clk);output[7:0]sum;outputcout;input[7:0]ina,inb;inputcin,clk;reg[7:0]tempa,tempb,sum;regcout;regtempc;always@(posedgeclk)begintempa=ina;tempb=inb;tempc=cin;endalways@(posedgeclk)begin{cout,sum}=tempa+tempb+tempc;endendmodule第二十六頁,共34頁。4級(jí)流水線方式實(shí)現(xiàn)8位全加器modulepipeline(cout,sum,ina,inb,cin,clk);

output[7:0]sum;outputcout;

input[7:0]ina,inb;inputcin,clk;

reg[7:0]tempa,tempb,sum;regtempci,firstco,secondco,thirdco,cout;

reg[1:0]firsts,thirda,thirdb;reg[3:0]seconda,secondb,seconds;reg[5:0]firsta,firstb,thirds;always@(posedgeclk)

begintempa=ina;tempb=inb;tempci=cin;end//輸入數(shù)據(jù)緩存always@(posedgeclk)

begin{firstco,firsts}=tempa[1:0]+tempb[1:0]+tempci; //第一級(jí)加(低2位)firsta=tempa[7:2];firstb=tempb[7:2];end//未參加計(jì)算的數(shù)據(jù)緩存always@(posedgeclk)

begin{secondco,seconds}={firsta[1:0]+firstb[1:0]+firstco,firsts};//第2級(jí)加(第2、3位相加)seconda=firsta[5:2];secondb=firstb[5:2];end //數(shù)據(jù)緩存always@(posedgeclk)

begin{thirdco,thirds}={seconda[1:0]+secondb[1:0]+secondco,seconds};//第3級(jí)加(第4、5位相加)thirda=seconda[3:2];thirdb=secondb[3:2];end //數(shù)據(jù)緩存always@(posedgeclk){cout,sum}={thirda[1:0]+thirdb[1:0]+thirdco,thirds};//第4級(jí)加(高兩位相加)endmodule第二十七頁,共34頁。比較器

XY(X>Y)(X>=Y)(X=Y)(X<=Y)(X<Y)(X!=Y)00011100010001111011000111011100第二十八頁,共34頁。modulecompare_n(X,Y,XGY,XSY,XEY);input[width-1:0]X,Y;outputXGY,XSY,XEY;regXGY,XSY,XEY;parameterwidth=8;always@(XorY)//每當(dāng)X或Y變化時(shí)

beginif(X==Y)XEY=1;//設(shè)置X等于Y的信號(hào)為1elseXEY=0;if(X>Y)XGY=1;//設(shè)置X大于Y的信號(hào)為1elseXGY=0;if(X<Y)XSY=1;//設(shè)置X小于Y的信號(hào)為1elseXSY=0;endendmodule第二十九頁,共34頁。多路器

多路選擇器(Multiplexer)簡稱多路器,它是一個(gè)多輸入、單輸出的組合邏輯電

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論