八位乘法器VHDL及功能模块说明_第1页
八位乘法器VHDL及功能模块说明_第2页
八位乘法器VHDL及功能模块说明_第3页
八位乘法器VHDL及功能模块说明_第4页
八位乘法器VHDL及功能模块说明_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA课程设计报告

实验名称:八位乘法器

目录

一。引言

1o1EDA技术的概念..............................................

1.2EDA技术的特点..............................................

U3EDA设计流程.................................................

1.4VHDL介绍......................................................

二.八位乘法器的设计要求与设计思路....................

2.1设计目的.......................................................

••

2.2设计要求....................................................

三.八位乘法器的综合设计....................................

3o1八位乘法器功能............................................

•••

3o2八位乘法器设计方案.......................................

3.3八位乘法器实体设计.......................................

3o4八位乘法器VHDL设计..............................

3o5八位乘法器仿真图形.....................................

心得体会...................................................

参考文献

一、引言

1o1EDA技术的概念

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计

算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程

(CAE)的概念发展而来的.EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描

述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、

布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

1.2EDA技术的特点

利用EDA技术进行电子系统的设计,具有以下几个特点:①用软件的方式设计硬件;②用

软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可

用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片

上,体积小、功耗低、可靠性高.因此,EDA技术是现代电子设计的发展趋势。

1.3EDA设计流程

典型的EDA设计流程如下:

1、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用

文本或图形方式表达出来。

2、编译.完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一

5.VHDL区别于其他的HDL,已形成标准,其代码在不同的系统中可交换建模。

二、八位乘法器的设计要求与设计思路

2.1设计目的

本次设计的目的就是通过实践深入理解EDA技术并掌握VHDL硬件描述语言的设计方法和思

想。通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和

基本单元电路的综合设计应用.通过对八位乘法器的设计,巩固和综合运用所学知识,提高设

计能力,提高分析、解决计算机技术实际问题的独立工作能力.

2O2设计要求.

设计一个乘法器的模块,接受实脸系统上的连续脉冲,当给定启动/清零指令时,能自

动发出CLK信号驱动乘法预算,当8个脉冲后自动停止。设计一个纯组合电路的8*8等于

16位的乘法器(选择不同的流水线方式),具体说明并比较这几种乘法器的逻辑资源占用情

况和运行速度情况。

通迂独立的设计,能够完整的完成老师分配的课程设计任务。通过对电梯控制系统的设计,

掌握所学EDA课程的基本知识和对VHDL语言的综合设计应用。通过课程设计,提高设计能

力,提高分析解决实际问题的能力,并在设计中了解硬件编程的流程和思潞,为以后工作和

发挥技术打下基础.

三、八位乘法器的综合设计

3.1八位乘法器功能

由8位加法器构成的以时序逻辑方式设计的8位乘法器,此乘法器具有一定的实用价

值。其乘法原理是:乘法通过逐项位移相加原理来实现,从被乘数的最低位开始,若为1,则

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

是乘法运算控制电路,它的START(可锁定于引脚I/049)信号的上跳沿与高电平有两个功

能,即16位寄存器清零和被乘数A[7..0]向移位寄存器SREG8B加载:它的低电平则作为乘

法使能信号。乘法时钟信号从ARICTL的CLK输入。当被乘数加载于8位右移寄存器SREG8B

后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出.当为1时,与门ANDARITH打开,

8为乘数B[7..0]在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高

8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器.而当被乘数移出位为0时,与

门全零输出.如此往复,直至8个时钟脉冲后,由ARICTL的控制,乘法运算过程自动中止。

ARIEND输出高电平,以此可点亮一发光管,以示乘法结束。此时REG16B的输出值即为最后乘

积。

3.2八位乘法器设计方案

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

是不合埋的。

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

器,它的原理简单,资源利用率和进位速度等方面较好,综合各方面的考虑,决定采用第二

种方案。

3.3八位加法器设计思路

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

器,由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一定的使用价值。而且由

FPGA构成实脸系统后,可以很容易的用ASIC大型集成芯片来完成,性价比高,可操作性强。

其乘法原理是:乘法通过逐项移位相加原理来完成,从被乘数的最低位开始,若为1,则乘数

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

3.5八位乘法器各功能模块VHDL描述

1.Iibraryieee;---四位二进制并行加法器

useieee.std_Iogic_1164.all;

useieee.std_Iogic_unsigned.all;

entityadd4bis

port(cin:instd_logic;

a,b:instd_Iogic_vector(3downto0);

s:outstd_Iogic_vector(3downto0);

cout:outstd_logic);

end;

architectureoneofadd4bis

signaIsint,aa,bb:std_Iogic_vector(4downto0);

begin

aaU0f&a;

bbUO'&b;

