EDA技术与实践Word文件下载.docx
《EDA技术与实践Word文件下载.docx》由会员分享,可在线阅读,更多相关《EDA技术与实践Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
sec1【3·
0】表示秒十位
sec0【3·
min1【3·
min0【3·
hour1【3·
hour0【3·
(2)con1模块:
实现对按键数的统计,按键一次1,如果大于9时,自动回零。
con1模块的VHDL源代码如下。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcon1IS
PORT(s,rst:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREbehavOFcon1IS
SIGNALq1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(s,rst)
BEGIN
IFrst='
1'
thenq1<
="
0000"
;
ELSIFs'
EVENTANDs='
THEN
IFq1<
"
1001"
q1<
=q1+1;
else
ENDIF;
ENDPROCESS;
q<
=q1;
End;
(3)sst模块:
为整点报时提供控制信号,当58min,妙为52,54,56,58时,q500输出“1”;
妙为00时,q1K输出“1”。
这两个信号经过逻辑门实现报时功能。
ENTITYsstIS
PORT(clk:
m1,m0,s1,s0:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q500,q1k:
OUTSTD_LOGIC);
ARCHITECTUREoneOFsstIS
PROCESS(clk)
IFclk'
EVENTANDclk='
IFm1="
0101"
ANDm0="
ANDs1="
IFs0="
0001"
ors0="
0011"
0111"
q500<
='
ELSE
0'
ENDIF
ANDs0="
q1k<
(4)ccc模块:
对系统时钟clk输入的4MHz频率信号进行分频,产生频率分别为1000Hz、500Hz和1Hz的时钟信号。
ccc模块的VHDL源代码如下。
ENTITYcccIS
q500,q1k,q1sec:
ARCHITECTUREoneOFcccIS
SIGNALx,y,z:
STD_LOGIC;
PROCESS(CLK)
VARIABLEcnt:
INTEGERRANGE0TO1999;
THEN
IFcnt<
1999THEN
cnt:
=cnt+1;
=0;
x<
=notx;
ENDPROCESS;
=x;
PROCESS(x)
begin
IFx'
EVENTANDx='
y<
=noty;
=y;
PROCESS(y)
INTEGERRANGE0TO499;
IFY'
EVENTANDY='
499THEN
z<
=notz;
q1sec<
=z;
(5)hour模块:
小时计数电路是由IC5和IC6组成的24进制计数电路
hour模块的VHDL源代码如下。
LIBRARYIEEE;
ENTITYhourIS
PORT(clk,clr,rst:
hour0,hour1:
hour11,hour00:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
co:
ENDhour;
ARCHITECTUREbehavOFhourIS
SIGNALclk1:
SIGNALq:
SIGNALp:
BEGIN
A:
PROCESS(clk,clr,rst)
THENq<
ELSIF(clk'
)andclr='
IFhour0="
IFq="
clk1<
=q+1;
=hour0;
ENDPROCESSA;
B:
PROCESS(RST,CLR,CLK1)
THENp<
ELSIF(clk1'
EVENTANDclk1='
IFhour1="
IFp="
0010"
p<
=p+1;
=hour1;
ENDPROCESSB;
C:
PROCESS(CLK,CLK1)
IFclk'
ANDq="
0100"
CO<
P=”0000”;
Q=”0000”;
ENDPROCESSC;
hour00<
=q;
hour11<
=p;
ENDbehav;
hour模块儿为一个二十四进制计数器。
其外部接口功能如下:
clk为触发信号输入端口,clr为清零端,rst为复位端,hour0和hour1为时间调控输入端,hour00和hour11为计时输出端(hour00为个位、hour11为十位)。
本模块儿基本逻辑功能如下:
当hour0和hour1端无时间调控信号输入时,其计数功能不变。
输入一个触发信号计数一次,个位十次一循环然后十位进一。
直到十位为二、个位为四时计数器清零,然后计数器再从零开始计数,依次循环。
当hour0和hour1端有时间调控信号输入时,则hour00和hour11端输出时间调控信号。
(6)min模块
Min源代码如下:
ENTITYminIS
PORT(rst,clr,clk:
min0,min1:
inSTD_LOGIC_VECTOR(3DOWNTO0);
min00,min11:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:
ENDmin;
ARCHITECTUREbehavOFminIS
SIGNALcnt0:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALcnt1:
STD_LOGIC_VECTOR(2DOWNTO0);
A:
PROCESS(rst,clr,clk)
THENcnt0<
)ANDclr='
IFcnt0="
cnt0<
=cnt0+1;
B:
PROCESS(rst,clr,clk1)
THENcnt1<
110"
IFcnt1="
cnt1<
000"
=cnt1+1;
PROCESS(clk,clk1)
100"
ANDcnt0="
cout<
min00(3DOWNTO0)<
=cnt0;
min11(2DOWNTO0)<
=cnt1;
(7)sec模块
sec源代码如下:
ENTITYsecIS
sec0,sec1:
sec00,sec11:
ENDsec;
ARCHITECTUREbehavOFsecIS
sec00(3DOWNTO0)<
sec11(2DOWNTO0)<
三、系统仿真
3.1数字钟仿真图
3.2数字钟编译报告
四:
实验总结
(1)各个模块之间的链接修改了很多次,提前没有整体构思好,单个模块设计好以后总是会在模块间的组合上出现接口不对应的情况。
在24/12小时制模块chg的设计中,不同的时间转换考虑的不周全(例如下午1~7点和下午8~11点的变化不一样)自己对知识的掌握还是不够好,有许多模块设计了很长的时间(无论是构思还是具体编程)。
(2)对课程的建议EDA课程上完以后,我感觉这门课程实际应用很强。
非常锻炼动手能力,与其他的课程很不一样。
希望学校增加该课的课时。