|
Опять вопросы с синтезабельностью |
|
|
|
Aug 31 2010, 16:11
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 2-05-10
Пользователь №: 57 029

|
Здравствуйте, товарищи! Хочу сделать генератор хелловорлдный. Оказалось, нужно проинициализировать некоторые переменные без сигнала сброса. Делал таким образом: input clc; output reg outclc; reg is_init;
always @(clc) begin if(is_init!=1) begin is_init =1; //разная всякая инициализация end else begin //ну например, outclc<=clc; end end
Синтезатор не кричал, в моделсиме красные полоски (не работает, как нужно) Рассуждаю так: вначале is_init инеет несинтезируемое значение Х, чему в жизни отвечает "не знаю". Нельзя сказать, что (is_init!=1) истина или ложь. Но я переписал так:
input clc; output reg outclc; reg is_init;
always @(clc) begin if(is_init==1) begin //ну например, outclc<=clc; end else begin is_init =1; //разная всякая инициализация end end
и на всех 4-х временных моделированиях моделсим выдавал то, чего мне было надо. Но ведь предидущие рассуждения отрицают возможность того, что можно сказать is_init==1 истина или ложь. Подскажите , пожалуйста, это вообще синтезируемо (2-й вариант)? А если нет, то как можно провести инициализацию без сигнала сброса?
Заранее благодарен за помощь!
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 21)
|
Aug 31 2010, 17:29
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
QUOTE (bogaev_roman @ Aug 31 2010, 21:18)  CODE always(posedge clc) outclc<=~clc; По идее присвоение будет происходить по событию - фронт clk, ну и присваиваться всегда будет инвертированная единица, т.е. на outclc будет всегда 0. Не согласен, зависит от перекоса сети клока и пути доставки клока на вход данных регистра. Может быть разный результат в зависимости от частоты. Вплоть до нарушения setup & hold time с соответствующими последствиями.
|
|
|
|
|
Sep 1 2010, 16:22
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Какая проблема с потерять 1nS на линии данных в относительно большом корпусе? Да хоть две! А если микросхема не пустая и сигнал проходит не по самому оптимальному пути? Чтобы было наглядно, берем входную ножку поближе к буферу глобальной сети клока, в идеале, специально для этого придуманную, а регистр с клоком на входе данных принудительно ставим на максимальном от неё расстоянии. Констрейн maxskew злостно нарушается. Получаем skew 2.7nS в конкретном примере - Virtex6 VLX75 FF784. Это означает, что мегагерцах эдак на двухстах вы поймаете задний фронт этим регистром. В аттаче исходный текст и архив с UCF-файлом - форум не ест расширения vhdl и ucf.
Прикрепленные файлы
skew.vhd ( 536 байт )
Кол-во скачиваний: 27
skew.rar ( 224 байт )
Кол-во скачиваний: 13
|
|
|
|
|
Sep 1 2010, 17:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Shtirlits @ Sep 1 2010, 20:22)  Какая проблема с потерять 1nS на линии данных в относительно большом корпусе? Да хоть две! А если микросхема не пустая и сигнал проходит не по самому оптимальному пути? Чтобы было наглядно, берем входную ножку поближе к буферу глобальной сети клока, в идеале, специально для этого придуманную, а регистр с клоком на входе данных принудительно ставим на максимальном от неё расстоянии. Констрейн maxskew злостно нарушается. Получаем skew 2.7nS в конкретном примере - Virtex6 VLX75 FF784. Это означает, что мегагерцах эдак на двухстах вы поймаете задний фронт этим регистром. В аттаче исходный текст и архив с UCF-файлом - форум не ест расширения vhdl и ucf.  Да-да, нашаманили, верю...даже странно малое значение получили, у меня на стратикс4 по диагонали до 5ns доходит обычная задержка сигнала... Я предвидел такой расклад в предыдущем посте Цитата ну а вообще это практически нереальная ситуация, в данном примере . Ну а серьезно - уберите "если" и САПР всегда найдет хотя бы один свободный триггер рядом с буфером глобальной сети, ну не видел я реально работающих проектов, которые были забиты более чем на 90%, а в Вашем случае получается загрузка на 100% хоть и отдельного куска ПЛИС.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|