SOC-CH3、4、5-加法器-乘法器-存儲(chǔ)器-20140915_第1頁
SOC-CH3、4、5-加法器-乘法器-存儲(chǔ)器-20140915_第2頁
SOC-CH3、4、5-加法器-乘法器-存儲(chǔ)器-20140915_第3頁
SOC-CH3、4、5-加法器-乘法器-存儲(chǔ)器-20140915_第4頁
SOC-CH3、4、5-加法器-乘法器-存儲(chǔ)器-20140915_第5頁
已閱讀5頁,還剩161頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三講加法器設(shè)計(jì)定點(diǎn)加法器設(shè)計(jì)進(jìn)位鏈結(jié)構(gòu)串行進(jìn)位并行進(jìn)位浮點(diǎn)加法器設(shè)計(jì)規(guī)格化浮點(diǎn)數(shù)運(yùn)算的基本原理浮點(diǎn)加法器設(shè)計(jì)實(shí)現(xiàn)3.1定點(diǎn)加法器設(shè)計(jì)算術(shù)邏輯部件的核心單元是加法器。加法器是影響算術(shù)邏輯部件整體性能的關(guān)鍵部分。定點(diǎn)多位加法器是指能夠?qū)崿F(xiàn)多位二進(jìn)制數(shù)相加運(yùn)算的電路。A:1101B:1011111被加數(shù)加數(shù)低位進(jìn)位00011和S進(jìn)位C

0+3.1定點(diǎn)加法器設(shè)計(jì)---不考慮低位進(jìn)位的一位加法器一位半加器半加器被加數(shù)A加數(shù)B和S進(jìn)位C---考慮低位進(jìn)位的一位加法器一位全加器:被加數(shù)加數(shù)和進(jìn)位全加器低位進(jìn)位3.1.1進(jìn)位鏈結(jié)構(gòu)

按形成進(jìn)位的方式可以將多位加法器分為兩類:串行進(jìn)位加法器串行進(jìn)位方式是將多個(gè)全加器的進(jìn)位輸出依次級(jí)聯(lián)。并行進(jìn)位加法器并行進(jìn)位加法器設(shè)有專門的并行進(jìn)位產(chǎn)生邏輯,運(yùn)算速度較快。3.1.1進(jìn)位鏈結(jié)構(gòu)串行進(jìn)位加法器每步操作只實(shí)現(xiàn)一位求和。采用一位加法器設(shè)計(jì)n位全加器,則需將n位二進(jìn)制求和運(yùn)算分解為n步操作實(shí)現(xiàn),每位的進(jìn)位作為下一步求和操作的進(jìn)位輸入。串行加法器所用元件很少,但速度太慢。3.1.1進(jìn)位鏈結(jié)構(gòu)并行進(jìn)位加法器使用n個(gè)全加器一步實(shí)現(xiàn)n位相加,即n位數(shù)據(jù)同時(shí)求和。計(jì)算機(jī)的運(yùn)算器基本上都采用并行加法器,所用全加器的個(gè)數(shù)與操作位數(shù)相同。并行加法器的運(yùn)算速度不僅與全加器的速度有關(guān),更取決于進(jìn)位傳遞的速度。3.1.1進(jìn)位鏈結(jié)構(gòu)從本質(zhì)上來講,進(jìn)位的產(chǎn)生是從低位開始,逐級(jí)向高位傳遞的。假定Cin為低位進(jìn)位信號(hào),則本位(第i位)產(chǎn)生的進(jìn)位信號(hào)Cout為:3.1.1進(jìn)位鏈結(jié)構(gòu)Cout=Gi+PiCin是構(gòu)成各種進(jìn)位鏈結(jié)構(gòu)的基本邏輯式。Gi=AiBi稱為第i位的進(jìn)位產(chǎn)生函數(shù),或稱為本位進(jìn)位或絕對(duì)進(jìn)位。若本位的兩輸入量均為1,必產(chǎn)生進(jìn)位。這是不受進(jìn)位傳遞影響的分量。

3.1.1進(jìn)位鏈結(jié)構(gòu)Pi稱為進(jìn)位傳遞函數(shù),而PiCin則稱為傳送進(jìn)位或條件進(jìn)位。Pi的邏輯含義是:若本位的兩個(gè)輸入至少一個(gè)為1時(shí),則當(dāng)?shù)臀挥羞M(jìn)位傳來時(shí),本位將產(chǎn)生進(jìn)位。3.1.2串行進(jìn)位串行進(jìn)位方式是指:逐級(jí)地形成各位進(jìn)位,每一級(jí)進(jìn)位直接依賴于上一級(jí)進(jìn)位。設(shè)n位并行進(jìn)位加法器的序號(hào)是第一位為最低位,第n位為最高位,則各進(jìn)位信號(hào)的邏輯式如下:C1=G1+P1C0=A1B1+(A1B1)C0C2=G2+P2C2=A2B2+(A2B2)C1...Cn=Gn+PnCn=AnBn+(AnBn)Cn-13.1.2串行進(jìn)位兩個(gè)多位數(shù)相加時(shí),只要將低位全加器的進(jìn)位輸出端接到高位全加器的進(jìn)位輸入端,就可以構(gòu)成串行進(jìn)位加法器。任一位的加法運(yùn)算必須在低一位的加法運(yùn)算完成之后才能進(jìn)行。在各級(jí)全加器之間,進(jìn)位信號(hào)采用串聯(lián)結(jié)構(gòu),所用元件最少,邏輯電路比較簡(jiǎn)單,但運(yùn)算時(shí)間比較長(zhǎng)。3.1.2串行進(jìn)位

串行進(jìn)位加法器3.1.2串行進(jìn)位可以通過使用1位全加器的串聯(lián)行成多位串行進(jìn)位加法器。要實(shí)現(xiàn)8位串行進(jìn)位加法器,只需要首先1位全加器模塊,然后在頂層模塊中對(duì)該1位全加器實(shí)例化,通過串聯(lián)的方式產(chǎn)生8位全加器的各位輸出。3.1.2串行進(jìn)位首先實(shí)現(xiàn)一個(gè)加法器模塊3.1.2串行進(jìn)位 實(shí)現(xiàn)8位全加器時(shí),只要在頂層模塊進(jìn)行相應(yīng)位的映射即可實(shí)現(xiàn)。3.1.3并行進(jìn)位并行加法器又稱為超前進(jìn)位加法器。每位的進(jìn)位只有加數(shù)和被加數(shù)決定,而與低位的進(jìn)位無關(guān),即在加法運(yùn)算過程中各級(jí)進(jìn)位信號(hào)同時(shí)送到各個(gè)全加器的進(jìn)位輸入端。3.1.3并行進(jìn)位根據(jù)進(jìn)位產(chǎn)生函數(shù)Gi=AiBi及進(jìn)位傳遞函數(shù),可得到如下邏輯式:C1=G1+P1C0C2=G2+P2G1+P2P1P0C3=G3+P3G2+P3P2G1+P3P2P1C0...Cn=Gn+PnGn-1+…+(Pn…P1)C03.1.3并行進(jìn)位在并行進(jìn)位結(jié)構(gòu)中,各進(jìn)位結(jié)構(gòu)是獨(dú)自形成的,并不直接依賴于前級(jí)。當(dāng)加法器運(yùn)算的有關(guān)輸入(AiBiC0)穩(wěn)定后,各級(jí)同時(shí)產(chǎn)生自己的Gi和Pi,也同時(shí)形成自己的進(jìn)位信號(hào)Ci。3.1.3并行進(jìn)位4位并行進(jìn)位加法器的設(shè)計(jì)采用數(shù)據(jù)流方式進(jìn)行描述。其中,P表示進(jìn)位傳遞信號(hào),如果P為0,就否決前一級(jí)的進(jìn)位輸入,G表示絕對(duì)進(jìn)位信號(hào),如果g為1,表示一定會(huì)向后一級(jí)產(chǎn)生進(jìn)位輸出。pp信號(hào)和gg信號(hào)用于多個(gè)超前進(jìn)位模塊之間的連接,例如利用4個(gè)4位超前進(jìn)位加法器模塊構(gòu)成16位超前進(jìn)位加法器。3.1.3并行進(jìn)位3.2浮點(diǎn)加法器浮點(diǎn)數(shù)比定點(diǎn)數(shù)的表示范圍寬,有效精度高,更適合于科學(xué)與工程計(jì)算的需要。浮點(diǎn)數(shù)由階碼E和尾數(shù)M組成,其數(shù)值為:(-1)Ms×M×BE3.2.1規(guī)格化浮點(diǎn)數(shù)加減運(yùn)算

基本原理浮點(diǎn)數(shù)X=Mx·2Ex±

Y=My·2Ey(1)對(duì)階(2)尾數(shù)進(jìn)行加(減)運(yùn)算(3)規(guī)格化(4)舍入處理對(duì)階的原則:小階對(duì)大階。當(dāng)調(diào)整階碼時(shí),尾數(shù)應(yīng)同步地移位,以保證浮點(diǎn)數(shù)的值不變。如果階碼以2為低,則每當(dāng)階碼增1時(shí),尾數(shù)應(yīng)右移一位。

3.2.1規(guī)格化浮點(diǎn)數(shù)加減運(yùn)算

基本原理規(guī)格化1)左規(guī)運(yùn)算結(jié)果為11.1XXX或00.0XXX,尾數(shù)左移1位,階碼減1。2)右規(guī)運(yùn)算結(jié)果為10.XXX或01.XXX,尾數(shù)右移1位,階碼加1。最多右移1次。3.2.1規(guī)格化浮點(diǎn)數(shù)加減運(yùn)算

基本原理3.2.2浮點(diǎn)加法器的設(shè)計(jì)數(shù)據(jù)格式數(shù)據(jù)共32位,S(1b)為符號(hào)位,表示浮點(diǎn)數(shù)的正負(fù),Exponent(8b)為階碼,Mantissa(23b)為尾數(shù)。階碼采用移碼表示

[E]階=E+128

尾數(shù)采用2的補(bǔ)碼表示形式

[M]補(bǔ)=2+M,S(1b)Exponent(8b)Mantissa(23b)

符號(hào)位在最前面(S),最后的23位均為數(shù)值部分。本節(jié)設(shè)計(jì)的浮點(diǎn)加法器尾數(shù)采用補(bǔ)碼表示,可以簡(jiǎn)化設(shè)計(jì),而不必判斷兩數(shù)的絕對(duì)值大小關(guān)系。3.2.2浮點(diǎn)加法器的設(shè)計(jì)輸入輸出端口定義3.2.2浮點(diǎn)加法器的設(shè)計(jì)浮點(diǎn)加法器的工作流程3.2.2浮點(diǎn)加法器的設(shè)計(jì)

浮點(diǎn)加法器的工作流程可以用狀態(tài)描述。設(shè)計(jì)7個(gè)狀態(tài)(讀者也可自行根據(jù)流程圖定義狀態(tài)機(jī),狀態(tài)數(shù)可以多余或少于7個(gè)),分別表示運(yùn)算過程的各個(gè)步驟,各狀態(tài)的含義如表所示。3.2.2浮點(diǎn)加法器的設(shè)計(jì)狀態(tài)編碼 執(zhí)行的操作S0:4’0000 初始化S1:4’0001 檢測(cè)操作數(shù)是否是零S2:4’0010 比較階碼并計(jì)算階碼的差值S3:4’0011 階碼小的尾數(shù)右移并修改階碼S4:4’0100 尾數(shù)求和S5:4’0101 判斷結(jié)果是否溢出以及是否需要 規(guī)格化S6:4’0110對(duì)結(jié)果進(jìn)行規(guī)格化3.2.2浮點(diǎn)加法器的設(shè)計(jì)浮點(diǎn)加法器的狀態(tài)轉(zhuǎn)換圖3.2.2浮點(diǎn)加法器的設(shè)計(jì)第四講乘除法器設(shè)計(jì)常用的機(jī)器編碼格式定點(diǎn)乘法器的原理及實(shí)現(xiàn)原碼一位乘法設(shè)計(jì)補(bǔ)碼一位乘法設(shè)計(jì)陣列乘法器設(shè)計(jì)定點(diǎn)除法器原理及實(shí)現(xiàn)原碼除法器設(shè)計(jì)補(bǔ)碼除法器設(shè)計(jì)陣列除法器設(shè)計(jì)4.1常用機(jī)器數(shù)的編碼格式

原碼表示法反碼表示法補(bǔ)碼表示法4.1常用機(jī)器數(shù)的編碼格式4.1.1原碼表示法原碼表示法是一種最簡(jiǎn)單的機(jī)器數(shù)表示法,其最高位為符號(hào)位,符號(hào)位為0時(shí)表示該數(shù)為正,符號(hào)位為1時(shí)表示該數(shù)為負(fù),數(shù)值部分與真值相同。原碼形式為XS.X1X2…Xn,其中XS表示符號(hào)位。純小數(shù)原碼的定義為:

[X]原=純整數(shù)原碼的定義為:

[X]原=

X0≤X<11-X=1+∣X∣-1<X≤0

X,0≤X<2n2n-X=2n+∣X∣,-2n<X≤04.1常用機(jī)器數(shù)的編碼格式原碼的優(yōu)點(diǎn)是直觀易懂,機(jī)器數(shù)和真值間的轉(zhuǎn)換很容易,用原碼實(shí)現(xiàn)乘、除運(yùn)算的規(guī)則簡(jiǎn)單。缺點(diǎn)是加、減運(yùn)算規(guī)則較復(fù)雜。4.1常用機(jī)器數(shù)的編碼格式4.1.2反碼表示法反碼是對(duì)一個(gè)數(shù)的各位求反。正數(shù)的反碼和原碼的形式相同;負(fù)數(shù)的反碼是符號(hào)位為1,數(shù)值部分等于其各位的絕對(duì)值求反。4.1常用機(jī)器數(shù)的編碼格式4.1.3補(bǔ)碼表示法補(bǔ)碼的符號(hào)位表示方法與原碼相同(即正數(shù)為0,負(fù)數(shù)為1),其數(shù)值部分的表示與數(shù)的正負(fù)有關(guān):正數(shù):數(shù)值部分與真值形式相同;負(fù)數(shù):將真值的數(shù)值部分按位取反,且在最低位加1。4.1常用機(jī)器數(shù)的編碼格式補(bǔ)碼形式為XS.X1X2…Xn,其中XS表示符號(hào)位。純小數(shù)補(bǔ)碼的定義為:

[X]補(bǔ)=純整數(shù)補(bǔ)碼的定義為:

[X]補(bǔ)=

在補(bǔ)碼表示中,真值0的表示形式是唯一的:

X,0≤X<12+X=2-∣X∣,-1<X≤0X,0≤X<2n2n+1+X=2n+1-∣X∣,-2n<X≤0[+0]補(bǔ)=[-0]補(bǔ)=000004.2定點(diǎn)乘法器的原理及實(shí)現(xiàn)乘法運(yùn)算是計(jì)算機(jī)中一種重要的基本運(yùn)算,實(shí)現(xiàn)方法包括以下幾種。(1)用軟件實(shí)現(xiàn)乘法運(yùn)算。(2)在加法器基礎(chǔ)上增加一些硬件實(shí)現(xiàn)乘法運(yùn)算。(3)設(shè)置專用硬件乘法器實(shí)現(xiàn)乘法運(yùn)算。使用該方法會(huì)使計(jì)算機(jī)結(jié)構(gòu)復(fù)雜,成本增加,但能使運(yùn)算速度大大提高。4.2定點(diǎn)乘法器的原理及實(shí)現(xiàn)乘法運(yùn)算是計(jì)算機(jī)中一種重要的基本運(yùn)算,實(shí)現(xiàn)方法包括以下幾種。(1)用軟件實(shí)現(xiàn)乘法運(yùn)算。(2)在加法器基礎(chǔ)上增加一些硬件實(shí)現(xiàn)乘法運(yùn)算。(3)設(shè)置專用硬件乘法器實(shí)現(xiàn)乘法運(yùn)算。使用該方法會(huì)使計(jì)算機(jī)結(jié)構(gòu)復(fù)雜,成本增加,但能使運(yùn)算速度大大提高。4.2定點(diǎn)乘法器的原理及實(shí)現(xiàn)原碼一位乘法設(shè)計(jì)原碼二位乘法設(shè)計(jì)補(bǔ)碼一位乘法設(shè)計(jì)陣列乘法器設(shè)計(jì)設(shè)計(jì)方法模塊功能與原理分析模塊結(jié)構(gòu)與電路模型VHDL語言設(shè)計(jì)實(shí)現(xiàn)FPGA驗(yàn)證4.2.1原碼一位乘法原理及實(shí)現(xiàn)原碼一位乘法的法則是:①乘積的符號(hào)為被乘數(shù)的符號(hào)位與乘數(shù)的符號(hào)位相異或;②乘積的絕對(duì)值為被乘數(shù)的絕對(duì)值與乘數(shù)的絕對(duì)值之積。即

[X]原×[Y]原=(X0⊕Y0)(|X|×|Y|)

4.2.1原碼一位乘法原理及實(shí)現(xiàn)手工乘法運(yùn)算例:若[X]原=0.1101,[Y]原=1.1011,求兩者之積。解:乘積的符號(hào)為0⊕1=1手算過程如下:

1101

×1011110111010000

1101.100011114.2.1原碼一位乘法原理及實(shí)現(xiàn)A,B,C,D都是寄存器二選一選擇器一位全加器移位寄存器計(jì)數(shù)器4.2.1原碼一位乘法原理及實(shí)現(xiàn)原碼一位乘法器框圖原碼一位乘法器功能模塊(1)控制器設(shè)計(jì)控制器功能:控制移位寄存器和16位寄存器。端口定義:PORT(CLK,START:INSTD_LOGIC;CLKOUT,RSTALL,DONE:OUTSTD_LOGIC);(1)控制器設(shè)計(jì)輸入端口CLK:乘法時(shí)鐘信號(hào)START:乘法器啟動(dòng)信號(hào)。信號(hào)的上跳沿及其高電平有兩個(gè)功能,即16位寄存器清零和被乘數(shù)A[7..0]向移位寄存器加載;低電平則作為乘法使能信號(hào)。輸出端口CLKOUT:時(shí)鐘控制端RSTALL:清零端口DONE:乘法完成標(biāo)志位(1)控制器設(shè)計(jì)計(jì)數(shù)器端口輸出控制信號(hào)(2)16位鎖存器設(shè)計(jì)16位鎖存器功能:存儲(chǔ)部分積及部分積移位端口定義

PORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(8DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));(2)16位鎖存器設(shè)計(jì)移位及鎖存功能(3)移位寄存器移位寄存器功能是右移一位操作。端口定義

PORT( CLK:INSTD_LOGIC; LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);(3)移位寄存器設(shè)計(jì)移位功能(4)1位乘法器設(shè)計(jì)1位乘法器功能:當(dāng)前數(shù)據(jù)位與另外一個(gè)操作數(shù)進(jìn)行與運(yùn)算。1位乘法運(yùn)算(5)加法器設(shè)計(jì)8位并行加法器設(shè)計(jì)(6)仿真結(jié)果4.2.2原碼二位乘法器設(shè)計(jì)原碼二位乘法

Yi+1YiC操作

000001010011100101110111

+0,右移2次,C=0+|X|,右移2次,C=0+|X|,右移2次,C=0+2|X|,右移2次,C=0+2|X|,右移2次,C=0

-|X|,右移2次,C=1

-|X|,右移2次,C=1+0,右移2次,C=1原碼二位乘法的法則表4.2.2原碼二位乘法器設(shè)計(jì)例:設(shè)X=+0.100111,

Y=-0.100111,利用原碼求積。

4.2.2原碼二位乘法器設(shè)計(jì)

Yi+1YiC操作

000001010011100101110111

+0,右移2次,C=0+|X|,右移2次,C=0+|X|,右移2次,C=0+2|X|,右移2次,C=0+2|X|,右移2次,C=0

-|X|,右移2次,C=1

-|X|,右移2次,C=1+0,右移2次,C=1Yi+1=Yi=C4.2.2原碼二位乘法器設(shè)計(jì)

Yi+1YiC操作

000001010011100101110111

+0,右移2次,C=0+|X|,右移2次,C=0+|X|,右移2次,C=0+2|X|,右移2次,C=0+2|X|,右移2次,C=0

-|X|,右移2次,C=1

-|X|,右移2次,C=1+0,右移2次,C=1Yi+1=0&&Yi⊕C=14.2.2原碼二位乘法器設(shè)計(jì)

Yi+1YiC操作

000001010011100101110111

+0,右移2次,C=0+|X|,右移2次,C=0+|X|,右移2次,C=0+2|X|,右移2次,C=0+2|X|,右移2次,C=0

-|X|,右移2次,C=1

-|X|,右移2次,C=1+0,右移2次,C=1Yi+1⊕Yi=1&&Yi=C4.2.2原碼二位乘法器設(shè)計(jì)

Yi+1YiC操作

000001010011100101110111

+0,右移2次,C=0+|X|,右移2次,C=0+|X|,右移2次,C=0+2|X|,右移2次,C=0+2|X|,右移2次,C=0

-|X|,右移2次,C=1

-|X|,右移2次,C=1+0,右移2次,C=1Yi+1=1&&Yi⊕C=14.2.2原碼二位乘法器設(shè)計(jì)4.2.3補(bǔ)碼一位乘法運(yùn)算布斯(Booth)法

假定被乘數(shù)X和乘數(shù)Y均為用補(bǔ)碼表示的純小數(shù),其中X0、Y0是它們的符號(hào)位:[X]補(bǔ)=X0.X-1X-2…X-(n-1)

[Y]補(bǔ)=Y(jié)0.Y-1Y-2…Y-(n-1)布斯法補(bǔ)碼一位乘法的算法公式為:[X·Y]補(bǔ)=[X]補(bǔ)[(Y-1-Y0)20+(Y-2-Y-1)2-1+(Y-3-Y-2)2-2+……+(Y-(n-1)-Y-(n-2))2-(n-2)+(0-Y-(n-1))2-(n-1)]4.2.3布斯補(bǔ)碼一位乘法運(yùn)算

YiYi-1

Yi-1-Yi操作

00

0+0,右移一次

01

1+[X]補(bǔ),右移一次

10-1+[-X]補(bǔ),右移一次

11

0+0,右移一次乘數(shù)的相鄰兩位的操作規(guī)律

4.2.3布斯補(bǔ)碼一位乘法運(yùn)算例:已知X=0.1010,Y=-0.1101。利用布斯法補(bǔ)碼一位乘法求積。解:首先將兩數(shù)用補(bǔ)碼表示:[X]補(bǔ)=00.1010,[Y]補(bǔ)=11.0011,而[-X]補(bǔ)=11.0110。4.2.3布斯補(bǔ)碼一位乘法運(yùn)算4.2.3布斯補(bǔ)碼一位乘法運(yùn)算A,B,C,D都是寄存器四選一選擇器加法器移位寄存器計(jì)數(shù)器符號(hào)位參與運(yùn)算4.2.3布斯補(bǔ)碼一位乘法運(yùn)算4.2.4陣列乘法器設(shè)計(jì)設(shè)X=X3X2X1X0,Y=Y(jié)3Y2Y1Y0,計(jì)算X·Y=?

(1)基本乘加單元二輸入與門一位全加器(2)定點(diǎn)無符號(hào)數(shù)陣列乘法器Y0Y0Y2Y3Y1Y2Y1Y3X3X2X1X00000Z6Z7Z5Z4Z2Z3Z0Z1(2)定點(diǎn)無符號(hào)數(shù)陣列乘法器TOP_ROWMID_ROWLOW_ROW(3)TOP_ROW功能實(shí)現(xiàn)(4)MID_ROW功能實(shí)現(xiàn)(5)LOW_ROW功能實(shí)現(xiàn)(6)陣列乘法器結(jié)構(gòu)描述實(shí)現(xiàn)4.3定點(diǎn)數(shù)除法運(yùn)算定點(diǎn)數(shù)除法分為原碼除法和補(bǔ)碼除法兩類。除法實(shí)現(xiàn)方法①雙操作數(shù)加法器將除法分為若干次“加減與移位”的循環(huán),由時(shí)序控制部分實(shí)現(xiàn);②采用迭代除法,將除法轉(zhuǎn)換為乘法處理,可以利用快速乘法器實(shí)現(xiàn)除法器;③陣列除法器,一次求得商與余數(shù),實(shí)現(xiàn)快速除法的基本途徑。4.3.1原碼除法運(yùn)算原碼除法的法則應(yīng)包括:①除數(shù)≠0;定點(diǎn)純小數(shù)時(shí),|被除數(shù)|<|除數(shù)|;定點(diǎn)純整數(shù)時(shí),|被除數(shù)|>|除數(shù)|。②與原碼乘法類似的是原碼除法商的符號(hào)和商的值也是分別處理的,商的符號(hào)等于被除數(shù)的符號(hào)與除數(shù)的符號(hào)相異或。③商的值等于被除數(shù)的絕對(duì)值除以除數(shù)的絕對(duì)值。④將商的符號(hào)與商的值拼接在一起就得到原碼除法的商。4.3.2定點(diǎn)除法器的原理及實(shí)現(xiàn)恢復(fù)余數(shù)法:先減后判,如果減后發(fā)現(xiàn)不夠減,則上商0,并加上除數(shù),即恢復(fù)到減操作之前的余數(shù)(第一步的余數(shù)即被除數(shù))。其缺點(diǎn)是即增加了一些不必要的操作,又使操作步數(shù)隨著不夠減情況發(fā)生的次數(shù)而變。4.3.2定點(diǎn)除法器的原理及實(shí)現(xiàn)不恢復(fù)余數(shù)除法(加減交替除法)先減后判,如果發(fā)現(xiàn)不夠減,則上商0,并將下一步的減除數(shù)操作改為加除數(shù)操作。這樣可使操作步數(shù)固定,只與所需商的位數(shù)有關(guān),而與是否夠減無關(guān),因此能減少運(yùn)算時(shí)間。4.3.3原碼加減交替除法器原碼加減交替除法器的運(yùn)算法則:1.除法運(yùn)算前,應(yīng)滿足條件:X*<Y*,且Y*≠0,否則,按溢出或非法除數(shù)處理;2.符號(hào)位不參與運(yùn)算,單獨(dú)處理:qf=xfyf;3.部分余數(shù)采用單符號(hào)位或雙符號(hào)位;4.每步部分余數(shù)運(yùn)算規(guī)則:

①若余數(shù)R≥0,則商上1,左移一次,減除數(shù);②若余數(shù)R<0,則商上0,左移一次,加除數(shù)。4.3.3原碼加減交替除法器例:若X=-0.10001011,Y=0.1110試?yán)迷a加減交替除法器求商及余數(shù)。解:寫出[X]原=1.10001011,[Y]原=0.1110。商符=1⊕0=1;4.3.3原碼加減交替除法器左移4.3.4補(bǔ)碼除法運(yùn)算①符號(hào)判斷。被除數(shù)和除數(shù)同號(hào),被除數(shù)減除數(shù);若異號(hào)則加除數(shù)。②余數(shù)與除數(shù)同號(hào),上商為1,余數(shù)左移1位,下次用余數(shù)減除數(shù)操作求商。若異號(hào),上商為0,余數(shù)左移1位,下次用余數(shù)加除數(shù)操作求商。③重復(fù)②直至除盡或達(dá)到精度要求。④商修正。在除不盡時(shí),最低位恒置1修正。4.3.4補(bǔ)碼除法運(yùn)算YNNY4.3.4補(bǔ)碼除法運(yùn)算例:若X=-0.10001011,Y=0.1110試?yán)醚a(bǔ)碼除法求商及余數(shù)。解:寫出[X]補(bǔ)=1.01110101,[Y]補(bǔ)=0.1110。[-Y]補(bǔ)=1.0010

〔商〕補(bǔ)﹦1.01101;余數(shù)為:〔余數(shù)〕補(bǔ)﹦1.0011×2-44.3.4補(bǔ)碼除法運(yùn)算補(bǔ)碼除法器框圖

