jb83 0 14 января, 2011 Опубликовано 14 января, 2011 · Жалоба Здравствуйте вам. Читая книжку по проектированию цифровых устройств, решил (из любопытства) "наваять" на VHDL'е SR-защелку. Вот что я написал: ENTITY sr_latch IS PORT ( s_inp : IN STD_LOGIC; r_inp : IN STD_LOGIC; q_outp : BUFFER STD_LOGIC; qn_outp : BUFFER STD_LOGIC ); END sr_latch; ARCHITECTURE sr_latch_arch OF sr_latch IS BEGIN q_outp <= r_inp NOR qn_outp; qn_outp <= s_inp NOR q_outp; END sr_latch_arch; А вот это я увидел в Technology Map Viewer'е (Quartus 8.1) после синтеза: Но, позвольте, таблица истинности этого творения не соответствует SR-защелке! При этом, в симуляторе (Simulator Tool) проект ведет себя корректно... Подскажите, где я неправ?? :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 января, 2011 Опубликовано 14 января, 2011 · Жалоба Но, позвольте, таблица истинности этого творения не соответствует SR-защелке! Ну почему же "не соответствует"? Обратная связь есть. Рассмотрите нижний блок, подайте на свои входы логические сигналы и посмотрите, что получится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 14 января, 2011 Опубликовано 14 января, 2011 (изменено) · Жалоба Связь-то есть, НО... Если рассматривать нижний блок, то: S R Q 0 0 last Q 0 1 1 1 0 0 1 1 1 т.е. всё как-бы "перевернуто" с ног на голову - Set сбрасывает сигнал, а Reset выставляет при этом, языковое описание соответствует определению SR-защелки: Изменено 14 января, 2011 пользователем jb83 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 января, 2011 Опубликовано 15 января, 2011 · Жалоба т.е. всё как-бы "перевернуто" с ног на голову - Set сбрасывает сигнал, а Reset выставляет Посмотрите в остальных блоках - входных, выходных. Может быть, сигналы где-то инвертируются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 15 января, 2011 Опубликовано 15 января, 2011 (изменено) · Жалоба Посмотрите в остальных блоках - входных, выходных. Может быть, сигналы где-то инвертируются? Да, я тоже об этом подуал поначалу, но, похоже, не додумал до конца... В блоках s_inp и r_inp инверсии не наблюдается (да и чем она поможет?), а если инвертировать в блоке q_outp, тогда всё сходится (но он, правда, не открывается, чтобы узнать наверняка :laughing: ). Не подскажете как это выяснить? Изменено 15 января, 2011 пользователем jb83 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 января, 2011 Опубликовано 15 января, 2011 · Жалоба В VHDL я не силен, попробовал сделать то же в Verilog, в Quartus 9.1 module exsRSlatch (input wire sin, rin, output logic qp, qn); assign qp = !(rin ^ qn); assign qn = !(sin ^ qp); endmodule Вот какая схема получилась. Как видите, есть отличия. Не знаю, в чем дело. Еще посмотрите в RTL Viewer, узнаете, что вы задумали, когда писали код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 16 января, 2011 Опубликовано 16 января, 2011 · Жалоба В RTL-вьювере картинка была, как раз, вполне узнаваема. Что-то типа этого (quartus сейчас не под рукой): Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 января, 2011 Опубликовано 16 января, 2011 · Жалоба У вас на самой первой картинке точки имеются, это, наверное, что-то написано мелким шрифтом. Попробуйте его изменить в настройках, и прочитать, что написано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 16 января, 2011 Опубликовано 16 января, 2011 · Жалоба Попробую посмотреть, но, по-моему, эти точки - это просто места соединений (чего-то). У вас они, кстати, тоже присутствуют на схеме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 января, 2011 Опубликовано 16 января, 2011 · Жалоба Попробую посмотреть, но, по-моему, эти точки - это просто места соединений (чего-то). У вас они, кстати, тоже присутствуют на схеме. Да, правильно. Но у меня еще есть и названия цепей. Попробуйте их включить в настройках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 17 января, 2011 Опубликовано 17 января, 2011 · Жалоба Посмотрел еще раз на вашу схему и сообразил - у меня все порты (входные и выходные) в проекте заассигнены как Virtual pin, а у вас - нет. Это видно по наличию в вашей схеме iobuf'ов. Когда убрал у себя виртуальность, получил такую картинку: Теперь всё сходится Интересно - различие схематических реализаций (у меня и у вас) связано с выбором устройства?? Я проект делал на Cyc III, а вы? Кстати, в первом посте я немного наврал про версию Квартуса (написал по старой памяти) - на самом деле у меня тоже v9.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 января, 2011 Опубликовано 17 января, 2011 · Жалоба Теперь всё сходится Интересно - различие схематических реализаций (у меня и у вас) связано с выбором устройства?? Я проект делал на Cyc III, а вы? Кстати, в первом посте я немного наврал про версию Квартуса (написал по старой памяти) - на самом деле у меня тоже v9.1 Ну, вот и решилось :) Я тоже на 9.1, про SP не помню, что там дома стоит. Думаю, это несущественно. Для Cyclone III, и там был выбран конкретный тип. Похоже, различие именно в восприятии языковых конструкций, в компиляторах языков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 17 января, 2011 Опубликовано 17 января, 2011 · Жалоба Похоже, различие именно в восприятии языковых конструкций, в компиляторах языков. Я, в общем-то, тоже сперва подумал на компиляторы (синтезаторы). Но потом пришла в голову такая мысль: если устройства идентичные, то не должен ли компилятор (любой) в итоге воспользоваться одинаковым набором вентилей (пусть и по-разному их скомпоновав, если это возможно). Ведь строение логической ячейки фиксировано... А у нас с вами схемы получились совсем непохожими по содержанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 января, 2011 Опубликовано 17 января, 2011 · Жалоба А у нас с вами схемы получились совсем непохожими по содержанию. Единственное, что могу предположить - что у нас и описано что-то разное. Хотя по логике, вроде работать должно одинаково. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jb83 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба Единственное, что могу предположить - что у нас и описано что-то разное. Хотя по логике, вроде работать должно одинаково. Да, действительно - не углядел: у вас - NOT (r XOR q) у меня - NOT (r OR q) Но для SR-latch'а нужно именно OR. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться