1、基于VHDL的数字秒表设计河南农业大学课程设计报告设计题目: 基于VHDL的数字秒表的设计 学 院: 专 业: 电子信息科学与技术 班 级: 学 号: 姓 名: 电子邮件: 日 期: 成 绩: 指导教师: 装订线 河 南 农 业 大 学理 学 院课 程 设 计 任 务 书学生姓名 指导教师 学生学号 专业班级 题目 基于VHDL的数字秒表设计 任务与要求设计一个数字秒表,主要由显示译码器、分频器、十进制计数器、六进制计数器组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。秒表共有6个输出显示,分别为百
2、分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。 合作人:分工方案:开始日期 2012年 12月 3日 完成日期2012年 月 9日 课程设计所在地点 一、 数字闹钟设计要求:1.四个十进制计数器:分别用来对百分之一秒、十分之一秒、秒和分进行计数;2.两个六进制计数器:用来分别对十秒和十分进行计数;3.分频器;用来产生100Hz计时脉冲;4.显示译码器:完成对显示译码的控制。3、能够完成清零、启动、保持(可以使用键盘或拨码开关置数)功能。4、时、分、秒、百分之一秒显示准确。二、 实验目的:1、初步了解可编程
3、逻辑器件(PLD)的基本原理;2、熟练掌握MAX+Plus图形编辑器、文本编辑器等不同的输入设计方法,掌握EDA的自顶向下(Top to Down)的模块化设计思想;3、了解VHDL语言的语法、句法及结构,能看懂VHDl语言编写的程序,并能熟练运用MAX+Plus软件对各个程序模块进行波形仿真;4、熟悉顶层电路的原理图输入法,能应用EDA设计思想进行较复杂系统的分析和设计。三、设计方案:按照EDA自顶向下的设计理念,该数字秒表可以分为分频器模块、计数器模块、数据选择和数码管选择模块模块、数码管驱动模块,其顶层电路如下图所示。四、各个模块的功能:1、分频器模块:将2.5MHz的时钟信号转换成10
4、0Hz的计时脉冲,使秒表正常工作;2、计数器模块:这是本秒表设计的基本功能,对时间进行计数并在显示屏显示当前时间,这个模块中,分别有十进制计数器和六进制计数器,共用四个十进制,分别表示数字秒表的百分之一秒、十分之一秒、秒和分,两个六进制,分别表示数字秒表的十秒和十分;3、数据选择和数码管选择模块:通过每个计数器输入的dain信号对数码管进行选择,4、数码管驱动模块:通过对输入的信号进行编码,完成对7段数码管的驱动,使数码管显示出对应的数字;五、系统的各组成部分的原理框图及功能1、分频器的原理框图:2、六进制计数器的原理框图:3、十进制计数器的原理框图:4、选择模块的原理框图:5、译码显示电路的
5、原理框图:其中各部分功能如下:1、分频器将2.5MHz脉冲变成100Hz。2、六进制计数器能够实现6进制循环计数。3、十进制计数器能够实现10进制循环计数。4、选择模块通过每个计数器输入的dain信号对数码管进行选择5、译码显示电路通过对输入的信号进行编码,完成对7段数码管的驱动,使数码管显示出对应的数字。六、系统的主要模块VHDL源程序:1、分频器源程序clkgen:library ieee; use ieee.std_logic_1164.all;entity clkgen isport(clk:in std_logic; newclk:out std_logic);end entity
6、clkgen;architecture art of clkgen issignal cnter:integer range 0 to 10#24999#;beginprocess(clk)isbegin if clkevent and clk=1thenif cnter=10#24999# then cnter=0;else cnter=cnter+1; end if;end if;end process;process(cnter)isbeginif cnter=10#24999# then newclk=1;else newclk=0;end if;end process;end arc
7、hitecture art;2、六进制计数器源程序count6:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count6 is port (clk,clr,start:in std_logic; daout:out std_logic_vector(3 downto 0); cout:buffer std_logic );end count6;architecture behave of count6 is signal temp:std_logic_vector(3 downt
8、o 0);beginprocess(clk,clr) begin if clr=1 then temp=0000; cout=0; elsif clkevent and clk=1 then if start=1then if temp=0101 then temp=0000; cout=1; else temp=temp+1;cout=0; end if; elsif start=0 then temp=temp;cout=cout; end if; end if; end process;daout=temp; end behave; 3、十进制计数器源程序count10:library
9、ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 is port (clk,clr,start:in std_logic; daout:out std_logic_vector(3 downto 0); cout:buffer std_logic );end count10;architecture behave of count10 is signal temp:std_logic_vector(3 downto 0);beginprocess(clk,clr) begin if c
10、lr=1 then temp=0000; cout=0; elsif clkevent and clk=1 then if start=1then if temp=1001 then temp=0000; cout=1; else temp=temp+1; cout=0; end if; elsif start=0 then temp=temp;cout=cout; end if; end if; end process;daout=temp; end behave;4、数据选择和数码管选择模块模块源程序seltime:library ieee;use ieee.std_logic_1164.
11、all;USE ieee.std_logic_UNSIGNED.all;entity seltime is port(clr,clk: in std_logic; dain0,dain1,dain2,dain3,dain4,dain5: in std_logic_vector(3 downto 0); sel: out std_logic_vector(2 downto 0); daout: out std_logic_vector(3 downto 0);end seltime;architecture a of seltime is signal temp:integer range 0
12、to 5;begin process(clk) begin if (clr=1) then daout=0000; sel=000; temp=0; elsif (clk=1and clkevent) then if temp=5 then temp=0; else tempsel=000;daoutsel=001;daoutsel=010;daoutsel=011;daoutsel=100;daoutsel=101;daoutledledledledledledledledledledledledout(0);b=ledout(1);c=ledout(2);d=ledout(3);e=led
13、out(4);f=ledout(5);g=ledout(6);u1: count10 port map(clk,stop,start,daout1,count_cout(0);u2: count10 port map(count_cout(0),stop,start,daout2,count_cout(1);u3: count10 port map(count_cout(1),stop,start,daout3,count_cout(2);u4: count6 port map(count_cout(2),stop,start,daout4,count_cout(3);u5: count10
14、port map(count_cout(3),stop,start,daout5,count_cout(4);u6: count6 port map(count_cout(4),stop,start,daout6,count_cout(5);u7:cfq port map(clk2,count_cout(5),count_cout(6);u7:seltime port map(stop,clk,daout1,daout2,daout3,daout4,daout5,daout6,sel,daout7);u8: ym port map(daout7,ledout);u9: clkgen port
15、map(clk, newclk);end c;六、程序功能仿真图:1、count6仿真图如下示:2、count10仿真图如下示:3、seltime仿真图如下示:4、ym仿真图如下示:七、心得和体会 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。总的来说,这次设计的数字秒表还是比较成功的,虽然在实际的过程中曾经遇到了大量的问题,但是经过自己的努力,都给妥善解决了,这样的积累对于现在大学生来说是十分宝贵的。希望以后能有更多的动手实践机会,在硬件中
16、发现自己的不足,弥补自己的不足,最终成为一个合格的大学生。最后,特别感谢老师对我的帮助。八、参考文献1谭会生、张昌凡.EDA技术及应用.西安电子科技大学出版社,20062东方人华MAX+PLUS入门与提高清华大学出版社,2004EDA设 计 实 习 成 绩 评 定 表评定项目内 容满 分评 分总 分学习态度学习认真,态度端正,遵守纪律10答疑和设计情况认真查阅资料,勤学好问,提出的问题有一定的深度,分析解决问题的能力教强。40说明书质量设计方案正确、表达清楚;设计思路、实验(论证)方法科学合理;达到课程设计任务书规定的要求;图、表、文字表达准确规范,上交及时。40回答问题情况回答问题准确,基本概念清楚,有理有据,有一定深度。10总成绩采用五级分制或百分制。五级分制:优、良、中、及格、不及格指导教师评语: 签 名: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1