《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的二-十進(jìn)制轉(zhuǎn)碼器設(shè)計(jì)
基于FPGA的二-十進(jìn)制轉(zhuǎn)碼器設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2010年第14期
王慶春,何曉燕
(安康學(xué)院 電子與信息技術(shù)研究中心,陜西 安康725000)
摘要: 針對(duì)二進(jìn)制轉(zhuǎn)十進(jìn)制(BCD)轉(zhuǎn)碼器的FPGA實(shí)現(xiàn)目標(biāo),提出了一種高效、易于重構(gòu)的轉(zhuǎn)碼器設(shè)計(jì)方案。并在FPGA開(kāi)發(fā)板上成功地實(shí)現(xiàn)了該設(shè)計(jì),驗(yàn)證結(jié)果表明,與使用中規(guī)模集成電路IP核(SN74185A)實(shí)現(xiàn)的7 bit、10 bit和12 bit的轉(zhuǎn)碼器相比,本設(shè)計(jì)可以分別節(jié)約28.5%、47.6%和49.6%的硬件實(shí)現(xiàn)代價(jià)(邏輯單元LEs);同時(shí),電路的路徑延遲也分別減少了0.7 ns、2.1 ns和8.9 ns.
Abstract:
Key words :

摘  要: 針對(duì)二進(jìn)制轉(zhuǎn)十進(jìn)制(le="BCD">BCD)轉(zhuǎn)碼器FPGA實(shí)現(xiàn)目標(biāo),提出了一種高效、易于重構(gòu)的轉(zhuǎn)碼器設(shè)計(jì)方案。并在FPGA開(kāi)發(fā)板上成功地實(shí)現(xiàn)了該設(shè)計(jì),驗(yàn)證結(jié)果表明,與使用中規(guī)模集成電路IP核(SN74185A)實(shí)現(xiàn)的7 bit、10 bit和12 bit的轉(zhuǎn)碼器相比,本設(shè)計(jì)可以分別節(jié)約28.5%、47.6%和49.6%的硬件實(shí)現(xiàn)代價(jià)(邏輯單元LEs);同時(shí),電路的路徑延遲也分別減少了0.7 ns、2.1 ns和8.9 ns.

關(guān)鍵詞: 二進(jìn)制轉(zhuǎn)十進(jìn)制(BCD)轉(zhuǎn)碼器;FPGA;IP核;邏輯單元(LEs);路徑延遲(Tpd)
 
   為了實(shí)現(xiàn)測(cè)量數(shù)據(jù)的實(shí)時(shí)顯示,電子測(cè)量系統(tǒng)常用到二-十進(jìn)制(BCD)轉(zhuǎn)碼器來(lái)完成數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)換[1-2]。目前,電子系統(tǒng)中的二-十進(jìn)制(BCD)數(shù)制轉(zhuǎn)換有三類(lèi)實(shí)現(xiàn)方法,一是采用軟件算法的實(shí)現(xiàn)方式[3-4],傳統(tǒng)的方法是用DAA調(diào)節(jié)指令實(shí)現(xiàn),但效率較低;其次是純硬件運(yùn)算實(shí)現(xiàn)方式[5-7],這種實(shí)現(xiàn)方式從數(shù)據(jù)轉(zhuǎn)換運(yùn)算到硬件的直接映射,常采用邏輯運(yùn)算和數(shù)據(jù)移位來(lái)實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換效率較高,但是在轉(zhuǎn)換數(shù)據(jù)位數(shù)較多時(shí),運(yùn)算量會(huì)顯著增加,硬件實(shí)現(xiàn)代價(jià)也較大;三是基于數(shù)據(jù)查找表LUT(Lookup Table)的實(shí)現(xiàn)方式[2,8-10]。
本文提出了一個(gè)高效、易于重構(gòu)的二-十進(jìn)制(BCD)轉(zhuǎn)碼器設(shè)計(jì)方案,并在FPGA開(kāi)發(fā)板上成功地進(jìn)行了設(shè)計(jì)驗(yàn)證。
1 二-十進(jìn)制(BCD)碼的轉(zhuǎn)換算法
 

    從以上的二-十進(jìn)制(BCD)碼變換算法中可以看到,二進(jìn)制數(shù)據(jù)的最低位b1不需要轉(zhuǎn)換而直接輸出,而且每個(gè)轉(zhuǎn)換運(yùn)算單元的低3位輸出數(shù)據(jù)始終不會(huì)大于(4)D/(100)B,這樣就能夠保證最后得到的每一位BCD碼不會(huì)大于(9)D/(1001)B,從而得到BCD碼的正確轉(zhuǎn)換輸出。
