您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 南京邮电大学VHDL设计报告(数字时钟设计-数码管学号滚动显示)
南京邮电大学课程设计报告设计类别:EDA-VHDL专业名称:班级学号:学生姓名:基本题:数字时钟设计综合题:数码管学号滚动显示同小组成员:学号:姓名:指导教师:日期:-1-一、实验目的1.1使学生全面了解如何应用该硬件描述语言进行高速集成电路设计;1.2通过软件设计环节与仿真环节使学生熟悉QuartusII设计与仿真环境;1.3通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自顶向下),熟悉VHDL语言三种设计风格,熟悉其芯片硬件实现的过程。二、实验器材2.1PC机2.2ALteraCPLD硬件实验开发系统2.3设计软件(QuartusII)三、实验设计实验(一)3.1课题名称(基本题)数字时钟设计3.2小组成员(程序设计)(调试及改进)3.3课题内容要求学生设计一个时钟,并输出到数码管显示时,分,秒。3.4方案设计3.4.1设计思路:选用6组数码管,分别显示小时数的十位、个位,分钟数的十位、个位,秒数的十位、个位。选用6个计数器来分别产生这6位数。因此需设计3个模10计数器来产生小时、分钟、秒的个位上的0~9,2个模6计数器来产生分钟、秒的十位上的0~5,1个模3计数器来产生时钟的十位上的0~2。采用外部时钟作为秒钟的计数时钟,然后上一级的进位信号作为下一级的时钟信号。各位上计数上产生的数字通过译码显示在7段数码管上。-2-3.4.2系统原理图秒个位译码显示秒十位译码显示分个位译码显示分十位译码显示时个位译码显示时十位译码显示M=10计数器进位clkM=6计数器进位M=10计数器进位M=6计数器进位M=3计数器进位7段数码管7段数码管7段数码管7段数码管7段数码管7段数码管M=10计数器进位-3-3.4.3各模块算法框图(a)符号说明(1)hou1:小时数十位(2)hou2:小时数个位(3)min1:分钟数十位(4)min2:分钟数个位(5)sec1:秒数十位(6)sec2:秒数个位(b)各模块算法框图(1)秒钟计数器部分:YNNYYSec1=sec1+1Sec1=”0101”?时钟信号时钟上升沿?Sec2=”1001”?Sec2=sec2+1Sec2=”0000”Sec1=”0000”输出上升沿脉冲N-4-(2)分钟计数器部分:(3)时针计数器部分:Min1=min1+1Min1=”0101”?时钟信号时钟上升沿?Min2=”1001”?Min2=min2+1Min2=”0000”Min1=”0000”输出上升沿脉冲YNNYYHou1=hou1+1Hou1=”0101”?时钟信号时钟上升沿?Hou2=”1001”?Hou2=hou2+1Hou2=”0000”Hou1=”0000”输出上升沿脉冲由秒针计数器提供由秒针计数器提供-5-3.5设计实现时序仿真图及分析:仿真波形部分图形如上所示。Led1~led6分别对应hou1~sec2,在该波形中,第一个clk周期内led6管显示4,下一个clk上升沿时,led6变成5,接下来随着clk上升沿,led6依次显示6、7、8、9,在此期间,led5始终显示1,当第6个clk上升沿来临时,led5变成2,同时led6从9变成0。此部分波形表示时钟从00:00:14一直计数到00:00:26。符合课题要求。实验(二)3.1综合题课题名称数码管学号滚动显示3.2小组成员(程序设计)(调试及改进)3.3课题内容要求学生在六个数码管滚动显示自己的学号(六位),每隔一定时间循环移位一次,学号为奇数则左移,学号为偶数则右移。间隔时间可由开关选择1秒、2秒、3秒、4秒。3.4方案设计:3.4.1设计思路:(1)利用动态扫描数码管及人眼的视觉暂留效应,通过引入一个高频时钟来做扫描时钟,同时分频该时钟,产生1Hz分频,即产生出1秒时钟。(2)设置一个移位时间计数器,来表征移位时间,利用之前产生的1Hz分频的计数操作,来产生不同的移位时间,即1s、2s、3s、4s,同时进行标记位移位操-6-作。(3)设置一个动态扫描变量,每个扫描时钟上升沿时,该变量进行移位操作,扫描0到flag(flag小于等于5),完成数码管的动态扫描。(4)设置另一个标记位变量flag1,当flag等于5时,flag1取代flag,来表征当前扫描最前端。随后定义变量j,j=(flag1-cnt)mod6,完成flag=5之后的循环移位操作。3.4.2系统原理图:1hzJ=(flag1-cnt)mod63.5各模块算法:3.5.1符号说明:(1)Count:计数变量(2)Mtcnt:移位时间计数信号(3)Flag:标记位(0~5)(4)Flag1:标记位(可以大于5)(5)Cnt:扫描位(6)Dire:方向选择信号分频计数20hzM=mtcntFlag、flag1累加Dire=0右移Dire=1左移Cnt从0→flag循环选管6个数码管-7-3.5.2各模块算法框图(1)1Hz分频NY(2)移位操作1HzNY时钟信号Count=9?Count=count+1Count=0Clk1s=notclk1s两次跳变输出一个上升沿时钟信号Count=mtcnt?Count=count+1Flag=flag+1Flag1=flag1+1Count=0标记位移位-8-(3)动态扫描20HzNY(4)扫描显示20HzNY时钟信号Cnt=flag?Cnt=cnt+1Cnt=0数码管从0位扫描到标记位flag位时钟信号Dire=0?J=(flag1-cnt)mod6左移扫描显示数字右移扫描显示数字-9-3.6设计特点利用高频扫描信号带来的视觉暂留来实现动态扫描,通过标记位与移位的同步操作及扫描位的逐次跟踪,实现动态扫描,达到循环效果。3.7时序仿真图及分析:设置dire=0,mode=00,即每一秒数字右移,部分仿真波形图如下:如图,图中第2个clk(20Hz)上升沿来临时,clk1s(1Hz)迎来上升沿,flag和flag1分别加一,由4变成5,表明当前标记到第6个数码管,scan信号从001000到000001到100000再到001000,实现循环选管,从seg7信号可以看出,当前数码管显示010606。如图,5.47s时clk1s上升沿来临,和上图clk1s上升沿来临时相隔1s,符合仿真时设置mode=00,即1s移位操作。随着clk1s上升沿来临,flag不变,仍为5,作为循环扫描的标记位,flag1加一,变成6。此时,scan从000010变成000001变成100000再变成000010,循环选管。当前数码管显示401063。和上图相比,学号010634时隔1s向右移位一次,变为601060,符合题目要求。如需实现左移操作,只要设dire=1即可。如需实现2s、3s、4s移位操作,只需设mode=01、10、11即可。四、实验总结这次设计,由于理论知识的不足,一开始的时候有些手忙脚乱,不知从何入手,在查阅了许多资料后有了一定的了解,实验的设计也慢慢有了雏形。这次实验设计,使我掌握了用硬件描述语言进行高速集成电路设计的基本技能。通过设计程序与实际仿真,熟悉了QuartusⅡ的设计与仿真环境。VHDL语-10-言与其他语言语法类似,但是执行方式存在很大的不同,各进程间并发执行是这门语言的一大特色。这次实验结束了,在这次实践中除了学会一些技能之外,还深切的体会到人与人之间相互协调合作、交流思想是十分重要的。在今后的工作中,我一定要戒骄戒躁,态度端正,要永远记住并深刻执行一句话:态度决定一切。通过这次毕业设计我明白学习是一个长期积累的过程,在往后的工作、生活中都应该不断的学习,努力提高自己的知道层次和综合素质。-11-附录一:源程序(实验一)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshizhongisport(clk:instd_logic;led1:outstd_logic_vector(6downto0);led2:outstd_logic_vector(6downto0);led3:outstd_logic_vector(6downto0);led4:outstd_logic_vector(6downto0);led5:outstd_logic_vector(6downto0);led6:outstd_logic_vector(6downto0));endshizhong;architecturemainofshizhongissignalhou1:std_logic_vector(3downto0);signalhou2:std_logic_vector(3downto0);signalmin1:std_logic_vector(3downto0);signalmin2:std_logic_vector(3downto0);signalsec1:std_logic_vector(3downto0);signalsec2:std_logic_vector(3downto0);begin-------------------------------------------------h110:process(clk,hou2,min1,min2,sec1,sec2)beginifclk'eventandclk='1'thenif(hou1=0010andhou2=0011)and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenhou1=0000;elsif(hou2=1001and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001))thenhou1=hou1+1;endif;endif;endprocessh110;-----------------------------------------------h220:process(clk,min1,min2,sec1,sec2,hou1)beginifclk'eventandclk='1'thenif(hou1=0010andhou2=0011)and(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenhou2=0000;elsifhou2=1001and(min1=0101andmin2=1001)and(sec1=0101and-12-sec2=1001)thenhou2=0000;elsif((min1=0101andmin2=1001)and(sec1=0101andsec2=1001))thenhou2=hou2+1;endif;endif;endprocessh220;-----------------------------------------------m110:process(clk,min2,sec1,sec2)beginifclk'eventandclk='1'thenif(min1=0101andmin2=1001)and(sec1=0101andsec2=1001)thenmin1=0000;elsif(min2=1001and(sec1=0101andsec2=1001))thenmin1=min1+1;endif;endif;endprocessm110;----------------------------------------------m220:process(clk,sec1,sec2)beginifclk'eventandclk='1'thenifmin2=1001and(sec1=0101andsec2=1001)thenmin2=0000;elsif(sec1=0101andsec2=1001)thenmin2=min2+1;endif;endif;endprocessm220;-----------------
本文标题:南京邮电大学VHDL设计报告(数字时钟设计-数码管学号滚动显示)
链接地址:https://www.777doc.com/doc-7331477 .html