摘 要:文章提出了一種由128位雙符號(hào)數(shù)全加器構(gòu)成的以時(shí)序邏輯移位方式設(shè)計(jì)的雙符號(hào)數(shù)128位寬位乘法器,此乘法器比與邏輯陣列和加全加器構(gòu)成的乘法陣列占用宏單元硬件資源少,結(jié)構(gòu)簡單,由于使用基于VHDL語言模塊化設(shè)計(jì)和現(xiàn)場可編程門陣列FPGA的電子實(shí)現(xiàn),有利于器件性能的升級(jí)與位數(shù)擴(kuò)充,所以本設(shè)計(jì)具有經(jīng)濟(jì)性和實(shí)用性兩大特性。
關(guān)鍵詞:FPGA;寬位乘法器;運(yùn)算器件
引言
雙符號(hào)數(shù)寬位乘法運(yùn)算器使用EDA平臺(tái)軟件QuartusⅡ在計(jì)算機(jī)上制作了基于現(xiàn)場可編程門陣列FPGA的雙符號(hào)數(shù)128位寬位乘法運(yùn)算器,以組合邏輯電路的觀點(diǎn)分析,肯定是使用與邏輯陣列和全加器構(gòu)成的乘法陣列構(gòu)成的乘法器工作速度最快,但由于占用FPGA宏單元硬件資源多,難以實(shí)現(xiàn)高于128雙符號(hào)數(shù)寬位乘法器。由128位雙符號(hào)數(shù)全加器構(gòu)成的以時(shí)序邏輯移位方式設(shè)計(jì)的雙符號(hào)數(shù)128位乘法器,占用硬件宏單元資源比較少,運(yùn)算速度能夠滿足實(shí)際使用要求,具有經(jīng)濟(jì)性和實(shí)用性兩大特性。為了實(shí)現(xiàn)128位乘法,通過雙符號(hào)數(shù)全加器先計(jì)算一位的位積,然后逐位移位相加,實(shí)現(xiàn)了被乘數(shù)128位X與乘數(shù)128位Y的雙符號(hào)數(shù)寬位乘法。最后乘積是256位包括雙符號(hào)為兩位。
1 寬位乘法運(yùn)算器各個(gè)模塊的 VHDL源程序設(shè)計(jì)
1.1 128位數(shù)據(jù)信息選通邏輯門器件模塊的源程序XTXXYDFM.VHD
LIBRARY IEEE;
USE IEEE.STD,_LOGIC,1164.ALL; ENTITY',XT XXYDFM, IS PORT,'·(ABIN:IN STD_LOGIC; DIN:IN STD·_LOGIC_XVECTOR (127 DOWNTO 0), TDOUT:·ZXOUT STD_·XTLOGIC_VECTOR (7 DOWNTO 0)); END; XXYDFM·' XTARCHI'TECTURE ·ART OF' XTANDARITH IS BEGIN"XTPROCESS(ABIN,DIN)' XTBEGIN 'FOR I IN 0 TO 127 LOOP X"TDOUT '(I)<=DIN (I)AND XTABIN;' END LOOP;END XTPRZXOCESS';END CVART;"
1.2 128位雙向鎖存邏輯器件的源程序SXREG128B.VHD
LIBRARY IEEE;
USE' IEEE.STD_LOGIC'_1164.ALL;ENTITY' SXXREG128B IS' 'PORT(CLK:INZC STD_LOGIC;CLR:'N STD_LOGI'C;D:IN ST'D'_LO
GIC_VECTZXOR(127 DOWNTO 0) Q:OUT STD_LOGIC'_VEC'TOR(1127 DOWNTO 0));END' REG128B;SXARCHZZ'XCITECTURE AR
T OF REG1286B 'ISIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);'XSBEGINPROCESS (CLK,CLR)BEGINIFCLRTHENR1286S<=
"000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000";'ELSIF CLK'EVENT AND CLK = '1' THEN 'ZCSXR1127S(127 DOWNTO 0)<=R1276S(127 'DOWNTO 1);R16S(15 DOWNTO 7)<=D;' END IFEND 'PROCESS Q<=R16S;' END CVART;
1.3 128位單向右移移位邏輯寄存器器件的源程序YYSREG8B.VHD
LIBRARY IEEE;
USE IEEE.STD'_LOGIC_1164.ALL; ENTITCVY YYSRXEG8B 'ISPORT (CLK:IN ST'D_LOGIC;' LO'AD :IN STD' _LOGIC B'IN:IN STD_'LOGIC_VEZXCTOR(7DOWNTO 0);QB:ZXOU'T STD_L'OGIC);END' YYSREXG8B; 'ARCHITE'CTUZZXCREYY AR'T OF SREG8'B IS YYSIGNAL YYREG128B:STD_LOGIC_VE'CTOR(127 DOWNTO 0);' 'YYBE'GIZCNPROCESS (CLK,LOAD) 'BEG'IN IF CLK'EVENT AND CLK='1' THENIF LXOAD='1' THEN RE"G1278<=DIN;' ELSE' XREG8(127 DOWNTO0)YY 1.4 128位乘法運(yùn)算邏輯控制器的源程序KZCFNGFS128L.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTICVTY CFNGFS128L IS CZ PCORT(CLK:IN' STD_LOGIC;CZSTART:IN CSTD_LOGIC;"ZCCLKOUT:OUT STD_LO GIC;RSTALL:OUTZC STCD_LOGIC;CARZCXIEND:OUT STCD_LOG
IC);END ZC NG'FZCS128L;CFARCH'ICVTECTURE ART O'F CFAR
ICTL IZCSZC" 'XSIGNAL CNT4BCZ:STD_LOGIC_VECTOR(64 DOW
NTO 0);" BEGIN RSTALL<=START;PROCESS (CZCLK,START)BEGIN IF START='1' 'THEN CNT4B<="00000000000'000000000000";ELSIFZX CLK'EVEZCNT AND ZCCLCVK='1' TZCHEN IF CN"T4B127<1278 ZCTHEZCNCNT4B=CN'T4B+1;"ECND IF;END IF;EN'D PRO'CESS;PROZCCESS(CLK,CNT4B,START)' BEGCIZCNIF START='0' THENIF CNT564B127<8 T'HEN CLKOUT<=CLK; ARIZCEND<='0'; ELSE ZCCLKOUT<='0'; ARIEND<='1';' CVEND IF; ELSE CLKOUT<=CLK;' CZARIEND<='0';END IF;END PROCESS;END CVART;
1.5 128位乘法器運(yùn)算邏輯器件的源程序CVTI128X8.VHD
LIBRARY IEEE;
'USE IEEE.STD_LOGIC_1164.ALL;"ENTCVITY CVTI128X8 IS "CVPORT(CLK:IN STD_LOGIC;START":IN STD_LOGIC;A:I'N STD_LOGIC'_VVECTOR(127 DOWNTO 0);B:CVICVN STD_LOGIC_VECTOR(127 DOWNTO 0);CVARIEND:OUT STD_LOGIC; DOUT:OUT STD_LOGIC_VECTOR(127 DOWNTO 0);END CVTI128X8;'VC ARCHITECTURE ART OFCVTI128X8 IS COMPONCENT CVARICTL POR"T(CLK:IN CVSTDVCV_LOGIC;START:IN STD'_LOGIC; CVCLKOUT:OUT STD_LOGIC;RSTALLCV:OUT 'STDCV_LOGICCVCVACVRIEND:'OUT STD_LOGIC); END COMPONENT;COMPOCVNEN'T ANDARITHPORT(ABIN:IN STD'_LCVO
GIC;DINCV:IN STD_LOGIC_VECTOR(CV127 DOWNTO 0);DOUT':OUT_STD_LOGIC_VECTOR(127DOWNTO 0); END COMPONENT;CVCOMP'OCVNENT CVADDCVER128B DOUT
D'=>ARIEND);U2:CVSREG8B PORT MAP(CLK=>INTCLK,LOAD=CV>CVRSTALL.DINCV=>B,QCVB=>QB);U3:ANDCVARITH PORT MAPCV(ABIN=>QB,CVDIN=>A,DOUT'=>ANDSD);U4CVADDE''R128
B PORT MAP(CIN=>GNDINT,A=>DTBOUT(128DOWNTO68) CVB=>CVNDSD,S=>DTVCBIN(127 DOWNTO 0),CVCOUT =>DTBIN(68); U5:CVREG126B CVPORT MAPCV(CLK =CV>VCINTCLK,CLR='>CVRSTALL,=CV>DTBIN, Q=>VCDTBOUT);END XXCART;
2 結(jié)束語
文章探討了基于FPGA的128位寬位乘法運(yùn)算器件的設(shè)計(jì), 此乘法器的優(yōu)點(diǎn)是節(jié)省芯片宏單元資源,它的核心運(yùn)算元件是一個(gè)128位全加器構(gòu)成的加法器,運(yùn)算器運(yùn)算速度取決于輸入系統(tǒng)的時(shí)鐘主頻。如果系統(tǒng)時(shí)鐘主頻為400MHz,則乘法運(yùn)算器每一次乘法運(yùn)算周期僅需20ns。雙符號(hào)數(shù)128位寬位乘法運(yùn)算器件運(yùn)行速度比較高,乘法運(yùn)行狀況穩(wěn)定。因此,可以利用此乘法器及其組成原理構(gòu)成更高位如256位和512位的乘法器,能夠十分可靠地完成一些大規(guī)模寬位數(shù)字信號(hào)處理方面的雙符號(hào)數(shù)運(yùn)算任務(wù)。
參考文獻(xiàn)
[1]陳云恰,保延翔.CPLD應(yīng)用技術(shù)與數(shù)字系統(tǒng)統(tǒng)計(jì)[M].電子工業(yè)出版社,2006.
[2]姜雪松,吳鈺淳.VHDL設(shè)計(jì)實(shí)例與仿真[M].機(jī)械工業(yè)出版社,2007.
[3]羅朝霞,高書莉.CPLD/FPGA設(shè)計(jì)及應(yīng)用[M].北京:人民郵電出版社,2007.
作者簡介:朱偉(1959-),男,副教授,工作于江漢大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,主要從事計(jì)算機(jī)體系結(jié)構(gòu)和智能儀器的設(shè)計(jì)。