
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)。
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
FPGA設計
+關注
關注
9文章
431瀏覽量
28218 -
HDL
+關注
關注
8文章
332瀏覽量
49058 -
乘法器
+關注
關注
9文章
221瀏覽量
38955 -
Verilog語言
+關注
關注
0文章
113瀏覽量
8829
原文標題:乘法器的Verilog HDL實現(xiàn)
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
熱點推薦
verilog中乘法器延時問題
剛剛學習verilog,夏宇聞的《verilog數(shù)字系統(tǒng)設計教程(第三版)》中,P143中圖10.3,乘法器延時為1個與門和8個全加器的延時,為什么是 8 個?我覺得應該是 10 個全加器延時,請求大神幫忙解答一下,謝了。
發(fā)表于 10-10 23:04
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位的乘法器,功能已經(jīng)實現(xiàn)
發(fā)表于 02-25 16:03
基于Verilog HDL設計實現(xiàn)的乘法器性能研究
本文在設計實現(xiàn)乘法器時,采用了4-2 和5-2 混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源占用率;經(jīng)Xilinx ISE 和Quartus II 兩種集成開發(fā)環(huán)境下的綜合仿真測試,與用
發(fā)表于 09-17 11:13
?27次下載
1/4平方乘法器
1/4平方乘法器
這種乘法器是根據(jù)數(shù)學關系設計而成的,因此稱為1/4平方乘法電路,或稱1/4平方乘法器。其
發(fā)表于 05-18 14:08
?2461次閱讀
變跨導乘法器
變跨導乘法器
這種乘法器現(xiàn)在已經(jīng)成為一種工業(yè)上的標準方法,是應用極為廣泛的優(yōu)質乘法器。
發(fā)表于 05-18 16:00
?1564次閱讀
基于IP核的乘法器設計
實驗目的 1、熟悉Xilinx的ISE 軟件的使用和設計流程; 2、掌握Modelsim仿真軟件的使用方法; 3、用乘法運算符實現(xiàn)一個16*16 乘法器模塊; 4、用IP核實現(xiàn)一個16
發(fā)表于 05-20 17:00
?68次下載
乘法器的使用方法你知道哪些?
在做項目的過程中,經(jīng)常遇到乘法計算,乘法器的設計就尤為重要。乘法器決定了最終電路功能能否實現(xiàn),資源使用量多少以及時序性能優(yōu)劣等。
使用verilogHDL實現(xiàn)乘法器
本文在設計實現(xiàn)乘法器時,采用了4-2和5-2混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源占 用率;經(jīng)XilinxISE和QuartusII兩種集成開發(fā)環(huán)境下的綜合仿真測試,與用
發(fā)表于 12-19 13:30
?1.2w次閱讀
乘法器原理_乘法器的作用
乘法器(multiplier)是一種完成兩個互不相關的模擬信號相乘作用的電子器件。它可以將兩個二進制數(shù)相乘,它是由更基本的加法器組成的。乘法器可以通過使用一系列計算機算數(shù)技術來實現(xiàn)。
發(fā)表于 02-18 15:08
?2.8w次閱讀
采用Gillbert單元如何實現(xiàn)CMOS模擬乘法器的應用設計
在集成電路系統(tǒng)中,模擬乘法器在信號調制解調、鑒相、頻率轉換、自動增益控制和功率因數(shù)校正控制等許多方面有著非常廣泛的應用。實現(xiàn)模擬乘法器的方法有很多,按采用的工藝不同,可以分為三極管乘法器
乘法器的Verilog HDL實現(xiàn)方案
評論