Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

С гонками фронтов борюсь

Отправлено vitalyn 03 июля 2009, г. 13:46
В ответ на: Зачем по двум фронтам работать? отправлено пользователем druzhin 03 июля 2009, г. 12:42

Даже глобальный клок приходит на триггера неодновременно и этого разбега хватает для глюков.

У меня все сигналы делятся на 2 группы - тактируемые по фронту глобального клока, и тактируемые по спаду. Если какой-то сигнал тактируется по фронту, то он вычисляется только от сигналов, тактируемых по спаду. И наоборот.

Вот, например, длинный счётчик.

Если он короткий, то можно сделать и так

reg [0:3] cnt;
always @ (posedge CLK)
cnt = cnt + 1;

А вот если длинный, то делаю

reg [0:31] cnt;
reg [0:31] cnt_;

always @ (negedge CLK)
cnt_ = cnt + 1;
always @ (posedge CLK)
cnt = cnt_;

потому что даже carry-chain не помогает на длинных регистрах.

Да, расход триггеров в 2 раза больше, но зато всегда работает. Да и обычно у меня LUTов расходуется гораздо больше, чем триггеров, так что лишних ячеек такая тактика не использует.


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru