让心去旅行!
VHDL.Verilog实现有符号数乘法(转载)
上一篇 /
下一篇 2006-09-08 09:58:39 / 天气: 晴朗
/ 心情: 高兴
VHDL.Verilog实现有符号数乘法EDA中国门户网站3K;Y5J0BnTC/X
k
Sfr
EDA中国门户网站P(X/]$pbt NJ]G
在数字信号处理(DSP)中,乘加是最基本的运算,以至于很多FPGA厂商以MAC的多少及运算速度做为器件的一个重要指标。下面就乘法实现进行讨论。
N%TStqL dM0在DSP中,大多是有符合数的操作,这里给出有符号数乘法的VHDL和Verilog程序。EDA中国门户网站H,k\5}:jbq
LIBRARY ieee;
o*G4}"sbL!hy0USE ieee.std_logic_1164.ALL;
/`Q:?#dV0USE ieee.std_logic_arith.ALL;
z I Sd_-Mu
]~0Q0USE ieee.std_logic_signed.ALL;
a0`!I#ZZ.yx:vDr0USE ieee.std_logic_unsigned.ALL;
*mk!r.jUjvM0
W)?l-H ]0ENTITY signed_mult ISEDA中国门户网站:U5lMa?
PORT (clk: IN STD_LOGIC;
Js$mX$l6eF {-s0 a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
$i\Q:i0Oo0 b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
:D"Z)c;@?'w:UY0 result: OUT STD_LOGIC_VECTOR (15 DOWNTO 0)
"O BFl9M4m+Q:fh0 );
:qMg*^Q^0END signed_mult;EDA中国门户网站-G O~)H:IJe
(lZ#b9n2kA%M8D6S0ARCHITECTURE rtl OF signed_mult ISEDA中国门户网站!pEeq@7R
SIGNAL a_int, b_int: SIGNED (7 downto 0);EDA中国门户网站Eb#m4k [jZa(_
SIGNAL pdt_int: SIGNED (15 downto 0);EDA中国门户网站"zD;Ev!o-Y
BEGINEDA中国门户网站kI"qLD.U
result <= STD_LOGIC_VECTOR(pdt_int);EDA中国门户网站,HM-zZ h:n:G
Process(clk)EDA中国门户网站5GU;rj'b#Y"N
BeginEDA中国门户网站lQ`5sUZ
If rising_edge(clk) thenEDA中国门户网站
wW%kh-HQ"W*tP
-UsGvl \"q)q&yt0a_int <= SIGNED (a);
W$| G)h7d)mg0 b_int <= SIGNED (b);EDA中国门户网站/[G2M7Ql8tJ [,}
pdt_int <= a_int * b_int;
2j4uAK&R/` i0 end if;EDA中国门户网站m+pzn0r
end process
#iXi{*Lw&]J~0END rtl;
'La r;az(D L`2^0相应的Verilog程序:EDA中国门户网站 [-c%Wu I:pP
module signed_mult (out, clk, a, b)
K2D4xCV8zo0 output [15:0] out;EDA中国门户网站\ bKIm8WJ
input clk;EDA中国门户网站`;g&Hb F6VYO!~
input signed [7:0] a;EDA中国门户网站%n7|KF"vYM
input signed [7:0] b;EDA中国门户网站 ]]&RSl+hjEO
reg signed [7:0] a_reg;EDA中国门户网站8q/Hm8YC!|
reg signed [7:0] b_reg;EDA中国门户网站3\T&E{(H$gI
reg signed [15:0] out;
a8Gvr.V,Av2IG"AX0 wire signed [15:0] mult_out;EDA中国门户网站9Qt-[_
x$D
jr6X
assign mult_out = a_reg * b_reg;EDA中国门户网站%I$rW^n-R-SAMf
always@(posedge clk)EDA中国门户网站
M-I
BD0i;M
beginEDA中国门户网站xFy0A^:^%k*~ZE
a_reg <= a;
(o x+p VTh%~E(k0 b_reg <= b;EDA中国门户网站9O.ZV%kl
Z1F
out <= mult_out;
(zX&s2_Sji;@u0 endEDA中国门户网站e*S
f
@*@
S
对于无符号数,只需要将其中的signed换成unsigned即可。
导入论坛
收藏
分享给好友
推荐到圈子
管理
举报
TAG: