8位计数器EDA课程设计报告Word文档下载推荐.docx
- 文档编号:14834053
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:25
- 大小:70.43KB
8位计数器EDA课程设计报告Word文档下载推荐.docx
《8位计数器EDA课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《8位计数器EDA课程设计报告Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
2、波形仿真;
3、在实验装置上进行硬件测试,并进行演示;
4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。
进度安排
起止日期(或时间量)
设计内容(或预期目标)
备注
第1天
课题介绍,答疑,收集材料
第2天
设计方案论证
第3天
进一步讨论方案,对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计
第4天
设计VHDL语言程序
第5~9天
在实验装置上进行硬件测试,对VHDL语言程序进行必要的修正,并进行演示
第10天
编写设计说明书
教研室
意见
年月日
系(部)主管领导意见
长沙学院课程设计鉴定表
姓名
学号
专业
电气工程及其自动化
班级
设计题目
指导教师
瞿曌
指导教师意见:
评定等级:
教师签名:
日期:
答辩小组意见:
答辩小组长签名:
日期:
教研室意见:
教研室主任签名:
系(部)意见:
系主任签名:
日期:
说明
课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;
1、课程设计目的………………………………………………………………5
2、课程设计题目………………………………………………………………5
3、设计内容……………………………………………………………………5
3.1设计思路………………………………………………………………5
3.2设计步骤………………………………………………………………5
4、程序中各引脚的分配………………………………………………………12
5、程序结构框图…………………………………………………………………13
6、完整程序……………………………………………………………………14
7、课程设计总结………………………………………………………………21
参考文献………………………………………………………………………22
一、课程设计目的
系统提供一个50MHZ的时钟,要求用VHDL语言设计一个8位计数器,同时有一个8位led循环显示灯,当灯亮一次,数码管上就记一次数。
通过做此计数器,知道分频的概念,并且知道如何分频,同时知道什么是数码管的动态显示,怎么做出数码管的动态显示。
二、课程设计题目
8个LED循环显示、计数器的设计。
三、设计内容
1、设计思路:
由于要设计一个8个led灯循环显示的计数器。
则重要的设计部分在于让led灯循环显示,同时在显示的同时数码管的数加1;
要让led灯亮的同时,数码管上面的数字加1,则需要在同一个脉冲下完成计数器加一,led等循环亮一位。
由于系统给定的时钟是50Mhz,显然数码管和led灯不能正常工作,这就涉及到要将50mhz频率分频,将频率变小,使计数器和led灯能正常工作;
Led灯设计思路:
led灯要实现循环显示,即第一个灯亮之后,在出现一个上升沿脉冲后,第二个灯亮,第一个灯灭,来一个脉冲移动一个,并实现循环,为了实现循环,设计思路是讲来一次脉冲将最高位补到最低位,次最高位变成最高位。
数码管的设计思路:
由于数码管要求是动态显示,显然还要分出一个置位工作扫描频率,由于人的视觉暂留,频率应该大于24hz,为了数码管显示效果,我分出了1000hz的频率来扫描8位数码管的工作。
分频的设计思路:
分频是为了将50mhz的频率减小,即在50mhz(clk)出现n个上升沿之前另一个clk1不翻转,而在n个上升沿时翻转,在2n之前一直保持翻转后的状态,到2n时,计数器清零,同时再实现翻转,这样就能做出任意较小的频率实现设计。
2、设计步骤:
首先设计分频计数器,由于要有一个数码管置位工作扫描频率,还要有一个实现计数个和led灯循环显示的频率,即分频要分出两个不同的频率:
分频程序入下:
process(clk)
variablecout:
integer:
=0;
begin
IFclk'
eventandclk='
1'
then
cout:
=cout+1;
ifcout<
=25000thenclk1<
='
0'
;
elsifcout<
50000thenclk1<
elsecout:
endif;
endprocess;
BEGIN
IFcout<
=1250000thenclk2<
25000000thenclk2<
在进程中,clk为原始频率50mhz,以上两个进程是为了分出2hz频率和1000hz频率,其中count是进程中的一个变量,用来出现上升沿脉冲计数。
其中clk1是分出来的1000hz;
频率,clk2是分出来的2hz的led灯移动和数码管计数的频率;
在频率分出来后,就可以设计led灯的循环显示了,led灯循环显示的程序如下:
process(rst,start,clk2)
variablereg8:
std_logic_vector(7downto0);
variablefg:
=1;
begin
ifrst='
reg8:
=(others=>
'
);
fg:
elsifclk2'
eventandclk2='
ifstart='
iffg=1thenreg8:
="
11111110"
fg:
elsereg8:
=reg8(6downto0)&
reg8(7);
endif;
endif;
din8<
=reg8;
endprocess;
程序中,rst是复位信号,功能是在在出现rst=1是,将led回到最初始状态,从程序中看是灯全灭掉,当rst=0是,回复循环显示;
start是一个开始信号,只有start=1是,计数才开始工作;
din8是一个八位的二进制数,在硬件上直接和8个led灯连接;
fg是设计的一个标志位,目的是为了在开始来第一个脉冲时,使第一个led灯变亮,并将fg赋值为零,来第二个脉冲时,就开始循环;
当rst=0并且start=1时,Led的波形图如下:
从图中看出,在rst为0,start为1时,则led灯的显示就会出现出现循环显示,din由11111110到01111111,之后又回到11111110开始循环;
在rst=1是,将会复位,即din=“11111111”,波形如下:
从图中明显能看出,在rst为1时,本该进行循环的程序在rst=1时,将使din全部置一了,即实现你rst的功能。
在做start的功能时,start的功能是,在rst=0,start=1时,将会做led灯的循环,在rst=0,start=1时,将使其暂停循环功能,并保持当前状态不变,波形图如下:
如图所示,在start=0时,din就停留在11110111,此二进制数正好十进制是239,一直保持此状态,在start=1是,则开始循环的工作。
做完以上程序的设计,即要实现数码管的动态显示,首先要做的就是数码管的动态显示,即要不间断的扫面8个数码管的工作位,扫描置位程序如下:
process(clk1)
begin
ifclk1'
eventandclk1='
ifwei=7thenwei<
000"
elsewei<
=wei+1;
process(wei)
caseweiis
when"
=>
selout<
00000001"
001"
00000010"
010"
00000100"
011"
00001000"
100"
00010000"
101"
00100000"
110"
01000000"
111"
10000000"
whenothers=>
null;
endcase;
clk1是分出来的1khz频率,wei是设置的一个三位二进制数,从000-111,每一个状态都是置一个数码管工作,selout是一个7位二进制数,是个硬件上数码管的工作位一一对应。
在做好置位后,余下的就是数码管显示计数的问题了,数码管显示的是一个8位十进制的数,功能能实现进位,数码管计数的程序如下:
process(rst,start,clk2)
variableao0:
std_logic_vector(3downto0);
variableao1:
variableao2:
variableao3:
variableao4:
variableao5:
variableao6:
variableao7:
then
ao0:
ao1:
ao2:
ao3:
=(others
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计数器 EDA 课程设计 报告