1、移位相加8位硬件乘法器电路设计报告 学号: 08437119 课程名称: FPGA设计 题目: 移位相加8位硬件乘法器电路设计 学 生 姓 名: 谈鹏 学 院(系):信息科学与工程学院 专 业 班 级: 通信081 一、 产品设计需求说明本产品实现的功能:比较方便地实现两个8位二进制数的乘法运算。设计参数 使用的芯片/硬件平台GW48实验系统 软件平台 WindowsXP+MuxplusII10.1二、 方案设计及实现1、系统实现原理和总体框图该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。其乘法原理是:乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次
2、的和相加;若为0,左移后以全零相加,直至被乘数的最高位。从下图可以清楚地看出此乘法器的工作原理。在下图中,START信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A7.0向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号。CLK为乘法时钟信号。当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,与门ANDARITH打开,8位乘数B7.0在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数的移出位为0时,与门全零输出。如此往复,直至8个
3、时钟脉冲后,乘法运算过程中止。此时REG16B的输出值即为最后的乘积。此乘法器的优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。本设计采用层次描述方式,且用原理图输入和文本输入混合方式建立描述文件。下图是乘法器顶层图形输入文件,它表明了系统由8位右移寄存器(SREG8B)、8位加法器(ADDER8)、选通与门模块(ANDARITH)和16位锁存器(REG16)所组成,它们之间的连接关系如下图所示。原理框图: 移位相加硬件乘法器电路原理图2、主要模块之8位右移寄存器模块的设计模块说明:输入为clk,load和din,输出为qb。模块的主要功能是数据右移 8位右
4、移寄存器工作流程图 源代码:-File:sreg8b.vhd -Designer:谈鹏 -Module: clock -Description: -Simulator:MAX plusII 10.0.9/Window XP-Synthesizer:MAX plusII 10.0.9/Window XP -Date:2011/05/02 -Modify date:2011/05/02LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sreg8b IS -8位右移寄存器 PORT(clk:IN STD_LOGIC; LOAD:IN STD_LOGIC;
5、 din:IN STD_LOGIC_VECTOR(7 DOWNTO 0); qb:OUT STD_LOGIC);END sreg8b;ARCHITECTURE behave OF sreg8b IS SIGNAL reg8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(clk,load) BEGIN IF load=1THEN reg8=din; -装载新数据 ELSIF CLKEVENT AND CLK=1THEN reg8(6 DOWNTO 0)=reg8(7 DOWNTO 1); -数据右移 END IF; END PROCESS; qb=reg8
6、(0); -输出最低位END behave;仿真图3、主要模块之8位加法寄存器模块的设计模块说明:输入为b,a,输出为s。模块的主要功能是实现两个8位数的加法运算。 8位加法寄存器的工作流程图源代码:-File:adder8.vhd -Designer:谈鹏 -Module: clock -Description: -Simulator:MAX plusII 10.0.9/Window XP-Synthesizer:MAX plusII 10.0.9/Window XP -Date:2011/05/02 -Modify date:2011/05/02LIBRARY IEEE;USE IEEE.
7、STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder8 IS -8位加法器 PORT(b,a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(8 DOWNTO 0);END adder8;ARCHITECTURE behave OF adder8 IS BEGIN s=0&a+b; 0,a并置再与b相加END behave;仿真图4、主要模块之选通与门模块的设计模块说明:输入为abin和din,输出为dout。模块的主要功能是完成8位与1位运算。 选通与门模
8、块的工作流程图NY源代码:-File:andarith.vhd -Designer:谈鹏 -Module: clock -Description: -Simulator:MAX plusII 10.0.9/Window XP-Synthesizer:MAX plusII 10.0.9/Window XP -Date:2011/05/02 -Modify date:2011/05/02LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY andarith IS PORT(abin:IN STD_LOGIC; din:IN STD_LOGIC_VECTOR
9、(7 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END andarith;ARCHITECTURE behave OF andarith ISBEGIN PROCESS(abin,din) BEGIN FOR I IN 0 TO 7 LOOP -循环,完成8位与1位运算 DOUT(I)=DIN(I) AND ABIN; END LOOP; END PROCESS;END behave;仿真图5、主要模块之16位锁存器的设计模块说明:输入为clk,clr和d,输出为q。模块的主要功能是将数据锁存。 16位锁存器工作流程图源代码:-File:
10、reg16b.vhd -Designer:谈鹏 -Module: clock -Description: -Simulator:MAX plusII 10.0.9/Window XP-Synthesizer:MAX plusII 10.0.9/Window XP -Date:2011/05/02 -Modify date:2011/05/02LIBRARY 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 ST
11、D_LOGIC_VECTOR(15 DOWNTO 0);END reg16b;ARCHITECTURE behave OF reg16b IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGIN PROCESS(clk,clr) BEGIN IF clr=1THEN R16S0); -清零信号 ELSIF CLKEVENT AND CLK=1THEN -时钟到来时,锁存输入值,并右移低8位 R16S(6 DOWNTO 0)=R16S(7 DOWNTO 1); -右移低8位 R16S(15 DOWNTO 7)=D; -将输入锁到高8位 END IF; END PROCESS;q=R16S;END behave;仿真图三、 仿真及延时分析系统总体仿真图(时序仿真)系统延时分析图建立/保持时间分析频率分析四、 总结:通过这次期末设计,我对MAX+PLUS的使用更加熟悉,了解了硬件乘法器的工作原理。同时也提高了我对代码编写和阅读的能力。过程中有好多细节需要注意的,比如说VHDL后缀名要用.vhd,保存的名字要跟实体名相一致等。由于时间有限,没能去实验室测试,稍有遗憾,以后有空肯定会去测试下。有些有疑问的地方是同学教我的,谢谢他们。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2