Штабскапитан Овечкин 0 2 июля, 2013 Опубликовано 2 июля, 2013 (изменено) · Жалоба Пытаюсь въехать в VHDL. Пока только бездумно использую стандартные конструкции типа кейсов, процессов, генерейтов и т. д. Поначалу, чисто интуитивно, сложилось такое впечатление, что процессы это своего рода защёлки. Т. е., то, что происходит внутри, остаётся в этом состоянии до следующего изменения сигналов из списка чувствительности. Но тогда как взять в толк такое обстоятельство, что кейсы могут быть только внутри процессов?! Если речь идёт об автомате, тут оно понятно - автомат должен сохранять своё состояние до прихода следующего клока. Ну, а если я, к примеру, строю мультиплексор, или дешифратов с использованием кейса, то это же, всё равно - чистой воды комбинаторика. Почему тут обязательно нужен процесс? И что это за сущность такая, "process"? Изменено 2 июля, 2013 пользователем Штабскапитан Овечкин Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Пытаюсь въехать в VHDL. Пока только бездумно использую стандартные конструкции типа кейсов, процессов, генерейтов и т. д. Поначалу, чисто интуитивно, сложилось такое впечатление, что процессы это своего рода защёлки. Т. е., то, что происходит внутри, остаётся в этом состоянии до следующего изменения сигналов из списка чувствительности. Но тогда как взять в толк такое обстоятельство, что кейсы могут быть только внутри процессов?! Если я, к примеру, строю мультиплексор, или дешифратов с использованием кейса, то это же, всё равно - чистой воды комбинаторика. Почему тут обязательно нужен процесс? И что это за сущность такая, "process"? http://electronix.ru/forum/index.php?showt...p;#entry1174145 Тут книжек возьмите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZASADA 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба если совсем по простому - process нужен для описания поведения какого нибудь кусочка схемы. В итоге получается кубик с известными входными/выходными сигналами, который можно легко использовать например в более крупных блоках. А внутри процесса описывать можно по разному, можно не использовать тактовые сигналы-получится голая комбинаторика, можно использовать тактовые сигналы - в итоге синтезируется набор логических элементов и триггеров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Штабскапитан Овечкин 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Спасибо. Это пока то, что я и сам успел уловить. А вот как на счёт кейса? Пчему он не может существовать вне процесса? Комбинаторика же! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба ..Почему он не может существовать вне процесса? Комбинаторика же! Потому что так написано в IEEE Std 1076, раздел 8. Стандарт языка однако. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Тэ-э-к-с.... "Вы в каком полку служили?" © :) То есть, какую литературу для начала почитали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Штабскапитан Овечкин 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Потому что так написано в IEEE Std 1076, раздел 8. Стандарт языка однако.Дык это-то и так понятно. Написано-то почему? Не от фонаря же придумано, наверное? В чём философский смысел? Хочется не просто знать, что "это так, потому что где-то записано". Если это не из пальца высосано, то причинно-следственная связь должна быть обратной - "так записано, потому что это так ПО СМЫСЛУ". Вот этот смысел-то и хочется уловить, почувствовать организмом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Какой глубинный смысл вы ищете здесь? Так условились описывать 2 различных синтаксических конструкции с близкой алгоритмикой, но разными областями применимости и конечным смыслом/поведением - CASE для внутренностей процессов в их sequential выражениями, и SELECT WITH (так, кажется) - для concurrent выражений вовне процессов. И то, и то может описывать абсолютно одинаковую сущность (мультиплексор, например). Но в разных случаях предпочтительнее оказывается что-то одно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба Спасибо. Это пока то, что я и сам успел уловить. А вот как на счёт кейса? Пчему он не может существовать вне процесса? Комбинаторика же! В VHDL есть много всего необъяснимого. Т.е. объяснимого, но только при помощи отправки автора вопросов к стандарту на язык. Асинхронный мультиплексор можно сделать и без процесса: Z <= A when (M="00") else B when (M="01") else C when (M="10") else D when (M="11") else A; В то же время синхронный счетчик тоже можно сделать без процесса: cnt = cnt + '1' when rising_edge(clk); Такие вот дела. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 июля, 2013 Опубликовано 2 июля, 2013 · Жалоба В VHDL есть много всего необъяснимого. Т.е. объяснимого, но только при помощи отправки автора вопросов к стандарту на язык. Асинхронный мультиплексор можно сделать и без процесса: В то же время синхронный счетчик тоже можно сделать без процесса: Такие вот дела. Кстати, по поводу rising_edge маленькая выдержка - почему лучше использовать именно (rising_edge/falling_edge) ...But there is a little advantage using the rising_edge and falling_edge functions. It is not necessary for the clock that it should to '1' from '0'. It might can also go to '1' from 'X' or 'Z'. In that case the clock is not stabled. Stable clock should swing between '0' and '1'. Just imagine a scenario, you have bug on clock line so the clock looks like this 1,x,1,x,1,x. "clk'event and clk=1" implementaion would consider this as a clock. But rising_edge function will not... Дык это-то и так понятно. Написано-то почему? Не от фонаря же придумано, наверное? В чём философский смысел? Хочется не просто знать, что "это так, потому что где-то записано". Если это не из пальца высосано, то причинно-следственная связь должна быть обратной - "так записано, потому что это так ПО СМЫСЛУ". Вот этот смысел-то и хочется уловить, почувствовать организмом. Возможно корни лежат в языке ADA (прости Господи :)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Штабскапитан Овечкин 0 3 июля, 2013 Опубликовано 3 июля, 2013 (изменено) · Жалоба В вот на счёт "rising_edge/falling_edge" это, хоть и не в тему, но, пожалуй очень кстати. Эти rising_edge и falling_edge, стало быть, имеют в виду чистые фронты 0/1 и 1/0, тогда как "clk'event" это переход между 2мя любыми состояниями, возможными для std_logic? Если это, действительно, так, то я просто в отчаянии!!! Это значит, что VHDL это просто минное поле. Делая любой шаг, будь готов к тому, что тебя сейчас разнесёт в клочья. И ты так никогда и не узнаешь, на что напоролся. Ведь до чего же всё неочевидно и интуитивно непонятно!!! Я бы назвал такую идеологию вражественным интерфейсом (в отличии от дружественного, когда разработчик стремится к максимальной прозрачности и наглядности). Изменено 3 июля, 2013 пользователем Штабскапитан Овечкин Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 3 июля, 2013 Опубликовано 3 июля, 2013 · Жалоба В вот на счёт "rising_edge/falling_edge" это, хоть и не в тему, но, пожалуй очень кстати. Эти rising_edge и falling_edge, стало быть, имеют в виду чистые фронты 0/1 и 1/0, тогда как "clk'event" это переход между 2мя любыми состояниями, возможными для std_logic? Если это, действительно, так, то я просто в отчаянии!!! Это значит, что VHDL это просто минное поле. Делая любой шаг, будь готов к тому, что тебя сейчас разнесёт в клочья. И ты так никогда и не узнаешь, на что напоролся. Ведь до чего же всё неочевидно и интуитивно непонятно!!! Я бы назвал такую идеологию вражественным интерфейсом (в отличии от дружественного, когда разработчик стремится к максимальной прозрачности и наглядности). Все там нормально... Just imagine a scenario, you have bug on clock line so the clock looks like this 1,x,1,x,1,x. Это просто выдержка. Надо очень постараться, чтобы это сделать не специально :) Встречал мнение, что rising_edge/falling_edge в свою очередь может тормозить симуляцию (т.к. является функцией), но реально с таким не сталкивался. Наверное на современных PC неактуально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 3 июля, 2013 Опубликовано 3 июля, 2013 · Жалоба "clk'event" это переход между 2мя любыми состояниями, возможными для std_logic? Если это, действительно, так,Это так. то я просто в отчаянии!!! Это значит, что VHDL это просто минное поле. Делая любой шаг, будь готов к тому, что тебя сейчас разнесёт в клочья. И ты так никогда и не узнаешь, на что напоролся. Ведь до чего же всё неочевидно и интуитивно непонятно!!!Это всё неправда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 3 июля, 2013 Опубликовано 3 июля, 2013 · Жалоба Если это, действительно, так, то я просто в отчаянии!!! Это значит, что VHDL это просто минное поле. Делая любой шаг, будь готов к тому, что тебя сейчас разнесёт в клочья. И ты так никогда и не узнаешь, на что напоролся. Ведь до чего же всё неочевидно и интуитивно непонятно!!! Я бы назвал такую идеологию вражественным интерфейсом (в отличии от дружественного, когда разработчик стремится к максимальной прозрачности и наглядности). VHDL действительно не всегда интуитивно понятен, в отличие от Verilog/SystemVerilog. Не буду распространятся на тему VHDL vs Verilog/SystemVerilog, приведу пример always_ff @ (posedge clk) a <= b; posedge clk в явном виде говорит, что переключение происходит оп переднему фронту clk. always_ff (аналог process в VHDL) горит, что это синхронный элемент. Always также может быть always_comb и always_latch. А по поводу, что многое неочевидно и интуитивно непонятно, то все приходит с опытом. Если хватит терпения провести достаточно времени с симулятором и синтезатором, то все всанет на свои места. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 3 июля, 2013 Опубликовано 3 июля, 2013 · Жалоба VHDL действительно не всегда интуитивно понятен, в отличие от Verilog/SystemVerilog. Не буду распространятся на тему VHDL vs Verilog/SystemVerilog, приведу пример always_ff @ (posedge clk) a <= b; Если поменять местами VHDL и Verilog то полностью соглашусть с автором. Я в ужасе от конструкций Verilog; Приведённый пример на VHDL выглядит так: a <= b when rising_edge( clk ); Всё понятно и без комментариев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться