移位相加8位硬件乘法器电路设计报告.docx

上传人:b****3 文档编号:4353388 上传时间:2023-05-07 格式:DOCX 页数:13 大小:212.79KB
下载 相关 举报
移位相加8位硬件乘法器电路设计报告.docx_第1页
第1页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第2页
第2页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第3页
第3页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第4页
第4页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第5页
第5页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第6页
第6页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第7页
第7页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第8页
第8页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第9页
第9页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第10页
第10页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第11页
第11页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第12页
第12页 / 共13页
移位相加8位硬件乘法器电路设计报告.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

移位相加8位硬件乘法器电路设计报告.docx

《移位相加8位硬件乘法器电路设计报告.docx》由会员分享,可在线阅读,更多相关《移位相加8位硬件乘法器电路设计报告.docx(13页珍藏版)》请在冰点文库上搜索。

移位相加8位硬件乘法器电路设计报告.docx

移位相加8位硬件乘法器电路设计报告

学号:

08437119

 

课程名称:

FPGA设计

题目:

移位相加8位硬件乘法器电路设计

学生姓名:

谈鹏

学院(系):

信息科学与工程学院专业班级:

通信081

一、产品设计需求说明

本产品实现的功能:

比较方便地实现两个8位二进制数的乘法运算。

设计参数

使用的芯片/硬件平台

GW48实验系统

软件平台

WindowsXP+MuxplusII10.1

二、方案设计及实现

1、系统实现原理和总体框图

该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。

其乘法原理是:

乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。

从下图可以清楚地看出此乘法器的工作原理。

在下图中,START信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A[7..0]向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号。

CLK为乘法时钟信号。

当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。

当为1时,与门ANDARITH打开,8位乘数B[7..0]在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。

而当被乘数的移出位为0时,与门全零输出。

如此往复,直至8个时钟脉冲后,乘法运算过程中止。

此时REG16B的输出值即为最后的乘积。

此乘法器的优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。

本设计采用层次描述方式,且用原理图输入和文本输入混合方式建立描述文件。

下图是乘法器顶层图形输入文件,它表明了系统由8位右移寄存器(SREG8B)、8位加法器(ADDER8)、选通与门模块(ANDARITH)和16位锁存器(REG16)所组成,它们之间的连接关系如下图所示。

原理框图:

移位相加硬件乘法器电路原理图

2、主要模块之8位右移寄存器模块的设计

模块说明:

输入为clk,load和din,输出为qb。

模块的主要功能是数据右移

8位右移寄存器工作流程图

源代码:

--File:

sreg8b.vhd

--Designer:

谈鹏

--Module:

clock

--Description:

--Simulator:

MAXplusII10.0.9/WindowXP

--Synthesizer:

MAXplusII10.0.9/WindowXP

--Date:

2011/05/02

--Modifydate:

2011/05/02

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYsreg8bIS--8位右移寄存器

PORT(clk:

INSTD_LOGIC;LOAD:

INSTD_LOGIC;

din:

INSTD_LOGIC_VECTOR(7DOWNTO0);

qb:

OUTSTD_LOGIC);

ENDsreg8b;

ARCHITECTUREbehaveOFsreg8bIS

SIGNALreg8:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(clk,load)

BEGIN

IFload='1'THENreg8<=din;--装载新数据

ELSIFCLK'EVENTANDCLK='1'THEN

reg8(6DOWNTO0)<=reg8(7DOWNTO1);--数据右移

ENDIF;

ENDPROCESS;

qb<=reg8(0);--输出最低位

ENDbehave;

仿真图

3、主要模块之8位加法寄存器模块的设计

模块说明:

输入为b,a,输出为s。

模块的主要功能是实现两个8位数的加法运算。

8位加法寄存器的工作流程图

 

源代码:

--File:

adder8.vhd

--Designer:

谈鹏

--Module:

clock

--Description:

--Simulator:

MAXplusII10.0.9/WindowXP

--Synthesizer:

MAXplusII10.0.9/WindowXP

--Date:

2011/05/02

--Modifydate:

2011/05/02

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYadder8IS--8位加法器

PORT(b,a:

INSTD_LOGIC_VECTOR(7DOWNTO0);

s:

OUTSTD_LOGIC_VECTOR(8DOWNTO0));

ENDadder8;

ARCHITECTUREbehaveOFadder8IS

BEGIN

s<='0'&a+b;0,a并置再与b相加

ENDbehave;

仿真图

4、主要模块之选通与门模块的设计

模块说明:

输入为abin和din,输出为dout

模块的主要功能是完成8位与1位运算。

 

选通与门模块的工作流程图

 

N

Y

 

源代码:

--File:

andarith.vhd

--Designer:

谈鹏

--Module:

clock

--Description:

--Simulator:

MAXplusII10.0.9/WindowXP

--Synthesizer:

MAXplusII10.0.9/WindowXP

--Date:

2011/05/02

--Modifydate:

2011/05/02

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYandarithIS

PORT(abin:

INSTD_LOGIC;

din:

INSTD_LOGIC_VECTOR(7DOWNTO0);

dout:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDandarith;

ARCHITECTUREbehaveOFandarithIS

BEGIN

PROCESS(abin,din)

BEGIN

FORIIN0TO7LOOP--循环,完成8位与1位运算

DOUT(I)<=DIN(I)ANDABIN;

ENDLOOP;

ENDPROCESS;

ENDbehave;

仿真图

5、主要模块之16位锁存器的设计

模块说明:

输入为clk,clr和d,输出为q。

模块的主要功能是将数据锁存。

16位锁存器工作流程图

源代码:

--File:

reg16b.vhd

--Designer:

谈鹏

--Module:

clock

--Description:

--Simulator:

MAXplusII10.0.9/WindowXP

--Synthesizer:

MAXplusII10.0.9/WindowXP

--Date:

2011/05/02

--Modifydate:

2011/05/02

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYreg16bIS

PORT(clk,clr:

INSTD_LOGIC;

d:

INSTD_LOGIC_VECTOR(8DOWNTO0);

q:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDreg16b;

ARCHITECTUREbehaveOFreg16bIS

SIGNALR16S:

STD_LOGIC_VECTOR(15DOWNTO0);

BEGIN

PROCESS(clk,clr)

BEGIN

IFclr='1'THENR16S<=(OTHERS=>'0');--清零信号

ELSIFCLK'EVENTANDCLK='1'THEN--时钟到来时,锁存输入值,并右移低8位

R16S(6DOWNTO0)<=R16S(7DOWNTO1);--右移低8位

R16S(15DOWNTO7)<=D;--将输入锁到高8位

ENDIF;

ENDPROCESS;

q<=R16S;

ENDbehave;

仿真图

 

三、仿真及延时分析

系统总体仿真图(时序仿真)

系统延时分析图

建立/保持时间分析

 

频率分析

四、总结:

通过这次期末设计,我对MAX+PLUS

的使用更加熟悉,了解了硬件乘法器的工作原理。

同时也提高了我对代码编写和阅读的能力。

过程中有好多细节需要注意的,比如说VHDL后缀名要用.vhd,保存的名字要跟实体名相一致等。

由于时间有限,没能去实验室测试,稍有遗憾,以后有空肯定会去测试下。

有些有疑问的地方是同学教我的,谢谢他们。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2