实验报告循环彩灯控制器.docVIP

  • 6
  • 0
  • 约6.19千字
  • 约 10页
  • 2023-09-13 发布于湖北
  • 举报
湖南科技大学信息与电气工程学院 《VHDL语言》 课程设计报告 题 目: VHDL语言课程设计 专 业: 班 级: 姓 名: 学 号: 课程设计任务书 题 目 设 计 时 间 设 计 目 的: 设 计 要 求: 总体方案实现: 指导教师评语: 课程设计的目的: 1,通过本次课程设计,熟练掌握MAX-PLUS2的应用,操作,并对VHDL语言的编程做一实践检验,编出程序,并进行仿真,并根据所得仿真图形分析和推断并改进所涉及的程序,让程序在现实生活中得以更贴近的应用。 2,本次操作的命题一是:循环彩灯控制器,本设计的要求是:设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。 3,本次操作的命题二是:数字显示的秒表,本设计的要求是:设计一块用数码管显示的秒表,能够准确的计时并显示。最大计时为59秒,最小精确到0.1秒。 二、设计方案的论证: 命题一循环彩灯控制器的方案一:在本题中要求控制器可以控制红,绿,黄三个发光管循环点亮,并且要求发光的时间不一样,这样,本质设计思想是循环累加,即时钟信号高电平开始,m值开始累加, CASE m IS WHEN 001=dout=100; WHEN 010=dout=100; WHEN 011=dout=100; WHEN 100=dout=010; WHEN 101=dout=010; WHEN 110=dout=001; WHEN OTHERS=dout=111; END CASE; 前三个值都将赋值给dout1,也就是红灯发光的三秒,然后两个赋值给绿灯,最后一秒赋值给黄灯。这样,dout的不同值将点亮不同颜色的灯,下面是表示三种灯的点亮程序。 red=dout(2); green=dout(1); yellow=dout(0); 以此类推,我们可以实现三个彩灯不同时间的循环点亮。 真值表如下: m m 值 灯 1 (001) 2 010 3 011 4 100 5 101 6 110 7 111 0 000 红灯 1 1 1 0 0 0 0 0 绿灯 0 0 0 1 1 0 0 0 黄灯 0 0 0 0 0 1 0 0 命题一循环彩灯控制器方案二:根据题目要求,可以设计一个计数器来实现,在开始计数前,我们采用计数器将每一个数字进行技术,然后再根据不同的点亮时间一次分派不同颜色的灯让他们显示。这样就需要编程三个进程,在需要依次肤质就可以达到效果。 综上两种方案:方案一,简单可行性好,容易理解,编程简单,使读者更容易懂,设计者也方便设计,而方案二也可以达到课设的要求,但是,有很多不足之处,编程繁琐,给设计者带来诸多不便,相对之下,还是选择第一种方案, 命题二数字显示的秒表设计方案,在设计过程中要求设计的秒表能够准确显示时间,最大计时为59秒,最小精确到0.1秒。通过分析,我们可以通过三个进程分别显示一个数字,每一个进程分别计数,因为在VHDL语言中,进程是同时进行的,只有在进程内部才是按照顺序进行的,所以,计数是同时进行的,我们可以通过采取计数的原理来实现秒表的显示,后面两位都是十进制,最前面的计数到5结束,在进行设计过程中考虑到实际现实中的应用,做了相应改进,我们可以通过一个时钟控制它无法显示到59.9秒的时候,然后重新开始,即复位,我们也可以在计数的时候按照我们的意愿让秒表暂停。这样设计更符合实际应用。 命题二改进(1): IF(CLR=1)THEN OUT1=0000; 遇到中途计数清零设计,我们可以通过对clr的控制来控制秒表的计数。 命题二改进(2): IF(START=1)THEN OUT1=OUT1+0; 增加这个程序段,我们可以中途暂停,如果不加,那么整个程序只能在到达计数末端才能清零,即每次都是从0到59.9秒的计数,但是增加该段,那么,我们就可以在0到59.9之间,任何一个时间点暂停,以供我们的需求。 三、设计仿真及结果分析: 命题一循环彩灯控制器: 根据程序调试仿真图如下:(仿真图中的us表示现实中表示s) 分析:从图形可以看出,清零端低电平,时钟信号上升沿时m值开始计数,随着m值的变化,彩灯的显示一块变化,图示显示,red灯点亮3秒,gree灯点亮2秒,yellow灯点亮1秒,整个周期是六秒一个循环,基本上实现了

文档评论(0)

1亿VIP精品文档

相关文档