我是靠谱客的博主 大胆蜜蜂,最近开发中收集的这篇文章主要介绍基于vhdl的流水灯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一 实验原理
该流水灯的实验是通过按键控制产生一个周期为20ms的脉冲,用于流水的频率。然后通过译码电路来控制流水的功能。

二 实验模块
该实验共有两个模块,流水频率电路模块和LED控制模块。
流水频率控制模块
流水控制模块
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的流水灯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部