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

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

2 hours ago, des00 said:

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

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

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

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

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

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


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

3 minutes ago, KeisN13 said:

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

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

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


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

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

1 hour ago, KeisN13 said:

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

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

Удачи! Rob.

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


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

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

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


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

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

24 minutes ago, andrew_b said:

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

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

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

Удачи! Rob.

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


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

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

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

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

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


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

1 hour ago, andrew_b said:

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

13 minutes ago, andrew_b said:

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

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

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

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

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


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

3 hours ago, RobFPGA said:

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

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

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

Удачи! Rob.

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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