реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вопрос по EPM7064S - глюки?
Ioann
сообщение Dec 24 2007, 12:16
Сообщение #1


Участник
*

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



Уважаемые коллеги, сам я с ПЛИС ранее не работал...
Решил "пощупать" EPM7064S, сделал простой макет с кнопками, генераторами и светодиодами.
Простейшие веши вроде работают.
Попробовал сделать автомат на 4 состояния с переключением состояний от кнопок, и чтобы в каждом состоянии светодиоды мигали по-разному. Текст на AHDL прилагаю.
1. Иногда светодиоды начинают мигать не так как надо.
2. По-идее, если снять тактовые сигналы, то "картинка" на светодиодах должна "замереть",
(что видно и в симуляторе), однако в "железе" светодиоды останавливаются в положении 0
таблицы дешифратора...


Прошу помочь разобраться.

Заранее благодарен
Прикрепленные файлы
Прикрепленный файл  state_m.rar ( 638 байт ) Кол-во скачиваний: 30
 
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Dec 25 2007, 07:04
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



А если не нажата ни одна кнопка? Или нажаты две...
У вас default-ы не оговорены. Или я смотрел невнимательно :-)


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 25 2007, 09:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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;
Go to the top of the page
 
+Quote Post
Ioann
сообщение Dec 26 2007, 06:49
Сообщение #4


Участник
*

Группа: 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, но пока не читал...
Прикрепленные файлы
Прикрепленный файл  state_m.rar ( 641 байт ) Кол-во скачиваний: 26
 
Go to the top of the page
 
+Quote Post
Victor®
сообщение Dec 26 2007, 07:34
Сообщение #5


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
Go to the top of the page
 
+Quote Post
Ioann
сообщение Dec 26 2007, 08:17
Сообщение #6


Участник
*

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



Цитата(Victor® @ Dec 26 2007, 10:34) *
А дребезг кнопок как-то устраняется?


Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг.
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 26 2007, 09:14
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Ioann @ Dec 26 2007, 11:17) *
Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг.


До борьбы с дребезгом еще далеко. На сей раз ваш автомат вообще без клока. как он работает. я не знаю. Да и автоматов таких тоже не знаю.
По Стешенко можно только зачеты преподавателю сдавать.
Есть по AHDL учебник для практического применения А.П. Антонова язык описания цифровых устройств
AlteraHDL.
Есть маленькое но. Этот язык сегодня не имеет смысла поднимать. На нем здесь не общаются.
А значит и советов не будет.
Выбирайте или VHDL или verilog.
Скачайте с сайта xilinx документ xst.pdf. Очень наглядно для выбора языка.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Dec 26 2007, 10:34
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Я сам учился именно по А.П. Антонову.
По VHDL пока толковых книг (а-ля cook-book) не видел, но описаний в инете полно, в т.ч. на русском.
Цитата
если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1.

(не смотрел новый релиз вашего автомата) В общем случае, ничто не удержит автомат в режиме после отпускания кнопки, если это не предусмотреть специальным сигналом запоминания.
Цитата
Всё равно вопрос: по какой причине происходили сбои в работе автомата (даже когда кнопки не нажимал, входы подтянуты к +5В через 1К...), неужели сами "внутренности" микросхемы ПЛИС могут "ловить помехи"?

Просто автомат синтезирует не только описанные состояния, но и те, которые получаются побочными, если вы его не "зажали" прочими условиями. Когда на входах состояние не соотвествует описанным вариантам и автомату не сказано - как себя вести по умолчанию, он может заниматься чем угодно :-) Гонять внутри себя нолики-единички-крестики :-)


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
Ioann
сообщение Dec 26 2007, 12:09
Сообщение #9


Участник
*

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



Автомат не совсем без клока - просто клок формируется в виде импульса при нажатии кнопки (получается перепад 1-0-1). Это работает и в симуляторе и в железе. Хотя, наверное выглядит не совсем корректно (менять данные одновременно с импульсом записи...)

Совет по выбору языка понятен. Распечатаю книжку по VHDL и буду читать. Сам начал с AHDL, поскольку он вроде попроще.

Насчёт работы автомата вроде разъяснили, да и железо до сих пор не "сбоит" - это показатель.

Однако вопрос:
Всё равно остаётся вопрос с поведением при снятии CLK2.
Практически всегда останавливается на строке 0 дешифратора. Переключение светодиодов сделано
достаточно медленным, чтобы успевать снять импульсы практически в любой момент времени (с
помощью джампера).

И что САМОЕ непонятное - даже если дешифратор удалось остановить (точнее счётчик) в другом
состоянии, например 2 или 3, то почему-то спустя примерно пол секунды происходит переход в
состояние 0, причём без промежуточных состояний !!! как-будто управляющий счётчик сбрасывается
в 0... Причём я пробовал это в симуляторе - там такого не происходит...
Мне это совсем непонятно, прошу специалистов разъяснить.

Остался открыт... На другой язык очень быстро перейти не смогу. Но очень хочется всё-таки понять - почему так происходит.

Попутно другой вопрос: а если делать счётчик с дешифратором на VHDL или Verilog, то в как он будет себя вести в железе - как и на AHDL. Если что-то подобное делали (но только в железе), ответьте. Хочется понять почему в железе ведёт себя не так как в симуляторе.

Спасибо
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 26 2007, 12:29
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



НЕт никакой разницы, на каком языке пишите. Если все правильно делаете.
В Вашем случае трудно что либо сказать. Потому что системный клок если кто и обрубает, так только с помощью специального сигнала enable_clk. Вот это и моделируется.
(Сам клок в работе и моделировании не обрубается)
Go to the top of the page
 
+Quote Post
Ioann
сообщение Dec 26 2007, 16:41
Сообщение #11


Участник
*

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



Цитата(sazh @ Dec 26 2007, 15:29) *
НЕт никакой разницы, на каком языке пишите. Если все правильно делаете.
В Вашем случае трудно что либо сказать. Потому что системный клок если кто и обрубает, так только с помощью специального сигнала enable_clk. Вот это и моделируется.
(Сам клок в работе и моделировании не обрубается)

Обрубается не системный клок. Просто построен счётчик на 12 бит, на тактовый вход которого подан сигнал с генератора на 4кГц. Старшие 3 бита через дешифратор отображаются на светодиоды. Когда этот сигнал отключается, счётчик должен останавливаться, что видно в симуляторе. В железе происходит описанное выше. Что касается системного клока, то туда подаётся сигнал с генератора 4МГц. Кстати, на макете предусмотрел возможность снятия и системного клока, но сейчас проверил - никак он на работу не влияет (вообще-то он у меня не использован...). Вообще все 4 глобальных сигнала никак на работу не влияют - я постарался их не использовать.
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 26 2007, 16:50
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Попробовал сделать автомат на 4 состояния с переключением состояний от кнопок, и чтобы в каждом состоянии светодиоды мигали по-разному. Текст на AHDL прилагаю.
1. Иногда светодиоды начинают мигать не так как надо.
////////////////////////////////////////////////////////////////////
Это ведь Вы написали.
А мигает не так как надо, потому что автомат неправильно описан. Потому как не описано состояние
светодиодов, когда кнопки не нажаты.
Конечный автомат - это отделная песня. Сходу его не взять.
Да и не надо.
Вот набросал аналог вашей схемы. На верилоге 2001. В квартусе будет работать.
Это все чем могу.
Прикрепленные файлы
Прикрепленный файл  state.zip ( 522 байт ) Кол-во скачиваний: 28
 
Go to the top of the page
 
+Quote Post
Ioann
сообщение Dec 27 2007, 05:41
Сообщение #13


Участник
*

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



Большое спасибо всем откликнувшимся. Несколько книг нашёл, качаю последнюю.
Особенно sazh за программку - откомпилирую, попробую и сообщу.

Для sazh: вопрос с автоматом решён, о чём писал вчера в 15.09

Вопрос с работой счётчика при снятии клока остался...
Буду разбираться. Если смогу найти ответы, напишу заключительное сообщение по теме.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 14:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01455 секунд с 7
ELECTRONIX ©2004-2016