1、EDA课程设计数字时钟泰山学院 2011级电子信息科学与技术本科班EDA课程设计数字时钟姓名:胡乃宽学号:2011080032学院:物电学院班级:2011级电本任课老师:王春玲设计时间:2013-11-21摘要:以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以Q开发软件和EDA试验箱为设计工具,阐述了数字时钟的工作原理和软件实现方法。并通过对所设计的数字时钟进行了时序仿真,使我们小组成员掌握综合性电路的设计、仿真、下载、调试方法,并能写出简单的EDA实验程序。作为学习电子的本科生,我们必须不断接受先进的电子知识,这就要求我们努力学好EDA这门课程,并熟练
2、掌握相关软件及硬件的操作。除此之外,我们在课下还要不断练习,争取掌握一定的EDA编程方法,并且利用现有的条件不断实践。这样一来,我们可以学好EDA这门课程。此次课程设计不是我们EDA课程的结束,而是一个继续学习EDA相关课程的开始。关键词:Q开发软件;数字时钟;EDAAbstract: Field programmable logic device (FPGA) design support , hardware description language (VHDL) as the main expression to Q chamber for the development of soft
3、ware and EDA design tools , digital clock describes the working principle and software implementation . As e- learning undergraduate , we must continue to accept advanced electronic knowledge , which requires us to strive to learn EDA this course , proficiency in relevant software and hardware opera
4、tions. In addition, we also continue to practice in class, fight master certain EDA programming methods , and the use of the existing conditions of continuous practice . In this way , we can learn EDA this course .The course design is not the end of our EDA programs , but a continuing study began ED
5、A related courses . Keywords : Q software development ; digital clock ; EDA一 课程设计任务及要求1.1实验目的(1)掌握VHDL语言的简单运用(2)掌握VHDL编程设计方法及会简单编程(3)掌握QII的简单操作并会使用EDA实验箱(4)掌握一个基本EDA课程设计的操作(5)掌握综合性电路的设计、仿真、下载、调试方法(6)学会使用试验箱1.2功能设计(1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时(2)部分显示功能(3)具有整点报时功能1.3实验仪器(1)PC机1台(2)QII软件1套
6、二 设计思想1.1功能设计概述(1)时、分、秒计时器 时、分、秒计时器分别有三个程序驱动,其中时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动恢复到00点00分00秒。(2)部分显示功能显示功能用一个子程序驱动,在这里我们只做了时间显示功能。我们用的WHEN,CAS
7、E语句对两个LED灯管进行赋值(WHEN,ELSE无法实现)。1.2可实现的原理图(1)简单的数字时钟原理图 图一 简单的数字时钟原理图(2)具有显示功能的数字时钟原理图 图二 具有显示功能的数字时钟原理图 (3)具有报警功能和显示功能的数字时钟原理图_ 图三 具有报警功能和显示功能的数字时钟原理图三 实验步骤概述1打开 Q,单击“File”菜单,选择 FileNew Project Wizard;分别输入项目的工作路径、项目名和实体名,单击Finish。2.单击“File”菜单,选择New,弹出小对话框,双击“VHDL File,即选中了文本编辑方式。在出现的“Vhdl1.vhd”文本编辑窗
8、中键入VHDL程序,输入完毕后,选择FileSave As,即出现“Save As”对话框。选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。3. 建立工程项目,在保存VHDL文件时会弹出是否建立项目的小窗口,点击“Yes”确定。即出现建立工程项目的导航窗口,点击“Next”,最后在出现的屏幕中分别键入新项目的工作路径、项目名和实体名。注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDL程序文本存盘的文件名必须与文件的实体名一致,输入后,单击“Finish”按钮。4.单击工具条上的编译符号开始编译5. 开始进行时序仿真。建立波形文件:选择 Fi
9、leNew,在New窗中选中“Other File”标签。在出现的屏幕中选择“Vector Waveform File”项出现一新的屏幕。在出现的新屏幕中,双击“Name”下方的空白处,弹出“Insert Nod or Bus”对话框,单击该对话框的“Node Finder”。在屏幕中的 Filter 中选择 Pins,单击“List”。而后,单击“”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的 “OK”。在出现的小屏幕上单击“OK”。 6.设定仿真时间宽度。选择 Edit End time选项,在End t
10、ime选择窗中选择适当的仿真时间域,以便有足够长的观察时间。7.波形文件存盘。选择FileSave as 选项,直接存盘即可。8.运行仿真器。在菜单中选择项,直到出现,仿真结束。四 实验步骤1.1单元模块设计(1)秒计数模块试验程序(根据参考程序修改而成)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk1,reset1:STD_LOGIC; enmin:OUT STD_LOGIC; daout1:OUT STD_LOGIC_VECTOR(6 DOW
11、NTO 0);END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN daout1=count; PROCESS(clk1,reset1) BEGIN IF(reset1=0)THEN count=0000000; ELSIF(clk1event and clk1=1)then IF(count16#3C#)then IF(count=0111011)then enmin=1; count=0000000; ELSE count=count+1; enmin=
12、0; END IF; END IF; END IF; END PROCESS;END fun;仿真结果: 图四 秒计数模块仿真结果(2)分计数模块试验程序(根据参考程序修改而成)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS PORT(clk2,reset2:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY minute ;ARCHITECT
13、URE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); BEGIN -enmin_2由clk调制后的手动调时脉冲信号串 daout2=count; PROCESS(clk2,reset2) BEGIN IF(reset2=0) THEN -若reset为0,则异步清零 count=0000000; ELSIF(clk2event and clk2=1)THEN -否则,若clk上升沿到 IF(count 16#3C#) THEN -又若count小于16#60#,即60 IF(count=0111011) THEN-又
14、若已到59D enhour=1; -则置进位为1 count=0000000; -count复0 ELSE count=count+1; -若count未到59D,则加7,即作加6校正 enhour=0; END IF; -使前面的16#60#的个位转变为8421BCD的容量 END IF; -END IF(reset=0) END IF; END process;END fun;仿真结果: 图五 分计数模块仿真结果(3)时计数模块试验程序(根据参考程序修改而成)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGN
15、ED.ALL;ENTITY hour IS PORT(clk3,reset3:IN STD_LOGIC; daout3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY hour ;ARCHITECTURE fun OF hour IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); BEGIN daout3=count; PROCESS(clk3,reset3) BEGIN IF(reset3=0) THEN -若reset为0,则异步清零 count=0000000; ELSIF(clk3event and c
16、lk3=1)THEN -否则,若clk上升沿到 IF(count 16#18#) THEN -又若count小于16#60#,即24 IF(count=0010111) THEN-又若已到23 count=0000000; -count复0 ELSE count=count+1; END IF; -使前面的16#60#的个位转变为8421BCD的容量 END IF; END IF; END process;END fun;仿真结果: 图六 时计数模块仿真结果(4)显示模块程序试验程序(根据参考程序修改而成)library ieee;use ieee.std_logic_1164.all;use
17、 ieee.std_logic_unsigned.all;entity xianshi is port(hour1:in std_logic_vector(6 downto 0); led1:out std_logic_vector(6 downto 0); led2:out std_logic_vector(6 downto 0);end xianshi;architecture art of xianshi is signal aaa:std_logic_vector(6 downto 0); begin aaa led2=1111110;led1 led2=1111110;led1 le
18、d2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=1111110;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;led1 led2=0110000;l
19、ed1 led2=0110000;led1 led2=1101101;led1 led2=1101101;led1 led2=1101101;led1 led2=1101101;led1null; end case; end process; end art;仿真结果: 图七 显示模块仿真结果(5)报时模块试验程序(根据参考程序修改而成)library ieee;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shizhong1 ISPORT(in1,in2,in3 : in STD_LOGIC_vector
20、(6 downto 0); clk4:in std_logic; alert:out std_logic; out1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY shizhong1;architecture fun OF shizhong1 IS begin process (in1,in2,in3) begin IF(clk4event and clk4=1)then out1=in3; if(in1=0000000 and in2=0000000)then alert=1; else alertclk,reset1=reset,daout1=o
21、ut1,enmin=a);u2 : minute port map(clk2=a,reset2=reset,daout2=out2,enhour=b);u3 : hour port map(clk3=b,reset3=reset,daout3=out3);end ARCHITECTURE fun;仿真波形: 图九 顶层仿真结果一(2)带有显示功能的数字时钟试验程序(根据参考程序修改而成)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shizhong ISPORT( clk,rese
22、t:STD_LOGIC; out1,out2,out3,out4:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY shizhong;ARCHITECTURE fun OF shizhong IS -SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);component second port(clk1,reset1:in std_logic; enmin:out std_logic; daout1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end component;component minute
23、 port(clk2,reset2:in std_logic; enhour:out std_logic; daout2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end component;component hour port(clk3,reset3:in std_logic; daout3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end component;component xianshi port(hour1:in STD_LOGIC_VECTOR(6 DOWNTO 0); led2,led1:OUT STD_LOGIC_VECTOR
24、(6 DOWNTO 0);end component;signal a,b:std_logic;signal c: std_logic_VECTOR(6 downto 0); beginu1 : second port map(clk1=clk,reset1=reset,daout1=out1,enmin=a);u2 : minute port map(clk2=a,reset2=reset,daout2=out2,enhour=b);u3 : hour port map(clk3=b,reset3=reset,daout3=c);u4 : xianshi port map(hour1=c,l
25、ed1=out3,led2=out4);end ARCHITECTURE fun;仿真结果 图十 仿真结果二(3)具有报警功能和显示功能的数字时试验程序(根据参考程序修改而成)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shizhong ISPORT( clk,reset:in STD_LOGIC; out2:out std_logic; out3,out4:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY shizhong;ARCHITECTURE fun OF shizhong IS -SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);component second port(clk1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1