APP下载

基于FPGA的双符号数128位宽位乘法运算器件的设计

2015-05-04朱伟

科技创新与应用 2015年13期

摘 要:文章提出了一种由128位双符号数全加器构成的以时序逻辑移位方式设计的双符号数128位宽位乘法器,此乘法器比与逻辑阵列和加全加器构成的乘法阵列占用宏单元硬件资源少,结构简单,由于使用基于VHDL语言模块化设计和现场可编程门阵列FPGA的电子实现,有利于器件性能的升级与位数扩充,所以本设计具有经济性和实用性两大特性。

关键词:FPGA;宽位乘法器;运算器件

引言

双符号数宽位乘法运算器使用EDA平台软件QuartusⅡ在计算机上制作了基于现场可编程门阵列FPGA的双符号数128位宽位乘法运算器,以组合逻辑电路的观点分析,肯定是使用与逻辑阵列和全加器构成的乘法阵列构成的乘法器工作速度最快,但由于占用FPGA宏单元硬件资源多,难以实现高于128双符号数宽位乘法器。由128位双符号数全加器构成的以时序逻辑移位方式设计的双符号数128位乘法器,占用硬件宏单元资源比较少,运算速度能够满足实际使用要求,具有经济性和实用性两大特性。为了实现128位乘法,通过双符号数全加器先计算一位的位积,然后逐位移位相加,实现了被乘数128位X与乘数128位Y的双符号数宽位乘法。最后乘积是256位包括双符号为两位。

1 宽位乘法运算器各个模块的 VHDL源程序设计

1.1 128位数据信息选通逻辑门器件模块的源程序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位乘法运算逻辑控制器的源程序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位乘法器运算逻辑器件的源程序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 DOUTINTCLK, RSTALL=>RST"ALL, CVARIEN

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 结束语

文章探讨了基于FPGA的128位宽位乘法运算器件的设计, 此乘法器的优点是节省芯片宏单元资源,它的核心运算元件是一个128位全加器构成的加法器,运算器运算速度取决于输入系统的时钟主频。如果系统时钟主频为400MHz,则乘法运算器每一次乘法运算周期仅需20ns。双符号数128位宽位乘法运算器件运行速度比较高,乘法运行状况稳定。因此,可以利用此乘法器及其组成原理构成更高位如256位和512位的乘法器,能够十分可靠地完成一些大规模宽位数字信号处理方面的双符号数运算任务。

参考文献

[1]陈云恰,保延翔.CPLD应用技术与数字系统统计[M].电子工业出版社,2006.

[2]姜雪松,吴钰淳.VHDL设计实例与仿真[M].机械工业出版社,2007.

[3]罗朝霞,高书莉.CPLD/FPGA设计及应用[M].北京:人民邮电出版社,2007.

作者简介:朱伟(1959-),男,副教授,工作于江汉大学数学与计算机科学学院,主要从事计算机体系结构和智能仪器的设计。