KeisN13 11 9 октября, 2019 Опубликовано 9 октября, 2019 (изменено) · Жалоба 2 hours ago, des00 said: очень спорное утверждение, особенно для процессов описания регистровой логики(а у ТС именно регистровая логика). Правильны оба описания, в том числе с точки зрения стандарта VHDL и было там со времен царя гороха. В V/SV тоже есть много подобных описаний, когда логика пишется похожим образом. ТС. вы бы код весь выложили, тогда проблема решилась бы намного быстрее) Описание синхронного процесса это чуть ли не единственное исключение из правила, что каждый if должен иметь else. Думаю оно очевидно и не явно подразумевалось. Изменено 9 октября, 2019 пользователем KeisN13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 3 minutes ago, KeisN13 said: Думаю оно очевидно и не явно подразумевалось. ТС несколько раз подчеркнул, что он начинающий и не ориентируется в вопросе. Ваше замечение для него не факт что очевидно и только запутает, а не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба Приветствую! 1 hour ago, KeisN13 said: Описание синхронного процесса это чуть ли не единственное исключение из правила, что каждый if должен иметь else. Думаю оно очевидно и не явно подразумевалось. Можете объяснить категоричность этого утверждения? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба Видимо, имеется в виду, что при описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба Приветствую! 24 minutes ago, andrew_b said: Видимо, имеется в виду, что при описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи. Действительно - латчи при синтезе получаются если в асинхронном процессе в какой-либо из ветвей условий не определено новое состояние переменной. Но для устранения такого не обязательно лепить else на каждый чих if Для этого достаточно присвоить переменной дефолтное значение в начале процесса. Поэтому мне все же интересно почему "... каждый if должен иметь else ..." Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 18 минут назад, RobFPGA сказал: присвоить переменной дефолтное значение в начале процесса Я, например, так не пишу. KeisN13, видимо, тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 1 hour ago, andrew_b said: описании комбинационной логике в виде процесса (т. е. асинхронного процесса) без elsе получаются латчи ИМХО это какое-то извращение - писать асинхронщину в процессе (забыл нужый сигнал в список чувствительности и пиши пропало). Ещё с первого знакомства с ActiveHDL привык описывать асинхронщину на VHDL через when... else конструкцию. И не так громоздко и разделение проще мкжду синхронными и асинхронными стадиями видно. Хотя это конечно лично моё мнение и на абсолютную истину не претендует (да и исключения бывают всякие) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 15 минут назад, Nick_K сказал: ИМХО это какое-то извращение - писать асинхронщину в процессе (забыл нужый сигнал в список чувствительности и пиши пропало). Ещё с первого знакомства с ActiveHDL привык описывать асинхронщину на VHDL через when... else конструкцию. И не так громоздко и разделение проще мкжду синхронными и асинхронными стадиями видно. Хотя это конечно лично моё мнение и на абсолютную истину не претендует (да и исключения бывают всякие) В списке чувствительности в VHDL2008 можно писать all, и не заморачиваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 55 минут назад, Nick_K сказал: забыл нужый сигнал в список чувствительности и пиши пропало Режешь себе колбасу, отвлёкся -- и палец отрезал. Это же не причина не использовать нож, да? Когда надо написать какой-нибудь сложный мультиплексор, то может оказаться, что if-else выглядит гораздо более читабельнее, чем when-else. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 13 minutes ago, andrew_b said: Режешь себе колбасу, отвлёкся -- и палец отрезал. Это же не причина не использовать нож, да? Когда надо написать какой-нибудь сложный мультиплексор, то может оказаться, что if-else выглядит гораздо более читабельнее, чем when-else. Видно у Вас не было проектов в десятки мегабайт только исходников в тексте (рукописных). Там вопрос не в том что "отвлёкся", а когда именно это произойдёт (и произойдёт это точно). Соответственно потом как быстро исправить и насколько критична будет ошибка. Так что лучше себе не усложнять жизнь. P.S. "Сложный мультиплексор" можно описать в синхронном процессе через case, либо с тем же успехом when-else в понятном оформлении, и никаких проблем. А вообще "сложные мультиплексоры" лучше не юзать - это плохо сказывается на карме времянке Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KeisN13 11 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 3 hours ago, RobFPGA said: Приветствую! Действительно - латчи при синтезе получаются если в асинхронном процессе в какой-либо из ветвей условий не определено новое состояние переменной. Но для устранения такого не обязательно лепить else на каждый чих if Для этого достаточно присвоить переменной дефолтное значение в начале процесса. Поэтому мне все же интересно почему "... каждый if должен иметь else ..." Удачи! Rob. наверное не переменной , а сигналу. Сигналы я инициализирую в начальное состояние только при объявлении В целом я хотел написать, что незакрытые ифы порождают латчи Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KeisN13 11 12 октября, 2019 Опубликовано 12 октября, 2019 · Жалоба On 10/9/2019 at 2:44 PM, KeisN13 said: наверное не переменной , а сигналу. Сигналы я инициализирую в начальное состояние только при объявлении В целом я хотел написать, что незакрытые ифы порождают латчи Вот я чет тупанул жёстко. Сигналы я инициализирую при объявлении и в процессах соответственно. Если в начале процесса сигналы проинициализированы то if для этого сигнала можно не закрывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 12 октября, 2019 Опубликовано 12 октября, 2019 · Жалоба В 9 октября 2019 г. в 13:33, Flip-fl0p сказал: В списке чувствительности в VHDL2008 можно писать all, и не заморачиваться. Много раз на форуме видел упоминание о 2008-м vhdl. А в Квартусе 9.0 он? И второй вопрос чайника: если написать process(all), то не займёт ли это дополнительные ресурсы микросхемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 12 октября, 2019 Опубликовано 12 октября, 2019 · Жалоба 1 час назад, MrGalaxy сказал: Много раз на форуме видел упоминание о 2008-м vhdl. А в Квартусе 9.0 он? И второй вопрос чайника: если написать process(all), то не займёт ли это дополнительные ресурсы микросхемы? В VHDL список чувствительности не влияет на синтез. Влияет только на симуляцию. Про поддержку в Q 9.0 не скажу. Смотрите описание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 13 октября, 2019 Опубликовано 13 октября, 2019 · Жалоба Ещё один чайницкий вопрос: правильно я понимаю, что инициализация переменных/сигналов происходит сразу же после конфигурирования ПЛИС до старта всех процессов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться