帮我解释一句流水灯程序。

[复制链接]
2695|5
 楼主| logokfu 发表于 2012-5-20 17:34 | 显示全部楼层 |阅读模式
这个是流水灯程序,很简单,我看不懂,红色部分我看不明白,懂得的朋友帮我解释下。谢谢!


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY shift8 IS
PORT(clk: IN STD_LOGIC;  
     q: BUFFER STD_LOGIC_VECTOR (5 DOWNTO 0));
END shift8;

ARCHITECTURE fun OF shift8 IS
SIGNAL b:STD_LOGIC_VECTOR (5 DOWNTO 0):="100000";
BEGIN
    PROCESS(clk)
    BEGIN
  IF(clk'EVENT AND clk='1')
  THEN
   b<=b(0)&b(5 DOWNTO 1);
   q<=b;

  END IF;
    END PROCESS;
END fun;
GoldSunMonkey 发表于 2012-5-20 23:51 | 显示全部楼层
每次在时钟上升沿的时候把b的最低位提到最高位。
比方该例子中b=100000, 下一个上升沿变成了010000,然后下一个上升沿变成了001000,这个就可看见灯不停变换闪耀。
GoldSunMonkey 发表于 2012-5-26 18:17 | 显示全部楼层
:)谢谢分数~
gkb986 发表于 2012-5-26 22:18 | 显示全部楼层
用b的高5位(5 DOWNTO 1)与b相与,即第一次10000&000000=010000,第二次01000&000000=001000,低位对齐,PS:还是学verilog吧!VHDL太麻烦!
wangweidgv 发表于 2012-5-31 14:32 | 显示全部楼层
只会Verilog的飘过、、、
GoldSunMonkey 发表于 2012-5-31 22:46 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

2646

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部