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

Непрерывное присвоение на Verilog

да я просто радуюсь умности синтезаторов которые не начинают ныть что булевая фигня стоит не под IF. :)

 

причем даже если декодер_ен не 1 битный и то сработает, даже если des_sdrc не 1 битный тоже вроде прожует...

 

а вот за & и && стараюсь следить, чтоб порядок и понятность!

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


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

и ничего синтезатор прожевал и все сделал:) забавно...

Чего забавного то? Красиво и экономно написано, по всем канонам языка, с убиранием лишних, мешающих сущностей.

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


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

Помогите разобраться, или ткните носом в подходящую статью - в чем принципиальная разница между assign и always@* в случае непрерывного присвоения?

 

Допустим надо написать инвертор. Можно поступить так:

input i;

output o;

assign o = !i;

 

Или так:

input i;

output reg o;

always @* 0 <= !i;

 

Данные конструкции синтезируются одинакого?

 

Да, нет никакой разницы.

Но во втором случае щас желательно писать

always_comb out <= in;

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


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

Господа, всех сердечно благодарю за ответы.

 

druzhin, моя среда не хавает SV(( always_comb, на сколько я понимаю, в простом Verilog нет.

 

Вопрос в догонку - при работе с одноразрядными сигналами в чем разница между & и && ? А то просто ТС - школьник и колхозник-провинциал к тому же(

Изменено пользователем Sobol'

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


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

Вопрос в догонку - при работе с одноразрядными сигналами в чем разница между & и && ?

& - побитовое И

&& - логическое И (если выполняются оба условия)

для однобитных данных разницы не будет

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


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

assign и always используют разные типы (слева от присвоения), wire и reg, соответственно.

Как указал SM, использовать указание силы "drive strength" можно только для wire (наприм. надо описать двунаправленный буфер).

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


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

& - побитовое И

&& - логическое И (если выполняются оба условия)

для однобитных данных разницы не будет

Если взять за основу freescale или cisco стандарты, (разумеется они не являются чем-то незыблемым или истиной в последней инстанции),

то они используют '&&' для однобитных сигналов. Не смотря на то, что разницы для синтезатора нет. Сам всегда использовал одинарный '&'.

У каждого программиста свой подход и «фиг переспоришь», понятно дело.

Если исходить из духа корпоративных стандартов, насколько я их понял, делается это для того,

чтоб при взгляде на запись, сразу понимали — логическое-И производится над однобитными сигналами. Все нацелено на то,

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

Вообще, если писать, руководствуясь их стандартами, писанины прибавляется. Имхо это правильный подход с т.з. reusable кода.

Давно хочу объединить opencores + freescale + cisco + тут разрабатывался когда-то свой стандарт + рекомендации от альтеры и ксайлинкс,

сделать нечто общее.

 

P.S. интересно было бы почитать прочие стандарты каких-нибудь технологических гигантов. может, кто-то в курсе, есть вообще в сети?

Изменено пользователем x736C

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


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

assign и always используют разные типы (слева от присвоения), wire и reg, соответственно.

Как указал SM, использовать указание силы "drive strength" можно только для wire (наприм. надо описать двунаправленный буфер).

assign и always используют одинаковые типы logic. И не перепутаешь reg и wire.

Единственное замеченное ограничение - многоразрядные сигналы типа bus[31:0], все разряды должны быть или все под assign, или все под always. Видимо синтезатор делит этот logic на reg и wire по контексту кода.

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


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

assign и always используют одинаковые типы logic. И не перепутаешь reg и wire.

Единственное замеченное ограничение - многоразрядные сигналы типа bus[31:0], все разряды должны быть или все под assign, или все под always. Видимо синтезатор делит этот logic на reg и wire по контексту кода.

Верно, можно объявить logic в SystemVerilog, но где нужен drive strength без wire не обойдешься.

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


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

Верно, можно объявить logic в SystemVerilog, но где нужен drive strength без wire не обойдешься.

Вот-вот. Этот "logic" видится каким-то костылем, непонятно с какой целью сделанным. Без него жилось и живется комфортно.

 

assign и always используют одинаковые типы logic. И не перепутаешь reg и wire.

Нет такого типа в языке, о котором автор задал вопрос ;)

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


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

Вот-вот. Этот "logic" видится каким-то костылем, непонятно с какой целью сделанным. Без него жилось и живется комфортно.
Читал такую версию появления 'logic':

 

Сигнал типа reg, несмотря на явное происхождение своего названия от 'register', при синтезе мог дать как регистр, так и просто провод, в зависимости от контекста использования. Что бы не смущать неокрепшие умы дизайнеров (мол как так - написал reg получил чистую логику, куда дели регистр???) был введен тип logic, для замены как wire так и reg в контексте, где они отличаются только отсутствием/наличием памяти на свое состояние.

 

 

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


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

Что бы не смущать неокрепшие умы дизайнеров

Вот-вот, я и говорю костыль. А окрепшие умы вполне могут представить себе reg-провод, как постоянно открытую защелку.

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


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

Вот-вот, я и говорю костыль.
Скорее стремление к унификации :rolleyes: Но по сути конечно костыль :biggrin:

 

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


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

В vhdl есть только signal. И это радует.

В VHDL есть куда большая хренова туча типов, и соответствующая куча преобразований из пустого в порожнее... В отличие от двух основных типов верилога - wire и reg.

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


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

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

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

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

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

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

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

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

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

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