Jump to content
    

Вопрос начинающего (VHDL)

2 hours ago, des00 said:

очень спорное утверждение, особенно для процессов описания регистровой логики(а у ТС именно регистровая логика).

Правильны оба описания, в том числе с точки зрения стандарта VHDL и было там со времен царя гороха. В V/SV тоже есть много подобных описаний, когда логика пишется похожим образом.

ТС. вы бы код весь выложили, тогда проблема решилась бы намного быстрее)

Описание синхронного процесса это чуть ли не единственное исключение из правила, что каждый if должен иметь else. Думаю оно очевидно и не явно подразумевалось. 

Edited by KeisN13

Share this post


Link to post
Share on other sites

3 minutes ago, KeisN13 said:

Думаю оно очевидно и не явно подразумевалось. 

ТС несколько раз подчеркнул, что он начинающий и не ориентируется в вопросе. Ваше замечение для него не факт что очевидно и только запутает, а не поможет.

Share this post


Link to post
Share on other sites

Приветствую!

1 hour ago, KeisN13 said:

Описание синхронного процесса это чуть ли не единственное исключение из правила, что каждый if должен иметь else. Думаю оно очевидно и не явно подразумевалось.

Можете объяснить категоричность этого утверждения? 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Видимо, имеется в виду, что при описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи.

Share this post


Link to post
Share on other sites

Приветствую!

24 minutes ago, andrew_b said:

Видимо, имеется в виду, что при описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи.

Действительно - латчи при синтезе получаются  если в асинхронном процессе в какой-либо из ветвей условий не определено новое состояние переменной. Но для устранения такого не обязательно лепить else на каждый  чих if Для этого достаточно присвоить переменной дефолтное значение в начале процесса. 

Поэтому мне все же интересно почему "... каждый if должен иметь else ..." :scratch_one-s_head:

Удачи! Rob.

Share this post


Link to post
Share on other sites

18 минут назад, RobFPGA сказал:

присвоить переменной дефолтное значение в начале процесса

Я, например, так не пишу. KeisN13, видимо, тоже.

Share this post


Link to post
Share on other sites

1 hour ago, andrew_b said:

описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи

ИМХО это какое-то извращение - писать асинхронщину в процессе (забыл нужый сигнал в список чувствительности и пиши пропало). Ещё с первого знакомства с ActiveHDL привык описывать асинхронщину на VHDL через when... else конструкцию. И не так громоздко и разделение проще мкжду синхронными и асинхронными стадиями видно. Хотя это конечно лично моё мнение и на абсолютную истину не претендует (да и исключения бывают всякие)

Share this post


Link to post
Share on other sites

15 минут назад, Nick_K сказал:

ИМХО это какое-то извращение - писать асинхронщину в процессе (забыл нужый сигнал в список чувствительности и пиши пропало). Ещё с первого знакомства с ActiveHDL привык описывать асинхронщину на VHDL через when... else конструкцию. И не так громоздко и разделение проще мкжду синхронными и асинхронными стадиями видно. Хотя это конечно лично моё мнение и на абсолютную истину не претендует (да и исключения бывают всякие)

В списке чувствительности в VHDL2008 можно писать all, и не заморачиваться.

Share this post


Link to post
Share on other sites

55 минут назад, Nick_K сказал:

забыл нужый сигнал в список чувствительности и пиши пропало

Режешь себе колбасу, отвлёкся -- и палец отрезал. Это же не причина не использовать нож, да?

Когда надо написать какой-нибудь сложный мультиплексор, то может оказаться, что if-else выглядит гораздо более читабельнее, чем when-else.

Share this post


Link to post
Share on other sites

13 minutes ago, andrew_b said:

Режешь себе колбасу, отвлёкся -- и палец отрезал. Это же не причина не использовать нож, да?

Когда надо написать какой-нибудь сложный мультиплексор, то может оказаться, что if-else выглядит гораздо более читабельнее, чем when-else.

Видно у Вас не было проектов в десятки мегабайт только исходников в тексте (рукописных). Там вопрос не в том что "отвлёкся", а когда именно это произойдёт (и произойдёт это точно). Соответственно потом как быстро исправить и насколько критична будет ошибка. Так что лучше себе не усложнять жизнь.

P.S. "Сложный мультиплексор" можно описать в синхронном процессе через case, либо с тем же успехом when-else в понятном оформлении, и никаких проблем. А вообще "сложные мультиплексоры" лучше не юзать - это плохо сказывается на карме времянке :wink:

Share this post


Link to post
Share on other sites

3 hours ago, RobFPGA said:

Приветствую!

Действительно - латчи при синтезе получаются  если в асинхронном процессе в какой-либо из ветвей условий не определено новое состояние переменной. Но для устранения такого не обязательно лепить else на каждый  чих if Для этого достаточно присвоить переменной дефолтное значение в начале процесса. 

Поэтому мне все же интересно почему "... каждый if должен иметь else ..." :scratch_one-s_head:

Удачи! Rob.

наверное не переменной , а сигналу. Сигналы я инициализирую в начальное состояние только при объявлении

В целом я хотел написать, что незакрытые ифы порождают латчи

Share this post


Link to post
Share on other sites

On 10/9/2019 at 2:44 PM, KeisN13 said:

наверное не переменной , а сигналу. Сигналы я инициализирую в начальное состояние только при объявлении

В целом я хотел написать, что незакрытые ифы порождают латчи

Вот я чет тупанул жёстко. 

Сигналы я инициализирую при объявлении и в процессах соответственно. Если в начале процесса сигналы проинициализированы то if для этого сигнала можно не закрывать.

Share this post


Link to post
Share on other sites

В 9 октября 2019 г. в 13:33, Flip-fl0p сказал:

В списке чувствительности в VHDL2008 можно писать all, и не заморачиваться.

Много раз на форуме видел упоминание о 2008-м vhdl. А в Квартусе 9.0 он? И второй вопрос чайника: если написать process(all), то не займёт ли это дополнительные ресурсы микросхемы?

Share this post


Link to post
Share on other sites

1 час назад, MrGalaxy сказал:

Много раз на форуме видел упоминание о 2008-м vhdl. А в Квартусе 9.0 он? И второй вопрос чайника: если написать process(all), то не займёт ли это дополнительные ресурсы микросхемы?

В VHDL список чувствительности не влияет на синтез. Влияет только на симуляцию. Про поддержку в Q 9.0 не скажу. Смотрите описание.

Share this post


Link to post
Share on other sites

Ещё один чайницкий вопрос: правильно я понимаю, что инициализация переменных/сигналов происходит сразу же после конфигурирования ПЛИС до старта всех процессов?

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...