移位相加8位硬件乘法器电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
年月日
一、实验目的
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-38位右移寄存器流程图
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(7DOWNTO0);
QB:OUT STD_LOGIC);
END SREG8B;
ARCHITECTURE behav OF SREG8B IS
SIGNAL REG8:STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLK,LOAD)
BEGIN
IF LOAD='1'THEN REG8<=DIN;
ELSIF CLK'EVENT AND CLK='1'THEN
REG8(6DOWNTO0)<=REG8(7DOWNTO1);
END IF;
END PROCESS;
QB<=REG8(0);
END behav;
8位右移寄存器波形仿真图如图5-4所示;
图5-48位右移寄存器波形仿真图
2、8位加法寄存器模块的设计:输入为B,A,输出为S,模块的主要功能是实现两个8位数的加法运算;其流程图如图5-5所示
图5-58位加法寄存器流程图
VHDL语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER8IS
PORT(B,A:IN STD_LOGIC_VECTOR(7DOWNTO0);
S:OUT STD_LOGIC_VECTOR(8DOWNTO0));
END ADDER8;
ARCHITECTURE behav OF ADDER8IS
BEGIN
S<='0'&A+B;
END behav;
8位加法器波形仿真图如图5-6所示;
图5-68位加法器波形仿真图
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(7DOWNTO0);
DOUT:OUT STD_LOGIC_VECTOR(7DOWNTO0)); END ANDARITH;
ARCHITECTURE behav OF ANDARITH IS
BEGIN
PROCESS(ABIN,DIN)
BEGIN
FOR I IN0TO7LOOP
DOUT(I)<=DIN(I)AND ABIN;
END LOOP;
END PROCESS;
END behav;
波形仿真图为如图5-8所示:
图5-8选通与门波形仿真图
4、16位锁存器设计,输入为CLK,CLR和D,输出为Q
流程图如图5-9所示:
图5-916位锁存器流程图
VHDL语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG16B IS
PORT(CLK,CLR:IN STD_LOGIC;
D:IN STD_LOGIC_VECTOR(8DOWNTO0);
Q:OUT STD_LOGIC_VECTOR(15DOWNTO0)); END REG16B;
ARCHITECTURE behav OF REG16B IS
SIGNAL R16S:STD_LOGIC_VECTOR(15DOWNTO0); BEGIN
PROCESS(CLK,CLR)
BEGIN
IF CLR='1'THEN R16S<=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1'THEN