摘 要:文章首次提出了一種由FPGA構成的256位定點算術邏輯ALU,此ALU器件運行速度快結構簡單,而且占用硬件資源少,此ALU器件基于現場可編程門陣列來構成,使用VHDL語言模塊化的設計實現,可以將器件設計為獨立的IP核,能夠嵌入到各種寬位CPU中完成高性能計算機內核的設計。
關鍵詞:FPGA;CPU;運算器件
1 概述
本器件由五大部分構成:(1)乘法器陣列(2)除法器陣列(3)加減法和邏輯運算綜合單元(4)桶型移位寄存器(5)數據通道選擇器。乘法器陣列和除法器陣列可以進行256位的乘法除法;加減法和邏輯綜合單元可以實現定點數的補碼加減法和多種邏輯運算;桶型移位寄存器可以快速實現邏輯左移、右移、算術左移右移以及循環左移右移;數據通道選擇器用于選通輸入數據通往各運算單元的流向。此外還設置有8個256位的通用數據寄存器,用于存放運算的中間結果和最終結果。
2 本器件各個部分的主要 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)加減法和邏輯運算綜合單元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)數據通道選擇器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 結束語
本設計研究開發了由FPGA構成的256位定點算術邏輯ALU, 此運算器的基本特點是花費FPGA芯片內部的資源少,核心元件是由五個模塊構成的一個256位的運算器,運算速度快。在輸入系統的時鐘頻率為500MHz,運算器每一次運算僅需12ns。并且運行狀況穩定。能夠可靠地進行任何數字信號的運算任務。作為獨立的IP核,還能夠嵌入到各種寬位CPU中完成高性能計算機內核的設計。
參考文獻
[1]陳云恰,保延翔.CPLD應用技術與數字系統統計[M].電子工業出版社,2006.
[2]姜雪松,吳鈺淳.VHDL設計實例與仿真[M].機械工業出版社,2007.
[3]羅朝霞,高書莉.CPLD/FPGA設計及應用[M].北京:人民郵電出版社,2007.