亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種自動生成Wallace樹形乘法器Verilog源代碼方法

        2018-07-27 12:23:22建,
        實驗室研究與探索 2018年7期
        關鍵詞:加法器樹型乘法器

        鄧 建, 徐 潔

        (電子科技大學 計算機科學與工程學院, 成都 611731)

        0 引 言

        Wallace樹型乘法器[1]自上世紀60年代提出以來,由于具有并行性和低延遲的優(yōu)點[2-3],一直是通用乘法器[4-7]、數(shù)字信號處理(Digital Signal Process,DSP)中的乘法運算[8-10]、浮點運算[11]、模糊控制[12]和近似計算[13]等研究領域的熱點。目前通常采用超高速集成電路,硬件描述語言(Very-High-Speed Integrated Circuit Hardware Description Language, VHDL)[14]或Verilog[15]來進行乘法器硬件的設計和仿真。

        在文獻[16]中討論了Wallace樹型乘法器的結構和設計,但在實驗過程中發(fā)現(xiàn):在8×8無符號位Wallace樹型乘法器的Verilog源代碼中存在3個錯誤;在后續(xù)的第9、10、11、13、14章使用了位數(shù)更多的Wallace樹型乘法器,但書中未提供相應的Verilog源代碼。為解決上述問題,根據(jù)文獻[16]中的Wallace樹型乘法器結構,設計了一個自動生成Verilog源代碼的應用程序。

        1 無符號位乘法器的工作原理

        無符號位二進制數(shù)的乘法運算可以通過每兩個二進制位相乘、移位和加法來實現(xiàn)。以兩個兩位無符號位數(shù)相乘為例,設a、b分別為兩位無符號位二進制數(shù),則

        z=(a[1]a[0])×(b[1]b[0])=

        (a[1]a[0])×b[0]+(a[1]a[0])×b[1]×21=

        a[0]b[0]+(a[1]b[0]+a[0]b[1])×21+

        a[1]b[1]×22

        (1)

        式(1)中有4個乘積項,每個乘積項可以通過邏輯“與”實現(xiàn)。如圖1所示,如果a、b分別為8位無符號位二進制數(shù),則總共有64個乘積項,圖1中的每個 “●”代表一個乘積項。

        圖1 8×8無符號位乘法器中的乘積項

        設a、b分別為M和N位無符號位二進制數(shù),則總共有M×N個乘積項。

        2 Wallace樹型乘法器的結構

        對圖1中的乘積項進行累加是乘法器中耗時最多的操作[3],Wallace樹型乘法器[1]采用分級并行累加的方法進行操作。圖2是對圖1中的乘積項進行第1級的并行累加結構圖。

        圖2 8×8無符號位Wallace樹型乘法器的第1級

        圖2中的每個方框代表一個加法器,方框內(nèi)有3個 “●”使用全加器,方框內(nèi)有2個 “●”可以使用半加器或全加器,不在方框中 “●”直接送到下一級。每個加法器輸出一個向高位的進位、一個本位和。

        圖3 8×8無符號位Wallace樹型乘法器的第2級

        在圖2中,第1級共需要21個加法器,輸出的21個向高位的進位、21個本位和,總共42個輸出,它們作為第2級的輸入。圖3是第2級的結構圖,圖3中的“○”代表來自圖2中加法器的輸出。第2級的輸出作為第3級的輸入,第3級的輸出作為第4級的輸入,圖4、5分別表示第3、第4級的結構。

        圖4 8×8無符號位Wallace樹型乘法器的第3級

        圖5 8×8無符號位Wallace樹型乘法器的第4級

        圖5中輸出的第00-04位可以直接作為最終輸出,第05-15位還需要送到輸出級再做一次累加,圖6為輸出級的結構。圖5、6中第15位向第16位的進位可以忽略。

        圖6 8×8無符號位Wallace樹型乘法器的輸出級

        3 Verilog源代碼生成算法

        Wallace樹型乘法器由于乘積項和中間的加法器數(shù)量多,采用Verilog進行設計時工作量大。為提高設計效率,根據(jù)無符號位二進制數(shù)的乘法器的工作原理和Wallace樹型乘法器的結構,設計了一個自動生成Verilog代碼的應用程序。整體算法為:

        GenerateWallaceTreeUnsigned(M,N, *FileName )

        1. ifM=N

        2. then modulename←"wallace_tree "+M

        3. else modulename←"wallace_tree "+M+"x"+N

        4. FileName ← modulename+ ".v"

        5.fp← fopen(FileName, "wt+" )

        6. GenerateFileHeader(fp, modulename,M,N)

        7. products ← GenerateUnsignedProduct (fp,M,N)

        8. product_tree←GenerateItemTree(M,N, products)

        9. adder_tree ← new TList

        10. level ← 1

        11. success←GenerateAdderTreeTopLevel(fp, level, M, N, product_tree, adder_tree)

        12. while success = TRUE

        13. do

        14. level ← level +1

        15. success = GenerateAdderTreeNextLevel(fp, level,M,N, adder_tree)

        16. OutputLastUnsigneLevel(fp,M,N, level )

        17. if(fp≠NIL )

        18. then fclose(fp)

        算法中的第1~5步進行初始化工作,按照文獻[16]第3章和第9章的源代碼,生成對應的Verilog模塊名稱,創(chuàng)建Verilog源文件。第6步向輸出文件輸出Verilog代碼的開始部分,包括模塊和輸入輸出定義。第7步根據(jù)本文的圖1和文獻[16]第79頁生成乘積項,并輸出對應的Verilog代碼。第8步創(chuàng)建樹型乘法器每一級中加法器的輸入變量名稱,根據(jù)第7步生成的乘積項和本文的圖2確定第1級結構中每個加法器所使用的乘積項名稱。第9~11步創(chuàng)建Wallace樹型乘法器的第1級,adder_tree中包含每級所使用的加法器的輸入和輸出變量名稱,第12~15步循環(huán)創(chuàng)建后續(xù)每一級,直到不需要繼續(xù)創(chuàng)建為止。第16步創(chuàng)建輸出級。在創(chuàng)建Wallace樹型乘法器的過程中,同時輸出對應的Verilog代碼。第17~18步關閉Verilog文件。

        在本算法的基礎上,根據(jù)文獻[16]中第74~77頁的方法編寫帶符號位的二進制Wallace樹型乘法器。本算法可以很方便的生成位數(shù)更多的Wallace樹型乘法器的Verilog源代碼。

        在文獻[16]中第271~276頁的浮點乘法器中要用到24×24位Wallace樹型乘法器,書中只提供了Wallace樹型乘法器的結構圖,沒有提供對應的Verilog源代碼。采用本算法自動生成了8×8、24×24、24×26、24×28、26×24、26×26模塊。如表1所示,隨著位數(shù)的增加,由于乘積項變得更多,所以Wallace樹型乘法器的級數(shù)更多。如果由設計人員手工輸入,不僅效率低,而且容易出錯。

        表1 M×N位無符號位Wallace樹型乘法器模塊

        4 實驗仿真

        采用Xilinx ISE 14.7版本設計軟件,對自動生成的Verilog源代碼進行仿真,輸入數(shù)據(jù)a分別為0和255,輸入數(shù)據(jù)b分別為0、1、2、4、8、16、32、64、255,得到與文獻[16]第82頁相同的仿真結果。

        圖7 8×8無符號位Wallace樹型乘法器仿真結果[16]

        但是圖7中的測試數(shù)據(jù)太少,如果采用窮盡測試,編寫雙重循環(huán),對0~255的每兩個數(shù)進行乘法運算,發(fā)現(xiàn)文獻[16]中的Verilog代碼會出現(xiàn)運算不正確的情況。經(jīng)過仔細核對,發(fā)現(xiàn)第80~81頁的源代碼共存在3處錯誤,經(jīng)過修訂后才能得到正確的結果。造成錯誤的原因估計是因為乘積項和中間加法器的輸出項目多,手工輸入源代碼容易出錯。采用本文提出的方法,自動生成Verilog代碼,將Wallace樹型乘法器的硬件輸出與軟件的乘法結果進行65536次窮盡對比,結果一致,沒有發(fā)現(xiàn)錯誤。測試模塊的算法如下:

        wallace_tree8_tb

        1. // Inputs

        2. reg [7:0]a

        3. reg [7:0]b

        4. // Outputs

        5. wire [15:0]z

        6. wallace_tree8 uut (.a(a), .b(b), .z(z))

        7. task Check ;

        8. input [15:0] expect

        9. if(z!= expect )

        10. then

        11. error_count ← error_count + 1

        12. $display("error :a= %x,b= %x, expect %x, but the output is %x",a,b, expect,z)

        13. else

        14. success_count ← success_count + 1

        15. endtask

        16. initial begin

        17. error_count ← 0

        18. success_count ← 0

        19. for i from 0 to 255

        20. do

        21.a←i

        22. for j from 0 to 255

        23. do

        24.b←j

        25. #10 //延遲10ns

        26. Check(i*j)

        27. display("total_count = %d, success_count = %d, error_count = %d", success_count + error_count, success_count, error_count )

        28. end

        在上述算法的第25步需要延遲10 ns,目的是等待Wallace樹型乘法器的硬件結果。對于24×24、24×26、24×28、26×24、26×26模塊,也進行了仿真,取得與文獻[16]相同的結果。

        5 結 語

        本文提出了一種自動生成Wallace樹形乘法器Verilog源代碼的方法,可以克服人工輸入源代碼的錯誤,提高設計效率和質量。在以后的教學過程中,還可以在以下幾個方面繼續(xù)改進:① 增強對測試代碼的重視,通過大量的測試來考察乘法器的輸出是否正確;② 將乘法器下載到FPGA開發(fā)板上進行實際運行,分析其邏輯資源占用情況和延遲;③ 進一步改進Verilog代碼生成算法,在生成的Verilog代碼中自動增加注釋。采用自動生成Wallace樹形乘法器Verilog源代碼的方法可以提高同學們的學習熱情,愿意接受高難度實驗項目的挑戰(zhàn)。

        猜你喜歡
        加法器樹型乘法器
        分段式高性能近似加法器設計
        勘 誤
        遼寧絲綢(2022年3期)2022-11-24 16:06:07
        一種快速養(yǎng)成的柞樹樹型—壓干樹型
        遼寧絲綢(2022年2期)2022-07-09 03:40:02
        一種混合結構的新型近似加法器
        通用加法器的邏輯實現(xiàn)與分析
        電子世界(2018年1期)2018-01-26 04:58:08
        基于FPGA的流水線單精度浮點數(shù)乘法器設計*
        三旋光結構一步無進位加法器的設計
        基于樹型結構的防空力量配屬方案生成模型研究
        樹型組織結構圖的算法研究及實現(xiàn)
        乘法器模塊在FPGA中的實現(xiàn)
        中文字幕色视频在线播放| 小荡货奶真大水真多紧视频| 欧美肥婆性猛交xxxx| 50岁熟妇的呻吟声对白| 加勒比无码专区中文字幕| 又爽又猛又大又湿的视频| 亚洲精品成人无百码中文毛片| 性裸交a片一区二区三区| 欧美日韩亚洲成人| av网址大全在线播放| 国产av一区二区三区在线播放| 人人妻人人澡人人爽国产| 色老板精品视频在线观看| 久久99精品久久久久久齐齐百度| 国内偷拍第一视频第一视频区| 亚洲国产精品美女久久| 狠狠色噜噜狠狠狠888米奇视频 | 亚洲av片无码久久五月| 中国凸偷窥xxxx自由视频妇科| 99热成人精品国产免| 在线观看中文字幕不卡二区| 97一期涩涩97片久久久久久久| 精品久久久久久中文字幕| 无码的精品免费不卡在线| 一区二区在线视频大片| 蜜桃视频国产一区二区| 日本精品αv中文字幕| AV教师一区高清| 亚洲一区二区日韩精品| 白丝爆浆18禁一区二区三区| 欧美黑人乱大交| 青青草一级视频在线观看| 亚洲久悠悠色悠在线播放| 欧美aaaaaa级午夜福利视频| 2021国产精品久久| 日本a级片一区二区三区| 人妻少妇出轨中文字幕| 免费观看国产精品| 成人激情视频一区二区三区| 久久久99精品成人片| 久久棈精品久久久久久噜噜|