4.3.4補(bǔ)碼除法設(shè)計(jì)端口定義port( oper_a,oper_b: instd_logic_vector(7downto0);--被除數(shù),除數(shù),最高位為符號(hào)位

done:outstd_logic;--完成除法操作標(biāo)志

clk,rst:instd_logic;--時(shí)鐘信號(hào)/復(fù)位信號(hào) Q,R: outstd_logic_vector(7downto0)--商Q最高位為符號(hào)位,余數(shù)R );4.3.4補(bǔ)碼除法設(shè)計(jì)復(fù)位賦初值判斷余數(shù)與除數(shù)符號(hào)是否相同運(yùn)算結(jié)束4.3.5陣列除法器00y1

x1y2

x2y3

x3

r3r4r5r6x4x5x6q110q2q3CASCASCASCAS異或門全加器PxiCiyiCi+1可控加減法器CASSi4.3.5陣列除法器(1)可控加/減法單元(CAS—ControllableAdderSubtracter)

當(dāng)P=0時(shí),做加法;當(dāng)P=1時(shí),做減法,變+Y*為+[-Y*]補(bǔ)。異或門全加器PxiCiyiCi+1Si4.3.5陣列除法器(2)陣列除法算法流程

設(shè)被除數(shù)X=0.x1x2x3x4x5x6

除數(shù)

Y=0.y1y2y3

Q=0.q1q2q3

余數(shù)

R=0.00r3r4r5r64.3.6陣列除法過程第一步:試減,即P=1,實(shí)現(xiàn)X

+[-Y]補(bǔ)。因?yàn)閄*<Y*,所以一定不夠減,則最高位進(jìn)位Ci+1=0,可利用此進(jìn)位輸出產(chǎn)生商和下一步的P。第二步:P=0,做X

+Y

。當(dāng)最高位進(jìn)位Ci+1

=1時(shí),表示夠減,則q1=1,P=1;當(dāng)最高位進(jìn)位Ci+1

=0時(shí),表示不夠減,則q1=0,P=0。第三步和第四步:P=0時(shí),做X

+Y;P=1時(shí),做X

+[-Y]補(bǔ)。上商和P值產(chǎn)生的規(guī)則與第二步相同。4.3.7陣列除法器設(shè)計(jì)根據(jù)原理說明采用VHDL進(jìn)行功能設(shè)計(jì)。參考陣列乘法器設(shè)計(jì)方法進(jìn)行設(shè)計(jì)。第五講存儲(chǔ)器設(shè)計(jì)5.1隨機(jī)存取存儲(chǔ)器(RAM)設(shè)計(jì)5.2只讀存儲(chǔ)器(ROM)設(shè)計(jì)5.3雙端口RAM設(shè)計(jì)5.4先進(jìn)先出(FIFO)設(shè)計(jì)5.5CRC校驗(yàn)電路設(shè)計(jì)存儲(chǔ)器分類雙端口存儲(chǔ)器先進(jìn)先出(FIFO)存儲(chǔ)器鐵電存儲(chǔ)器半導(dǎo)體存儲(chǔ)器RAMROM其他存儲(chǔ)器雙極型金屬氧化物(MOS)靜態(tài):SRAM動(dòng)態(tài):DRAM掩模工藝ROM可一次編程ROM:PROM可擦寫的PROMEPROM

E2PROME2PROMFlashSDRAMDDRSDRAMDDR2SDRAMDDR3SDRAM存儲(chǔ)器分類雙端口存儲(chǔ)器先進(jìn)先出(FIFO)存儲(chǔ)器鐵電存儲(chǔ)器半導(dǎo)體存儲(chǔ)器RAMROM其他存儲(chǔ)器雙極型金屬氧化物(MOS)靜態(tài):SRAM動(dòng)態(tài):DRAM掩模工藝ROM可一次編程ROM:PROM可擦寫的PROMEPROM

E2PROME2PROMFlash設(shè)計(jì)方法模塊功能與原理分析模塊結(jié)構(gòu)與電路模型VHDL語言設(shè)計(jì)實(shí)現(xiàn)FPGA驗(yàn)證5.1靜態(tài)隨機(jī)存儲(chǔ)器SRAM設(shè)計(jì)數(shù)據(jù)存儲(chǔ)功能地址控制功能寫入與讀出功能數(shù)據(jù)總線地址總線控制信號(hào)5.1.1RAM地址譯碼方式一維譯碼二維譯碼RAM芯片有n條地址線,表示2n個(gè)存儲(chǔ)單元。

104存儲(chǔ)容量8K×8bitA12~A0D0~D7CS1、CS2OEWE5.1.2SRAM6264芯片決定存儲(chǔ)單元的容量,一般1K~256M→地址總線數(shù):10~28決定存儲(chǔ)單元的寬度(位數(shù),bit)片選→地址譯碼輸出允許(讀)寫允許105(1)SRAM讀出時(shí)序加載地址信號(hào)加載片選信號(hào)OE低電平有效,WE為高電平106(2)SRAM寫入時(shí)序加載地址信號(hào)數(shù)據(jù)加載到總線,WE為低電平片選信號(hào)有效(3)SRAM的VHDL程序?qū)崿F(xiàn)端口定義

PORT(address:INSTD_LOGIC_VECTOR(3DOWNTO0); cs,oe,we:INSTD_LOGIC; data:INOUTSTD_LOGIC_VECTOR(7DOWNTO0));(4)SRAM的VHDL程序?qū)崿F(xiàn)寫入數(shù)據(jù)讀出數(shù)據(jù)總線三態(tài)5.1.3RAM容量擴(kuò)展存儲(chǔ)器與CPU連接——位擴(kuò)展法

