EDA实习之8位乘法器设计文档格式.docx

上传人:b****2 文档编号:4267844 上传时间:2023-05-03 格式:DOCX 页数:19 大小:160.71KB
下载 相关 举报
EDA实习之8位乘法器设计文档格式.docx_第1页
第1页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第2页
第2页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第3页
第3页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第4页
第4页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第5页
第5页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第6页
第6页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第7页
第7页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第8页
第8页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第9页
第9页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第10页
第10页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第11页
第11页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第12页
第12页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第13页
第13页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第14页
第14页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第15页
第15页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第16页
第16页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第17页
第17页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第18页
第18页 / 共19页
EDA实习之8位乘法器设计文档格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA实习之8位乘法器设计文档格式.docx

《EDA实习之8位乘法器设计文档格式.docx》由会员分享,可在线阅读,更多相关《EDA实习之8位乘法器设计文档格式.docx(19页珍藏版)》请在冰点文库上搜索。

EDA实习之8位乘法器设计文档格式.docx

硬件平台:

软件平台:

2方案设计及实现2

系统实现原理2

设计步骤2

系统介绍:

2

原理框图:

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

源代码:

4

仿真图:

5

仿真分析:

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

6

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

7

8

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

10

系统总体仿真11

11

3硬件调试11

调试方法:

调试步骤:

调试结果及分析:

12

4心得体会及总结12

5参考文献12

6附录13

引脚锁定13

功能扩展13

1产品设计介绍

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

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

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

由8位加法器构成的以时序逻借方式设汁的8位乘法器,具有一左的实用价值。

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

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

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

GW48EDA实验系统

MAX+plusII;

Windows?

2方案设计及实现

系统实现原理

在下图中,START信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A17..0]向移位寄存器SREG8B加载;

它的低电平则作为乘法使能信号。

CLK为乘法时钟信号。

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

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

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

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

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

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

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

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

设计步骤

此移位相加8位硬件乘法器分为四大部分。

第一部分:

8位寄存器设计

第二部分:

选通与门设计

第三部分:

8位带进位加法器

第四部分:

16位锁存器

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

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

模块说明:

输入为elk、load和din,输出为q;

模块功能:

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

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

开始

装载新数据数据右移

输出最低位

结束

libraryieee;

useSREG8Bis

port(elk,load:

instd_logic;

din:

instd_logic_vector(7downto0);

q:

outstd_logic):

endSREG8B;

architecturebehaveofSREG8Bis

signalreg8:

std_logic_vector(7downto0):

begin

process(load,elk)

begin

if(elk5eventandelk二T‘)then辻(load=,O'

)then

reg8<

=din;

else

reg8(6downto0)<

=reg8(7downto1);

endif:

endif;

endprocess;

q<

=reg8(0);

endbehave;

仿真图:

仿真分析:

在上升沿脉冲到来且load为0的时候,装载新数据,并输出din(0);

在load为1的时候,进行数据右移,并输出din(0)。

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

输入为d、b,输岀为q:

模块功能:

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

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

 

源代码:

useADDER8is

port(a:

instd_logic_vector(7downto0):

b:

q:

outstd_logic_vector(8downto0));

endADDER8:

architecturebehaveofADDER8is

=a+b;

endbehave:

Name.^Value.f

100.0n$

£

1V

10001111

-

11110000

101111111

erOWalaa[7..0]

0/de(0|gcp[2.2]

B0

$oddcrB-scfWaveformxdi:

or

Ref:

|O.Ons11』创Time:

710nsInterval:

卩1.阮

这是一个8位带进位加法器,输出q为输入a与输入b的和,最高位q(8)是进位位

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

输入为dbin和din,输出为q:

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

useANDERis

port(abin:

outstd_logic_vector(7downto0)):

endANDER;

architecturebehaveofANDERis

process

if(abin二i)thenq<

qU'

00000000"

;

endif:

.A

^arder.scf-W^efcrmEditor

Ref.StO.Ons

♦hlTime:

Interal:

•ISI.fe

4

Name:

Value:

80Uiis

i

nrabin

衫血

mmw

帚q

mm

"

3

I

在abin为T的时候,输出q二din;

在abin为©

的时候,输出q二“00000000”。

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

输入为elk、clr和din,输出为q:

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

16位锁存器工作流程图

useSREG16Bis

port(elk,clr:

instd_logic_vector(8downto0);

outstd_logic_vector(15downto0));

endSREG16B;

architecturebehaveofSREG16Bissignalregl6:

std_logic_vector(15downto0);

process(clr,elk)

辻(clr二'

O'

regl6〈二"

0000000000000000"

elsif(clk^eventandelk二T‘)thenregl6(15downto7)<

regl6(6downto0)〈二regl6(7downto1);

=regl6;

当clr为'

0'

的时候,输出清零;

在clr为'

1'

且上升沿脉冲到来的时候,输入din锁存至输出的高9位且将低8位右移一位。

系统总体仿真

将输入A设定为21,输入B设定为32,按下START(键8),连续来8个脉冲后,输出为0672,与理论计算结果相同。

3硬件调试

调试方法:

在GW48EDA实验箱上选择电路模式1,8位输入A、B分别锁定键1、2、3、4,START信号锁定键&

16位输出锁定数码管5、6、7、8,CLK信号选择2KHz。

1.输入A设定为21,输入B设定为32;

选择2KHz,按下START(键8);

3•观察数码管5、6、7、8o

结果:

在第8个脉冲到来时,数码管上显示0672;

分析:

与仿真波形的结果相同,更改输入A,B的数据,数码管的输出结果与仿真波形都相同,达到设计要求。

4心得体会及总结

总结

在长达十天的课程设计当中,我更加熟悉了MAX+plusII软件的使用,比如说实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。

加深了对VHDL编程语言的理解,尤其是本课题中锁存器的设计让我更清楚进程、变量.信号的使用及它们之间的区别。

EDA这门课程还是非常重要的。

通过这次EDA课程设计,意识到了其重要性。

当然,团队合作也很重要,非常感谢其他组员的配合,才能让这次的EDA课程设计快速的完成。

遇到的问题

10

在调试过程中,其输出结果与仿真波形总是不一致,但是一直找不到错误。

后来,想到了原因是因为引脚锁定时锁定错误。

一个非常低级的错误,让我多走了一些弯路。

提醒自己在做各种事情的时候要小心谨慎,不要粗心大意。

5参考文献

(1)朱正伟编着《EDA基础及应用》

[2]韩学超,张小鸣编着《EDA技术开发系统GW48实验指导书》

6附录

引脚锁定

选择器件FLEXEPF10K10-PLCC84-4

名称

引脚号

A(0)

5

B(0)

17

A(l)

6

B(l)

18

A

(2)

7

B

(2)

19

A(3)

8

B(3)

21

A(4)

9

B(40

22

A(5)

B(5)

23

A(6)

11

B(6)

24

A(7)

16

B(7)

25

START

81

CLK

43

DOUT(0)

27

DOUT(l)

28

DOUT

(2)

29

DOUT(3)

30

DOUT(4)

35

DOUT(5)

36

DOUT(6)

37

DOUT(7)

38

DOUT(8)

39

DOUT(9)

47

DOUT(10)

48

DOUT(11)

49

DOUT(12)

50

DOUT(13)

51

DOUT(14)

52

DOUT(15)

53

功能扩展以下内容是为了显示本次课程设讣的题l_T4:

MUTIPLYS采用verilog语言。

代码如下:

modulelcd(clk,rs,rw,en,dat);

inputelk;

output[7:

0]dat;

outputrs,rw,en;

rege;

reg[7:

regrs;

reg[15:

0]counter;

set0=4,hO;

setl二4’hl;

set2二4'

h2;

set3=4'

h3;

dat0=4Jh4;

dat1二4'

h5;

dat2=4,h6;

dat3=4Jh7;

dat4=4'

h8;

dat5=4?

h9;

dat6=4JhA;

dat7=4'

hB;

dat8=4'

hC;

dat9=4JhD;

dat10二4'

hE;

datll二5'

hlO

parameternul=4,hF;

always@(posedgeelk)begincounter=counter+l;

if(counter==16,hOOOf)clkr二、clkr;

end

always@(posedgeclkr)begin

current二next;

case(current)

setO:

beginrs<

=0;

dat〈二8'

h30;

next<

=setl;

end

setl:

hOc;

=set2;

12

set2:

rs<

=0

dat<

set3:

datO:

=l

datl:

dat2:

dat3:

dat4:

dat5:

dat6:

dat7:

dat8:

dat9:

IT

L"

〃〃

next〈二set3;

next<

=datO;

next〈二datl;

=dat2;

next〈二dat3;

next〈二dat4;

next〈二dat5;

next〈二dat6;

=dat7;

next〈二dat8;

next〈二dat9;

=datlO;

8'

h6;

hl;

4—

datlO:

datll:

nul:

=l:

dat<

="

“;

nex二datll;

endrs<

=l;

=,z“;

next〈二nul;

enddat<

=8,h00;

default:

endcase

beginrs<

if(ent!

二2'

h2)

e<

next〈二setO;

ent<

=cnt+l;

beginnext〈二nul;

e<

next=setO;

assignen=clkre;

assignrw=0;

endmodule

13

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

当前位置:首页 > 总结汇报 > 学习总结

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

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