基于FPGA的任意位宽乘法器VHDL代码Quartus仿真
名称:基于FPGA的任意位宽乘法器VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
任意位宽乘法器
设计一个任意位宽乘法器,通过可调参数N,可以配置为任意位宽,N可以自由修改
可调参数N定义如下:
N : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图





部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY Multiplier_nbit IS GENERIC ( N : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位 ); PORT ( mult_A : IN STD_LOGIC_VECTOR(N - 1 DOWNTO 0);--mult_A是乘数,mult_B是被乘数 mult_B : IN STD_LOGIC_VECTOR(N - 1 DOWNTO 0);--mult_A是乘数,mult_B是被乘数 clk : IN STD_LOGIC;--时钟 start : IN STD_LOGIC;--start高电平时输入乘数 Done : OUT STD_LOGIC;--乘积计算完成 mult_product : OUT STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0)--乘积 ); END Multiplier_nbit; ARCHITECTURE behave OF Multiplier_nbit IS SIGNAL mult_product_buf : STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0) := "00000000000000000000000000000000"; TYPE State_type IS (INIT, ADD, SHIFT); -- 定义状态 SIGNAL state : State_Type:=INIT; -- 创建信号--初始状态为INIT SIGNAL mult_B_buf : STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0) := "00000000000000000000000000000000"; --临时变量 SIGNAL Count : INTEGER := 0; BEGIN PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN CASE state IS WHEN INIT => IF (start = '1') THEN state <= ADD;--start有效跳转到下一个状态ADD mult_B_buf(N - 1 DOWNTO 0) <= mult_B;--取乘数 mult_B_buf(2 * N - 1 DOWNTO N) <= "0000000000000000";--临时变量的高16位置0 ELSE mult_product_buf <= "00000000000000000000000000000000"; Count <= 0; Done <= '0'; --运算未完成 state <= INIT;--初始状态 END IF;
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的任意位宽乘法器VHDL代码Quartus仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的任意位宽乘法器VHDL代码Quartus仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm