Перейти к содержанию
    

Вопрос по EPM7064S - глюки?

Уважаемые коллеги, сам я с ПЛИС ранее не работал...

Решил "пощупать" EPM7064S, сделал простой макет с кнопками, генераторами и светодиодами.

Простейшие веши вроде работают.

Попробовал сделать автомат на 4 состояния с переключением состояний от кнопок, и чтобы в каждом состоянии светодиоды мигали по-разному. Текст на AHDL прилагаю.

1. Иногда светодиоды начинают мигать не так как надо.

2. По-идее, если снять тактовые сигналы, то "картинка" на светодиодах должна "замереть",

(что видно и в симуляторе), однако в "железе" светодиоды останавливаются в положении 0

таблицы дешифратора...

 

 

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

 

Заранее благодарен

state_m.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если не нажата ни одна кнопка? Или нажаты две...

У вас default-ы не оговорены. Или я смотрел невнимательно :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данном случае 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, что натолкнули

 

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

Опять сделал асинхронное управление автоматом.

 

Всё равно остаётся вопрос с поведением при снятии CLK2.

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

 

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

Мне это совсем непонятно, прошу специалистов разъяснить.

 

 

PS для Евгения Николаева: если нажать сразу 2 кнопки, то реагирует только на первую, в каком-бы порядке не отпускал (это сейчас, когда синхронизация автомата идёт по ИЛИ от кнопок), а раньше оставался в том состоянии, которое соответствовало последней отпущенной кнопке (раньше синхронизация была от генератора). С defaul-ами что-то не получилось - наверное из-за слабого знания AHDL, пользуюсь пока книжкой Стешенко ПЛИС фирмы Altera: проектирование устройств обработки сигналов. Может порекомендуете что-то более подробное, желательно на русском языке и в электронном виде (а то тут не всё можно купить...)

 

PS для sazh: воспользовался вашим советом - описал остальные состояния.

Приоритетное мультиплексирование здесь не то (хотя конечно это не конкретный проект, а просто попытка научиться...), потому что кнопки запоминаются. Также прошу порекомендовать литературу.

 

Ещё скачал книжку Суворова и Шейнина Проектирование цифровых систем на VHDL, но пока не читал...

state_m.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, что натолкнули

 

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

Опять сделал асинхронное управление автоматом.

 

Всё равно остаётся вопрос с поведением при снятии CLK2.

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

 

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

Мне это совсем непонятно, прошу специалистов разъяснить.

PS для Евгения Николаева: если нажать сразу 2 кнопки, то реагирует только на первую, в каком-бы порядке не отпускал (это сейчас, когда синхронизация автомата идёт по ИЛИ от кнопок), а раньше оставался в том состоянии, которое соответствовало последней отпущенной кнопке (раньше синхронизация была от генератора). С defaul-ами что-то не получилось - наверное из-за слабого знания AHDL, пользуюсь пока книжкой Стешенко ПЛИС фирмы Altera: проектирование устройств обработки сигналов. Может порекомендуете что-то более подробное, желательно на русском языке и в электронном виде (а то тут не всё можно купить...)

 

PS для sazh: воспользовался вашим советом - описал остальные состояния.

Приоритетное мультиплексирование здесь не то (хотя конечно это не конкретный проект, а просто попытка научиться...), потому что кнопки запоминаются. Также прошу порекомендовать литературу.

 

Ещё скачал книжку Суворова и Шейнина Проектирование цифровых систем на VHDL, но пока не читал...

 

А дребезг кнопок как-то устраняется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А дребезг кнопок как-то устраняется?

 

Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дребезг не устраняется, но по-моему, он влиять никак не должен - если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1. Это то-же, что и дребезг.

 

До борьбы с дребезгом еще далеко. На сей раз ваш автомат вообще без клока. как он работает. я не знаю. Да и автоматов таких тоже не знаю.

По Стешенко можно только зачеты преподавателю сдавать.

Есть по AHDL учебник для практического применения А.П. Антонова язык описания цифровых устройств

AlteraHDL.

Есть маленькое но. Этот язык сегодня не имеет смысла поднимать. На нем здесь не общаются.

А значит и советов не будет.

Выбирайте или VHDL или verilog.

Скачайте с сайта xilinx документ xst.pdf. Очень наглядно для выбора языка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я сам учился именно по А.П. Антонову.

По VHDL пока толковых книг (а-ля cook-book) не видел, но описаний в инете полно, в т.ч. на русском.

если нажал кнопку 1, то автомат должен перейти в состояние 1. Если ещё раз нажать кнопку 1, автомат долен перейти из состояния 1 в состояние 1.

(не смотрел новый релиз вашего автомата) В общем случае, ничто не удержит автомат в режиме после отпускания кнопки, если это не предусмотреть специальным сигналом запоминания.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

Однако вопрос:

Всё равно остаётся вопрос с поведением при снятии CLK2.

Практически всегда останавливается на строке 0 дешифратора. Переключение светодиодов сделано

достаточно медленным, чтобы успевать снять импульсы практически в любой момент времени (с

помощью джампера).

 

И что САМОЕ непонятное - даже если дешифратор удалось остановить (точнее счётчик) в другом

состоянии, например 2 или 3, то почему-то спустя примерно пол секунды происходит переход в

состояние 0, причём без промежуточных состояний !!! как-будто управляющий счётчик сбрасывается

в 0... Причём я пробовал это в симуляторе - там такого не происходит...

Мне это совсем непонятно, прошу специалистов разъяснить.

 

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

 

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

 

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

НЕт никакой разницы, на каком языке пишите. Если все правильно делаете.

В Вашем случае трудно что либо сказать. Потому что системный клок если кто и обрубает, так только с помощью специального сигнала enable_clk. Вот это и моделируется.

(Сам клок в работе и моделировании не обрубается)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

НЕт никакой разницы, на каком языке пишите. Если все правильно делаете.

В Вашем случае трудно что либо сказать. Потому что системный клок если кто и обрубает, так только с помощью специального сигнала enable_clk. Вот это и моделируется.

(Сам клок в работе и моделировании не обрубается)

Обрубается не системный клок. Просто построен счётчик на 12 бит, на тактовый вход которого подан сигнал с генератора на 4кГц. Старшие 3 бита через дешифратор отображаются на светодиоды. Когда этот сигнал отключается, счётчик должен останавливаться, что видно в симуляторе. В железе происходит описанное выше. Что касается системного клока, то туда подаётся сигнал с генератора 4МГц. Кстати, на макете предусмотрел возможность снятия и системного клока, но сейчас проверил - никак он на работу не влияет (вообще-то он у меня не использован...). Вообще все 4 глобальных сигнала никак на работу не влияют - я постарался их не использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал сделать автомат на 4 состояния с переключением состояний от кнопок, и чтобы в каждом состоянии светодиоды мигали по-разному. Текст на AHDL прилагаю.

1. Иногда светодиоды начинают мигать не так как надо.

////////////////////////////////////////////////////////////////////

Это ведь Вы написали.

А мигает не так как надо, потому что автомат неправильно описан. Потому как не описано состояние

светодиодов, когда кнопки не нажаты.

Конечный автомат - это отделная песня. Сходу его не взять.

Да и не надо.

Вот набросал аналог вашей схемы. На верилоге 2001. В квартусе будет работать.

Это все чем могу.

state.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Особенно sazh за программку - откомпилирую, попробую и сообщу.

 

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

 

Вопрос с работой счётчика при снятии клока остался...

Буду разбираться. Если смогу найти ответы, напишу заключительное сообщение по теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...