摘 要:文章首次提出了一種由FPGA構(gòu)成的256位定點(diǎn)算術(shù)邏輯ALU,此ALU器件運(yùn)行速度快結(jié)構(gòu)簡(jiǎn)單,而且占用硬件資源少,此ALU器件基于現(xiàn)場(chǎng)可編程門(mén)陣列來(lái)構(gòu)成,使用VHDL語(yǔ)言模塊化的設(shè)計(jì)實(shí)現(xiàn),可以將器件設(shè)計(jì)為獨(dú)立的IP核,能夠嵌入到各種寬位CPU中完成高性能計(jì)算機(jī)內(nèi)核的設(shè)計(jì)。
關(guān)鍵詞:FPGA;CPU;運(yùn)算器件
1 概述
本器件由五大部分構(gòu)成:(1)乘法器陣列(2)除法器陣列(3)加減法和邏輯運(yùn)算綜合單元(4)桶型移位寄存器(5)數(shù)據(jù)通道選擇器。乘法器陣列和除法器陣列可以進(jìn)行256位的乘法除法;加減法和邏輯綜合單元可以實(shí)現(xiàn)定點(diǎn)數(shù)的補(bǔ)碼加減法和多種邏輯運(yùn)算;桶型移位寄存器可以快速實(shí)現(xiàn)邏輯左移、右移、算術(shù)左移右移以及循環(huán)左移右移;數(shù)據(jù)通道選擇器用于選通輸入數(shù)據(jù)通往各運(yùn)算單元的流向。此外還設(shè)置有8個(gè)256位的通用數(shù)據(jù)寄存器,用于存放運(yùn)算的中間結(jié)果和最終結(jié)果。
2 本器件各個(gè)部分的主要 VHDL源程序
(1)乘法器陣列的源程序CFQZL.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY CFQZL IS PORT (ABIN:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR (255 DOWNTO 0) COMPONENT ARICTL DOUT:OUT STD_LOGIC_VECTOR (255 DOWNTO 0)); END; CFQZL ARCHITECTURE ART OF ANDARITH OUT COMPONENT ANDARITH IS BEGIN USE IEEE.STD_LOGIC_1164.ALL;ENTITY MULTI128X8 IS PORT(CLK:IN U4:ADDER 2558B LIBRARY IEEE USE IEEE.STD_L :STD_LOGIC_VECTOR(2 DOWNTO EGIN PROCESS(CLK)ARIABLE AA:INTEGER RANGE 0 TO 1; BEGINIF CLK'EVENT AND CLK='1'THENAA:=AA+1; END C; DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); ND MULTULTI128X8 ISPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC ARI ARIEND=>ARIEND); U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD) =>ANDSD, S=>DTBIN(7 DOWNTO 0),COUT =>DTBIN(8)); U5:REG16B PORT MAP(CLK =>INTCLKTBIN, Q=>DTBOUT);PROCESS (ABIN,DIN) BEGIN FOR I IN)ABIN; END LOOP; END PROCE END
(2)除法器陣列的源程序cufazl.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY cufazlB IS PORT (CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR (256 DOWNTO 0) Q:OUT STD_LOGIC_VECTOR(256 DOWNTO 0));ND MULTULTI128X8 ISPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC AND CLK = '1'0)BEGINTMP:=D1D2D3STD_LOGI
C)ENDCOMPONENCASE \" 0011\"WHEN RC;PORTMAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8)STD_LOGIC; START:IN STD_LOGIC; A:IN STD_LOGIC_V END SEL_ARC;OUT ECTOR(7 DOWNTO 0); B:IN STD_LOGIC_:SREG8B PORI128X8; ANTCL
K, LOAD=> RSTALL:OUT STD_LOGIC RSTALL. DIN=>B, QB=>QB);ARIEND:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.AL ENTITY SEL IS PORT(CLK:IN STD_LOGIC;a:OUT INTEGER BEGIN IF CLR = '1'NTO 0)<=R16S(7 DOWNTO 1); R16S(15ARIENDPORT(ABININSTD_LOGICDINNSTD_LOGIC_VECTOR(255DOWNTO0)DOUOUT_STD_LOGIC_VECTOR END REG128B;ARCHITECTURE ART OF REG16B ISIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0); ELSIF CLK'EVENT DOWNTO 7)<=D; END IFEND PROCESS Q<=R16S; END
(3)加減法和邏輯運(yùn)算綜合單元jahlj.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY jfhljISPORT (CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC BINUT:OUT STD_LOGIC ARIEND:IN EN REG8<=DIN; ELSE REG8(6 DOWNTO0)<=REG8( STD_LOGIC_VECTOR(7DOWNTO 0); QB:OUT STD_LOGIC ); END SREG8B; ARCHITECTURE ART OFND MULTULT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOPORT(ABIN:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(255 DOWNTO0)D END IF END IF; EN OUOUT_STD_LOG SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(255 DOWNTO 0); BEGINPROCESS (CLK,LOAD) BEGIN IF CLK'EVENT AND CLK= '1' THENIF LOAD = '1' TH7 DOWNTO 1); D PROCESS; QB<= REG8 (0); END
(4)桶型移位寄存器txywjcq.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UN
SIGNED.ALL; ENTITY txywjcqIS PORT ( CLK:IN STD_LOGIC; START:IN STD_LOGIC;164.ALL; ENTITY CH41A ISPORT(D1,D2,D3:IN STD_LOGI VECOUT STD_LOGIC_VECTOR(3 DOWNTO 0)) EARC OF CH41A ISPROCESS(D1,D1' THEN CNT4B<= \"0000\"; ELSIF CLK'EVENT A 2,D3)VARIABLE TMP:STD_ D2D3 STD_LO CLKOUT:OUT STD_LOGIC; RSTALL:OUT STD_LOGIC; ARIEND:OUT STD_LOGIC ); END NGFS128L; ARCE ART OF ARIL CNT4B:STD_LOGIC_VECTO IF CNT4B<8 THEN CLKOUT N<=CLK; R(3 DOWNTO 0); ART; PROCESS (CLK,START) BEGIN IF START = 'ND CLK = '1' THEN IF CNT4B<8 THENCNT4B=CNT4B+1; END IF; END IF; END PROCESS; PROCESS (CLK,CNT4B,START) BEGINIF START = '0' THENARIEND<= '0'; ELSE CLKOUT <= '0'; ARIEND<= '1'; END ID<= '0'; END IF; END PROCESS; END
(5)數(shù)據(jù)通道選擇器sjtdxzq.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sjtdxzqIS PORT ( CLK:IN STD_LOGIC; START:IN STD_LOGIC; EH41A ISPORT(D1,D2,D3:IN STD_LOGI VECTOR STD_LOGI VECTOR(256 DOWNTO 0);U2CQ:OUT STD_LOGIC_VECT IF; END IF; END PROCESS; PROCESS (CLK,CNT4B,START OR(256 DOWNTO 0)) EARC OF CH41A ISPROCESS(D1,D1' THEN (256 DOWNTO 0);U2CQ:OU STD_LOGIC_VECTO IF CNT4B<8 THEN CLKOUT N<=CLK; R(255 DOWNTO 0); BEGIN RS D CH41A ARCHITECTURE CH41_TALL<=START; PROCESS (CLK,START) BEGIN IF START = 'ND CLK = '1' THEN IF CNT4B<8T4B=CNT4B+1; END) BEGINIF START = '0' THENARIEND<= '0'; ELSE CLKOUT <= '0'; '; END IF; ARIEND ELSE CLKOUT <=CLK;<= '0' END PROCESS; END;
3 結(jié)束語(yǔ)
本設(shè)計(jì)研究開(kāi)發(fā)了由FPGA構(gòu)成的256位定點(diǎn)算術(shù)邏輯ALU, 此運(yùn)算器的基本特點(diǎn)是花費(fèi)FPGA芯片內(nèi)部的資源少,核心元件是由五個(gè)模塊構(gòu)成的一個(gè)256位的運(yùn)算器,運(yùn)算速度快。在輸入系統(tǒng)的時(shí)鐘頻率為500MHz,運(yùn)算器每一次運(yùn)算僅需12ns。并且運(yùn)行狀況穩(wěn)定。能夠可靠地進(jìn)行任何數(shù)字信號(hào)的運(yùn)算任務(wù)。作為獨(dú)立的IP核,還能夠嵌入到各種寬位CPU中完成高性能計(jì)算機(jī)內(nèi)核的設(shè)計(jì)。
參考文獻(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]羅朝霞,高書(shū)莉.CPLD/FPGA設(shè)計(jì)及應(yīng)用[M].北京:人民郵電出版社,2007.