|
5 / 5 / 0
Регистрация: 27.12.2009
Сообщений: 69
|
|||||||||||
Xilinx ISE 14.1. Реализация конечного автомата генератора последовательностей25.11.2012, 16:31. Показов 9204. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|