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

 
 
> Диагностирование причин ошибок, вылавливание багов
ADA007
сообщение Nov 7 2012, 13:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266



Доброго времени суток, форумчане!

Совсем недавно столкнулся с проблемой диагностики причин возникновения ошибок в устойстве. Интересуе как именно должны выявляться причины этих самых ошибок?

Попытаюсь описать ситуацию:
Например, имеем устройство на ПЛИС фирмы Xilinx на котором реализована такая схема компаратора =>
Код
entity Compar_ea is
    port(
        CLK_INP              : IN STD_LOGIC;
        SRST_INP             : IN STD_LOGIC;
        DATA_INP             : IN STD_LOGIC_VECTOR (3 downto 0) := X"0";
        
        COMPAR_OUTP           : OUT STD_LOGIC := '0';
        ERROR_OUTP          : OUT STD_LOGIC := '0'
    );
end entity Compar_ea;
architecture Compar_arch of Compar_ea is
signal state_s : std_logic := '0';
signal data_s : std_logic_vector (3 downto 0) := X"0";
begin
    compar_proc : process (CLK_INP)
    begin
        if (rising_edge (CLK_INP)) then
            if ( SRST_INP = '1' ) then
                COMPAR_OUTP <= '0';
                ERROR_OUTP <= '0';
                state_s <= '0';
            else
                data_s <= DATA_INP;
                case (state_s) is
                    when ('0') =>

                    case (data_s) is
                        when (X"0") => COMPAR_OUTP <= '0';
                        when (X"F") => COMPAR_OUTP <= '1';
                        when others => COMPAR_OUTP <= '0'; state_s <= '1';
                    end case;

                    when ('1') => ERROR_OUTP <= '1';

                end case;

            end if;
        end if;
    end process compar_proc;
end architecture Compar_arch;

Т.е. в результате подачи на входы схемы нибла данных на выходах будет соответствующая реакция....причем их 16-и возможных вариантов ошибку (ERROR_OUTP) будут вызывать 14.

Суть состоит в том, чтобы определить причину возникновения ошибки....т.е. какая именно комбинация на входе схемы вызвала установку регистра ERROR_OUTP?

В этой ситуации, казалось бы, нужно банально считать содержимое регистра data_s в состоянии state_s = '1'. Вопрос только в том КАК?
Чтобы иметь возможность считывать данные с регистра можно подключить к ниму ноги ПЛИС, но все замечательно когда этот регистр один единственный. А что делать когда таких регистров в проекта сотня-другая. Все ведь на ноги не выведешь...или даже если выводить последовательно - эта вся борода отжерает ресурсы ПЛИС используя матрицу соединений и др.
Может как-то можно вытянуть состояние регистра через конфигурационную память и JTAG???
Или у конфигурационной памяти и CLB односторонняя связь в сторону CLB?

Эта проблема актуальна для скрытых багов программного обеспечения. Т.е. работало наше устройство...и через год возникла комбинация которая примвела к тому, что это устройство начало работать некорректно (ведь идеального кода не бывает laughing.gif ). Вот его изъяли и принесли Вам для выяснения причин. Как кто предусматривает сбор диагностической информации в своих устройствах на ПЛИС?
Насколько информативными они должны быть, чтобы определить причины ошибки?
Go to the top of the page
 
+Quote Post



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

 


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


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