EDA大作业电信.docx
- 文档编号:9854543
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:9
- 大小:423.80KB
EDA大作业电信.docx
《EDA大作业电信.docx》由会员分享,可在线阅读,更多相关《EDA大作业电信.docx(9页珍藏版)》请在冰豆网上搜索。
EDA大作业电信
《电子设计自动化》大作业
班级:
姓名:
2014年10月
目录
1设计要求1
2系统分析2
3模块设计2
4系统仿真2
5设计小结及课程体会2
1设计要求
设计综合数字计时器,时钟基准频率为1MHZ,要求实现00分00秒到23分59秒的时间计数。
基本设计要求:
1.设置使能控制信号en,当en=0正常工作,en=1计时停止;
2.设置系统的清零开关clr,当clr=0正常工作,clr=1计数全部清零;
3.利用MAX+PLUSⅡ软件模拟各计数器的工作情况。
提高部分要求:
1.将计数器的计数范围由分、秒计时扩展到时、分、秒计时;
2.提供整点提示功能,当时计数到达每个整点,系统可自动提示;
3.在计数范围内任意预置时间,实现时钟定时提醒的功能;
2系统分析
系统可以由计时器,整点报时构成。
子模块利用VHDL语言设计。
显示:
小时采用24进制,而分钟和秒均60进制。
根据题目设计要求:
系统的整体组装设计原理图如图所示,整个系统设计划分成大模块:
计时模块;整点报警模块。
3模块设计
(1)秒计数器模块VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsecondIS
PORT(CLK,RD:
INSTD_LOGIC;
SEC1,SEC0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDsecond;
ARCHITECTUREstuOFsecondIS
BEGIN
PROCESS(CLK,RD)
VARIABLEcnt1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEcnt0:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRD='1'THEN
cnt1:
="0000";
cnt0:
="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFcnt1="0101"ANDcnt0="1000"THEN
CO<='1';
cnt0:
="1001";
ELSIFcnt0<"1001"THEN
cnt0:
=cnt0+1;
ELSE
cnt0:
="0000";
IFcnt1<"0101"THEN
cnt1:
=cnt1+1;
ELSE
cnt1:
="0000";
CO<='0';
ENDIF;
ENDIF;
ENDIF;
SEC1<=cnt1;
SEC0<=cnt0;
ENDPROCESS;
ENDstu;
(2)分计数器模块VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYminuteIS
PORT(CLK,RD:
INSTD_LOGIC;
min1,min0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDminute;
ARCHITECTUREmOFminuteIS
BEGIN
PROCESS(CLK,RD)
VARIABLEcnt1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEcnt0:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRD='1'THEN
cnt1:
="0000";
cnt0:
="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFcnt1="0101"ANDcnt0="1000"THEN
CO<='1';
cnt0:
="1001";
ELSIFcnt0<"1001"THEN
cnt0:
=cnt0+1;
ELSE
cnt0:
="0000";
IFcnt1<"0101"THEN
cnt1:
=cnt1+1;
ELSE
cnt1:
="0000";
CO<='0';
ENDIF;
ENDIF;
ENDIF;
min1<=cnt1;
min0<=cnt0;
ENDPROCESS;
ENDm;
(3)时计数器模块VHDL程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityhouris
port(rst,hclk:
instd_logic;
hour0,hour1:
bufferstd_logic_vector(3downto0));
endhour;
architecturebbbofhouris
begin
process(rst,hclk,hour0,hour1)
begin
ifrst='0'then
hour0<="0000";
hour1<="0000";
elsifhclk'eventandhclk='1'then
ifhour0="0011"andhour1="0010"then
hour0<="0000";
hour1<="0000";
elsifhour0="1001"then
hour0<="0000";
hour1<=hour1+1;
else
hour0<=hour0+1;
endif;
endif;
endprocess;
endbbb;
(4)整点报警模块VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYalertIS
PORT(m1,m0,s1,s0:
INSTD_LOGIC_VECTOR(3DOWNTO0);
CLK:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDalert;
ARCHITECTUReaaaOFbaojingIS
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFm1="0000"ANDm0="0000"ANDs1="0000"ANDs0="0000"THEN
Q<='1';
ELSE
Q<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDaaa;
4系统仿真
(1)秒计时模块仿真
利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即CO=1;RD作为复位信号高电平有效,即低电平时正常循环计数,高电平清零。
(2)分计时模块仿真
此仿真用的程序就是秒仿真的程序
(3)时计时模块仿真
利用24进制计数器完成00到23的循环计数功能,当秒计数至23时,再来一个时钟脉冲则产生进位输出,即CO=1;rd作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。
(4)报警模块仿真
当分、秒均为0时,说明一个整点到来产生一个高电平信号,整点报警。
5设计小结及课程体会
虽然作业早已布置下来,但由于自己惰性,学习过后的好几周之后才进行的本次作业,MUS+PLUS2软件的操作已经忘记的七七八八了,不得不研究和向同学请教它的使用方法,终于完成了本次作业,过程艰辛,但效果还行。
本次作业让我们对所学的知识能有一个更高层次的理解,加强我们综合分析问题和解决问题的能力,进一步培养我们的编程和动手能力,让知识掌握的更加牢固,总之,本次作业收获颇丰。
感谢老师提供的这次机会,感谢在本次作业中帮助过我的同学!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 作业 电信