0

我正在尝试用非常快的时钟编写异步数字系统。输入由两个开关和一个按钮确定,以允许输入输入。每个输入确定允许传递到另一个状态。我用的是digilent basys2板的内部时钟B8。我似乎正确地到达了第二个州,但我无法到达其他州。行为模拟给出了预期的结果。这是我的实现,

entity states is
Port ( X : in  STD_LOGIC;
       Y : in  STD_LOGIC;
       clock : in  STD_LOGIC;
       input : in  STD_LOGIC);
end states;

architecture Behavioral of state is
    signal FF : STD_LOGIC_VECTOR (2 downto 0):="000";
begin
process(clock)
begin
    if(rising_edge(clock)) then
        if(input='1') then
            FF(0)<= (((FF(1)) and (FF(2)) and (not X) and Y) or (FF(0)));
            FF(1)<= (((not FF(0)) and (not FF(1)) and (FF(2)) and X and (not      Y));
            FF(2)<= (((not FF(0)) and (not FF(1)) and (not FF(2)) and X and Y)
                or ((not FF(0)) and (FF(1)) and (not FF(2)) and (not X) and (not Y)));
            Z <= (((not FF(0)) and (FF(1)) and (FF(2)) and (not X) and Y) or (FF(0)));
        end if;
      end if;
end process;
end Behavioral;

这是董事会的任务,

NET "clock"  LOC = "B8"  ;
NET "input"  LOC = "C11"  ;
NET "X"  LOC = "L3"  ;
NET "Y"  LOC = "P11"  ;

为什么模拟会给出预期的结果,但板上的测试却没有。我会很感激你的帮助。

4

1 回答 1

0

好的,伙计们,我已经解决了这个问题。模拟有效,但电路板没有,因为在模拟中,输入只在上升沿给出一次。(我可以用手操纵时钟并随时创建上升沿。)但是在内部时钟 B8 中,时钟变化如此之快,所以它只需要几秒钟就可以无限次地输入我的输入。为了解决这个问题,我将时钟放入 G12 以便我可以用手给时钟(就像在模拟中一样)

于 2015-06-05T14:24:00.080 回答