|
Вопрос по EPM7064S - глюки? |
|
|
|
Dec 24 2007, 12:16
|
Участник

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790

|
Уважаемые коллеги, сам я с ПЛИС ранее не работал... Решил "пощупать" EPM7064S, сделал простой макет с кнопками, генераторами и светодиодами. Простейшие веши вроде работают. Попробовал сделать автомат на 4 состояния с переключением состояний от кнопок, и чтобы в каждом состоянии светодиоды мигали по-разному. Текст на AHDL прилагаю. 1. Иногда светодиоды начинают мигать не так как надо. 2. По-идее, если снять тактовые сигналы, то "картинка" на светодиодах должна "замереть", (что видно и в симуляторе), однако в "железе" светодиоды останавливаются в положении 0 таблицы дешифратора... Прошу помочь разобраться. Заранее благодарен
|
|
|
|
|
 |
Ответов
|
Dec 25 2007, 09:15
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
В данном случае case Вам не очень нужен. (В AHDL при описании автоматов надо описывать также не используемые состояния. Короче автомат у Вас работает не правильно). Можно обойтись приоритетным мультиплексированием, при условии что всегда нажата одна какая либо кнопка if /Input1 == gnd then table counter[11..9] => Output1, Output2, Output3, Output4, Output5, Output6, Output7, Output8; 0 => 1,1,1,1,1,1,1,1; 1 => 0,1,1,1,1,1,1,0; 2 => 0,0,1,1,1,1,0,0; 3 => 0,0,0,1,1,0,0,0; 4 => 0,0,0,0,0,0,0,0; 5 => 1,0,0,0,0,0,0,1; 6 => 1,1,0,0,0,0,1,1; 7 => 1,1,1,0,0,1,1,1; end table; elsif /Input2 == gnd then table counter[11..9] => Output1, Output2, Output3, Output4, Output5, Output6, Output7, Output8; 0 => 1,1,1,0,0,1,1,1;
|
|
|
|
|
Dec 26 2007, 06:49
|
Участник

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790

|
Спасибо, что натолкнули Сегодня попробовал описать остальные состояния (WHEN OTHERS) - сейчас тестирую... вроде пока сбоев не видел... Всё равно вопрос: по какой причине происходили сбои в работе автомата (даже когда кнопки не нажимал, входы подтянуты к +5В через 1К...), неужели сами "внутренности" микросхемы ПЛИС могут "ловить помехи"? Опять сделал асинхронное управление автоматом. Всё равно остаётся вопрос с поведением при снятии CLK2. Практически всегда останавливается на строке 0 дешифратора. Переключение светодиодов сделано достаточно медленным, чтобы успевать снять импульсы практически в любой момент времени (с помощью джампера). И что САМОЕ непонятное - даже если дешифратор удалось остановить (точнее счётчик) в другом состоянии, например 2 или 3, то почему-то спустя примерно пол секунды происходит переход в состояние 0, причём без промежуточных состояний !!! как-будто управляющий счётчик сбрасывается в 0... Причём я пробовал это в симуляторе - там такого не происходит... Мне это совсем непонятно, прошу специалистов разъяснить. PS для Евгения Николаева: если нажать сразу 2 кнопки, то реагирует только на первую, в каком-бы порядке не отпускал (это сейчас, когда синхронизация автомата идёт по ИЛИ от кнопок), а раньше оставался в том состоянии, которое соответствовало последней отпущенной кнопке (раньше синхронизация была от генератора). С defaul-ами что-то не получилось - наверное из-за слабого знания AHDL, пользуюсь пока книжкой Стешенко ПЛИС фирмы Altera: проектирование устройств обработки сигналов. Может порекомендуете что-то более подробное, желательно на русском языке и в электронном виде (а то тут не всё можно купить...) PS для sazh: воспользовался вашим советом - описал остальные состояния. Приоритетное мультиплексирование здесь не то (хотя конечно это не конкретный проект, а просто попытка научиться...), потому что кнопки запоминаются. Также прошу порекомендовать литературу. Ещё скачал книжку Суворова и Шейнина Проектирование цифровых систем на VHDL, но пока не читал...
|
|
|
|
|
Dec 26 2007, 07:34
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(Ioann @ Dec 26 2007, 10:49)  Спасибо, что натолкнули
Сегодня попробовал описать остальные состояния (WHEN OTHERS) - сейчас тестирую... вроде пока сбоев не видел... Всё равно вопрос: по какой причине происходили сбои в работе автомата (даже когда кнопки не нажимал, входы подтянуты к +5В через 1К...), неужели сами "внутренности" микросхемы ПЛИС могут "ловить помехи"? Опять сделал асинхронное управление автоматом.
Всё равно остаётся вопрос с поведением при снятии CLK2. Практически всегда останавливается на строке 0 дешифратора. Переключение светодиодов сделано достаточно медленным, чтобы успевать снять импульсы практически в любой момент времени (с помощью джампера).
И что САМОЕ непонятное - даже если дешифратор удалось остановить (точнее счётчик) в другом состоянии, например 2 или 3, то почему-то спустя примерно пол секунды происходит переход в состояние 0, причём без промежуточных состояний !!! как-будто управляющий счётчик сбрасывается в 0... Причём я пробовал это в симуляторе - там такого не происходит... Мне это совсем непонятно, прошу специалистов разъяснить. PS для Евгения Николаева: если нажать сразу 2 кнопки, то реагирует только на первую, в каком-бы порядке не отпускал (это сейчас, когда синхронизация автомата идёт по ИЛИ от кнопок), а раньше оставался в том состоянии, которое соответствовало последней отпущенной кнопке (раньше синхронизация была от генератора). С defaul-ами что-то не получилось - наверное из-за слабого знания AHDL, пользуюсь пока книжкой Стешенко ПЛИС фирмы Altera: проектирование устройств обработки сигналов. Может порекомендуете что-то более подробное, желательно на русском языке и в электронном виде (а то тут не всё можно купить...)
PS для sazh: воспользовался вашим советом - описал остальные состояния. Приоритетное мультиплексирование здесь не то (хотя конечно это не конкретный проект, а просто попытка научиться...), потому что кнопки запоминаются. Также прошу порекомендовать литературу.
Ещё скачал книжку Суворова и Шейнина Проектирование цифровых систем на VHDL, но пока не читал... А дребезг кнопок как-то устраняется?
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Dec 26 2007, 08:17
|
Участник

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790

|
Цитата(Victor® @ Dec 26 2007, 10:34)  А дребезг кнопок как-то устраняется? Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг.
|
|
|
|
|
Dec 26 2007, 09:14
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Ioann @ Dec 26 2007, 11:17)  Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг. До борьбы с дребезгом еще далеко. На сей раз ваш автомат вообще без клока. как он работает. я не знаю. Да и автоматов таких тоже не знаю. По Стешенко можно только зачеты преподавателю сдавать. Есть по AHDL учебник для практического применения А.П. Антонова язык описания цифровых устройств AlteraHDL. Есть маленькое но. Этот язык сегодня не имеет смысла поднимать. На нем здесь не общаются. А значит и советов не будет. Выбирайте или VHDL или verilog. Скачайте с сайта xilinx документ xst.pdf. Очень наглядно для выбора языка.
|
|
|
|
Сообщений в этой теме
Ioann Вопрос по EPM7064S - глюки? Dec 24 2007, 12:16 Евгений Николаев А если не нажата ни одна кнопка? Или нажаты две...... Dec 25 2007, 07:04 Евгений Николаев Я сам учился именно по А.П. Антонову.
По VHDL пока... Dec 26 2007, 10:34 Ioann Автомат не совсем без клока - просто клок формируе... Dec 26 2007, 12:09 sazh НЕт никакой разницы, на каком языке пишите. Если в... Dec 26 2007, 12:29 Ioann Цитата(sazh @ Dec 26 2007, 15:29) НЕт ник... Dec 26 2007, 16:41 sazh Попробовал сделать автомат на 4 состояния с перекл... Dec 26 2007, 16:50 Ioann Большое спасибо всем откликнувшимся. Несколько кни... Dec 27 2007, 05:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|