概述
一 实验原理
该流水灯的实验是通过按键控制产生一个周期为20ms的脉冲,用于流水的频率。然后通过译码电路来控制流水的功能。
二 实验模块
该实验共有两个模块,流水频率电路模块和LED控制模块。
流水频率控制模块
LED控制模块
三 vhdl代码实现
delay
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
ENTITY delay IS
PORT (CLK,RST: IN std_logic;
PUL: OUT std_logic
);
END delay;
ARCHITECTURE behav OF delay IS
SIGNAL cnt:std_logic_vector(23 DOWNTO 0);
BEGIN
PROCESS(CLK,RST)
BEGIN
if(RST='0') then
cnt<="000000000000000000000000";
elsif(CLK'event and CLK='1') then
if(cnt="100110001001011001111111") then
cnt<="100110001001011001111111";
PUL<='0';
else cnt<=cnt+'1';
PUL<='1';
end if;
end if;
end process;
end behav;
light
USE IEEE.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
ENTITY light IS
PORT (PUL,RST: IN std_logic;
LED: OUT std_logic_vector(5 downto 0)
);
END light;
ARCHITECTURE behav OF light IS
SIGNAL i:std_logic_vector(2 DOWNTO 0);
BEGIN
PROCESS(PUL,RST)
BEGIN
if(RST='0') then
LED<="000000";
i<="000";
elsif(PUL'event and PUL='1') then
if(i=5) then
i<="000";
else
i<=i+'1';
end if;
case i is
when "000"=>LED<="111110";
when "001"=>LED<="111101";
when "010"=>LED<="111011";
when "011"=>LED<="110111";
when "100"=>LED<="101111";
when others=>LED<="011111";
end case;
end if;
end process;
end behav;
四 整机电路图
五 仿真结果
最后
以上就是大胆蜜蜂为你收集整理的基于vhdl的流水灯的全部内容,希望文章能够帮你解决基于vhdl的流水灯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复