1、第五章 :主要VHDL源程序.4 1) 十进制计数器的VHDL源程序.42) 六进制计数器的VHDL源程序.5 3)蜂鸣器的VHDL源程序.5 4)译码器的VHDL源程序.65)控制选择器的VHDL源程序.76)元原件例化的VHDL源程序.8第六章:系统仿真.10第七章:系统扩展思路.11第八章:设计心得总结.11数字秒表的设计一、 系统设计要求 1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。当计时达60分钟后,蜂鸣器鸣响10声。 2.整个秒表还需有一个启动信号和一个归零
2、信号,以便秒表能随意停止及启动。 3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲。二、 实验目的通过本次课设,加深对EDA技术设计的理解,学会用Quartus工具软件设计基本电路,熟练掌握VHDL语言,为以后工作使用打下坚实的基础。三、 实验原理秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。当秒表的计时小于1个小时时,
3、显示的格式是mm-ss-xx(mm表示分钟:059;ss表示秒:xx表示百分之一秒:099),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:099),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是023,而是099,这也是和多功能时钟不一样的地方。在设计秒表的时候,时钟的选择为100Hz。变量的选择:因为xx(0.01秒)和hh(小时)表示的范围都是099,所以用两个4位二进制码(BCD码)表示;而ss(秒钟)和mm(分钟)表示的范围是059,所以用一个3位的二进制码和一个4位的二进制码(BCD)码表示。显示的时候要注意的问题就是
4、小时的判断,如果小时是00,则显示格式为mm-ss-xx,如果小时不为00,则显示hh-mm-ss。四、 系统设计方案秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;两个6进制计数器:用来分别对十秒和十分进行计数;分频器:用来产生100HZ计时脉冲;显示译码器:完成对显示的控制。根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。按适配划分后的管脚定位,同相关功能块硬件电路接口连线。用VHDL语言描述所有底层模块。清零信号为异步清零。当最高位记
5、到6时 停止计数 显示译码器全部显示零,并发出十声警报声。按下复位按钮后继续计数。数字秒表拟由单片的CPLD/FPGA来实现,经分析设计要求,拟定整个系统由10个模块组成,原理图如下:五、 主要VHDL源程序1. 十进制计数器的VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 isport (clk,start,clr : in std_logic;cout : out std_logic;daout : out std_logic_vector(3 do
6、wnto 0);end count10;architecture one of count10 issignal q0 : std_logic_vector(3 downto 0);signal q1 : std_logic;beginprocess(clk,clr)if clr=1 then q0=0000;elsif ( clkevent and clk=) thenif start= then if q0=1001q1= else q0=q0+1;0 end if;end if;end if;end process;daout= q0;cout=q1;end one;2. 六进制计数器的
7、VHDL源程序entity count6 isend count6;architecture two of count10 is0101end two;3. 蜂鸣器的VHDL源程序entity alarm isport(clk,I:in std_logic; q:out std_logic );end alarm;architecture ar of alarm issignal n:integer range 0 to 20;signal q0:std_logic;process(clk)begin if clkthenif i=n=0;elsif n=19 and i=q0=not q0;=n+1;else q0qled01111110001000011000101011011001110011110100
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1