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