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

 
 
> Ошибка при инициализации регистра по reset, Может опять метастабильность ?
dsmv
сообщение May 24 2012, 11:17
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Обнаружил на мой взгляд странную ошибку.

Есть такой процесс:

Код
pr_reg: process( clk ) begin
    if( rising_edge( clk ) ) then
        if( reset_p='1' ) then
            reg_a<=init_val after 1 ns;
        elsif( data_en='1' ) then                                              
            reg_a( 63 downto 1 ) <= reg_a( 62 downto 0 ) after 1 ns;
            reg_a(0) <= reg_a(63) xor reg_a(62) xor reg_a(60) xor reg_a(59) after 1 ns;
        end if;
    end if;      
end process;





clk - 166 MHz

reset_p - асинхронный, но крайне длительный >100 ms

init_val - это константа.

data_en возникает намного позже reset_p

Я обнаружил при помощи ChipScope, что иногда reg_a инициализируется неправильным значением. После того, как я сделал reset_p синхронным - всё стало нормально.

Собственно вопрос - откуда здесь может быть ошибка ? Скорее всего reset_p заводится на входы сброса/установки, длительность reset_p очень большая. Времени на установку более чем достаточно. Получается, что ошибка возникает при асинхронном снятии reset - вместо сброса в 0 возникает установка в 1. Не понимаю.




Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bogaev_roman
сообщение May 24 2012, 12:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(dsmv @ May 24 2012, 15:17) *
Получается, что ошибка возникает при асинхронном снятии reset - вместо сброса в 0 возникает установка в 1. Не понимаю.

Была подобного рода ошибка - многоразрядный счетчик после сброса устанавливался не в 0, а в 1. При подробном изучении оказалось, что сброс подмешивался к данным на вход триггера и в определенный момент была гонка - переключался клок и сброс примерно одновременно, т.е. триггер автоматом попадал в метастабильное состояние. Заморачиваться не стал и на входе сделал пересинхронизацию сброса.
Go to the top of the page
 
+Quote Post



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

 


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


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