文档详情

数字电路设计实验vhdl语言实验报告.doc

发布:2016-04-10约6.36千字共15页下载文档
文本预览下载声明
实验一 秒表计数器的设计 实验目的: 本实验通过设计四种频率可选的数字时钟系统,以达到熟悉VHDL语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。 二、实验内容: 该数字时钟的显示格式如下所示:HH:MM:SS,其中HH表示时计数的两位,MM表示分计数的两位,SS表示秒计数的两位。本系统输入信号分别为复位信号rst(高有效)、sel(两位信号,分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节,譬如当时间为08:59:30时,时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。该时钟系统可以通过Sel信号时钟运行的快慢。 三、实验流程: 通过对实验内容的分析:可以考虑时钟系统的可由三部分组成: 1、分频器: 分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现,同学可以回想一下实验1中是如何实现计数器电路的设计),该模块主要产生2、4、8、16分频的时钟信号; 2、多路选择器: 在VHDL中多路选择器为组合逻辑,可以有多种实现方法,在这里主要选用了case语句来实现。该模块的作用是从分频器中根据Sel信号选择适当的时钟信号; 3、时钟控制器: 该模块比较复杂,主要实现功能是实现一个24小时的计时。当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00,计时中多数计数为加1操作,有几个特殊状态需要重点考虑:当时间产生分进数时,譬如上例。当时间产生时进数时,譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时,譬如00:59:59是个的下一个状态为01:00:00。当时间产生天进数时,譬如23:59:59的下一个状态为00:00:00。 四、仿真要求: 本次试验的结果全部采用功能仿真分析: 在结果图中能够看到让复位信号rst为有效的情况下,所有的输出为00:00:00; 2、当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2、4、8、16倍clk_in的时钟周期; 3、可以看到完整的计时周期00:00:00-23:59:59-00:00:00。 五、实验代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity fpga is port( clk_in : in std_logic; rst : in std_logic; sel : in std_logic_vector(1 downto 0); hour_high_out : out std_logic_vector(3 downto 0); hour_low_out : out std_logic_vector(3 downto 0); minute_high_out : out std_logic_vector(3 downto 0); minute_low_out : out std_logic_vector(3 downto 0); second_high_out : out std_logic_vector(3 downto 0); second_low_out : out std_logic_vector(3 downto 0) ); end fpga; architecture beha of fpga is signal clk : std_logic; signal clk_cnt : std_logic_vector(3 downto 0); signal hour_high : std_logic_vector(3 downto 0); signal hour_low : std_logic_vector(3 downto 0); signal minute_high : std_logic_vector(3 downto 0); signal minute_low : std_logic_vector(3 downto 0); signal second_high : std_logic_vector(3 downto 0); signal second_low : std_logic_ve
显示全部
相似文档