vhdlに基づくウォーターランプ

実験原理
流水ランプの実験は、流水の周波数に使用されるボタンコントロールを介して20msの周期でパルスを生成することです。次に、デコード回路を介してパイプラインの機能を制御します。

2つの実験モジュール
実験には、パイプライン周波数回路モジュールとLED制御モジュールの2つのモジュールがあります。
パイプライン周波数制御モジュール
フロー制御モジュール
LED制御モジュール
LED制御モジュール
3つのvhdlコード実装
遅延

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;

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;

4つの完全な機械回路図
機械全体の回路図
5つのシミュレーション結果
シミュレーション結果

おすすめ

転載: blog.csdn.net/weixin_43789635/article/details/112977777