Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сброс счетчиков в CPLD
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
nick17
Есть проект, уже работающий, НО... проблема заключается в следующем:
При включении, счетчики принимают произвольные значения, обычно от 12 до 15, устройство не работает, пока не выведешь кнопками в диапазон 0-10(рабочий). Внутри все входы сбросов счетчиков, соединены вместе и посажены на землю.
Как избавится от такого эффекта, можно ли решить проблему без применения внешней схемы сброса на рассыпухе?
des00
Цитата(nick17 @ Oct 11 2010, 00:10) *
можно ли решить проблему без применения внешней схемы сброса на рассыпухе?

сделать самосинхронную схему
DmitryR
Добавить схему, которая будет сбрасывать счетчик при значении на выходе, превышающим 10.
Александр77
Если есть внешнее тактирование и свободные ресурсы, то поставить компаратор на превышение и формировать импульс сброса.
PS. А разве у Вас не бывает состояний до 12, точнее от 1 до 11? Если бывают, то они разве не мешают?
rv3dll(lex)
резистор конденсатор и диод

и вообще штатно счётчик до каких считает?
nick17
два счетчика считают до 9 и сбрасываются при 10-ом нажатии, а один до 10 и сбрасывается при 11-ом соответственно.

Судя по вашим ответам, я понимаю нужно сделать так:
ставим AND, на один вход заводим тактовые импульсы от генератора, на другой от компаратора(сравнивает с пороговым числом, после которого сбрасывать), выход AND на схему сброса счетчика.
rv3dll(lex)
ничего подобного. просто разрабатываем схему так, чтобы после первого импульса все состояния кроме рабочих превращались в единицу.
Maverick
Цитата(nick17 @ Oct 11 2010, 09:10) *
Есть проект, уже работающий, НО... проблема заключается в следующем:
При включении, счетчики принимают произвольные значения, обычно от 12 до 15, устройство не работает, пока не выведешь кнопками в диапазон 0-10(рабочий). Внутри все входы сбросов счетчиков, соединены вместе и посажены на землю.
Как избавится от такого эффекта, можно ли решить проблему без применения внешней схемы сброса на рассыпухе?

схему или описание на HDL в студию
Какая ПЛИС, конкретнее?
ViKo
Можно сделать:
1. Внешний сброс. Совсем несложно. Имеется почти в каждом микроконтроллере и др., полезная штука. Завести на свои счетчики и т.п.
2. Внутренний сброс. При включении в течение нескольких тактов сформировать сигнал сброса. Завести туда же.
3. Как сказал des00 - "самосинхронную схему". Обнаруживать нерабочее состояние (схемами сравнения - компараторами) счетчиков и т.п. и вырабатывать сигнал сброса. Завести туда же.
Последнее лучше предыдущих тем, что при любых сбоях (по питанию) восстанавливает работоспособность схемы. Лично я сделал бы второй вариант (а еще лучше вместе с первым).
sazh
Цитата(nick17 @ Oct 11 2010, 09:10) *
Есть проект, уже работающий, НО... проблема заключается в следующем:
При включении, счетчики принимают произвольные значения, обычно от 12 до 15, устройство не работает, пока не выведешь кнопками в диапазон 0-10(рабочий). Внутри все входы сбросов счетчиков, соединены вместе и посажены на землю.
Как избавится от такого эффекта, можно ли решить проблему без применения внешней схемы сброса на рассыпухе?


Какой фирмы и семейства кристалл. Только тогда можно что то сказать.
rv3dll(lex)
Цитата(ViKo @ Oct 11 2010, 12:06) *
3. Как сказал des00 - "самосинхронную схему". Обнаруживать нерабочее состояние (схемами сравнения - компараторами) счетчиков и т.п. и вырабатывать сигнал сброса. Завести туда же.
Последнее лучше предыдущих тем, что при любых сбоях (по питанию) восстанавливает работоспособность схемы. Лично я сделал бы второй вариант (а еще лучше вместе с первым).


зачем компаратор? счётчик он и так уже имеет диаграмму состояний. просто все нерабочие состояния считать нулевыми и при первомже после включения разрешённом импульсе перевести в единицу как будто уже импульс подсчитан.

ишо есть такая штука MAX809.
Maverick
Цитата(rv3dll(lex) @ Oct 11 2010, 11:17) *
зачем компаратор? счётчик он и так уже имеет диаграмму состояний. просто все нерабочие состояния считать нулевыми и при первомже после включения разрешённом импульсе перевести в единицу как будто уже импульс подсчитан.

ишо есть такая штука MAX809.

тогда почему не сделать простую схему которая б производила сброс счетчика при включении?
rv3dll(lex)
Цитата(Maverick @ Oct 11 2010, 12:31) *
тогда почему не сделать простую схему которая б производила сброс при включении?

она не бесплатная.
Maverick
Цитата(rv3dll(lex) @ Oct 11 2010, 11:33) *
она не бесплатная.

Вы это к чему? smile.gif
ViKo
Цитата(rv3dll(lex) @ Oct 11 2010, 11:17) *
все нерабочие состояния считать нулевыми

Вот для этого и нужен компаратор (цифровой, схема сравнения). Если нерабочими должны быть коды больше или равные 12, нужно объединить по И разряды Q3 и Q2 счетчика, и завести результат на Reset.
des00
Цитата(Maverick @ Oct 11 2010, 03:31) *
тогда почему не сделать простую схему которая б производила сброс счетчика при включении?

потому как это CPLD, а не FPGA. Если есть немного ресурса, ИМХО я бы при любом нахождение схемы, не в том состоянии ставил бы ее куда надо принудительно.
rv3dll(lex)
Цитата(ViKo @ Oct 11 2010, 12:35) *
Вот для этого и нужен компаратор (цифровой, схема сравнения). Если нерабочими должны быть коды больше или равные 12, нужно объединить по И разряды Q3 и Q2 счетчика, и завести результат на Reset.


ладно напишу по буквам

обобщённо синхронный счётчик это автомат состояний у которого состояния перебираются последовательно.
синхронный автомат состояний для счёта до 10 в общем случае представляет собой 4 триггера и 4 комбинационных логических схемы, входы которых 4 выхода триггеров а выходы - входы триггеров D T JK в зависимости на какой базе сделан триггер. и этот компаратор там уже есть и ничего объединять и городить не нужно. нужно просто правильно описать автомат состояний!
ViKo
Цитата(rv3dll(lex) @ Oct 11 2010, 12:49) *
нужно просто правильно описать автомат состояний!

С этим согласен. С CPLD не работал, похоже, там хватит входов в macrocell, чтобы сделать схему сравнения перед триггером.
sazh
Цитата(ViKo @ Oct 11 2010, 13:07) *
С этим согласен. С CPLD не работал, похоже, там хватит входов в macrocell, чтобы сделать схему сравнения перед триггером.


Так триггера CPLD по включению питания (Альтера) в 0 устанавливаются.
Откуда в схемной реализации состояния, отличные от нуля по включению питания.
ViKo
Цитата(sazh @ Oct 11 2010, 13:42) *
Так триггера CPLD по включению питания (Альтера) в 0 устанавливаются.
Откуда в схемной реализации состояния, отличные от нуля по включению питания.

Может, там дребезг контактов на кнопках?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.