2015-06-02 4 views
0

Я пытаюсь написать асинхронную цифровую систему с очень быстрыми часами. Входы определяются двумя переключателями и кнопкой, позволяющей вводить входы. Каждый вход определяет, позволяет перейти в другое состояние. Я использовал внутренние часы B8 платы digilent basys2. Кажется, я правильно добрался до второго состояния, но я не могу добраться до других штатов. Поведенческое моделирование дало ожидаемые результаты. Вот моя реализация,Выполнение переходов состояний с использованием xilinx

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

Нет выходов. Как вы можете сказать, работает ли это или нет? Поскольку нет выходных данных, синтезу разрешается обрезать все остальное, поскольку ничто в дизайне не может повлиять на какой-либо вывод. –

+0

Кажется, что часть, которая показывает, что z - это результат не в коде выше. Как я писал ранее, я уверен, что моя симуляция правильная, но я не могу добраться до других состояний в board.I проверил таблицу истинности, которую я написал для этого дизайн, и он также дал результаты в моделировании. – Juwan

+0

Ваш дизайн пропускает несколько основных схем для подготовки входных сигналов для использования в FSM. 1) вам необходимо синхронизировать все входы с рабочей областью тактовых импульсов. 2) вам нужно отлаживать сигналы от кнопок и переключаться, если плата не передает апробированные сигналы. Для получения дополнительной информации ознакомьтесь с документом схемы или картотекой вашей доски. 3) иногда входы должны генерировать стробированные сигналы (высокие для 1 цикла), если вам нужно дополнительное обнаружение края. Эти шаги в основном необходимы для всех контактов GPIO. Другой момент Xilinx не будет распознавать ваш FSM как statemachine, потому что это не типичный шаблон. – Paebbels

ответ

0

Хорошо, ребята, я решил проблему. Моделирование работало, но плата не использовалась, потому что в симуляции входные данные давались только один раз в восходящем фронте (я мог манипулировать часами своей рукой и создавать нарастающий фронт всякий раз, когда я хочу.) Но во внутренних часах B8 часы меняются так быстро, что он принимает мой вход бесконечно много раз только в секундах. Чтобы исправить это, я поместил часы в G12, чтобы я мог давать часы моей рукой (как в симуляции)