Перейти к содержанию
    

Синтез в разных средах

Есть код на верилоге

module (c,en,q)

input c, en;

output q;

reg q;

 

always @(posedge c or posedge q)

begin

if (q) q=0;

else

if (en) q=1;

end

 

endmodule

 

Если на момент прихода сигнала "с" en=1 вырабатывается скачок на q.

Вопрос в следующем, почему при синтезе в synplify получаю ошибку:

The logic for q does not match a standard flip-flop,

а при синтезе в Quartus и Leonardo синтезируется нормально?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть код на верилоге

module (c,en,q)

input c, en;

output q;

reg q;

 

always @(posedge c or posedge q)

begin

if (q) q=0;

else

if (en) q=1;

end

 

endmodule

подумать и посмотреть стандарт на верилог, ИМХО налицо ОХ....Я ошибка

удачи :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть код на верилоге

module (c,en,q)
input c, en;
output q;
reg q;

always @(posedge c or posedge q)
begin
    if (q) q=0;
    else
        if (en) q=1;
end

endmodule

 

Если на момент прихода сигнала "с" en=1 вырабатывается скачок на q.

И какой длительности должен быть скачок? :)

 

Вопрос в следующем, почему при синтезе в synplify получаю ошибку:

The logic for q does not match a standard flip-flop,

а при синтезе в Quartus и Leonardo синтезируется нормально?

Синплифай прав. Насчет Леонардо не скажу, а Квартус может и синтезитует, но вряд ли нормально. На предупреждения посмотрите? Не может быть, чтоб он это молча проглатывал.

 

В Вашем случае, похоже, требуется формирование импульса длительностью один период тактовой частоты. Тогда код должен выглядеть где-то так:

 

module 
(
    input       c,
    input       en
    output reg q
);

always @(posedge c) begin
    if (q) q <= 0;
    else if (en) q <= 1;
end

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Квартус в резульатате синтеза получает следующую схему:

регистр:

у него на Д еденица

на С - клок

на Енабле - ен

причем выход регистра направлен на асинхронный сброс регистра.

Если бы я делал в схематиксе я бы сделал точно так же. Я понимаю что асинхронные схемы не всегда хорошо, и что длительность импульса видимо будет зависеть от разводки, но тем не менее такая же схема возможна. dxp, нет скачок длительностью в один импульс не интересует, интересует именно синтез такой схемы в synplify. Может дело в каких-то конкретных настройках synplify?

Maxplus тоже нормально просинтезировал без вских варнингов, построил временную диаграмму со скачком на q.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой смысл этой схемы что в схематике, что в тексте.

Действительно, Quartus это синтезирует. В результате Вы получаете на q пички в интервале en длительностью времени срабатывания триггера по асинхронному clr. Даже если опустить тот факт, что это категорически неприемлемо для программируемой логики, логического смысла в этом тоже нет. Сигнал на выходе q эквивалентен клоку c в интервале en.

Молодец этот synplify.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Квартус в резульатате синтеза получает следующую схему:

регистр:

у него на Д еденица

на С - клок

на Енабле - ен

причем выход регистра направлен на асинхронный сброс регистра.

Если бы я делал в схематиксе я бы сделал точно так же. Я понимаю что асинхронные схемы не всегда хорошо, и что длительность импульса видимо будет зависеть от разводки, но тем не менее такая же схема возможна. dxp, нет скачок длительностью в один импульс не интересует, интересует именно синтез такой схемы в synplify. Может дело в каких-то конкретных настройках synplify?

Maxplus тоже нормально просинтезировал без вских варнингов, построил временную диаграмму со скачком на q.

Так у Вас тут асинхронщина в полный рост! :) Не, так нельзя делать в ПЛИС. Только синхронный дизайн.

 

sazh, поясните пожалуйста почему это неприемлимо для программируемой логики?

хоть не ко мне вопрос, но перекликается. При использовании программируемой логики с таким подходом Вы получите неконтолируемые задержки и длительности. Они будут "плавать" в зависисмости от конкретного значения напряжения питания, текущей температуры, партии микросхем. ПЛИС специально спроектированы для синхронного дизайна. Там для этого есть специальные ресурсы - в частности, отдельные слои для распространения тактовых сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TO BAR Одним словом не ответить. Имеет смысл читать книги разных авторов.

А подход один.

Сначало функциональное моделирование. Потом временное. При сравнении должны получить одинаковые времянки (в интервале глобального клока). У Вас при функциональном моделировании на выходе сигнала не будет.

Отсюда простая рекомендация. Стремиться к одноклоковой (глобальной) синхронизации, к синхронным схемам. Формировать все сигналы в разах глобального клока (кратными его периоду).

В противном случае глубоко изучать рекомендации по использованию того или иного пакета.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...