0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

乘法器的Verilog HDL實現(xiàn)方案

FPGA之家 ? 來源:FPGA之家 ? 2023-06-21 09:01 ? 次閱讀

801e20e8-0fc7-11ee-962d-dac502259ad0.png

1. 串行乘法器

兩個N位二進制數(shù)x、y的乘積用簡單的方法計算就是利用移位操作來實現(xiàn)。

module multi_CX(clk, x, y, result);
    
    input clk;
    input [7:0] x, y;
    output [15:0] result;

    reg [15:0] result;

    parameter s0 = 0, s1 = 1, s2 = 2;
    reg [2:0] count = 0;
    reg [1:0] state = 0;
    reg [15:0] P, T;
    reg [7:0] y_reg;

    always @(posedge clk) begin
        case (state)
            s0: begin
                count <= 0;
                P <= 0;
                y_reg <= y;
                T <= {{8{1'b0}}, x};
                state <= s1;
            end
            s1: begin
                if(count == 3'b111)
                    state <= s2;
                else begin
                    if(y_reg[0] == 1'b1)
                        P <= P + T;
                    else
                        P <= P;
                    y_reg <= y_reg >> 1;
                    T <= T << 1;
                    count <= count + 1;
                    state <= s1;
                end
            end
            s2: begin
                result <= P;
                state <= s0;
            end
            default: ;
        endcase
    end

endmodule

乘法功能是正確的,但計算一次乘法需要8個周期。因此可以看出串行乘法器速度比較慢、時延大,但這種乘法器的優(yōu)點是所占用的資源是所有類型乘法器中最少的,在低速的信號處理中有著廣泛的應用。

2.流水線乘法器

一般的快速乘法器通常采用逐位并行的迭代陣列結構,將每個操作數(shù)的N位都并行地提交給乘法器。但是一般對于FPGA來講,進位的速度快于加法的速度,這種陣列結構并不是最優(yōu)的。所以可以采用多級流水線的形式,將相鄰的兩個部分乘積結果再加到最終的輸出乘積上,即排成一個二叉樹形式的結構,這樣對于N位乘法器需要lb(N)級來實現(xiàn)。

module multi_4bits_pipelining(mul_a, mul_b, clk, rst_n, mul_out);
    
    input [3:0] mul_a, mul_b;
    input       clk;
    input       rst_n;
    output [7:0] mul_out;

    reg [7:0] mul_out;

    reg [7:0] stored0;
    reg [7:0] stored1;
    reg [7:0] stored2;
    reg [7:0] stored3;

    reg [7:0] add01;
    reg [7:0] add23;

    always @(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            mul_out <= 0;
            stored0 <= 0;
            stored1 <= 0;
            stored2 <= 0;
            stored3 <= 0;
            add01 <= 0;
            add23 <= 0;
        end
        else begin
            stored0 <= mul_b[0]? {4'b0, mul_a} : 8'b0;
            stored1 <= mul_b[1]? {3'b0, mul_a, 1'b0} : 8'b0;
            stored2 <= mul_b[2]? {2'b0, mul_a, 2'b0} : 8'b0;
            stored3 <= mul_b[3]? {1'b0, mul_a, 3'b0} : 8'b0;

            add01 <= stored1 + stored0;
            add23 <= stored3 + stored2;

            mul_out <= add01 + add23;
        end
    end

endmodule

從圖中可以看出,流水線乘法器比串行乘法器的速度快很多很多,在非高速的信號處理中有廣泛的應用。至于高速信號的乘法一般需要利用FPGA芯片中內嵌的硬核DSP單元來實現(xiàn)。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    26452
  • HDL
    HDL
    +關注

    關注

    8

    文章

    325

    瀏覽量

    47288
  • 乘法器
    +關注

    關注

    8

    文章

    204

    瀏覽量

    36907
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8196

原文標題:乘法器的Verilog HDL實現(xiàn)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    verilog乘法器延時問題

    剛剛學習verilog,夏宇聞的《verilog數(shù)字系統(tǒng)設計教程(第三版)》中,P143中圖10.3,乘法器延時為1個與門和8個全加器的延時,為什么是 8 個?我覺得應該是 10 個全加器延時,請求大神幫忙解答一下,謝了。
    發(fā)表于 10-10 23:04

    乘法器的移位累加

    請問關于乘法器Verilog 程序中,移位累加具體每一步是怎么走的,自己琢磨了一番,感覺不是太懂,求高手解釋。(明白二進制乘法的計算過程)
    發(fā)表于 10-17 23:08

    Verilog中用*實現(xiàn)乘法和用乘法器ip核實現(xiàn)乘法的區(qū)別?

    Verilog中用*實現(xiàn)乘法和用乘法器ip核實現(xiàn)乘法綜合結果有哪些不同?
    發(fā)表于 03-18 09:35

    FPGA乘法器設計

    剛接觸學習FPGA,懂得verilog HDL的基礎語法,有一塊帶XILINX的ZYNQ xc7z020的開發(fā)板,開發(fā)軟件用的是vivado;現(xiàn)在要設計一個16位的乘法器,功能已經實現(xiàn)
    發(fā)表于 02-25 16:03

    硬件乘法器是怎么實現(xiàn)的?

    硬件乘法器是怎么實現(xiàn)
    發(fā)表于 09-22 06:53

    基于Verilog HDL設計實現(xiàn)乘法器性能研究

    本文在設計實現(xiàn)乘法器時,采用了4-2 和5-2 混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源占用率;經Xilinx ISE 和Quartus II 兩種集成開發(fā)環(huán)境下的綜合仿真測試,與用
    發(fā)表于 09-17 11:13 ?27次下載

    乘法器的基本概念

    乘法器的基本概念 乘法器是一種完成兩個互不相關的模擬信號相乘作用的電子器件。理想乘法器的輸出特性方程可由下式表示: UO
    發(fā)表于 05-18 14:03 ?1.4w次閱讀
    <b class='flag-5'>乘法器</b>的基本概念

    1/4平方乘法器

    1/4平方乘法器 這種乘法器是根據數(shù)學關系設計而成的,因此稱為1/4平方乘法電路,或稱1/4平方乘法器。其
    發(fā)表于 05-18 14:08 ?1951次閱讀
    1/4平方<b class='flag-5'>乘法器</b>

    變跨導乘法器

    變跨導乘法器 這種乘法器現(xiàn)在已經成為一種工業(yè)上的標準方法,是應用極為廣泛的優(yōu)質乘法器。
    發(fā)表于 05-18 16:00 ?1211次閱讀

    基于IP核的乘法器設計

    實驗目的 1、熟悉Xilinx的ISE 軟件的使用和設計流程; 2、掌握Modelsim仿真軟件的使用方法; 3、用乘法運算符實現(xiàn)一個16*16 乘法器模塊; 4、用IP核實現(xiàn)一個16
    發(fā)表于 05-20 17:00 ?68次下載
    基于IP核的<b class='flag-5'>乘法器</b>設計

    8乘8乘法器verilog源代碼

    8乘8乘法器verilog源代碼,有需要的下來看看
    發(fā)表于 05-23 18:21 ?24次下載

    乘法器的使用方法你知道哪些?

    在做項目的過程中,經常遇到乘法計算,乘法器的設計就尤為重要。乘法器決定了最終電路功能能否實現(xiàn),資源使用量多少以及時序性能優(yōu)劣等。
    的頭像 發(fā)表于 07-04 09:41 ?9494次閱讀

    使用verilogHDL實現(xiàn)乘法器

    本文在設計實現(xiàn)乘法器時,采用了4-2和5-2混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源占 用率;經XilinxISE和QuartusII兩種集成開發(fā)環(huán)境下的綜合仿真測試,與用
    發(fā)表于 12-19 13:30 ?1.1w次閱讀
    使用verilogHDL<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>乘法器</b>

    乘法器原理_乘法器的作用

    乘法器(multiplier)是一種完成兩個互不相關的模擬信號相乘作用的電子器件。它可以將兩個二進制數(shù)相乘,它是由更基本的加法器組成的。乘法器可以通過使用一系列計算機算數(shù)技術來實現(xiàn)。
    發(fā)表于 02-18 15:08 ?2.6w次閱讀
    <b class='flag-5'>乘法器</b>原理_<b class='flag-5'>乘法器</b>的作用

    采用Gillbert單元如何實現(xiàn)CMOS模擬乘法器的應用設計

    在集成電路系統(tǒng)中,模擬乘法器在信號調制解調、鑒相、頻率轉換、自動增益控制和功率因數(shù)校正控制等許多方面有著非常廣泛的應用。實現(xiàn)模擬乘法器的方法有很多,按采用的工藝不同,可以分為三極管乘法器
    的頭像 發(fā)表于 03-23 09:40 ?5098次閱讀
    采用Gillbert單元如何<b class='flag-5'>實現(xiàn)</b>CMOS模擬<b class='flag-5'>乘法器</b>的應用設計