|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|||||||||||
Xilinx ISE 14.1. Реализация конечного автомата генератора последовательностей25.11.2012, 16:31. Показов 9113. Ответов 38
Метки 141, ise, xilinx, автомата, генератора, конечного, последовательностей, реализация (Все метки)
Всем привет.
Стоит задача построения конечного автомата (КА) - генератора последовательности. Вариант исполнения, по сути, представляет собой реверсивный счетчик: Также мы имеем таблицу, нашу последовательность состояний: В Xilinx нужно все это реализовать на HDL Verilog схемотехнически и в симуляторе получить временные диаграммы. До этого я реализовывал простые задачи типа из нашей последовательности состояний получить ДНФ, привести к базису логических элементов И-НЕ. Тут я разобрался во всем, но в данной задаче я вообще ничего не понимаю, даже как схему построить, на каких элементах и как она вообще работает... Вот что рисовал преподаватель: Насколько я понял это все в общих чертах, и каждый элемент будь то регистр или мультиплексор, их нужно раскрывать. Регистры мы строем на готовых элементах Xilinx: FDC/FDD, а мультиплексор на логических элементах. CL1 ЛР1 - это комбинационная схема из моей первой лабораторной работы, это ДНФ в базисе И-НЕ, если будет нужна, скину проект. Попробовал немного раскрыть, получилось: А дальше не понимаю ничего. Сначала мы создаем HDL проект. В нем создаем New Source - Verilog Module. Для моих старых работ я описывал данный модуль так:
Далее строим саму схему через New Source - Schematic. Тут тоже не совсем понятно как она будет выглядеть, какие wire для входов рисовать, а какие нет, да и вообще на каких элементах ее строить, ибо как OE изобразить я тоже не понимаю... Далее перебираемся к симулятору, New Source - Verilog Test Fixture, для старых работ описывал так:
Собственно ищу сочувствующих, кто поможет натолкнуть на правильные мысли или подсказать как что делать, ибо моих знаний на данную работу вообще не хватает, к сожалению... (
0
|
|||||||||||
| 25.11.2012, 16:31 | |
|
Ответы с готовыми решениями:
38
Реализация конечного автомата Реализация конечного автомата
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 04.12.2012, 14:57 [ТС] | |
|
- Вопрос по регистрам снимаю, убрал я FDP чтобы не усложнять себе жизнь, все строю на FDC.
- По поводу объединения четырех выходов в один вход. Вроде бы получилось нарисовать шину, вот только правильно ли я сделал что подал на вход тристабильного буфера шину, или же мне нужно взять четыре таких буфера под каждый выход предыдущих регистров и уже выходы буфера объединить в шину и назвать ее DATA_O(3:0)? Схемы проекта: revers_sch.rar Скрины: screenshots.rar - По поводу ADSU4. Первый ADSU4 у меня реализует функцию DEC (CL-1), т.е. вычитание. Согласно таблице логики на входы А мы подаем наше текущее состояние Q, например 0000. Вход ADD мы должны поставить в состояние 0, чтобы происходил вычет, также CI, CO тоже должны быть равны 0 и тогда мы из А будем вычитать В. На этом мое понимание заканчивается о том что такое В и откуда мы его берем. Второй ADSU4 реализует функцию INC (CL+1), т.е. сложение. Далее все аналогично, только на ADD, CI и CO мы теперь подаем 1 и в итоге получим А+В. Или получается что мы на В постоянно 0001 подаем, что ее плюсовать или вычитать?
0
|
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
||
| 04.12.2012, 16:35 [ТС] | ||
|
Думаю ошибкой не будет, если я реализую это так (у регистра шину убрал):
0
|
||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|||||||||||
| 04.12.2012, 16:52 [ТС] | |||||||||||
|
raxp, хорошо, спасибо. Но еще остались вопросы (((
- Про ADD, CI, CO я правильно написал выше? Но как быть с OFL ибо в таблице логики он никак не описан... - Дальше мне нужно сделать привязку данной схемы в файле верилога где буду описывать входы и выходы, но меня интересует следующее: куда мы подаем наш вариант задания, т.е. последовательность состояний? Когда я писал это задание на верилоге:
Или же есть идея на 5-м листе где ДНФ И-НЕ входы сделать маркерами и описать их:
0
|
|||||||||||
|
|
||||
| 04.12.2012, 17:04 | ||||
Или вы о чем? Если симуляции состояний, то в симуляторе при открытой схеме назначаем нужные цепи и проводим симуляцию с подачей соответствующих тактовых, запускающих и прочего, далее просто проверяем реакцию автомата.
0
|
||||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 04.12.2012, 17:11 [ТС] | |
|
raxp, OFL это переполнение, у ADSU4 стоит как выход, что с ним делать не знаю)
Да я про Test Bench. Как задавать CLK, RST, UP, LOAD и OE я знаю, но нам же еще нужно что-то задать чтобы он гонял нашу последовательность, в верилоге я ее объявлял через assign а тут она по нашей схеме сама воссоздастся? Ибо для ДНФ И-НЕ я руками прописывал иксы но теперь здесь вместо них идет связь Q_NXT с мультиплексора... Грубо говоря нормального входа описывающего последовательность у нас нет.
0
|
|
|
|
|||
| 04.12.2012, 17:19 | |||
0
|
|||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 04.12.2012, 17:24 [ТС] | |
|
raxp, хех а в этом то и фишка!) наш преподаватель разделяет задания на два типа, первый это схемотехнически, а второй с помощью assign или always case. Вот как раз таки в нашем случае схемотехника... и в главном файле мы можем лишь сделать только привязку к схеме и все... а в файл тест бенча, что-то я еще ниразу не видел, чтобы в него вливали значения для выхода...)
Собственно попробую что-нибудь начудь, выложу что получилось) Еще раз спасибо.
0
|
|
|
|
||
| 04.12.2012, 17:32 | ||
0
|
||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 04.12.2012, 17:41 [ТС] | |
|
raxp, под входными воздействиями подразумеваете CLK, RST, UP, LOAD и OE как основные и ADD, CI, CO, OFL, верно?
Ну тогда начнем симуляцию. Если все оставить по нулям, то соответственно ничего и не увидим... Включим CLK и RST - у нас должна побежать SEQ. Включим OE - побежит DATA_O. Ну UP, LOAD, DATA_I - понятно что будет... Берусь, посмотрим что будет, пока все равно тяжело представляю...
0
|
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
||||||||||||||||
| 04.12.2012, 18:47 [ТС] | ||||||||||||||||
|
raxp, ага, только слова ваши смутили про OFL "посмотри что будет" не придется ли менять их значения, ведь CO для DEC и INC должен быть разным или в данном случае это не учитывается и напрямую зависит от CI...
Добавлено через 13 минут Собственно симулятор не заработал... Кликните здесь для просмотра всего текста
Код главного файла: Кликните здесь для просмотра всего текста
Код файла тест бенч: Кликните здесь для просмотра всего текста
Добавлено через 44 минуты Ошибки с шиной устранил, теперь вылезли новые...
0
|
||||||||||||||||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|||||||||||
| 04.12.2012, 19:14 [ТС] | |||||||||||
|
Ошибки устранил, симулятор заработал, но непонятно как... SEQ от DATA_O строится верно, но сама DATA_O перепрыгивает, а не четко идет +1 или -1, на UP неправильно реагирует... вообщем работает непонятно как...
И можно ли в симуляторе скрыть ненужные мне линии, а оставить только те, которые меня реально интересуют? _ _ _ Код главного файла: Кликните здесь для просмотра всего текста
Код файла тест бенч: Кликните здесь для просмотра всего текста
revers_sch.rar screenshots.rar
0
|
|||||||||||
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 06.12.2012, 18:06 [ТС] | |
|
соединил CI с CO у ADSU4 DEC, счет пошел правильно - последовательно, но на UP циклится на 1111, а на LOAD вообще не реагирует...
Добавлено через 21 час 59 минут Собственно выявил некую закономерность: у меня UP работает как LOAD, а LOAD как UP... Изменил схему мультиплексоров, поменял местами входы UP и LOAD, теперь вроде бы работать стало верно, но не совсем... Когда подаем UP счет действительно начинает идти в другую сторону, но не последовательно, а через 1, т.е. 0011, 0101, 0111 и т.д., DATA_I делаю равным 0110, подгружаю LOAD и в DATA_O должна была загрузить 0110 соотвественно, но загружается 1111, а также временная диаграмма сама обрезается на 285 нс, хотя должна идти до 1000 нс. И еще симулятор выводит данное предупреждение: WARNING: File "D:/Xilinx/project/my/lab_3/revers.v" Line 31. For instance uut/SCH_EXAMPLE/, width 1 of formal port DATA_I is not equal to width 4 of actual signal data_i. Помогите разобраться, совсем немножко то остается... ![]() Добавлено через 25 минут Предупреждение убрал, добавил DATA_O как шину в схему мультиплексоров, LOAD заработал как надо, а вот UP все равно продолжает прыгать через один, и диаграмма снова обрезается самовольно... Добавлено через 46 минут И с UP справился... ci_inc = 0; - до этого была единица, теперь считает обратно последовательно. Остался последний вопрос, почему он режет диаграмму?
0
|
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 06.12.2012, 18:20 [ТС] | |
|
Ну и с этим справился... Убрал замыкание между CI_DEC и CO_DEC на ADSU4, и изменил ci_dec = 1; (до этого был ноль).
Остался последний вопрос, почему когда мы уже подали сигнал OE = 1 у нас все равно идут 0000, чего он ждет то?
0
|
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 12.12.2012, 01:29 [ТС] | |
|
raxp, это все понятно) работу сдал, так что все хорошо. Только буфер я не тот использовал, нужно было OBUFT в нем как раз zzzz состояние есть, проверял на диаграмме все четко, а задержка с нулями так и осталась для меня загадкой, ну да ладно.
Огромное спасибо за помощь и наведение на правильные мысли
0
|
|
|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|
| 22.12.2012, 15:56 [ТС] | |
|
Для тех кому интересно, по поводу того почему идет задержка в нулях. Ответ нашелся, это особенность схемотехнического способа, оттуда она и берется и ничего с ней не сделаешь... если описывать счетчик на verilog то данной задержки не будет, соответственно)
1
|
|
| 22.12.2012, 15:56 | |
|
Реализация конечного автомата на Haskell Реализация конечного автомата по регулярному выражению Нужна реализация любого конечного автомата. Реализация конечного автомата Мура в консольном приложении XILINX ISE Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|