Jump to content
    

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

input i;

output o;

assign o = !i;

 

Или так:

input i;

output reg o;

always @* 0 <= !i;

 

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

 

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

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

always_comb out <= in;

Share this post


Link to post
Share on other sites

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

 

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

 

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

Edited by Sobol'

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

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

 

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

Edited by x736C

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...