VHDL呼吸灯源码解析
Date:2016/10/27
CSDN主页
固有声明使用IEEE库和标准逻辑器件
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
申明器件实体,输入和输出接口
其中clkin为时钟输入信号,clkout和clkout2为呼吸灯输出信号.异步输出呼吸灯效果
entity led is
port (
clkin:in std_logic;
clkout:out std_logic;
clkout2:out std_logic
);
end entity;
代码实体部分,对接入引脚和输出引脚进行逻辑定义,在这个过程中我首先对时钟进行分频
我在之前测试时钟频率的时候,发现在分频2的24次方可以让灯以一秒左右一闪的频率闪动,可以由此反推时钟频率大概为2的24次方左右也就是大概8MHz-12MHz左右.
我们需要定一个单次呼和单次吸的时间周期.既然是呼吸灯,自然不能周期太短.也就是说最后我们要实现的频率不能比2的24次方短
architecture behave of led is
signal mlow:std_logic_vector(9 downto 0);
signal mhigh:std_logic_vector(15 downto 0);
signal mcur:std_logic_vector(15 downto 0);