![夏宇聞第五章_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/9af3b636-2c0a-408d-8116-0d3e82ce0daa/9af3b636-2c0a-408d-8116-0d3e82ce0daa1.gif)
![夏宇聞第五章_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/9af3b636-2c0a-408d-8116-0d3e82ce0daa/9af3b636-2c0a-408d-8116-0d3e82ce0daa2.gif)
![夏宇聞第五章_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/9af3b636-2c0a-408d-8116-0d3e82ce0daa/9af3b636-2c0a-408d-8116-0d3e82ce0daa3.gif)
![夏宇聞第五章_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/9af3b636-2c0a-408d-8116-0d3e82ce0daa/9af3b636-2c0a-408d-8116-0d3e82ce0daa4.gif)
![夏宇聞第五章_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/9af3b636-2c0a-408d-8116-0d3e82ce0daa/9af3b636-2c0a-408d-8116-0d3e82ce0daa5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 基本運(yùn)算邏輯和它們的VerilogHDL模型-第五章 基本運(yùn)算邏輯和它們的Verilog HDL模型前言復(fù)雜的算法數(shù)字邏輯電路是由基本運(yùn)算邏輯、數(shù)據(jù)流動(dòng)控制邏輯和接口邏輯電路所構(gòu)成的。對(duì)基本運(yùn)算邏輯的深入了解是設(shè)計(jì)復(fù)雜算法邏輯系統(tǒng)電路結(jié)構(gòu)的基本功。雖然Verilog 硬件描述語(yǔ)言能幫助我們自動(dòng)地綜合出極其復(fù)雜的組合和時(shí)序電路,并幫助我們對(duì)所設(shè)計(jì)的電路進(jìn)行全面細(xì)致的驗(yàn)證,但對(duì)于速度要求很高的特殊數(shù)字信號(hào)處理電路,其結(jié)構(gòu)還是由設(shè)計(jì)者來(lái)定奪。為了提高算法的運(yùn)算速度除了提高制造工藝技術(shù)外,邏輯結(jié)構(gòu)設(shè)計(jì)是最重要的環(huán)節(jié)。而設(shè)計(jì)出結(jié)構(gòu)合理的基本運(yùn)算組合電路是算法邏輯結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ),只有深入理解復(fù)雜組
2、合電路的許多基本特點(diǎn),才有可能通過(guò)電路結(jié)構(gòu)的改進(jìn)來(lái)提高算法邏輯系統(tǒng)的基本時(shí)鐘速度,為結(jié)構(gòu)合理的高速?gòu)?fù)雜算法的數(shù)字邏輯系統(tǒng)的構(gòu)成打下堅(jiān)實(shí)的基礎(chǔ)。這部分知識(shí)應(yīng)該是數(shù)字系統(tǒng)和計(jì)算機(jī)結(jié)構(gòu)課程講述的內(nèi)容,為了使同學(xué)們能熟練地把學(xué)過(guò)的基礎(chǔ)知識(shí)運(yùn)用到設(shè)計(jì)中去,有必要在這里把提高加法器、乘法器速度的電路結(jié)構(gòu)原理和方法簡(jiǎn)單地復(fù)習(xí)一下,并把流水線設(shè)計(jì)的概念也在這一章中引入。希望同學(xué)們能靈活地把這些電路結(jié)構(gòu)的基本概念應(yīng)用到設(shè)計(jì)中,來(lái)提高設(shè)計(jì)的水平。5.1 加法器在數(shù)字電路課程里我們已學(xué)習(xí)過(guò)一位的加法電路,即全加器。它的真值表很容易寫(xiě)出,電路結(jié)構(gòu)也很簡(jiǎn)單僅由幾個(gè)與門(mén)和非門(mén)組成。XiYiCi-1SiCi00000001
3、10010100110110010101011100111111表5.1 一位全加器的真值表表中Xi 、Yi 表示兩個(gè)加數(shù),Si 表示和,Ci-1 表示來(lái)自低位的進(jìn)位、Ci 表示向高位的進(jìn)位。從真值表很容易寫(xiě)出邏輯表達(dá)式如下:Ci = Xi Yi + Yi Ci-1 + Xi Ci-1 Si = Xi Ci + Yi Ci + Ci-1 Ci + Xi Yi Ci-1 全加器和Si的表達(dá)式也可以表示為: Si = Pi Ci 其中Pi = Xi Yi (5.1) Ci = Pi·Ci-1 + Gi 其中Gi = Xi·Yi (5.2) 5.2式就是進(jìn)位遞推公式。參考清華大學(xué)
4、出版社出版的劉寶琴老師編寫(xiě)的數(shù)字電路與系統(tǒng),可以很容易地寫(xiě)出超前進(jìn)位形成電路的邏輯,在這里不再詳細(xì)介紹。 在數(shù)字信號(hào)處理的快速運(yùn)算電路中常常用到多位數(shù)字量的加法運(yùn)算,這時(shí)需要用到并行加法器。并行加法器比串行加法器快得多,電路結(jié)構(gòu)也不太復(fù)雜。它的原理很容易理解。現(xiàn)在普遍采用的是Carry-Look-Ahead-Adder加法電路(也稱超前進(jìn)位加法器),只是在幾個(gè)全加器的基礎(chǔ)上增加了一個(gè)超前進(jìn)位形成邏輯,以減少由于逐位進(jìn)位信號(hào)的傳遞所造成的延遲。下面的邏輯圖表示了一個(gè)四位二進(jìn)制超前進(jìn)位加法電路。 A2 B2 A1 B1 A0 B0 C2 三位超前進(jìn)位加法器 C-1 S2 S1 S00全加器Y1 X
5、1S1 P0 G0 C0 P1 G1 C1 P2 G2 C2 P3 G3C-1 超前進(jìn)位加法器 全加器Y0 X0S0全加器Y2 X2S2全加器Y3 X3S3圖5.1 由四個(gè)一位全加器組成的超前進(jìn)位四位加法器P* G*P* G*同樣道理,十六位的二進(jìn)制超前進(jìn)位加法電路可用四個(gè)四位二進(jìn)制超前進(jìn)位加法電路再加上超前進(jìn)位形成邏輯來(lái)構(gòu)成。同理,依次類(lèi)推可以設(shè)計(jì)出32位和64位的加法電路。0四位全加器Y47 X47S47P*0G*0C*0 P*1G*1C*1 P*2G*2C*2 P*3 G*3C-1 超前進(jìn)位加法器 P* G*四位全加器Y03 X03S03四位全加器Y811 X811S811四位全加器Y1
6、215 X1215S1215圖5.2 由四個(gè)四位全加器組成的超前進(jìn)位十六位加法器在實(shí)現(xiàn)算法時(shí)(如卷積運(yùn)算和快速富里葉變換),常常用到加法運(yùn)算,由于多位并行加法器是由多層組合邏輯構(gòu)成,加上超前進(jìn)位形成邏輯雖然減少了延遲,但還是有多級(jí)門(mén)和布線的延遲,而且隨著位數(shù)的增加延遲還會(huì)積累。由于加法器的延遲,使加法器的使用頻率受到限制,這是指計(jì)算的節(jié)拍(即時(shí)鐘)必須要大于運(yùn)算電路的延遲,只有在輸出穩(wěn)定后才能輸入新的數(shù)進(jìn)行下一次運(yùn)算。如果設(shè)計(jì)的是32位或64位的加法器,延遲就會(huì)更大。為了加快計(jì)算的節(jié)拍,可以在運(yùn)算電路的組合邏輯層中加入多個(gè)寄存器組來(lái)暫存中間結(jié)果。也就是采用數(shù)字邏輯設(shè)計(jì)中常用的流水線( pipe
7、 line ) 辦法,來(lái)提高運(yùn)算速度,以便更有效地利用該運(yùn)算電路,我們?cè)诒菊碌暮竺孢€要較詳細(xì)地介紹流水線 結(jié)構(gòu)的概念和設(shè)計(jì)方法。我們也可以根據(jù)情況增加運(yùn)算器的個(gè)數(shù),以提高計(jì)算的并行度。用Verilog HDL來(lái)描述加法器是相當(dāng)容易的,只需要把運(yùn)算表達(dá)式寫(xiě)出就可以了,見(jiàn)下例。module add_4( X, Y, sum, C);input 3 : 0 X, Y;output 3: 0 sum;output C;assign C, Sum = X + Y;endmodule而16位加法器只需要擴(kuò)大位數(shù)即可,見(jiàn)下例:module add_16( X, Y, sum, C);input 15 : 0
8、 X, Y;output 15 : 0 sum;output C;assign C, Sum = X + Y;endmodule這樣設(shè)計(jì)的加法器在行為仿真時(shí)是沒(méi)有延時(shí)的。借助綜合器,可以根據(jù)以上Verilog HDL源代碼自動(dòng)將其綜合成典型的加法器電路結(jié)構(gòu)。綜合器有許多選項(xiàng)可供設(shè)計(jì)者選擇,以便用來(lái)控制自動(dòng)生成電路的性能。設(shè)計(jì)者可以考慮提高電路的速度,也可以考慮節(jié)省電路元件以減少電路占用硅片的面積。綜合器會(huì)自動(dòng)根據(jù)選項(xiàng)為你挑選一種基本加法器的結(jié)構(gòu)。有的高性能綜合器還可以根據(jù)用戶對(duì)運(yùn)算速度的要求插入流水線結(jié)構(gòu),來(lái)提高運(yùn)算器的性能。可見(jiàn)在綜合工具的資源庫(kù)中存有許多種基本的電路結(jié)構(gòu),通過(guò)編譯系統(tǒng)的分析
9、,自動(dòng)為設(shè)計(jì)者選擇一種電路結(jié)構(gòu),隨著綜合器的日益成熟它的功能將越來(lái)越強(qiáng)。然后設(shè)計(jì)者還需通過(guò)布局布線工具生成具有布線延遲的電路,再進(jìn)行后仿真,便可知道該加法器的實(shí)際延時(shí)。根據(jù)實(shí)際的延遲便可以確定使用該運(yùn)算邏輯的最高頻率。若需要重復(fù)使用該運(yùn)算器,則需要在控制數(shù)據(jù)流動(dòng)的狀態(tài)機(jī)中為其安排必要的時(shí)序。 5.2 乘法器乘法電路:在數(shù)字信號(hào)處理中經(jīng)常需要進(jìn)行乘法運(yùn)算,乘法器的設(shè)計(jì)對(duì)運(yùn)算的速度有很大的影響。本節(jié)討論兩個(gè)二進(jìn)制正數(shù)的乘法電路和運(yùn)算時(shí)間延遲問(wèn)題以及怎樣用VerilogHDL模型來(lái)表示乘法運(yùn)算。還將討論當(dāng)用綜合工具生成乘法運(yùn)算電路時(shí),怎樣來(lái)控制運(yùn)算的時(shí)間延遲。設(shè)兩個(gè)n位二進(jìn)制正數(shù)X和Y: X : X
10、 n-1···X1 X0 Y : Y n-1··· Y1Y0 則X和Y的乘積Z有2n位:并且式中YiX稱為部分積,記為P i,有顯然,兩個(gè)一位二進(jìn)制數(shù)相乘遵循如下規(guī)則: 0×0=0; 0×1=0; 1×0=0; 1×1=1因此YiXj 可用一個(gè)與門(mén)實(shí)現(xiàn),記Pi.j = Yi X j例:兩個(gè)四位二進(jìn)制數(shù)X和Y相乘。 被乘數(shù): X3 X2 X1 X0 ×) 乘 數(shù): Y3 Y2 Y1 Y0 _ Y0X3 Y0X2 Y0X1 Y0X0 Y1X3 Y1X2 Y1X1 Y1X0 Y2X3 Y2X
11、2 Y2X1 Y2X0 Y3X3 Y3X2 Y3X1 Y3X0 _ 乘積: Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0快速乘法器常采用網(wǎng)格形式的迭帶陣列結(jié)構(gòu),圖 5.3示出兩個(gè)四位二進(jìn)制數(shù)相乘的結(jié)構(gòu)圖,圖中每一個(gè)乘法單元MU的邏輯圖如圖 5.4 所示,即每一個(gè)MU由一個(gè)與門(mén)和一個(gè)全加器構(gòu)成。事實(shí)上,圖5.3中第一行的每個(gè)MU可用一個(gè)與門(mén)實(shí)現(xiàn),每一行最右邊一個(gè)MU中的全加器可用半加器實(shí)現(xiàn)。圖5.3實(shí)現(xiàn)乘法的最長(zhǎng)延時(shí)為1個(gè)與門(mén)的傳輸延時(shí)加上八個(gè)全加器的傳輸延時(shí)。假設(shè)每個(gè)全加器產(chǎn)生和與產(chǎn)生進(jìn)位的傳輸延時(shí)相同,并且均相當(dāng)4個(gè)與門(mén)的傳輸延時(shí),則圖5.3逐位進(jìn)位并行乘法器的最長(zhǎng)延時(shí)為1+8×
12、4=33個(gè)門(mén)的傳輸延時(shí)。M UM UM UM UM UM UM UM UM UM UM UM UM UM UM UM U0 Y3 X0 Y3 X1 Y3 X2 Y3 X3 Y2 X0 Y2 X1 Y2 X2 Y2 X3 Y1 X0 Y1 X1 Y1 X2 Y1 X3 Y0 X3 0 Y0 X2 0 Y0 X1 0 Y0 X0 0 000Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0圖5.3 逐位進(jìn)位并行乘法器與門(mén)Y0 X0 與門(mén)Y0 X2 與門(mén)Y0 X1 與門(mén)Y0 X3 與門(mén)Y1 X3 M UY2 X2 與門(mén)Y2 X3 M UY3 X2 M UY1 X2 M UY2 X1 M UY3 X0 M
13、 UY1 X1 M UY2 X0 M UY1 X0 M UY3 X1 A2 B2 A1 B1 A0 B0 C2 三位超前進(jìn)位加法器 C-1 S2 S1 S0與門(mén)Y3 X300 Z7 Z7 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0圖5.5 進(jìn)位節(jié)省乘法器 與門(mén) A BC0 全加器 Ci 圖5.4 乘法單元(MU)S Yi Xj SkC IC 0PijSk+1為了提高乘法運(yùn)算速度可以改為圖5.5 所示的進(jìn)位節(jié)省乘法器(Carry-Save Multiplier)。圖中用了一個(gè)三位的超前進(jìn)位加法器,九個(gè)圖5.4所示的乘法單元,七個(gè)與門(mén)。顯然,圖5.5中第二行的乘法單元中全加器可改為半加器。圖5
14、.5 執(zhí)行一次乘法運(yùn)算的最長(zhǎng)延時(shí)為1 個(gè)與門(mén)的傳輸延時(shí)加上3個(gè)全加器的傳輸延時(shí),再加上三位超前進(jìn)位加法器的傳輸延時(shí)。設(shè)三位超前進(jìn)位加法器的傳輸延時(shí)為5個(gè)門(mén)的傳輸延時(shí),則最長(zhǎng)延時(shí)為1+3×4+1×5=18的傳輸延時(shí)。節(jié)省乘法運(yùn)算時(shí)間的關(guān)鍵在于每個(gè)乘法單元的進(jìn)位輸出向下斜送到下一行,故有進(jìn)位節(jié)省乘法器之稱。 根據(jù)加法器類(lèi)似的道理,八位的二進(jìn)制超前進(jìn)位乘法電路可用兩個(gè)四位二進(jìn)制超前進(jìn)位乘法電路再加上超前進(jìn)位形成邏輯來(lái)構(gòu)成。同理,依次類(lèi)推可以設(shè)計(jì)出16位、32位和64位的乘法電路。用Verilog HDL來(lái)描述乘法器是相當(dāng)容易的,只需要把運(yùn)算表達(dá)式寫(xiě)出就可以了,見(jiàn)下例。module
15、 mult_4( X, Y, Product);input 3 : 0 X, Y;output 7 : 0 Product;assign Product = X * Y;endmodule而8位乘法器只需要擴(kuò)大位數(shù)即可,見(jiàn)下例:module mult_8( X, Y, Product);input 7 : 0 X, Y;output 15 : 0 Product;assign Product = X * Y;endmodule這樣設(shè)計(jì)的乘法器在行為仿真時(shí)是沒(méi)有延時(shí)的。借助綜合器,可以根據(jù)以上Verilog HDL源代碼自動(dòng)將其綜合成典型的乘法器電路結(jié)構(gòu)。綜合器有許多選項(xiàng)可供設(shè)計(jì)者選擇,以便用來(lái)
16、控制自動(dòng)生成電路的性能。設(shè)計(jì)者可以考慮提高速度,也可以考慮節(jié)省電路元件以減少電路占用硅片的面積。綜合器會(huì)自動(dòng)根據(jù)選項(xiàng)和約束文件為你挑選一種基本乘法器的結(jié)構(gòu)。有的高性能綜合器還可以根據(jù)用戶對(duì)運(yùn)算速度的要求插入流水線結(jié)構(gòu),來(lái)提高運(yùn)算器的性能。隨著綜合工具的發(fā)展,其資源庫(kù)中將存有越來(lái)越多種類(lèi)的基本電路結(jié)構(gòu),通過(guò)編譯系統(tǒng)的分析,自動(dòng)為設(shè)計(jì)者選擇一種更符合設(shè)計(jì)者要求的電路結(jié)構(gòu)。然后設(shè)計(jì)者通過(guò)布局布線工具生成具有布線延遲的電路,再進(jìn)行后仿真,便可精確地知道該乘法器的實(shí)際延時(shí)。根據(jù)實(shí)際的延遲便可以確定使用該運(yùn)算邏輯的最高頻率。若需要重復(fù)使用該運(yùn)算器,便可以根據(jù)此數(shù)據(jù)在控制數(shù)據(jù)流動(dòng)的狀態(tài)機(jī)中為其安排必要的時(shí)序
17、。所以借助于硬件描述語(yǔ)言和綜合工具大大加快了計(jì)算邏輯電路設(shè)計(jì)的過(guò)程。5.3 比較器數(shù)值大小比較邏輯在計(jì)算邏輯中是常用的一種邏輯電路,一位二進(jìn)制數(shù)的比較是它的基礎(chǔ)。下面列出了一位二進(jìn)制數(shù)比較電路的真值表:XY(X > Y)(X >= Y)(X = Y)(X <= Y) (X < Y)(X != Y)00011100010001111011000111011100從真值表很容易寫(xiě)出一位二進(jìn)制數(shù)比較電路的布爾表達(dá)式如下: (X > Y) = X·( Y)(X < Y) = ( X)·Y(X = Y) = (X) ·(Y) + X
18、83;Y也很容易畫(huà)出邏輯圖。位數(shù)較多的二進(jìn)制數(shù)比較電路比較復(fù)雜,以前我們常用7485型四位數(shù)字比較器來(lái)構(gòu)成位數(shù)較多的二進(jìn)制數(shù)比較電路,如8位、16位、24位、32位的比較器。同學(xué)們可以參考清華大學(xué)出版社劉寶琴老師編寫(xiě)的“數(shù)字電路與系統(tǒng)”中,有關(guān)多位并行比較器的設(shè)計(jì)的章節(jié),在這里不再詳細(xì)介紹。用Verilog HDL來(lái)設(shè)計(jì)比較電路是很容易的。下面就是一個(gè)位數(shù)可以由用戶定義的比較電路模塊:module compare_n ( X, Y, XGY, XSY, XEY);input width-1:0 X, Y;output XGY, XSY, XEY;reg XGY, XSY, XEY;parame
19、ter width = 8;always ( X or Y ) / 每當(dāng)X 或Y 變化時(shí) begin if ( X = = Y ) XEY = 1; / 設(shè)置X 等于Y的信號(hào)為1 else XEY = 0; if (X > Y) XGY = 1; / 設(shè)置X 大于Y的信號(hào)為1 else XGY = 0; if (X < Y) XSY = 1; / 設(shè)置X 小于Y的信號(hào)為1 else XSY = 0; endendmodule綜合工具能自動(dòng)把以上原代碼綜合成一個(gè)八位比較器。如果在實(shí)例引用時(shí)分別改變參數(shù)width值為16和32綜合工具就能自動(dòng)把以上原代碼分別綜合成16位和32位的比較器
20、。5.4 多路器多路選擇器(Multiplexer)簡(jiǎn)稱多路器,它是一個(gè)多輸入、單輸出的組合邏輯電路,在數(shù)字系統(tǒng)中有著廣泛的應(yīng)用。它可以根據(jù)地址碼的不同,從多個(gè)輸入數(shù)據(jù)中選取一個(gè),讓其輸出到公共的輸出端。在算法電路的實(shí)現(xiàn)中多路器常用來(lái)根據(jù)地址碼來(lái)調(diào)度數(shù)據(jù)。我們可以很容易地寫(xiě)出一個(gè)有兩位地址碼,可以從四組輸入信號(hào)線中選出一組通過(guò)公共輸出端輸出的功能表。地址1地址0輸入1輸入2輸入3輸入4 輸出001000輸入1010100輸入2100010輸入3110001輸入4可以很容易地寫(xiě)出它的布爾表達(dá)式,也很容易畫(huà)出邏輯圖,但是當(dāng)?shù)刂反a比較長(zhǎng),比如有12位長(zhǎng),而且每組輸入信號(hào)位數(shù)較寬(如位寬為8)信號(hào)組的
21、數(shù)目又較多時(shí),再加上又需多路選擇使能控制信號(hào)時(shí),其邏輯電路的基本單元需要量是較大的,如畫(huà)出邏輯圖來(lái)就顯得很復(fù)雜,電路具體化后不易于理解,(同學(xué)們可以參考閻石老師主編的“數(shù)字電子技術(shù)基礎(chǔ)”教材,復(fù)習(xí)多路選擇器的概念)。用Verilog HDL來(lái)設(shè)計(jì)多路選擇器電路是很容易的。下面就是帶使能控制信號(hào)的數(shù)據(jù)位寬可以由用戶定義的八路數(shù)據(jù)選擇器模塊:module Mux_8( addr,in1, in2, in3, in4, in5, in6, in7, in8, Mout, nCS);input 2:0 addr;input width-1 in1, in2, in3, in4, in5, in6, i
22、n7, in8;output width-1 Mout;parameter width = 8;always (addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8) begin if (!ncs) case(addr) 3b000: Mout = in1; 3b001: Mout = in2; 3b010: Mout = in3; 3b011: Mout = in4; 3b100: Mout = in5; 3b101: Mout = in6; 3b110: Mout = in7; 3b111: Mout = in8; end
23、case else Mout = 0; end endmodule綜合工具能自動(dòng)把以上原代碼綜合成一個(gè)數(shù)據(jù)位寬為8的八路選一數(shù)據(jù)多路器。如果在實(shí)例引用時(shí)分別改變參數(shù)width值為16和32,綜合工具就能自動(dòng)把以上原代碼分別綜合成數(shù)據(jù)寬度為16位和32位的八選一數(shù)據(jù)多路器。5.5 總線和總線操作總線是運(yùn)算部件之間數(shù)據(jù)流通的公共通道。在硬線邏輯構(gòu)成的運(yùn)算電路中只要電路的規(guī)模允許,我們可以比較自由地來(lái)確定總線的位寬,因此可以大大提高數(shù)據(jù)流通的速度。適當(dāng)?shù)目偩€的位寬,配合適當(dāng)并行度的運(yùn)算邏輯和步驟能顯著地提高專(zhuān)用信號(hào)處理邏輯電路的運(yùn)算能力。各運(yùn)算部件和數(shù)據(jù)寄存器組可以通過(guò)帶控制端的三態(tài)門(mén)與總線的連接。
24、通過(guò)對(duì)控制端電平的控制來(lái)確定在某一時(shí)間片段內(nèi),總線歸哪兩個(gè)或哪幾個(gè)部件使用(任何時(shí)間片段只能有一個(gè)部件發(fā)送,但可以有幾個(gè)接收)。用Verilog 來(lái)描述總線和總線操作是非常簡(jiǎn)單的。下面就是一個(gè)簡(jiǎn)單的與總線有接口的模塊是如何對(duì)總線進(jìn)行操作的例子:module SampleOfBus( DataBus, link_bus,write );inout 11:0 DataBus; / 總線雙向端口input link_bus; / 向總線輸出數(shù)據(jù)的控制電平reg 11:0 outsigs;assign DataBus = (link_bus) ? outsigs : 12 h zzz ; /當(dāng)link
25、_bus為高電平時(shí)通過(guò)總線把存在outsigs的計(jì)算結(jié)果輸出always (posedge write) /每當(dāng)write信號(hào)上跳沿時(shí) begin /接收總線上數(shù)據(jù)并乘以五 outsigs <= DataBus * 5; /把計(jì)算結(jié)果存入outsigs endendmodule通過(guò)以上例子我們可以理解使這個(gè)總線連接模塊能正常工作的最重要的因素是與其他模塊的配合,如:何時(shí)提供write信號(hào)?此時(shí)DataBus上數(shù)據(jù)是否已正確提供?何時(shí)提供link_bus電平?輸出的數(shù)據(jù)是否能被有效地利用?控制信號(hào)的相互配合由同步狀態(tài)機(jī)控制的開(kāi)關(guān)陣列控制。在第七章里我們將詳細(xì)介紹如何用Verilog HDL
26、來(lái)設(shè)計(jì)復(fù)雜的同步狀態(tài)機(jī)并產(chǎn)生精確同步的開(kāi)關(guān)控制信號(hào)來(lái)控制數(shù)據(jù)的正確流動(dòng)。5.6 流水線(pipeline)流水線(pipe-line)設(shè)計(jì)技術(shù): 流水線的設(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-block functions)中使用了流水線設(shè)計(jì)技術(shù)。通過(guò)加法器和乘法器等一些基本模塊,本節(jié)討論了有關(guān)流水線的一些基本概念,并對(duì)采用兩種不同的設(shè)計(jì)方法:純組合邏輯設(shè)計(jì)和流水線設(shè)
27、計(jì)方法時(shí),在性能和邏輯資源的利用等方面的不同進(jìn)行了比較和權(quán)衡。 流水線設(shè)計(jì)的概念:所謂流水線設(shè)計(jì)實(shí)際上就是把規(guī)模較大、層次較多的組合邏輯電路分為幾個(gè)級(jí),在每一級(jí)插入寄存器組暫存中間數(shù)據(jù)。K級(jí)的流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組(分為K級(jí),每一級(jí)都有一個(gè)寄存器組)上一級(jí)的輸出是下一級(jí)的輸入而又無(wú)反饋的電路。圖5.6表示了如何將把組合邏輯設(shè)計(jì)轉(zhuǎn)換為相同組合邏輯功能的流水線設(shè)計(jì)。這個(gè)組合邏輯包括兩級(jí)。第一級(jí)的延遲是T1和T3兩個(gè)延遲中的最大值;第二級(jí)的延遲等于T2的延遲。為了通過(guò)這個(gè)組合邏輯得到穩(wěn)定的計(jì)算結(jié)果輸出,需要等待的傳播延遲為max(T1,T3)+T2個(gè)時(shí)間單位。在從輸入到輸
28、出的每一級(jí)插入寄存器后,流水線設(shè)計(jì)的第一級(jí)寄存器所具有的總的延遲為T(mén)1與T3時(shí)延中的最大值加上寄存器的Tco(觸發(fā)時(shí)間)。同樣,第二級(jí)寄存器延遲為T(mén)2的時(shí)延加上Tco。采用流水線設(shè)計(jì)為取得穩(wěn)定的輸出總體計(jì)算周期為: max(max(T1,T3)+Tco,(T2+Tco)流水線設(shè)計(jì)需要兩個(gè)時(shí)鐘周期來(lái)獲取第一個(gè)計(jì)算結(jié)果,而只需要一個(gè)時(shí)鐘周期來(lái)獲取隨后的計(jì)算結(jié)果。開(kāi)始時(shí)用來(lái)獲取第一個(gè)計(jì)算結(jié)果的兩個(gè)時(shí)鐘周期被稱為采用流水線設(shè)計(jì)的首次延遲(latency)。對(duì)于CPLD來(lái)說(shuō),器件的延遲如T1、T2和T3相對(duì)于觸發(fā)器的Tco要長(zhǎng)得多,并且寄存器的建立時(shí)間Tsu也要比器件的延遲快得多。只有在上述關(guān)于硬件時(shí)延
29、的假設(shè)為真的情況下,流水線設(shè)計(jì)才能獲得比同功能的組合邏輯設(shè)計(jì)更高的性能。圖5.6 組合邏輯設(shè)計(jì)轉(zhuǎn)化為流水線設(shè)計(jì)采用流水線設(shè)計(jì)的優(yōu)勢(shì)在于它能提高吞吐量(throughput)。假設(shè)T1、T2和T3具有同樣的傳遞延遲Tpd。對(duì)于組合邏輯設(shè)計(jì)而言,總的延遲為2*Tpd。對(duì)于流水線設(shè)計(jì)來(lái)說(shuō),計(jì)算周期為(Tpd+Tco)。前面提及的首次延遲(latency)的概念實(shí)際上就是將(從輸入到輸出)最長(zhǎng)的路徑進(jìn)行初始化所需要的時(shí)間總量;吞吐延遲則是執(zhí)行一次重復(fù)性操作所需要的時(shí)間總量。在組合邏輯設(shè)計(jì)中,首次延遲和吞吐延遲同為2*Tpd。與之相比,在流水線設(shè)計(jì)中,首次延遲是2*(Tpd+Tco),而吞吐延遲是Tpd
30、+Tco。如果CPLD硬件能提供快速的Tco,則流水線設(shè)計(jì)相對(duì)于同樣功能的組合邏輯設(shè)計(jì)能提供更大的吞吐量。典型的富含寄存器資源的CPLD器件(如Lattice的ispLSI 8840)的Tpd為8.5ns,Tco為6ns。流水線設(shè)計(jì)在性能上的提高是以消耗較多的寄存器資源為代價(jià)的。對(duì)于非常簡(jiǎn)單的用于數(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ù)測(cè)的延
31、遲這兩大特點(diǎn)的FPGA是一個(gè)很有吸引力的選擇。流水線加法器與組合邏輯加法器的比較采用流水線技術(shù)可以在相同的半導(dǎo)體工藝的前提下通過(guò)電路結(jié)構(gòu)的改進(jìn)來(lái)大幅度地提高重復(fù)多次使用的復(fù)雜組合邏輯計(jì)算電路的吞吐量。下面是一個(gè)n位全加器的例子,如圖5.7所示為實(shí)現(xiàn)該加法功能需要三級(jí)電路:(1)加法器輸入的數(shù)據(jù)產(chǎn)生器和傳送器;(2)數(shù)據(jù)產(chǎn)生器和傳送器的超前進(jìn)位部分;(3)數(shù)據(jù)產(chǎn)生、傳送功能和超前進(jìn)位三者求和部分。圖5.7 n位全加器的方程式 進(jìn)位的產(chǎn)生和傳遞 n nnn超前進(jìn)位單元 n-1求和單元 nnSn+1 Cn+1C-1Pn+1Gn+1an+1bn+1Cout(a) n 位純組合邏輯全加器圖5.8 n 位
32、純組合邏輯全加器(a) 改進(jìn)為 n位流水線全加器 (b)進(jìn)位的產(chǎn)生和傳遞 n n寄存器寄存器 n n超前進(jìn)位單元 n n寄存器 n-1寄存器寄存器寄存器寄存器超前進(jìn)位單元 n-1 n寄存器 n寄存器 n nan+1bn+1c-1C -1C -1Cn+2Cn+2Cn+2Cn+2Pn+1Gn+1(b) n位流水線全加器 Sn+1在n位組合邏輯全加器中插入三層寄存器或寄存器組,將它轉(zhuǎn)變?yōu)閚位流水線全加器,如圖5.8(b)所示。由于進(jìn)位C-1既是第一級(jí)邏輯的輸入,又是第二級(jí)邏輯輸入,因此將C-1進(jìn)位改為流水線結(jié)構(gòu)時(shí)需要使用兩級(jí)寄存器。同樣地,發(fā)生器輸出在作為求和單元的輸入之前,也要多次插入寄存器。作為
33、求和單元的輸出,進(jìn)位Cout要達(dá)到同一流水線的級(jí)別也需要插入兩層寄存器。若用擁有840個(gè)宏單元和312個(gè)有寄存能力I/O單元的Lattice ispLSI8840分別來(lái)實(shí)現(xiàn)16位組合邏輯全加器和16位流水線全加器并比較它們的運(yùn)行速度, 對(duì)于16位組合邏輯全加器, 共用了34個(gè)宏單元。執(zhí)行一次計(jì)算需經(jīng)過(guò)3個(gè)GLB層,每次計(jì)算總延遲為45.6ns。而16位流水線全加器共用了81個(gè)宏單元。執(zhí)行一次計(jì)算只需經(jīng)過(guò)1個(gè)GLB層,每次計(jì)算總延遲為15.10ns(但第一次計(jì)算需要多用三個(gè)時(shí)鐘周期),吞吐量約增加了三倍。流水線乘法器與組合邏輯乘法器的比較:首先,我們使用一個(gè)4*4乘法器的例子來(lái)說(shuō)明部分積乘法器的
34、基本概念。然后,通過(guò)一個(gè)復(fù)雜得多的6*10乘法器來(lái)比較流水線乘法器和組合邏輯乘法器這兩個(gè)不同設(shè)計(jì)方法的實(shí)現(xiàn)在性能上有何差異。如圖5.9所示,4*4乘法器可以被分解為部分積的向量和(或稱加權(quán)和),比如說(shuō)是16個(gè)1*1乘法器輸出的向量和。這里并沒(méi)有直接在4*4乘法器的每一級(jí)都插入寄存器以達(dá)到改為流水線結(jié)構(gòu)的目的,而是將其分割為1*4乘法器來(lái)產(chǎn)生所有的部分積向量。這樣分割的結(jié)果是形成了兩級(jí)的流水線設(shè)計(jì),相對(duì)1*1乘法器的組合具有更短的首次延遲,而吞吐延遲相同。每一級(jí)的流水線求和用圖5.8(b)所示的流水線加法器來(lái)實(shí)現(xiàn)。我們用一個(gè)類(lèi)似圖5.9中的4*4、但更為復(fù)雜的6*10流水線乘法器來(lái)比較流水線乘法
35、器與非流水線乘法器之間性能上的差異。如圖5.10所示,該6*10流水線乘法器采用6個(gè)10位乘法器來(lái)實(shí)現(xiàn)1*10乘法-a0 * b9:0, a1 * b9:0, a2 * b9:0, a3 * b9:0 , a4 * b9:0, a5 * b9:0 。由于ai非0即1,那么1*10乘法器的結(jié)果是b9:0 或0。這表示下一級(jí)的兩個(gè)輸入不是b9:0 就是0。這六個(gè)多路器的輸出被兩兩一組分成三個(gè)相互獨(dú)立的組合,并分別用一個(gè)3層的流水線加法器加起來(lái)。每一組的兩個(gè)多路輸入的下標(biāo)號(hào)差為3。在這個(gè)例子里,這些組是如下組織的:a5,a2,a4,a1,a3,a0。a5,a2意味著第一個(gè)多路器的輸出M(10位)和第四個(gè)多路器的輸出N(10位)是流水線加法器O的輸入。同樣地,其余的兩組分別用流
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 防溺水安全應(yīng)急預(yù)案
- 三人共同創(chuàng)業(yè)店鋪股權(quán)分配合同2025
- 專(zhuān)利實(shí)施許可合同備案示范合同
- KTV股東合作合同模板
- 上海市新車(chē)買(mǎi)賣(mài)合同標(biāo)準(zhǔn)模版
- 產(chǎn)品采購(gòu)合同質(zhì)量保證協(xié)議書(shū)
- 個(gè)人與個(gè)人借款合同范例
- 個(gè)人購(gòu)房正式合同樣本
- 標(biāo)準(zhǔn)借款合同
- 個(gè)人與銀行借款合同典范模板
- 2025公司借款合同范本借款合同
- 閩教版(2020)小學(xué)信息技術(shù)三年級(jí)上冊(cè)第2課《人工智能在身邊》說(shuō)課稿及反思
- 語(yǔ)文-百師聯(lián)盟2025屆高三一輪復(fù)習(xí)聯(lián)考(五)試題和答案
- 地理-山東省濰坊市、臨沂市2024-2025學(xué)年度2025屆高三上學(xué)期期末質(zhì)量檢測(cè)試題和答案
- 正面上手發(fā)球技術(shù) 說(shuō)課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊(cè)
- 事故隱患排查治理情況月統(tǒng)計(jì)分析表
- 永磁直流(汽車(chē))電機(jī)計(jì)算程序
- 國(guó)家電網(wǎng)招聘2025-企業(yè)文化復(fù)習(xí)試題含答案
- 頸部瘢痕攣縮畸形治療
- 貴州省貴陽(yáng)市2023-2024學(xué)年五年級(jí)上學(xué)期語(yǔ)文期末試卷(含答案)
- 醫(yī)院物業(yè)服務(wù)組織機(jī)構(gòu)及人員的配備、培訓(xùn)管理方案
評(píng)論
0/150
提交評(píng)論