微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > VHDL.Verilog实现有符号数乘法

VHDL.Verilog实现有符号数乘法

时间:10-02 整理:3721RD 点击:
VHDL.Verilog实现有符号数乘法
在数字信号处理(DSP)中,乘加是最基本的运算,以至于很多FPGA厂商以MAC的多少及运算速度做为器件的一个重要指标。下面就乘法实现进行讨论。
在DSP中,大多是有符合数的操作,这里给出有符号数乘法的VHDL和Verilog程序。
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_signed.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY signed_mult IS
        PORT (clk: IN STD_LOGIC;
                a:                 IN STD_LOGIC_VECTOR (7 DOWNTO 0);
                b:                 IN STD_LOGIC_VECTOR (7 DOWNTO 0);
                result:                 OUT STD_LOGIC_VECTOR (15 DOWNTO 0)
        );
END signed_mult;
ARCHITECTURE rtl OF signed_mult IS
        SIGNAL a_int, b_int:                                 SIGNED (7 downto 0);
        SIGNAL pdt_int:                                 SIGNED (15 downto 0);
BEGIN
result <= STD_LOGIC_VECTOR(pdt_int);
Process(clk)
Begin
If rising_edge(clk)  then
        
a_int <= SIGNED (a);
        b_int <= SIGNED (b);
        pdt_int <= a_int * b_int;
        end if;
end process
END rtl;
相应的Verilog程序:
module signed_mult (out, clk, a, b)
        output                 [15:0]        out;
        input                        clk;
        input         signed        [7:0]         a;
        input         signed        [7:0]         b;
        reg        signed        [7:0]         a_reg;
        reg        signed        [7:0]         b_reg;
        reg        signed        [15:0]        out;
        wire         signed        [15:0]        mult_out;
        assign mult_out = a_reg * b_reg;
        always@(posedge clk)
        begin
                a_reg <= a;
                b_reg <= b;
                out <= mult_out;
        end
对于无符号数,只需要将其中的signed换成unsigned即可。

这个...难道可以综合,吗

Verilog程序我看可以综合,没有问题

verilog 2000开始支持了

只不过是在库中有相应的模块而已,也算是IP吧。

用VERLOG真的这么简单吗  而且在一个时钟内能完成乘法运算吗

这个要有IP才行的吧

试试先

先试试看,不知道能不能综合.

这样写也行么

作实现 的话最好用 IPCORE
特别是位宽比较大的时候

有点晕,学习中!

行  !  但是综合后的器件比较多(是一种并行的结构,没有锁存器),特别是在位数比较高的时候.
乘法中最剩资源的结构是移位加乘法结构.,但执行的时间较长.
还有一种就是加法数结构,这种的时间和资源介于上面两者之间

曾经的大学毕业设计课题,记忆尤新阿,呵呵

新的bill gates产生了

感谢小编,我正要设计乘法,多谢了

FDDDD

如果以后仿真工具发展到设计都可以这样做就好了!

VHDL程序的那个倒是能综合,但仿真结果怎么不对呀,请问那个有符号数的乘法,是怎么进行的?!

很不错的,谢谢小编

shi yi shi ba

就是综合出来信能也一般

有没有更好的方法啊。

Verilog实现有符号数乘法

这个综合出来恐怕很占资源吧?

没ip的话那段代码根本没有意义

有符号乘法的verilog实现呀!

modelsim认识signed吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top