CPLD课程学习报告.docx
- 文档编号:28657624
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:27
- 大小:4.12MB
CPLD课程学习报告.docx
《CPLD课程学习报告.docx》由会员分享,可在线阅读,更多相关《CPLD课程学习报告.docx(27页珍藏版)》请在冰豆网上搜索。
CPLD课程学习报告
CPLD课程学习报告
前言
本设计以FPGA为核心,基于QuartusⅡ11.0软件,实现了数字电子钟的设计功能。
在设计中采用VHDL(硬件描述语言)进行编程,并且利用数码管设计的人机界面显示数字钟的时间以及用户自由设定的闹钟时间;采用分模块设计的方法,通过条件语句判断模块的调用,实现了人机界面显示内容的切换;本数字电子钟具有调时调分,定时定分,整点报时,花样闹钟等基本功能。
关键词:
数字电子钟,VHDL,时间调整,时间设定,花样闹钟
第1章、任务设计要求
第2章、基本时钟设计
第3章、整点报时闹钟设计
第4章、定时闹钟设计
第5章、多功能跑表设计
第6章、小结
第1章、任务设计要求
设计一个基于FPGA的数字电子钟
基本要求:
1、时、分、秒六位数码管显示(标准时间23点59分59秒);(30)
2、具有小时、分钟校准功能;(5)
3、完成合乎要求的设计报告。
(30)
扩展要求:
1、整点报时:
整点前56,57,58,59预报警,LEDG4,LEDG5,LEDG6,LEDG7四个绿灯依次点亮。
正点LEDR9红灯报警,即(绿--绿--绿--绿--红)。
(5)
2、跑表:
最大计时99分59秒99。
独立的跑表功能,即使用跑表功能时不能影响数字钟正常工作。
(10)
3、定时闹钟:
可在00:
00到23:
59之间由用户设定任一时间,到时用灯光报警。
(15)
4、定时闹钟花样一:
前10s,LEDR0---LEDR7依次点亮,且每次仅亮一盏灯;其后24s,LEDR0---LEDR7以流水灯顺序显示;再其后,LEDR0---LEDR7闪烁。
并可随时关断。
(15)
5、定时闹钟花样二:
用自己名字的声母和组号作显示,前10s依从左至右顺序显示单个字母,其他数码管不亮。
其后13秒以流水方式顺序显示。
再其后所有字母齐闪。
并可随时关断。
(20)
4、5任选其一。
6、其他(具有实用价值,越新奇越好)。
第二章、基本时钟的设计
1.设计思路
1.1分频模块
实现功能:
将系统的50MHz的输入时钟信号通过分频模块输出1Hz的单位时钟信号作为基本时钟的计数信号。
设计原理:
分频倍数:
当向分频模块输入50M个信号时分频模块输出1个信号。
主要源程序:
Libraryieee;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYxy31_divIS
Port(fre_50m:
instd_logic;fre_1:
outstd_logic);
end;
architectureoneofxy31_divis
signalm:
std_logic_vector(25downto0);
begin
process(fre_50m)
begin
iffre_50m'eventandfre_50m='1'then
ifm="10111110101111000010000000"then
fre_1<='1';
m<="00000000000000000000000000";
else
m<=m+1;
fre_1<='0';
endif;
endif;
endprocess;
end;
程序编译截图:
图1.1-1源程序
图1.1-2编译
图1.1-3模块生成
图1.1-4最终效果图
1.2计数模块
实现功能:
将输入信号的个数的十位、个位以四位二进制的方式进行输出,同时在输入端有暂停、清零功能,输出端有进位输出。
主要源程序(以60进制计数器为例,其他同理):
Libraryieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_unsigned.all;
ENTITYxy31_cnt60IS
Port(clk,reset,en:
instd_logic;s:
outstd_logic_vector(3downto0);
g:
outstd_logic_vector(3downto0);carry:
outstd_logic);
end;
architectureoneofxy31_cnt60is
signalm,n:
std_logic_vector(3downto0);
begin
process(clk,reset,en)
begin
ifreset='1'thenm<="0000";n<="0000";
elsifclk'eventandclk='1'then
ifen='0'then
ifm="1001"andn="0101"thenm<="0000";n<="0000";carry<='1';
elsifm="1001"thenm<="0000";n<=n+1;
elsem<=m+1;
carry<='0';
endif;
endif;
endif;
endprocess;
g<=m;s<=n;
end;
程序编译截图:
图1.2-1源程序
图1.2-2编译
图1.2-3模块生成
1.3译码模块
实现功能:
将小时、分钟、秒的计数模块输出的四位二进制码转化为七位共阳极数码管的显示的七位段码。
设计原理:
七位共阳极数码管显示规则
主要源程序:
Port(data:
instd_logic_vector(3downto0);seg:
outstd_logic_vector(6downto0));
end;
architectureoneofxy31_decoderis
begin
process(data)
begin
ifdata="0000"then
seg<="1000000";
elsifdata="0001"then
seg<="1111001";
elsifdata="0010"then
seg<="0100100";
elsifdata="0011"then
seg<="0110000";
elsifdata="0100"then
seg<="0011001";
elsifdata="0101"then
seg<="0010010";
elsifdata="0110"then
seg<="0000010";
elsifdata="0111"then
seg<="1111000";
elsifdata="1000"then
seg<="0000000";
elsifdata="1001"then
seg<="0010000";
else
seg<="1111111";
endif;
endprocess;
end;
程序编译截图:
图1.3-1源程序
图1.1-2编译
图1.3-3模块生成
图1.3-4最终效果图
2、程序下载及测试
图2-1引脚分配,编译成功
图-1
图-2
图-3
时钟调节功能测试
图-4
图-5
图-6
第3章、整点报时闹钟设计
1.设计思路
1.1基本时钟模块
实现功能:
基于上一章中设计的时钟进行功能拓展。
1.2倒计时报警模块
功能实现:
当时钟到59分56秒时LED开始以黄-黄-黄-黄-红的顺序进行显示,整点时红灯警报。
设计原理:
此模块四个输入端接收由分钟、秒十位个位bus总线输出的四位二进制数据,以Fs表示分钟的十位,Fg表示分钟的个位,Ms表示秒的十位,Mg表示秒的个位。
下面以59分56秒为例:
位
十进制数
二进制数
LED:
黄
Fs
5
0101
Fg
9
1001
Ms
5
0101
Mg
6
0110
注:
其他同理
主要源程序:
ENTITYTimerB_AlarmerIS
Port(Mg,Ms,Fg,Fs:
instd_logic_VECTOR(3downto0);
LED:
outstd_logic_VECTOR(4downto0));
end;
architectureoneofTimerB_Alarmeris
begin
process(Mg,Ms,Fg,Fs)
begin
LED<="00000";
ifFs="0101"andFg="1001"andMs="0101"andMg="0110"then
LED<="00001";
elsifFs="0101"andFg="1001"andMs="0101"andMg="0111"then
LED<="00010";
elsifFs="0101"andFg="1001"andMs="0101"andMg="1000"then
LED<="00100";
elsifFs="0101"andFg="1001"andMs="0101"andMg="1001"then
LED<="01000";
elsifFs="0000"andFg="0000"andMs="0000"andMg="0000"then
LED<="10000";
endif;
endprocess;
end;
程序编译截图:
图1.2-1源程序
图1.2-2编译
图1.2-3模块生成
图1.2-4最终效果图
2.程序下载及测试
图2.1完整电路
图2.2引脚分配
图2.3编译成功
图-1
图-2
图-3
图-4
图-5
图2.4测试效果组图
第4章、定时闹钟设计
1.设计思路
1.1功能选择比较模块
实现功能:
功能一:
实现时钟与闹钟定时模式的切换。
切到闹钟定时模式
时数码管显示OP(option)代表处于闹钟定时模式。
功能二:
将定时时间与时钟时间进行比较,到点报时,LED亮。
设计原理:
模式一为普通始终显示,模式二为设定报时时间模式。
共有13个输入端口,其中ss,sg,fs,fg,ms,mg分别代表基本时钟模式输入的小时十位,小时个位,分钟十位,分钟个位,秒十位,秒个位。
其中dss,dsg,dfs,dfg,dms,dmg分别代表闹钟定时模式的小时十位,小时个位,分钟十位,分钟个位,秒十位,秒个位。
一个模式选择输入端SEL。
Css,Csg,Cfs,Cfg,Cms,Cmg分别代表功能选择比较模块输出的小时十位,小时个位,分钟十位,分钟个位,秒十位,秒个位。
主要源程序:
ENTITYxy31_comparator_selectorIS
Port(mg,ms,fg,fs,sg,ss,dmg,dms,dfg,dfs,dsg,dss:
instd_logic_vector(3downto0);SEL:
instd_logic;led:
outstd_logic;Cmg,Cms,Cfg,Cfs,Csg,Css:
outstd_logic_vector(3downto0));
end;
architectureoneofxy31_comparator_selectoris
begin
process(fg,fs,sg,ss,dfg,dfs,dsg,dss)
begin
iffg=dfgandfs=dfsandsg=dsgandss=dssthen
led<='1';
else
led<='0';
endif;
endprocess;
process(SEL)
begin
ifSEL='1'then
Cmg<="1011";Cms<="1010";Cfg<=dfg;Cfs<=dfs;Csg<=dsg;Css<=dss;
else
Cmg<=mg;Cms<=ms;Cfg<=fg;Cfs<=fs;Csg<=sg;Css<=ss;
endif;
endprocess;
end;
程序编译截图:
图1.1-1源程序
图1.1-2编译
图1.1-3模块生成
2.程序下载及测试
图2.1完整电路
图2.2引脚分配
图2.3编译成功
图-1
图-2
图-3
图2.4测试效果组图
第5章、多功能跑表设计
1.设计思路
1.1模式选择模块
实现功能:
在基本时钟的基础下能够切换到跑表模式。
设计原理:
在跑表模式下接入独立的时钟脉冲信号,在基于基本分频模块的基础上改进后生成50MHz转为100Hz的分频模块作为跑表的基准计时信号,通过模式选择输入端model_sel选择功能模式,两个模式独立显示,互不干扰。
主要源程序:
ENTITYxy31_Model_SelectorIS
Port(mg,ms,fg,fs,sg,ss,dmg,dms,dfg,dfs,dsg,dss:
instd_logic_vector(3downto0);
SEL:
instd_logic;led1:
outstd_logic;led2:
outstd_logic;Cmg,Cms,Cfg,Cfs,Csg,
Css:
outstd_logic_vector(3downto0));
end;
architectureoneofxy31_Model_Selectoris
begin
process(SEL)
begin
ifSEL='1'thenled2<='1';led1<='0';
Cmg<=dmg;Cms<=dms;Cfg<=dfg;Cfs<=dfs;Csg<=dsg;Css<=dss;
elseled1<='1';led2<='0';
Cmg<=mg;Cms<=ms;Cfg<=fg;Cfs<=fs;Csg<=sg;Css<=ss;
endif;
endprocess;
end;
程序编译截图:
图1.1-1源程序
图1.1-2模块生成
2.程序下载及测试
图2.1完整电路
图2.2引脚分配
图2.3编译成功
图-1
图-2
图-3
图2.4基本时钟显示模式组图
图-1
图-2
图-3
图-4
图-5
图-6
图-7
图-8
图-9
图2.5跑表测试组图
第6章、小结
通过综合实验的思考和设计,对一个项目的整体设计有了进一步认识,加深了对VHDL语言的了解,提高了编程能力。
同时,锻炼了独立发现问题解决问题的能力,提高了个人素质。
利用硬件描述语言VHDL编程,借助Altera公司的quartusII软件环境下进行了编译及仿真测试,通过FPGA芯片实现了几个实际可行的的控制系统,如数字时钟,设计由于采用了EDA技术,不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活,实现简单,性能稳定的特点。
这是一次颇有收获的实训,这次的实训中,我们更进一步体会到自主学习和团队合作的乐趣与必要性。
为了完成项目,在网络上找到了许多相关资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解,这才知道老师的良苦用心。
相信以后的我不管是做网络亦或是从事软、硬件开发,都会有一个扎实的基础和良好的开发习惯的。
通过这次课程设计真正体会到了课本上的知识是在做解决实际的问题时,是远远不够的,实际问题不是像理论知识那样,更多的是需要自己动手去操作,遇到问题时参考资料,咨询老师或是其他方式去解决问题,在此次设计过程中提升了如何解决问题的能力,找对方法,多动手实践才能解决问题。
不管这样,这次课程设计终于顺利完成了,我学也到很多实用的知识,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高都受益非浅。
在此,感谢老师的细心指导!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPLD 课程 学习 报告