2 二-十進(jìn)制(BCD)轉(zhuǎn)碼器的實(shí)現(xiàn)
2.1 二-十進(jìn)制(BCD)轉(zhuǎn)碼器的ASIC實(shí)現(xiàn)
    根據(jù)上述的轉(zhuǎn)換算法,參考文獻(xiàn)[5]、[11]中給出了全定制的轉(zhuǎn)碼器專用集成電路(ASIC)實(shí)現(xiàn)方案。首先,構(gòu)造出5 bit二進(jìn)制數(shù)的轉(zhuǎn)換單元,然后再以此轉(zhuǎn)換單元為基本單位擴(kuò)展成其他的多位二-十進(jìn)制(BCD)轉(zhuǎn)碼器,TI公司的SN74185A芯片就是這樣的一個(gè)5 bit數(shù)據(jù)轉(zhuǎn)換單元,用它實(shí)現(xiàn)的10 bit二-十進(jìn)制(BCD)碼轉(zhuǎn)換器如圖2所示。
 
 
    圖2所示的轉(zhuǎn)碼器與圖1的結(jié)構(gòu)區(qū)別在于采用了5 bit的轉(zhuǎn)換單元而不是4 bit的基本單元(高3 bit轉(zhuǎn)換單元的最高位輸入接地),從而簡(jiǎn)化了多位轉(zhuǎn)碼器的電路結(jié)構(gòu)。每個(gè)轉(zhuǎn)換單元(SN74185A)的6個(gè)輸出位權(quán)依次是(20、10、5、4、2、1),因此也保證了每個(gè)轉(zhuǎn)換運(yùn)算單元的低3位輸出數(shù)據(jù)始終不會(huì)大于(4)D/(100)B,使最后得到的每位BCD碼都不會(huì)大于(9)D/(1001)B。使用時(shí)要求轉(zhuǎn)換單元(SN74185A)的無(wú)用輸入端作接地處理。假如需要轉(zhuǎn)換的10 bit數(shù)據(jù)是(1110011011)B,每個(gè)轉(zhuǎn)換模塊完成輸入二進(jìn)制數(shù)據(jù)的位權(quán)轉(zhuǎn)換,如圖2所示,經(jīng)過(guò)第一層數(shù)據(jù)轉(zhuǎn)換后得到(10101111011),再依次經(jīng)過(guò)后面第2層至第4層的數(shù)據(jù)轉(zhuǎn)換,得到各層次相應(yīng)轉(zhuǎn)換輸出分別是:(10111000011)、(100011000011)、(0100100100011),第4層的轉(zhuǎn)換輸出就是十進(jìn)制(BCD)碼:(0100100100011)BCD=(923)D。
 
2.2 基于FPGA的二-十進(jìn)制(BCD)轉(zhuǎn)碼器設(shè)計(jì)
     在片上數(shù)字系統(tǒng)(SOPC)中實(shí)現(xiàn)二-十進(jìn)制(BCD)碼轉(zhuǎn)換器,如果直接依據(jù)圖2所示的結(jié)構(gòu),使用SN74185A芯片的IP核(Quartus II工具提供)來(lái)實(shí)現(xiàn)轉(zhuǎn)碼器不但存在著2.1中所述的不足之處,而且還會(huì)面臨著更大的硬件資源浪費(fèi)問(wèn)題,這是由于FPGA中的邏輯單元(LEs)都是基于4輸入的數(shù)據(jù)查找表(LUT),如果要實(shí)現(xiàn)5輸入的轉(zhuǎn)換單元(SN74185A),就需要查找表級(jí)聯(lián)擴(kuò)展,從而會(huì)造成路徑延遲進(jìn)一步增大、邏輯單元利用率降低、硬件實(shí)現(xiàn)代價(jià)提高。
    為了克服以上的轉(zhuǎn)碼器設(shè)計(jì)缺陷,針對(duì)FPGA的結(jié)構(gòu)特點(diǎn),筆者提出了以下設(shè)計(jì)思路:(1)以4 bit數(shù)據(jù)轉(zhuǎn)換作為基本的轉(zhuǎn)換單元來(lái)適應(yīng)FPGA結(jié)構(gòu)特點(diǎn),而提高邏輯單元利用率,達(dá)到降低硬件代價(jià)的目的;(2)利用Verilog HDL層次化設(shè)計(jì)描述的靈活性,以4 bit數(shù)據(jù)轉(zhuǎn)換單元為最底層模塊,構(gòu)造出更大的5 bit和6 bit轉(zhuǎn)換單元(模塊)。這種設(shè)計(jì)方法為二-十進(jìn)制(BCD)轉(zhuǎn)碼器的構(gòu)建提供了4 bit、5 bit和6 bit三種不同大小的單元模塊,可使每一個(gè)轉(zhuǎn)換單元模塊的使用恰到好處(需要小模塊的地方就不會(huì)使用大模塊)。
2.2.1 二-十進(jìn)制(BCD)轉(zhuǎn)碼器單元模塊設(shè)計(jì)
    采用上文所述基于FPGA的二-十進(jìn)制(BCD)轉(zhuǎn)碼器設(shè)計(jì)方案,關(guān)鍵在于要做好最底層模塊(4 bit轉(zhuǎn)碼模塊)的優(yōu)化設(shè)計(jì),對(duì)4 bit轉(zhuǎn)碼模塊的不同Verilog HDL描述方式也會(huì)帶來(lái)不同的實(shí)現(xiàn)代價(jià);本文使用結(jié)構(gòu)描述實(shí)現(xiàn)4 bit轉(zhuǎn)碼模塊(Bin2Bcd_4),再通過(guò)4 bit轉(zhuǎn)碼模塊層次實(shí)例化構(gòu)成5 bit轉(zhuǎn)碼模塊(Bin2Bcd_5)和6 bit轉(zhuǎn)碼模塊(Bin2Bcd_6)的設(shè)計(jì),4 bit、5 bit和6 bit三種單元模塊的構(gòu)造示意圖如圖3所示。
 
 
2.2.2 基于混合模塊的二-十進(jìn)制(BCD)轉(zhuǎn)碼器設(shè)計(jì)
    根據(jù)二-十進(jìn)制(BCD)轉(zhuǎn)碼算法,使用上文2.2.1中得到的4 bit、5 bit和6 bit三種二-十進(jìn)制轉(zhuǎn)碼單元模塊,構(gòu)造出7 bit、10 bit和12 bit二-十進(jìn)制(BCD)轉(zhuǎn)碼器結(jié)構(gòu),如圖4所示,轉(zhuǎn)碼單元模塊的多余輸入端接地,多余輸出端懸空。
 
 
3 二-十進(jìn)制(BCD)轉(zhuǎn)碼器的設(shè)計(jì)驗(yàn)證
    本文使用Quartus II 6.0(Full Version)開(kāi)發(fā)工具,對(duì)于圖4所示的3個(gè)混合模塊構(gòu)建的二-十進(jìn)制(BCD)轉(zhuǎn)碼器,在Altera公司的FPGA(Altera EP1K30QC208-2)芯片上分別進(jìn)行了設(shè)計(jì)驗(yàn)證,驗(yàn)證結(jié)果完全達(dá)到設(shè)計(jì)預(yù)期。其中12 bit二-十進(jìn)制(BCD)轉(zhuǎn)碼器的功能仿真和時(shí)序仿真結(jié)果如圖5所示。
 
 
    在完全相同的軟硬件驗(yàn)證環(huán)境下,把圖4所示的轉(zhuǎn)碼器設(shè)計(jì)和使用中規(guī)模集成電路IP核(SN74185A)實(shí)現(xiàn)的7 bit、10 bit和12 bit的轉(zhuǎn)碼器進(jìn)行了性能對(duì)比,驗(yàn)證結(jié)果進(jìn)一步表明了這種采用混合模塊構(gòu)建二-十進(jìn)制(BCD)轉(zhuǎn)碼器的行之有效性;表1所示為采用這兩種構(gòu)建方法得到的7 bit、10 bit和12 bit轉(zhuǎn)碼器的驗(yàn)證結(jié)果對(duì)比。
 
 
     Altera EP1K30QC208-2(FPGA)芯片上的7 bit、10 bit和12 bit轉(zhuǎn)碼器設(shè)計(jì)驗(yàn)證結(jié)果和使用IP核(SN74185A)實(shí)現(xiàn)的轉(zhuǎn)碼器驗(yàn)證結(jié)果對(duì)比更加充分證明了這種設(shè)計(jì)思路的可行性;這種高效、易于重構(gòu)的二-十進(jìn)制(BCD)轉(zhuǎn)碼器設(shè)計(jì)為基于FPGA的片上數(shù)字測(cè)量系統(tǒng)實(shí)現(xiàn)做出了有意義的積極探索。
參考文獻(xiàn)
[1] 周啟明.多個(gè)儀器儀表和數(shù)字表頭的微機(jī)數(shù)據(jù)采集系統(tǒng)[J].自動(dòng)化與儀表,2000,15(3):51-57.
[2] YUKIHIRO I,TSUTOMU S,MUNEHIRO M.On designs of radix converters using arithmetic decompositions(binary to decimal converters)[J].IEEE the 37th International Symposium on Multiple-Valued Logic(ISMVL′07),2007,15(12):1533-1544.
[3] 鄧勇,劉琪.智能儀表多字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換BCD碼[J].電子產(chǎn)品世界,1999,7(12):33.
[4] 潘昊.單片機(jī)十六進(jìn)制數(shù)與BCD碼轉(zhuǎn)換新探討[J].微機(jī)發(fā)展,1997,7(6):35-36.
[5] BUFORD M.Guy Ⅲ.VLSI design of a custom ASIC using VHDL for Converting 12 bit binary to BCD[J].IEEE 1995.
[6] 王迎春,吉利久.一種基于簡(jiǎn)單移位的二-十進(jìn)制相互轉(zhuǎn)換算法[J].電子學(xué)報(bào),2003,31(2):221-224.
[7] 鄔楊波,胡建平,李宏.一種BIN碼與BCD碼轉(zhuǎn)換電路的設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù),2005,27(8):33-35.
[8] MUROGA S.VLSI System Design[M].John Wiley & Sons,1982:293-306.
[9] SASAO T.Radix converters(Complexity and implementation by LUT cascades)[J].35th International 
Symposium on Multiple Valued Logic,Calgary,Canada,May 19-21,2005:256-263.
[10] SASAO T.Analysis and synthesis of weightedsum functions[J].IEEE Trans.on CAD,2006,25(5):
789-796.
[11] Texas Instruments Incorporation.The TTL Data Book for Design Engineers[M].1976:290-295.
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。