реклама на сайте
подробности

 
 
> Странности со STate Machine, Летает, блин!..
Вовка_Бызов
сообщение Nov 16 2011, 13:03
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Имеем проект для Cyclone III. Один из фрагментов содержит State Machine переменную. Так вот, этот самый state machine через некоторое время улетает в неопределенное состояние, из которого возвращается только сбросом. Как такое может быть и чем лечится?

Вот, код на VHDL. Вывод TST был добавлен для поиска состояния, в котором исполнение виснет. Так вот - TST так и не стал '1' после зависания sad.gif

Код
library ieee;
use ieee.std_logic_1164.all;
use IEEE.numeric_std.all;

entity IO_SPLITTER_LOW is
    port (
        HOLD_in1, HOLD_in2 : in bit := '0';
        DI_in1, DI_in2 : in bit_vector (31 downto 0);
        DI_out : out bit_vector (31 downto 0);
        DO_out1, DO_out2 : out bit_vector (31 downto 0);
        DO_in : in bit_vector (31 downto 0);
        START_in1, START_in2, WnR_in1, WnR_in2 : in bit;
        DONE_1, DONE_2 : out bit;
        START_out, WnR_out, TST : out bit;
        DONE : in bit;
        RESET, CLK : in bit
    );
end IO_SPLITTER_LOW;

architecture pll_type of IO_SPLITTER_LOW is
    type State_Machine is (S0, S1, S2, S3, S4, S5);
    signal mode : State_Machine;
    signal dir, connected, lstart, eof_flag : bit;
begin
    DI_out <= DI_in1 when dir = '0' else DI_in2;
    WnR_out <= WnR_in1 when dir = '0' else WnR_in2;
    DO_out1 <= DO_in;
    DO_out2 <= DO_in;
    DONE_1 <= DONE when connected = '1' and dir = '0' else '0';
    DONE_2 <= DONE when connected = '1' and dir = '1' else '0';
    lstart <= START_in1 when dir = '0' else START_in2;
    START_out <= lstart when connected = '1' else '0';
    
    TST <= '1' when mode = S2 or mode = S3 else '0';
    
    process (connected, DONE)
    begin
        if DONE = '0' and DONE'event then
            eof_flag <= '1';
        end if;
        if connected = '0' then
            eof_flag <= '0';
        end if;
    end process;
    
    process (CLK, RESET)
    begin
        if CLK = '1' and CLK'event then
            case mode is
                when S0 =>
                    if START_in1 = '1' and HOLD_in2 = '0' then
                        mode <= S2;
                    else
                        mode <= S1;
                    end if;
                when S1 =>
                    if START_in2 = '1' and HOLD_in1 = '0' then
                        mode <= S3;
                    else
                        mode <= S0;
                    end if;
                when S2 =>
                    dir <= '0';
                    mode <= S4;
                when S3 =>
                    dir <= '1';
                    mode <= S4;
                when S4 =>
                    connected <= '1';
                    if eof_flag = '1' then
                        mode <= S5;
                    else
                        mode <= S4;
                    end if;
                when others =>
                    connected <= '0';
                    mode <= S0;
            end case;
        end if;
        if RESET = '1' then
            mode <= S0;
            dir <= '0';
            connected <= '0';
        end if;
    end process;
end pll_type;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Вовка_Бызов   Странности со STate Machine   Nov 16 2011, 13:03
- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 16 2011, 17:03) ...   Nov 16 2011, 13:27
- - slash_spb   Цитата(Вовка_Бызов @ Nov 16 2011, 16:03) ...   Nov 16 2011, 14:00
|- - Вовка_Бызов   Цитата(slash_spb @ Nov 16 2011, 17:00) Ещ...   Nov 17 2011, 05:01
|- - Вовка_Бызов   Ну - в общем, вылечить-то вылечил - но не до конца...   Nov 21 2011, 08:17
|- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 21 2011, 12:17) ...   Nov 21 2011, 08:33
|- - Вовка_Бызов   Цитата(bogaev_roman @ Nov 21 2011, 11:33)...   Nov 21 2011, 10:18
|- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 21 2011, 14:18) ...   Nov 21 2011, 10:30
|- - Вовка_Бызов   Спасибо! Полез читать блог. Надеюсь, после это...   Nov 21 2011, 10:37
|- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 21 2011, 14:37) ...   Nov 21 2011, 10:53
|- - Вовка_Бызов   Цитата(bogaev_roman @ Nov 21 2011, 13:53)...   Nov 21 2011, 11:10
|- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 21 2011, 15:10) ...   Nov 21 2011, 11:38
|- - Вовка_Бызов   Цитата(bogaev_roman @ Nov 21 2011, 14:38)...   Nov 24 2011, 09:44
- - Мур   Выведите шину(надо организовать) состояний на джит...   Nov 16 2011, 14:19
- - bogaev_roman   2/3 Вы задали TA исходную частоту, он в итоге по в...   Nov 24 2011, 10:20
- - Вовка_Бызов   Цитата(bogaev_roman @ Nov 24 2011, 13:20)...   Nov 24 2011, 10:28
- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 24 2011, 14:28) ...   Nov 24 2011, 10:54
- - Вовка_Бызов   Цитата(bogaev_roman @ Nov 24 2011, 13:54)...   Nov 24 2011, 11:46
- - bogaev_roman   Цитата(Вовка_Бызов @ Nov 24 2011, 15:46) ...   Nov 24 2011, 12:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 19:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016