您的当前位置:首页正文

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

来源:华拓网


电子技术课程设计

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

学 院 : 华科学院 专 业 : 通信工程 班 级 :通信052201H 姓 名 : 张茹 学 号 :200522080122

指导教师 :柴婷婷 2007年12月30日

ou 1

一, 设计任务与要求--------------------(3) 1, 内容 2, 要求

二, 总体框图---------------------------(3) 1, 电路的总体框图 2, 框图的说明 3, 设计思路 4, 方案设计

三, 选择器件与功能模块-----------------(5) 1, 选择器件各功能模块及功能说明

四, 功能模块----------------------------(8) 1, ADDER8B的模块 2, ANDARITH的模块 3, ARICTL的模块 4, REG16B的模块 5, SREG8B的模块

五, 总体设计电路图----------------------(14)1, 总体原理图 2, 仿真波形图 3, 管脚分配图 4, 硬件验证情况

六, 心得体会--------------------------------------(18)ou

2

移位相加8位硬件乘法器

一. 设计任务与要求

1.内容: 由8位加法器构成的以时序逻辑方式设计的8位乘法器乘法通过逐向

移位加原理来实现,从被乘数的最低位开始,若为1,则乘数左移与

上一次和相加;若为0,左移后以全零相加,直至被乘数的最高位。

2.要求: (1) 重点掌握VHDL设计电路模块

(2) 在掌握8位加法器设计的基础上,进一步掌握8×8位乘法器的设计;

(3)进一步学习开发系统,掌握MAX+PLUS II的设计流程。

二.总体框图

(电路的总体框图)

ou

3

1, 说明:此电路由五部分组成

2,它们分别是控制器,锁存器,寄存器,乘法器,加法器。

1控制器是一个乘法器的控制模块,用来接受实验系统上的连续脉冲。

2锁存器起锁存的作用,它可以锁存8位乘数。

3移位寄存器起移位的作用,便于被乘数可以逐位移出。

4乘法器功能类似一个特殊的与非门。

5加法器用于8位乘数和高8位相加。

2,设计思路:

纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现

宽位乘法器,基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不

实用。这里介绍由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一

定的实用价值,而且由FPGA构成实验系统后,可以很容易的用ASIC大型集成芯

片来完成,性价比高,可操作性强。其乘法原理是:乘法通过逐项移位相加原理

来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若

为0,左移后以全零相加,直至被乘数的最高位。

3,方案设计:

此设计是由八位加法器构成的以时序逻辑方式设计的八位乘法器,它的核心器件

是八加法器,所以关键是设计好八位加法器

方案一:八位直接宽位加法器,它的速度较快,但十分耗费硬件资源,对于工业

化设计是不合理的

ou

4

方案二:由两个四位加法器组合八位加法器,其中四位加法器是四位二进制并行

加法器它的原理简单,资源利用率和进位速度方面都比较好。综合各方面的考 虑,决定采用方案二。

2

三,选择器件与功能模块 1, 选择器件

SREG8B(移位寄存器);

REG16B(16位琐存器);

ARICTL(运算控制器);

ANDARITH(1位乘法器);

ADDER8B(8位加法器);

数码管(显示结果)。

(1)SREG8B的模块图

SREG8B是一个移位寄存器,SREG8B有三个输入端,分别是clk,load,din[7..0]。

其中clk为时钟信号。一个输出端,它是qb。

ou

5

(2)REG16B的模块图

REG16B是一个16位锁存器,REG16B有三个输入端,它们分别是

clk,clr,d[8..0].

其中clk为时钟信号。有一个输出端,它是q[15..0].

(3)ARICTL的模块图

ARICTL是乘法器的控制模块,ARICTL有两个输入端,它们分别是clk,start。有三个输入

端,它们分别是clkout,rstall,ariend。

ou

6

(4)ANDARITH的模块图

ANDARITH是一个一位乘法器,ANDARITH有两个输入端。它们分别是abin,din[7..0]。有一个输出端,它是dout[7..0]。

(5)ADDER8B的模块图

ADDER8B是一个8位加法器,ADDER8B有三个输入端,它们分别是

cin,a[7..0],b[7..0]。其中a[7..0]为被乘数;b[7..0]为乘数。有两个输出端,

它们分别是s[7..0],cout。

ou 7

四,功能模块

(1)ADDER8B模块设计

ADDER8B的模块图

ADDER8B(8位加法器)的模块

ADDER8B的波形图

ADDER8B模块的功能:ADDER8B是一个8位加法器。有三个输入端(CIN,A[7..0],B[7..0]),其中A[7..0]是被乘数.B[7..0]是乘数。ADDER8B起到使两个数相加的作用;即在加法的基础上才能相乘。所以8位加法器是一个必不可少的模块。

ou

8

(2) ANDARITH模块设计

ANDARITH的模块图

ANDARITH(乘法器)的模块

ANDARITH的波形图

ANDARITH模块的功能:ANDARITH是一个1位乘法器。有两个输入端

(ABIN,DIN[7.0]).有一个输出端.DOUT[7..0]。ANDARITH起乘法的作用。它类

ou

9

似于一个特殊的与门。即当ABIN为‘1’时,DOUT直接输出DIN,而当ABIN为‘0’

时,DOUT输出“00000000”。

(3)ARICTL模块设计

ARICTL的模块图

ARICTL(控制器)的模块

ou

10

ARICTL的波形图

ARICTL模块的功能:ARICTL是一个乘法器的控制模块。为了接受实验系统上的

连续脉冲。有两个输入端(CLK,START);其中START信号的上跳沿及其高电平有

两个功能,即16位寄存器清零和被乘数A[7..0]向移位寄存器SREG8B加载;它

的低电平则作为乘法使能信号。CLK为乘法时钟信号。有三个输出

(CLKOUT,RSTALL,ARIEND)。

(4)REG16B模块设计

ou

11

REG16B的模块

REG16B(锁存器)的模块

REG16B的波形图

REG16B模块的功能:REG16B是一个16位锁存器。有三个输入端

(CLK,CLR,D[8..0]);其中CLK为时钟信号。有一个输出端(Q[15..0])。16位

锁存器主要为了锁存一些数,便于以后程序应用。

(5)SREG8B模块设计

ou 12

SREG8B的模块图

SREG8B(移位寄存器)的模块图

SREG8B的波形图

SREG8B模块的功能:SREG8B是一个移位寄存器。有三个输入端

(CLK,LOAD,DIN[7..0]);当被乘数被加载于8位右移寄存器后,随着每一时钟

ou

13

节拍,最低位在前,由低位至高位逐位移出。有一个输出端(QB)。

五.总体设计电路图

说明原理图:

本乘法器由五个模块组成,其中ARICTL是乘法运算控制电路,它的

START信号上的上跳沿与高电平有2个功能,即16位寄存器清零和被

乘数A[7...0]]向移位寄存器SREG8B加载;它的低电平则作为乘法使

能信号,乘法时钟信号从ARICTL的CLK输入。当被乘数被加载于8位

右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高

位逐位移出。当为1时,一位乘法器ANDARITH打开,8位乘数B[7..0]

在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的

高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当

被乘数的移出位为0时,一位乘法器全零输出。如此往复,直至8个时

ou

14

钟脉冲后,由ARICTL的控制,乘法运算过程自动中止,ARIEND输出高

电平,乘法结束。此时REG16B的输出即为最后的乘积。

2.时序仿真结果(以下是8位乘法器顶层设计的仿真波形图)

从上面的波形图看出,当9FH和FDH相乘时,第一个时钟上升沿后,其移位相

加的结果(在REG16B端口)是4F80H,第8个上升沿后,最终相乘结果是9D23H。

3.管脚分配图

ou

15

4,实验下载验证情况

由于我们实验室采用GW48系列EDA系统平台,根据GW48系统和乘法器原理,定

义管脚是:ARIEND接PIO39(D8),乘法运算时钟CLK接Clock0,清零及启动运

算信号START由键8(PIO38)控制,乘数B[7..0]接PIO58-PIO66(由键2,键

1输入8位二进制数),被乘数A[7..0]接PIO47-PIO54(由键4,键3输入8位

二进制数),乘积输出DOUT[15..0] 接PIO31-PIO16。编译,综合后向目标苡片

下载适配后的逻辑设计文件。下载适配后,键8输入高电平时,乘积锁存器清零,

乘数和被乘数值加载;低电平时开始乘法操作,8个脉冲后乘法结束,乘积显示

在数码管8~5位,高位在左。例如:我们在乘数和被乘数都输入08H,键8输入

低电平,8个脉冲后在高四个数码管显示0040H,实验证明成功。

ou

16

心得体会

通过三周的电子设计的数字部分EDA设计,我们掌握了系统的数字电子设计的方法,也知道了实验调试适配的具体操作方法。在设计过程中,我们遇到了各种问题,在老师的指导下和我们自己的努力,克服了各种问题,最后得到了成功。但是我也发现了一些问题,我们无法解决。如:在ARICTL控制器模块中有一个警告,还有在适配后得到频率高的执行速度还要慢一些等等。总之,这次设计使我掌握了很多有用的经验也学到了很多在书本上学不到知识,为以后的学习和工作打下坚实的基础

通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

器件的选择也很重要,只有选择合适的器件,才能正确的编译,从而能更好的做好本次试验!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

ou

17

ou 18

因篇幅问题不能全部显示,请点此查看更多更全内容