南昌航空大学实验报告
年 月
日
EDA 技术实验 课程名称:
课程名称:
班级:_09083114___姓名: 康惠洋
同组人:___________________________
指导老师评定:___________________________签名:________________________
移位相加 8 位硬件乘法器电路设计
一、 实验目的
1、学习移位相加 8 位硬件乘法器电路设计;
2、进一步提高学生应用 EDA 技术进行项目设计的能力。
二、 实验原理
纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以
实现宽位乘法器;基于 PLD 器件外接 ROM 九九表的乘法器则无法构成单片系
统,也不实用。本实验由 8 位加法器构成的以时序逻辑方式设计的 8 位乘法器,
具有一定的实用价值。其乘法原理是:乘法通过逐项移位相加原理来实现,从被
乘数的最低位开始,若为 1,则乘数左移后与上一次的和相加;若为 0,左移后
以全零相加,直至被乘数的最高位。原理框图如图 5-1 所示
三、 实验内容
图 5-1 原理框图
移位相加 8 位硬件乘法器电路原理图如图 5-2 所示;系统由 8 位右移寄存器
(SREG8B)、8 位加法器(ADDER8)、选通与门模块(ANDARITH)和 16 位锁存器
(REG16)组成。
START 信号的上跳沿及其高电平有两个功能,即 16 位寄存器清零和被乘数
A[7..0]向移位寄存器 SREG8B 加载;它的低电平则作为乘法使能信号。CLK 为乘
法时钟信号。当被乘数被加载于 8 位右移寄存器 SREG8B 后,随着每一时钟节拍,
最低位在前,由低位至高位逐位移出。当为 1 时,与门 ANDARITH 打开,8 位乘
数 B[7..0]在同一节拍进入 8 位加法器,与上一次锁存在 16 位锁存器 REG16B 中
的高 8 位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数
的移出位为 0 时,与门全零输出。如此往复,直至 8 个时钟脉冲后,乘法运算过
程中止。此时 REG16B 的输出值即为最后的乘积。此乘法器的优点是节省芯片资
源,它的核心元件只是一个 8 位加法器,其运算速度取决于输入的时钟频率。
图 5-2 移位相加 8 位硬件乘法器电路原理图
1、8 位右移寄存器模块的设计:输入为 CLK,LOAD 和 DIN,输出为 QB;
其流程图如图 5-3 所示
图 5-3
8 位右移寄存器流程图
VUDL 语言描述为;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SREG8B IS
PORT(
CLK:IN STD_LOGIC;
LOAD:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
QB:OUT STD_LOGIC);
END SREG8B;
ARCHITECTURE behav OF SREG8B IS
SIGNAL REG8:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS (CLK,LOAD)
BEGIN
IF LOAD='1' THEN REG8<=DIN;
ELSIF CLK'EVENT AND CLK='1' THEN
REG8(6 DOWNTO 0)<=REG8(7 DOWNTO 1);
END IF;
END PROCESS;
QB<=REG8(0);
END behav;
8 位右移寄存器波形仿真图如图 5-4 所示;
图 5-4 8 位右移寄存器波形仿真图
2、8 位加法寄存器模块的设计 :输入为 B,A,输出为 S,模块的主要功能是实现
两个 8 位数的加法运算;其流程图如图 5-5 所示
图 5-5 8 位加法寄存器流程图
VHDL 语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER8 IS
PORT(B,A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S :OUT STD_LOGIC_VECTOR(8 DOWNTO 0));
END ADDER8;
ARCHITECTURE behav OF ADDER8 IS
BEGIN
S<='0'& A+B;
END behav;
8 位加法器波形仿真图如图 5-6 所示;
图 5-6 8 位加法器波形仿真图
3、选通与门模块设计:输入为 ABIN 和 DIN,输出为 DOUT
流程图如图 5-7 所示:
图 5-7 选通与门流程图
VHDL 语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ANDARITH IS
PORT(ABIN:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ANDARITH;
ARCHITECTURE behav OF ANDARITH IS
BEGIN
PROCESS(ABIN,DIN)
BEGIN
FOR I IN 0 TO 7 LOOP
DOUT(I)<=DIN(I) AND ABIN;
END LOOP;
END PROCESS;
END behav;
波形仿真图为如图 5-8 所示:
4、16 位锁存器设计,输入为 CLK,CLR 和 D,输出为 Q
图 5-8 选通与门波形仿真图
流程图如图 5-9 所示:
图 5-9 16 位锁存器流程图
VHDL 语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG16B IS
PORT(CLK,CLR:IN STD_LOGIC;
D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END REG16B;
ARCHITECTURE behav OF REG16B IS
SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
PROCESS(CLK,CLR)
BEGIN
IF CLR='1' THEN R16S<=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1' THEN
R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);
R16S(15 DOWNTO 7)<=D;
END IF;
END PROCESS;
Q<=R16S;
END behav;
波形仿真图如图 5-10 所示:
图 5-10 16 位锁存器波形仿真图
5、移位相加 8 位硬件乘法器仿真波形如图 5-11 所示
图 5-11 8 位硬件乘法器时序仿真图
四、实验小结
通过本次实验,学会了移位相加 8 位硬件乘法器电路的设计,同时学会了器
内部模块的设计,进一步提高了自己的设计能力。