基于IP核的乘法器设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于IP核的乘法器设计

一、实验原理

下图给出了16位乘法器的原理图。在设计中,使用了IP核Math Function中的Multiplier 资源。

二、实验步骤

1. 打开ISE软件创建一个新的工程,并选择器件的类型。

2. 用IP核生成一个16位的乘法器multiplier1。

3. 用VHDL语言生成一个16位的乘法器multiplier2。

4. 用例化语句component,port map合成一个顶层文件top.vhd。

5. 调用ISE仿真器进行行为仿真,观察仿真结果。波形文件如下:

三、VHDL源代码

1. 运算符描述的乘法器子模块的VHDL的源代码

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity multiplier2 is

port (

clk : IN std_logic;

a : IN std_logic_VECTOR(15 downto 0);

b : IN std_logic_VECTOR(15 downto 0);

q : OUT std_logic_VECTOR(31 downto 0)

);

end multiplier2;

architecture Behavioral of multiplier2 is

begin

process(clk)

begin

if rising_edge(clk) then

q<=a*b;

end if;

end process;

end Behavioral;

2. 顶层文件的VHDL的源代码

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity top is

port (

clk : IN std_logic;

a : IN std_logic_VECTOR(15 downto 0);

b : IN std_logic_VECTOR(15 downto 0);

q1 : OUT std_logic_VECTOR(31 downto 0);

q2 : OUT std_logic_VECTOR(31 downto 0)

);

end top;

architecture Behavioral of top is

component multiplier1

port (

clk : IN std_logic;

a : IN std_logic_VECTOR(15 downto 0);

b : IN std_logic_VECTOR(15 downto 0);

q : OUT std_logic_VECTOR(31 downto 0)

);

END component;

component multiplier2

port (

clk : IN std_logic;

a : IN std_logic_VECTOR(15 downto 0);

b : IN std_logic_VECTOR(15 downto 0);

q : OUT std_logic_VECTOR(31 downto 0)

);

END component;

begin

Inst_multiplier1 : multiplier1

port map

(

clk=>clk,

a=>a,

b=>b,

q=>q1

);

Inst_multiplier2 : multiplier2

port map

(

clk=>clk,

a=>a,

b=>b,

q=>q2

);

end Behavioral;

相关文档
最新文档