|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
列舉了三個(gè)本人經(jīng)常用的乘法器實(shí)現(xiàn)方法,為后來者以及同輩參考 |
| 作者:fairlead 欄目:IC設(shè)計(jì) |
乘法器有很多種實(shí)現(xiàn)方法,這里列舉了三個(gè)本人經(jīng)常用的方法,為后來者以及同輩參考! ASIC實(shí)現(xiàn)資源何其重要,所以盡可能的要用串行和復(fù)用的思想! // ---------------------------------------------------------------------- // File NAME : multiply_unsigned_parallel.v // Author : Fairlead // Email : fairlead@163.com // ---------------------------------------------------------------------- // Purpose : multiply with serial implementation // - 8 bit input // - 16 bit OUTPUT // - input range: 0~255 // - OUTPUT range: 0~65025 // ---------------------------------------------------------------------- MODULE multiply_unsigned_parallel ( clk_i, reset_n_i, x_i, // Multiplier y_i, // Multiplicand z_o); // Computation result out input clk_i; input reset_n_i; input [7:0] x_i; // Multiplier input [7:0] y_i; // Multiplicand OUTPUT [15:0] z_o; // Computation result out reg [15:0] z_o; wire [9:0] adder1_left; wire [9:0] adder1_right; wire [9:0] adder1; wire [11:0] adder2_left; wire [11:0] adder2_right; wire [11:0] adder2; wire [13:0] adder3_left; wire [13:0] adder3_right; wire [13:0] adder3; wire [15:0] adder4_left; wire [15:0] adder4_right; wire [15:0] adder4; wire [11:0] adder5; wire [15:0] adder6; wire [15:0] adder7; // Adder1 assign adder1_left = (y_i[0]) ? {2'd0,x_i} : 0; assign adder1_right = (y_i[1]) ? {1'd0,x_i,1'd0} : 0; assign adder1 = adder1_left + adder1_right; //10bit adder // Adder2 assign adder2_left = (y_i[2]) ? {2'd0,x_i,2'd0} : 0; assign adder2_right = (y_i[3]) ? {1'd0,x_i,3'd0} : 0; assign adder2 = adder2_left + adder2_right; //12bit adder // Adder3 assign adder3_left = (y_i[4]) ? {2'd0,x_i,4'd0} : 0; assign adder3_right = (y_i[5]) ? {1'd0,x_i,5'd0} : 0; assign adder3 = adder3_left + adder3_right; //14bit adder // Adder4 assign adder4_left = (y_i[6]) ? {2'd0,x_i,6'd0} : 0; assign adder4_right = (y_i[7]) ? {1'd0,x_i,7'd0} : 0; assign adder4 = adder4_left + adder4_right; //16bit adder // Adder5 assign adder5 = {2'd0,adder1} + adder2; //12bit adder // Adder6 assign adder6 = {2'd0,adder3} + adder4; //16bit adder // Adder7 assign adder7 = {4'd0,adder5} + adder6; //16bit adder // OUTPUT generation(register out) always @(posedge clk_i or negedge reset_n_i) begin if (!reset_n_i) z_o <= 0; else z_o <= adder7; end endMODULE // ---------------------------------------------------------------------- // File NAME : multiply_unsigned_serial.v // Author : Fairlead // Email : fairlead@163.com // ---------------------------------------------------------------------- // Purpose : multiply with serial implementation // - 8 bit input // - 16 bit OUTPUT // - input range: 0~255 // - OUTPUT range: 0~65025 // ---------------------------------------------------------------------- MODULE multiply_unsigned_serial ( clk_i, reset_n_i, start_i, // Start demodulation (PULSE) x_i, // Multiplier y_i, // Multiplicand finish_o, // Complete computation (PULSE) z_o); // Computation result out input clk_i; input reset_n_i; input &nb |
| 2樓: | >>參與討論 |
| 作者: liu1875 于 2006/3/22 0:01:00 發(fā)布:
我不懂?dāng)?shù)字, 那位兄弟來評評,我加酷了, 支持原創(chuàng) |
|
| 3樓: | >>參與討論 |
| 作者: rickyice 于 2006/3/23 10:52:00 發(fā)布:
re 我以前設(shè)計(jì)過高速、低功耗booth wallace tree乘法器 |
|
| 4樓: | >>參與討論 |
| 作者: yakinlu 于 2006/3/23 17:15:00 發(fā)布:
re 不錯(cuò),花了心思的,把位寬參數(shù)化就更好了。 * - 本貼最后修改時(shí)間:2006-3-23 17:17:31 修改者:yakinlu |
|
| 5樓: | >>參與討論 |
| 作者: 逗號 于 2006/3/26 16:10:00 發(fā)布:
最好配上相應(yīng)文檔說明 有經(jīng)驗(yàn)的人看這段code會(huì)很清晰。但是對于初學(xué)者來說,最好配上相應(yīng)文檔,能夠?qū)υO(shè)計(jì)思路了解的更清晰。 |
|
| 6樓: | >>參與討論 |
| 作者: amormio124 于 2006/4/4 0:09:00 發(fā)布:
直言 第一種比較常規(guī),但好像有點(diǎn)慢,而且大, 后面的完全不能實(shí)用,很少有人那樣寫乘法器 再者組合邏輯和時(shí)序邏輯寫在一起不好 booth encoding wallace tree sign bit reduction 是乘法器的基礎(chǔ),入門而已 |
|
| 7樓: | >>參與討論 |
| 作者: wwj663 于 2006/4/12 13:36:00 發(fā)布:
re 最好能備注一下 |
|
| 8樓: | >>參與討論 |
| 作者: 我是浪子 于 2006/4/12 18:37:00 發(fā)布:
用dc跑一下 用dc跑一下,比較一下調(diào)用design ware的結(jié)果比較清楚! |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |