摘 要: 為了加快陣列乘法器的運(yùn)算速度,降低延遲,提出了一種基于4選1多路選擇器的乘法器設(shè)計(jì)方案。這種方案在每一步運(yùn)算中同時(shí)處理兩位操作數(shù),使產(chǎn)生的部分積數(shù)量減少了一半,顯著提高了乘法器的運(yùn)算速度。FSATA乘法器采用VHDL語(yǔ)言進(jìn)行編碼,在Quartus上進(jìn)行的仿真表明,相比于采用時(shí)序電路完成的設(shè)計(jì),F(xiàn)SATA乘法器有更優(yōu)的性能。
關(guān)鍵詞: 陣列乘法器;FSATA乘法器;多路選擇器;VHDL;Quartus
乘法器的設(shè)計(jì)與實(shí)現(xiàn)是計(jì)算機(jī)體系結(jié)構(gòu)技術(shù)發(fā)展過(guò)程中重要的研究課題之一。在絕大部分的數(shù)字信號(hào)處理算法中,乘法操作都占有非常大的比例。隨著計(jì)算機(jī)技術(shù)以及計(jì)算密集型應(yīng)用的快速發(fā)展,快速的數(shù)字乘法器的重要性越來(lái)越突出。
陣列乘法器由許多重復(fù)的結(jié)構(gòu)單元構(gòu)成陣列,特別適合于使用VLSI實(shí)現(xiàn),是乘法器設(shè)計(jì)中廣泛采用的方法。針對(duì)如何提升陣列乘法器的運(yùn)算性能,國(guó)內(nèi)外的研究人員提出了很多優(yōu)秀的設(shè)計(jì)方案。本文綜合考慮這些方案的優(yōu)缺點(diǎn),設(shè)計(jì)了一種基于4選1多路選擇器的陣列乘法器設(shè)計(jì)方案,一次并行處理多位操作數(shù),使部分積產(chǎn)生的數(shù)量大大減少,加快了處理速度。
有限狀態(tài)機(jī)FSA(Finite State Automaton)是數(shù)字邏輯電路和數(shù)字系統(tǒng)的重要組成部分,能夠準(zhǔn)確實(shí)現(xiàn)數(shù)字系統(tǒng)核心部件的設(shè)計(jì),實(shí)現(xiàn)高效率高可靠性的邏輯控制。FSA的設(shè)計(jì)方案結(jié)構(gòu)模式簡(jiǎn)單、工作穩(wěn)定可靠,并且使用VHDL描述時(shí)層次分明,易讀易懂。
由于基于FSA技術(shù)設(shè)計(jì)的控制器擁有極快的工作速度以及高可靠性等諸多優(yōu)點(diǎn),本文利用FSA的設(shè)計(jì)優(yōu)勢(shì),完成了FSATA乘法器的設(shè)計(jì)。通過(guò)仿真并與常用設(shè)計(jì)方案進(jìn)行對(duì)比分析,驗(yàn)證了FSATA乘法器有良好的性能。
1 相關(guān)工作
向淑蘭[1]等人提出了應(yīng)用于數(shù)字信號(hào)處理器中的一種陣列乘法器的改進(jìn)方法,通過(guò)調(diào)整部分積的分布位置,減少了垂直方向上部分積相加的延遲時(shí)間。其不足在于沒(méi)有比較功耗這一個(gè)在乘法器設(shè)計(jì)中的重要參數(shù),而且隨著乘數(shù)位數(shù)的增長(zhǎng),其速度優(yōu)勢(shì)逐漸減小。
胡正偉[2]等人提出一種多功能陣列乘法器的設(shè)計(jì)方法,能同時(shí)計(jì)算多種精度的乘法運(yùn)算,實(shí)現(xiàn)了不同數(shù)制的乘法運(yùn)算能共享硬件資源,大大提高了乘法器的性能。其不足之處在于其采用的超前進(jìn)位加法器和流水線技術(shù)占用了大量的邏輯器件。
Dimitris Bekiaris[3]等人通過(guò)對(duì)操作數(shù)進(jìn)行了截?cái)嗵幚恚岢隽嘶诙嗦愤x擇器的陣列乘法器——Truncation Multiplier(TAM乘法器)的設(shè)計(jì)方案,有效規(guī)范了乘法器的設(shè)計(jì)結(jié)構(gòu),提高了乘法運(yùn)算速度。但是選用的4選1多路選擇器還有待進(jìn)一步優(yōu)化,從而減少使用的邏輯器件數(shù)量。
其他對(duì)陣列乘法器的改進(jìn),從不同方面對(duì)陣列乘法器進(jìn)行了改善,取得了很好的效果,但是仍有進(jìn)一步改進(jìn)的余地?;谌A萊士樹的陣列乘法器通過(guò)壓縮部分積[4-6],提高了運(yùn)算速度,但是設(shè)計(jì)方案產(chǎn)生了不規(guī)則的電路連接布局。
本文對(duì)TAM乘法器設(shè)計(jì)的實(shí)現(xiàn)方法進(jìn)行了改進(jìn),引入了有限狀態(tài)機(jī),從單純的軟件設(shè)計(jì)的角度,提出了基于有限狀態(tài)機(jī)的陣列乘法器FSATA(Finite State Automaton Truncation)。
在VHDL原碼中可以不對(duì)狀態(tài)機(jī)進(jìn)行編碼,在綜合過(guò)程中綜合器可以提供狀態(tài)編碼。狀態(tài)機(jī)編碼主要有以下5種編碼方式:①Johnson編碼:使用較少的觸發(fā)器,較多的組合邏輯。②Gray編碼:相鄰兩個(gè)狀態(tài)的編碼只有一位不同,減少了產(chǎn)生瞬變的次數(shù)。③One-hot編碼:使用較多的觸發(fā)器,較少的組合邏輯,雖然占用的資源較多,但其簡(jiǎn)單的編碼方式簡(jiǎn)化了狀態(tài)譯碼邏輯,提高了狀態(tài)轉(zhuǎn)換速度。④Sequential編碼。⑤Minimal bits編碼。
鑒于One-hot編碼能加快狀態(tài)轉(zhuǎn)換速度,該乘法器設(shè)計(jì)采用此編碼。
(4)一般FSA的VHDL描述包含4個(gè)部分:
?、僬f(shuō)明部分:定義用到的參數(shù)的數(shù)據(jù)類型;
?、谥骺貢r(shí)序邏輯部分:負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn),在時(shí)鐘信號(hào)驅(qū)動(dòng)下完成狀態(tài)之間的轉(zhuǎn)換;
③主控組合邏輯部分:根據(jù)狀態(tài)機(jī)外部輸入的狀態(tài)控制信號(hào)和當(dāng)前狀態(tài)確定下一狀態(tài)的取值以及對(duì)外部或內(nèi)部其他進(jìn)程輸出控制信號(hào)的取值;
④輔助邏輯部分:配合狀態(tài)機(jī)的主控組合邏輯和主控時(shí)序邏輯進(jìn)行工作,完善和提高系統(tǒng)性能。
根據(jù)提出的設(shè)計(jì),共有7個(gè)進(jìn)程同時(shí)并行執(zhí)行,圖4所示為其中一個(gè)進(jìn)程的運(yùn)行情況。初始狀態(tài)S0,根據(jù)xiyi(i從1~n-1)的不同,分別到達(dá)狀態(tài)S1~S7,每一個(gè)狀態(tài)對(duì)應(yīng)一個(gè)輸出,7個(gè)進(jìn)程并行結(jié)束之后,順序完成各個(gè)數(shù)據(jù)的求和進(jìn)程。
FSATA乘法器采用VHDL進(jìn)行編碼,由兩個(gè)算法完成:狀態(tài)轉(zhuǎn)換算法和控制信號(hào)輸出算法。狀態(tài)轉(zhuǎn)換算法負(fù)責(zé)不同狀態(tài)之間的跳轉(zhuǎn),算法描述如算法1。
4 仿真實(shí)驗(yàn)
4.1 實(shí)驗(yàn)主要評(píng)測(cè)指標(biāo)
電路測(cè)試中常用的技術(shù)指標(biāo)有:
?。?)邏輯器件數(shù)量:一個(gè)完整的電路設(shè)計(jì)所消耗的FPGA/CPLD或者專用集成芯片上的邏輯資源數(shù)量,也即所消耗的空間資源,有時(shí)也用芯片面積作為衡量指標(biāo)。
(2)運(yùn)算延遲時(shí)間:完整的進(jìn)行一次運(yùn)算所需要的時(shí)間,即所占用的時(shí)間資源,一般以納秒為單位。
?。?)功耗:隨著集成電路技術(shù)的快速發(fā)展,功耗問(wèn)題日益突顯,成為電路設(shè)計(jì)中一個(gè)重要評(píng)估參數(shù)。CMOS是集成電路設(shè)計(jì)中被廣泛采用的技術(shù),在CMOS電路中功耗分為靜態(tài)功耗和動(dòng)態(tài)功耗,公式如下[7]:
從表中可見相比于采用硬件電路設(shè)計(jì)的TAM乘法器,基于FSA的乘法器在各個(gè)乘法器的性能參數(shù)上都有明顯的優(yōu)勢(shì)。
本文主要的創(chuàng)新點(diǎn)在于引入4選1多路選擇器并一次并行處理兩位操作數(shù)使產(chǎn)生的部分積數(shù)量大幅減少,同時(shí)使用有限狀態(tài)機(jī)對(duì)這種設(shè)計(jì)進(jìn)行了實(shí)現(xiàn),通過(guò)有限狀態(tài)機(jī)的快速狀態(tài)轉(zhuǎn)換與狀態(tài)合并,加快了運(yùn)算速度并減少了邏輯部件的使用數(shù)量,使功耗也有所降低。
進(jìn)一步的工作主要是針對(duì)更高位數(shù)據(jù)的乘法運(yùn)算改進(jìn)乘法器設(shè)計(jì),隨著運(yùn)算位數(shù)的增加,狀態(tài)變量也隨之增加,若想進(jìn)一步提高運(yùn)算速度,需要考慮更多位數(shù)的并行處理以及有限狀態(tài)機(jī)的狀態(tài)優(yōu)化等問(wèn)題。
參考文獻(xiàn)
[1] 向淑蘭,曹良帥.數(shù)字信號(hào)處理器中陣列乘法器的研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2005,22(10):133-136.
[2] 胡正偉,仲順安.一種多動(dòng)能陣列乘法器的設(shè)計(jì)方法[D].計(jì)算機(jī)工程,2007,22(33):23-25.
[3] BEKIARIS D, PEKMESTZI K, PAPACHRISTOU C. A high-speed radix-4 multiplexer-based array multiplier[C]. 2008 Proceedings of the 18th ACM Great Lakes symposium on VLSI. 2008.
[4] WALLACE C. A suggestion for a fast multiplier[J]. IEEE Transactions on Elect. Computers, 1964(13):114-117.
[5] ITOH N. A 600-MHz 54x54-bit multiplier with rectangular-styled wallace tree[J]. IEEE Journal of Solid-State Circuits, 2001,36(2).
[6] Ki-seon Cho. 54x54-bit radix-4 multiplier based on modified-booth algorithm[C]. Proceedings of GLVLSI’ 03, Washington, USA. April 28-29, 2003.
[7] HENNESSY J L, PATTERSON D A. Computer architecture: a quantitative approach[M].4th ed.北京:機(jī)械工業(yè)出版社,2007.