数字电路大型实验Word格式文档下载.docx
《数字电路大型实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字电路大型实验Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
useieee.std_logic_unsigned.all;
entitycnt10is
port(clk:
instd_logic;
clr:
cs:
qq:
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcnt10;
architectureoneofcnt10is
begin
process(clk,clr,cs)
begin
if(clr='
1'
)then
qq<
="
0000"
;
elsif(clk'
eventandclk='
if(cs='
if(qq=9)then
else
=qq+1;
endif;
endprocess;
process(qq)
co<
='
0'
else
end;
(2)CNT12的VHDL语言
entitycnt12is
instd_logic;
bufferstd_logic_vector(3downto0));
endcnt12;
architectureoneofcnt12is
process(clk)
if(clk'
if(qq=11)then
endone;
(3)CODE模块的VHDL语言
entitycodeis
port(
dd:
instd_logic_vector(3downto0);
outstd_logic;
clr:
lock:
outstd_logic
);
endcode;
architectureoneofcodeis
process(dd)
if(dd=0)then
clr<
if(dd=11)then
lock<
if((dd>
0)and(dd<
9))then
cs<
endone;
(4)LOCK模块的VHDL语言
entitylockis
clk:
outstd_logic_vector(3downto0)
);
endlock;
architectureoneoflockis
process(clk,dd)
begin
=dd;
4、CNT10、CNT12、CODE、LOCK模块的仿真结果
(1)CNT10模块的仿真结果
(2)CNT12模块的仿真结果
(3)CODE模块的仿真结果
(4)LOCK模块的仿真结果
5、项目下载步骤
(1)器件选定
选择器件为MAX7000S系列的EPM7128SLC84
(2)管脚锁定
所谓管脚锁定,就是将输入、输出信号安排在器件的指定管脚上。
在实际应用中,PLD器件常常与其它电路连在一起,因此PLD器件的管脚锁定应根据实际电路来确定。
由于本设计采用浙江工业大学电子创新基地自行研制的EDA实验板来验证设计项目,对于数字频率计应按下表来锁定引脚。
要进一步了解EDA实验板的详细情况。
信号名
管脚名
LED10
64
LED20
73
LED30
4
LED40
12
LED11
65
LED21
75
LED31
6
LED41
15
LED12
67
LED22
76
LED32
5
LED42
16
LED13
68
LED23
77
LED33
8
LED43
17
LED14
69
LED24
79
LED34
9
LED44
18
LED15
70
LED25
80
LED35
10
LED45
20
LED16
74
LED26
81
LED36
11
LED46
21
CLKIN
33
CLK1
35
(3)硬件编程
使用ByteBlaster下载电缆把数字频率计项目以JATG方式下载到EDA实验板的EPM7128SLC84器件中。
在编程过程中,若器件或电缆或电源有问题,则会产生错误警告信息。
(4)频率测量
仿真结果如下:
由仿真图可知,频率测量结果正确。
三、四位乘法器的设计
1、乘法控制器的的设计
(1)乘法控制器的ASM图
(2)控制器的VHDL语言程序
entitymulconis
port(start,i4,bi,clk:
endd,clr,ca,cb1,cb0,cm1,cm0,cc:
outstd_logic);
endmulcon;
architecturebehvofmulconis
signalcurrent_state,next_state:
bit_vector(1downto0);
constants0:
bit_vector(1downto0):
00"
constants1:
01"
constants2:
11"
constants3:
10"
com1:
process(current_state,start,i4)
casecurrent_stateis
whens0=>
if(start='
)thennext_state<
=s1;
elsenext_state<
=s0;
whens1=>
next_state<
=s2;
whens2=>
=s3;
whens3=>
if(i4='
endcase;
endprocesscom1;
com2:
process(current_state,bi)
endd<
clr<
ca<
cb1<
cb0<
cm1<
cm0<
cc<
if(bi='
)thenendd<
cb1<
cb0<
elseendd<
cm1<
endcase;
endprocesscom2;
reg:
process(clk)
ifclk='
andclk'
eventthen
current_state<
=next_state;
endprocessreg;
endbehv;
(3)控制器的仿真时序图
VHDL源程序仿真结果:
2、顶层原理图
3、顶层原理图仿真结果
四、30秒计时器设计
1、CNT3、CNT10模块的VHDL语言程序
(1)CNT3的VHDL语言
libraryieee;
entitycnt3is
clk:
clr:
cs:
qq:
bufferstd_logic_vector(3downto0)
);
endcnt3;
architectureoneofcnt3is
process(clk,clr,cs)
begin
if(clr='
qq<
0011"
elsif(clk'
if(cs='
if(qq=0)then
qq<
else
=qq-1;
endif;
endprocess;
end;
2、CNT3、CNT10的仿真结果
(1)CNT3的仿真结果
(2)CNT10的仿真结果
3、计时器原理图设计
4、30秒计时器结果仿真
五、实验体会
本次数字电路大型实验让我颇有体会,不仅让我们掌握了VHDL语言和如何构建原理图,而且还让我们学会了MAX+PLUS
的使用以及如何进行结果的仿真,让我们学会了硬件电路设计的又一种新的方法,而且能够让我们每个人都亲身进行操作,增强了我们自己的动手能力,也提高了我们的学习能力,以后如果碰到硬件电路的设计,就会轻松的多,就可以用现在学过的知识运用到实践中去,不过在实验中,我也碰到了一些问题,例如,有时VHDL语言编译的时候有错误,有警告等,这时只能一处一处的找错误,有时可能是由于符号引起的错误,要特别注意。
有时在构建原理图编译时也会碰到有错误、有警告的问题,这时可能是由于原理图中线没连好的缘故,就要重新回到原理图中修改再编译,有时还要注重原理图排线的美观问题,看起来感觉比较清晰一点。
总体上来说,这次实验对我们的帮助很大,以后能够让我们更好地运用到实践中去。