5.1.4隨機(jī)讀寫存儲(chǔ)器RAM存儲(chǔ)器與CPU連接——字?jǐn)U展法

5.2只讀存儲(chǔ)器ROM的設(shè)計(jì)只讀存儲(chǔ)器(ROM)的內(nèi)容是初始設(shè)計(jì)電路時(shí)就寫入到內(nèi)部的,通常用于存儲(chǔ)固件。ROM主要用于計(jì)算機(jī)基本輸入輸出系統(tǒng)(BIOS)的存儲(chǔ)和用作嵌入式系統(tǒng)中的程序存儲(chǔ)器。ROM只需設(shè)置數(shù)據(jù)輸出端口和地址輸入端口。

5.2.1只讀存儲(chǔ)器ROM的電路結(jié)構(gòu)存儲(chǔ)矩陣地址譯碼器輸出緩沖器5.2.2簡(jiǎn)單ROM的設(shè)計(jì)設(shè)計(jì)思想:采用二進(jìn)制譯碼器的設(shè)計(jì)方式,將每個(gè)輸入組態(tài)對(duì)應(yīng)的輸出與一組存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)起來。

5.2.3通用ROM的VHDL設(shè)計(jì)設(shè)計(jì)一個(gè)容量為256*8bit的ROM8位地址線Addr[7..0]8位數(shù)據(jù)輸出線Dout[7…0]使能信號(hào)線OE5.2.3通用ROM的VHDL設(shè)計(jì)VHDL數(shù)據(jù)對(duì)象--文件類型應(yīng)用端口定義5.2.4通用ROM的VHDL設(shè)計(jì)結(jié)構(gòu)體實(shí)現(xiàn)5.2.5通用ROM驗(yàn)證5.3雙端口RAM雙端口RAM是在1個(gè)SRAM存儲(chǔ)器上具有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫控制線,并允許兩個(gè)獨(dú)立的系統(tǒng)同時(shí)對(duì)其進(jìn)行隨機(jī)性訪問的存儲(chǔ)器(共享式多端口存儲(chǔ)器)。雙口RAM最大的特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享,并且必須具有訪問仲裁控制。5.3雙端口RAM通用集成電路組成的雙端口若兩個(gè)CPU在同一時(shí)間段訪問RAM發(fā)生競(jìng)爭(zhēng),則由仲裁電路迫使后訪問的CPU處于等待狀態(tài)。特點(diǎn):成本低、簡(jiǎn)單且存儲(chǔ)容量大。缺點(diǎn):發(fā)生競(jìng)爭(zhēng),一個(gè)CPU必須等待,降低了訪問效率。5.3雙端口RAM專用雙端口RAM芯片,如IDT7132/7142、DS1609、CY7C08D53、CY7C024等。芯片有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫控制線,可使兩個(gè)CPU分時(shí)獨(dú)立訪問其內(nèi)部RAM資源。優(yōu)點(diǎn)是通訊速度快,實(shí)時(shí)性強(qiáng),接口比較簡(jiǎn)單,兩邊CPU都可主動(dòng)進(jìn)行數(shù)據(jù)傳輸。缺點(diǎn)是成本高,需要克服競(jìng)爭(zhēng)現(xiàn)象。5.3雙端口RAM雙端口RAM內(nèi)有一個(gè)總線搶占優(yōu)先級(jí)比較器5.3.1兩種方案應(yīng)用場(chǎng)合在要求存儲(chǔ)量較大時(shí),一般采用通用集成電路組成的雙端口RAM;在通信實(shí)時(shí)性要求較高的而通信數(shù)據(jù)量不大時(shí),一般采用專用雙端口RAM芯片。

5.3.2雙端口RAM設(shè)計(jì)端口定義5.3.2雙端口RAM設(shè)計(jì)結(jié)構(gòu)體設(shè)計(jì)RAM數(shù)據(jù)類型定義端口A對(duì)RAM操作端口B對(duì)RAM操作5.4先進(jìn)先出(FIFO)設(shè)計(jì)要求:存入數(shù)據(jù)按順序排放,存儲(chǔ)器全滿時(shí)給出信號(hào)并拒絕繼續(xù)存入,全空時(shí)也給出信號(hào)并拒絕讀出;讀出時(shí)按先進(jìn)先出原則;存儲(chǔ)數(shù)據(jù)一旦讀出就從存儲(chǔ)器中消失。

5.4先進(jìn)先出(FIFO)設(shè)計(jì)先進(jìn)先出(FirstInFirstOut,F(xiàn)IFO)與普通存儲(chǔ)器的區(qū)別是沒有外部讀寫地址線,其數(shù)據(jù)地址由內(nèi)部讀寫指針自動(dòng)加減1完成。FIFO通常利用雙口RAM和讀寫地址產(chǎn)生模塊來實(shí)現(xiàn)其功能。

5.4先進(jìn)先出(FIFO)設(shè)計(jì)先進(jìn)先出(FirstInFirstOut,F(xiàn)IFO)與普通存儲(chǔ)器的區(qū)別是沒有外部讀寫地址線,其數(shù)據(jù)地址由內(nèi)部讀寫指針自動(dòng)加減1完成。FIFO通常利用雙口RAM和讀寫地址產(chǎn)生模塊來實(shí)現(xiàn)其功能。

滿標(biāo)志空標(biāo)志

5.4.1FIFO類型同步控制的FIFO

FIFO的讀寫時(shí)鐘相同。異步控制的FIFO用于跨時(shí)鐘域的數(shù)據(jù)交換;FIFO的讀寫時(shí)鐘不同;讀寫時(shí)鐘之間不一定存在相位、周期方面的約束關(guān)系。同步FIFO設(shè)計(jì)5.4.2同步FIFO設(shè)計(jì)FIFO為空,不可從FIFO讀數(shù)據(jù),但可寫;FIFO為滿,不可向FIFO寫數(shù)據(jù),但可讀;非空非滿時(shí),F(xiàn)IFO可讀、可寫。FIFO的讀寫受同一時(shí)鐘控制;FIFO的大小為N。5.4.2同步FIFO設(shè)計(jì)問題:如何判斷FIFO為空、滿?FIFO的讀寫操作的位置如何判定?5.4.2同步FIFO設(shè)計(jì)5.4.2同步FIFO設(shè)計(jì)當(dāng)wr_ptr=rd_ptr時(shí),F(xiàn)IFO數(shù)據(jù)為空;當(dāng)wr_ptr-rd_ptr=M-l或rd_ptr-wr_ptr=l時(shí),F(xiàn)IFO數(shù)據(jù)為滿;當(dāng)wr_ptr>=rd_ptr時(shí),wr_ptr-rd_ptr為FIFO內(nèi)數(shù)據(jù)個(gè)數(shù);當(dāng)wr_ptr<=rd_ptr時(shí),M-(rd_ptr-wr_ptr)為FIFO內(nèi)數(shù)據(jù)個(gè)數(shù)。5.4.3同步FIFO的VHDL實(shí)現(xiàn)(1)雙端口RAM端口定義5.4.3同步FIFO的VHDL實(shí)現(xiàn)(1)雙端口RAM結(jié)構(gòu)體實(shí)現(xiàn)5.4.3同步FIFO的VHDL實(shí)現(xiàn)(2)寫地址計(jì)數(shù)器5.4.3同步FIFO的VHDL實(shí)現(xiàn)5.4.3同步FIFO的VHDL實(shí)現(xiàn)(4)空滿狀態(tài)產(chǎn)生器端口定義5.4.3同步FIFO的VHDL實(shí)現(xiàn)(4)空滿狀態(tài)產(chǎn)生器結(jié)構(gòu)體實(shí)現(xiàn)5.4.4異步FIFO設(shè)計(jì)讀寫時(shí)鐘信號(hào)不相同通過地址編碼方式解決讀寫地址變化不同步而引起的空滿標(biāo)志錯(cuò)誤的問題。5.4.6存儲(chǔ)器設(shè)計(jì)總結(jié)存儲(chǔ)單元數(shù)據(jù)結(jié)構(gòu)整數(shù)數(shù)組TYPEmemoryISARRAY(INTEGERRANEG<>)OFINTEGER;位矢量SUBTYPEwordISSTD_LOGIC_VECTOR(k-1DOWNTO0);TYPEmemoryISARRAY(0TO2**w-1)OFword;5.4.6存儲(chǔ)器設(shè)計(jì)總結(jié)存儲(chǔ)單元初始化(外部文件讀取)自定義數(shù)據(jù)格式文件.COE文件

(1)自定義數(shù)據(jù)格式文件VHDL文本輸入輸出包集合(TEXTIO)VHDL語言對(duì)文件格式不作任何限制。TEXTIO按行進(jìn)行處理,一行為一個(gè)字符串,以回車、換行符作為行結(jié)束符。(2).COE文件MEMORY_INITIALIZATION_RADIX=2;MEMORY_INITIALIZATION_VECTOR=

01110100,

00100000,

11110101,

10000000,

01111000,

00100010,

00000001,

00010100,

數(shù)據(jù)格式,當(dāng)前設(shè)定為2進(jìn)制,還可以為8,10,16進(jìn)制(3)XilinxFPGA內(nèi)部IP核設(shè)計(jì)FPGA具有內(nèi)嵌的BLOCKRAM(BRAM)來擴(kuò)展其應(yīng)用范圍和系統(tǒng)集成能力(SOC)。BRAM可用于配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲(chǔ)器(CAM)以及FIFO等常用存儲(chǔ)結(jié)構(gòu)。BRAM內(nèi)部每個(gè)單位即單片塊RAM大小為18Kbit(即位寬為18bit深度為1024,Spartan-3EFPGA)。(4)FPGA內(nèi)部IP核設(shè)計(jì)(4)FPGA內(nèi)部IP核設(shè)計(jì)5.5CRC校驗(yàn)電路設(shè)計(jì)CRC原理分析CRC電路設(shè)計(jì)數(shù)據(jù)通信差錯(cuò)檢測(cè)在數(shù)字通信系統(tǒng)中可靠與快速往往是矛盾的。如何合理地解決可靠與速度這一對(duì)矛盾呢?

可靠性快速性可靠性快速性數(shù)據(jù)檢測(cè)技術(shù)奇偶校驗(yàn)和校驗(yàn)循環(huán)冗余碼校驗(yàn)CRC奇偶校驗(yàn)只需要1位校驗(yàn)碼,對(duì)消息位進(jìn)行異或運(yùn)算。和校驗(yàn)把消息當(dāng)成若干個(gè)8位(或16、32位)的整數(shù)序列,相加得到校驗(yàn)碼。5.5.1CRC原理將待發(fā)送的位串看成系數(shù)為0或1的多項(xiàng)式;收發(fā)雙方約定一個(gè)生成多項(xiàng)式G(x)(其最高階和最低階系數(shù)必須為1)。發(fā)送方用位串及G(x)進(jìn)行某種運(yùn)算得到校驗(yàn)和,并在幀的末尾加上校驗(yàn)和,使帶校驗(yàn)和的幀的多項(xiàng)式能被G(x)整除。接收方收到后,用G(x)除多項(xiàng)式,若有余數(shù),則傳輸有錯(cuò)。(1)CRC校驗(yàn)和計(jì)算方法1.若生成多項(xiàng)式G(x)為r階(即r+1位位串),原幀為m位,其多項(xiàng)式為M(x),則

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論