数字电路设计实验vhdl语言实验报告.doc
文本预览下载声明
实验一 秒表计数器的设计
实验目的:
本实验通过设计四种频率可选的数字时钟系统,以达到熟悉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
显示全部