小跑蛇

作者: c0950a553955 | 来源:发表于2023-10-15 10:58 被阅读0次

1,使用VHDL (或者Verilog HDL) 编写两个译码器,分别控制8个数码管的片选和位选;
片选
使用hexto7seg进行数码管的片选。

image.png
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
USE ieee.std_logic_arith.all;

ENTITY hextocs IS
  PORT (
        inp : IN Std_Logic_Vector (4 DOWNTO 0);
        output : OUT Std_Logic_Vector (2 DOWNTO 0));
END hextocs;

ARCHITECTURE arc OF hextocs IS
BEGIN
   process(inp)
   begin
      CASE inp IS
          WHEN "00000" => output <= "000";
          WHEN "00001" => output <= "001";
          WHEN "00010" => output <= "010";
          WHEN "00011" => output <= "011";     
          WHEN "00100" => output <= "100";
          WHEN "00101" => output <= "101";
          WHEN "00110" => output <= "110";
          WHEN "00111" => output <= "111";
          WHEN "01000" => output <= "111";
          WHEN "01001" => output <= "111";
          WHEN "01010" => output <= "111";
          WHEN "01011" => output <= "110";
          WHEN "01100" => output <= "101";
          WHEN "01101" => output <= "100";
          WHEN "01110" => output <= "011";
          WHEN "01111" => output <= "010";
          WHEN "10000" => output <= "001";
          WHEN "10001" => output <= "000";
          WHEN "10010" => output <= "000";
          WHEN "10011" => output <= "000";
          WHEN OTHERS => output <= "000";
      END CASE;
  end process;
END arc;

位选
使用hexto7seg控制数码管的abcdefg7段。

image.png
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
USE ieee.std_logic_arith.all;

ENTITY hexto7seg IS
  PORT (
        inp : IN Std_Logic_Vector (4 DOWNTO 0);
        output : OUT Std_Logic_Vector (6 DOWNTO 0));
END hexto7seg;

ARCHITECTURE arc OF hexto7seg IS
BEGIN
   process(inp)
   begin
      CASE inp IS
          WHEN "00000" => output <= "0000001";
          WHEN "00001" => output <= "0000001";
          WHEN "00010" => output <= "0000001";
          WHEN "00011" => output <= "0000001";     
          WHEN "00100" => output <= "0000001";
          WHEN "00101" => output <= "0000001";
          WHEN "00110" => output <= "0000001";
          WHEN "00111" => output <= "0000001";
          WHEN "01000" => output <= "0000010";
          WHEN "01001" => output <= "0000100";
          WHEN "01010" => output <= "0001000";
          WHEN "01011" => output <= "0001000";
          WHEN "01100" => output <= "0001000";
          WHEN "01101" => output <= "0001000";
          WHEN "01110" => output <= "0001000";
          WHEN "01111" => output <= "0001000";
          WHEN "10000" => output <= "0001000";
          WHEN "10001" => output <= "0001000";
          WHEN "10010" => output <= "0010000";
          WHEN "10011" => output <= "0100000";
          WHEN OTHERS => output  <= "0000000";
      END CASE;
  end process;
END arc;

2,使用计数器宏模块产生加法计数,作为两个译码器的输入,模值取决于循环状态的个数,本例共取20个状态。


image.png

3,两点注意
使能数码管模块

image.png image.png

要对系统时钟分频
太快的刷新速度会导致数码管显示异常。

image.png

4,效果演示
https://www.bilibili.com/video/BV1E24y1f766/

相关文章

  • 早晨小跑

    这周四,因为儿子幼儿园要开运动会,所以妈妈请了一天假,来参加儿子的亲子运动会。 早上送完幼儿园,我和老婆有机会,在...

  • 陈小跑

    此地方圆百里 人烟稀少 有高过头顶的麦苗 他钻进泥地,对着月光咆哮 滋出一股长尿 葫芦瓢轻轻地摇 无人知,无人晓 ...

  • 清夜小跑

    两许小跑 微风相迎 似清冷似滚烫 驱壳作冷 吾心而烫

  • 新年小跑

    今天元旦,跟儿子约定了一早跑步,小懒虫答应得挺爽快。 本来打算跑完吃早餐的,结果把热身运动做完,就下起了小雨,只得...

  • 山巅小跑

    降温,下午没有下雨,想着爬山去。 上到山垭口,视野极佳,烟云过眼,冷风飕飕。 看了一会会风景,冷的受不了,还是跑跑...

  • 今日小跑

    上午小跑,遇见了美丽的蔷薇花。很棒的一天。

  • 饭后小跑

    早上偷懒,早起没有没有跑步。 虽然今天34度,下班了回家饭后,带着小娃,骑上他的滑板车,他前面骑,我后面跑。幸福感...

  • 周末小跑

  • 雨夜小跑

    一直想体验在雨中奔跑的感觉,今晚这个梦想终于实现了。 雨下得不大,跑了一圈翠湖,只是头发有点小小湿。耳机里慢慢响起...

  • 小跑怡情

    下班归来 躺床上昏昏欲睡 小儿唤我出门去 伊搭咔哒恰 我跑步 跑着跑着 就舒服了

网友评论

      本文标题:小跑蛇

      本文链接:https://www.haomeiwen.com/subject/muertdtx.html