sint(=aa+bb+cin;

s<=sint(3downto0);

cout<=sint(4);

end;

2.Iibraryieee-由两个四位二进制并行加法器级联而成的八位二进制加法器;

useieee.std_Iogic_1164.aII;

useieee。std_Iogic_unsigned.all;

entityadder8bis

port(cin:instd_logic;

a,b:instd_logic_vector(7downto0);

s:outstd_logic_vector(7downto0);

cout:outstd_logic);

end;

architectureoneofadder8bis

componentadd4b一对要调用的元件add4b的端口进行说明

port(cin:instd_logic;

a,b:instd_Iogic_vector(3downto0);

s:outstd_Iogic_vector(3downto0);

cout:outstd_logic);

endcomponent;

signaIcarryout:std_logic;

begin

u1:add4bportmap(cin,a(3downto0),b(3downto0),s(3downto0),carryout);

u2:add4bportmap(carryout,a(7downto4),b(7downto4),s(7downto4),

cout);

end;

3.Iibraryieee---一位乘法器;

useieeeostd_logic_1164.alI;

useieee.std_Iogic_unsigned.all;

entityandarithis

port(abin:instd_logic;

din:instd_Iogic_vector(7downto0);

dout:outstd_logic_vector(7downto0));

end;

architectureoneofandarithis

begin

process(abin,din)

begin

foriin0to7Ioop

dout(i)〈=din(i)andabin;

endIoop;

endprocess;

end;

4.Iibraryieee;一乘法运算控制器

useieeeostd_logic_1164.all;

useieee.std_logic_unsignedoall;

entityarictIis

port(cIk,start:instd_logic;

cIkout,rstaII,ariend:outstd_logic);

end;

architectureoneofarictIis

signaIcnt4b:std_Iogic_vector(3downto0);

begin

rstaII〈二start;

process(cIk,start)

begin

ifstarts*Fthencnt4b<=”0000”;

eIsifcIk'eventandelk='1'then

ifcnt4b<8then——小于8则计数,等于8则表明乘法运算已经结束

cnt4b<=cnt4b+1;

endif;

endif;

endprocess:

process(cIk,cnt4b,start)

begin

ifstart='O'then

ifcnt4b〈8then

cIkout{=cIk;ariend<='O';

eIseclkout<=,O';ariend仁'1';

endif;

eIsecIkout<=clk;ariend<=,O';

endif;

endprocess;

end;

5.Iibraryieee;---16位锁存器

useieee.std_Iogic_1164.all;

useieeeostd_Iogic_unsigned.all;

entityreg16bis

port(cIk,cIr:instd_logic;

d:instd_Iogic_vector(8downto0);

q:outstd_Iogic_vector(15downto0));

end;

architectureoneofreg16bis

signaIr16s:std_logic_vector(15downto0);

begin

process(elk,clr)

begin

ifclr='Fthenr16s<="0000000000000000,,;

eIsifelk'eventandcIk='1*then

r16s(6downto0)<=r16s(7downto1);

r16s(15downto7)<=d;

endif;

endprocess;

q〈二r16s;

end;

6.Iibraryieee;---8位右移寄存器

useieee.std_Iogic_1164。all;

useieee.std_Iogic_unsigned.all;

entitysreg8bis

port(elk,load:instd_logic;

din:instd_logic_vector(7downto0);

qb:outstd_logic);

end;

architectureoneofsreg8bis

signaIreg8:std_Iogic_vector(7downto0);

begin

process(elk,load)

begin

ifelk'eventandcIk='1*then

ifload='1'thenreg8<=din;

eIsereg8(6downto0)<=reg8(7downto1);

endif;

endif;

endprocess;

qb<=reg8(0);

end;

7.Iibraryieee;----8位乘法器顶层设计

useieee.std_Iogic_1164Oall;

useieee.std_logic_unsignedoall;

entitymuIt8x8is

port(elk:instd_logic;

start:instd_logic;

a,b:instd_Iogic_vector(7downto0);

dout:outstd_Iogic_vector(15downto0);

ariend:outstd_logic);

end;

architecturestrucofmult8x8is

componentadder8bis

port(cin:instd_logic;

a,b:instd_Iogic_vector(7downto0);

s:outstd_Iogic_vector(7downto0);

cout:outstd_logic);

endcomponent;

componentandarithis

port(abin:instd_logic;

din:instd_Iogic_vector(7downto0);

dout:outstd_Iogic_vector(7downto0));

endcomponent;

componentarictIis

port(cIk,start:instd_logic;

cIkout,rstaII,ariend:outstd_logic);

endcomponent;

componentreg16bis

port(cIk,cIr:instd_logic;

d:instd_Iogic_vector(8downto0);

q:outstd_logic_vector(15downto0)):

endcomponent;

componentsreg8bis

port(elk,load:instd_logic;

din:instd_Iogic_vector(7downto0);

qb:outstd_logic);

endcomponent;

signaIgndint:std_logic;

signaIintcIk:std_logic;

signaIrstaII:std_logic;

signaIqb:std_logic;

signaIandsd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论