8-разрядный счётчик на двух 74x163

Обсуждаем цифровые устройства...
Ответить
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

Еб**ь уже целый день!

В общем задача сделать 8-разрядный счётчик на двух 74x163 способный считать от 0011 0110 до 1010 1101

Изображение

Всё как-бы хорошо, но собранная мною схема считает с от 0000 0001 сразу после включения, и лишь после первого срабатывания логики управляющей ресетом (LOAD=0 при переполнении 1010 1101) счётчик начинает считать от 0011 0110.
диагр.png
Временная диаграмма
(76.32 КБ) 627 скачиваний
Перепробовал уже всё что только можно для того, чтоб в первый такт генератора вывод LOAD был подтянут к земле и счётчики установили начальную конфигурацию... Но что-то ничего реально работающего придумать не смог. Уже подумываю даже 555 прикрутить или RS-тригер, но это полный бред, ибо задача должна решаться простой комбинаторикой и добавлением нескольких вентилей...

Исходники в протеусе...
schetchik_DZ.zip
(50.87 КБ) 186 скачиваний
Вложения
задача.png
(73.38 КБ) 2146 скачиваний
Последний раз редактировалось Chiper Пн май 05, 2014 02:58:31, всего редактировалось 1 раз.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 84
Зарегистрирован: Пт дек 19, 2008 18:16:52
Откуда: West Ukraine

Сообщение digiRom »

Да в любом случае, без цепочки предустановки не обойтись, даже если поставить триггер для привязки к первому такту, его надо чем-то сбросить. Смотрим : элемент И (как вариант, И-НЕ плюс инвертор, на таком же вентиле), на один вход-выход Вашей схемы совпадения, на другой-цепочку RC, R на плюс, С на минус. Для шустрости, параллельно резистору поставить диод, катодом к плюсу. Все. :)))
Берегите лес,он нам еще пригодится...
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

digiRom писал(а):Смотрим : элемент И (как вариант, И-НЕ плюс инвертор, на таком же вентиле), на один вход-выход Вашей схемы совпадения, на другой-цепочку RC, R на плюс, С на минус. Для шустрости, параллельно резистору поставить диод, катодом к плюсу. Все. :)))
Изображение
Так, давайте по порядку.

Вы предлагаете добавить 2-И в разрыв элемента 2-И-НЕ и вывода LOAD, подключив к свободному входу 2-И задающую RC-цепочку ?
В принципе такой вариант возможен. В теории, в момент включения будет осуществляться зарядка конденсатора тем самым появится некая задержка до тех пор, пока конденсатор не зарядится.

ок, попробуем реализовать:
Изображение

В соответсвии с формулой T=R*C (R=10k, C=1000 мкФ) данная цепочка с такими наминалами должна обеспечить задержку чуть-ли не на 10с (до повышения напряжения до 2.7В на средней точке RC-цепочки)
Но на осциллограмме мы видим следующее (точнее ничего)... Видно только фронт при изменении состояния элемента 2-И...
Изображение

На временной диаграмме тоже никаких изменений, из этого можно сделать вывод что протеус не охотно моделирует переходные процессы совместно с ТТЛ-логикой :(


По пробовал даже следующий вариант:
Изображение

Но это только незначительно сдвинуло фрнот... Специально даже брал менее быструю 74хх серию....
По идее сдвиг должен был получиться около 70ns ...
Изображение

Пробовал даже последовательно подключать 8 буферов, не помогает, Протеус игнорит такого рода задержки в независимости от длины паровоза из элементов :D
Может можно как-то оптимизировать моделирование и включить учёт всех задержек на схеме?

Есть другие идеи? Как вариант можно хитро проверить соответсвуют-ли в начальный момент времени значения на выходах счётчиков со значениями на выводах установки начального состояния. Я пытался реализовать такую проверку, но тогда стопорится работа счётчиков на начальных значениях т.к. LOAD подтягивается к земле.... Возможно нужно прикрутить ещё тригер, чтоб такая проверка осуществлялась единоразово и LOAD=0 сбрасывалось в "1" на следующий такт, но пока не придумал как это сделать...
Но интуиция мне подсказует (да и смысл этого ДЗ), что я где-то перемудрил и можно вообще всё сделать очень просто только лишь на ТТЛ-вентилях...
Вложения
фронт.png
(52.58 КБ) 1992 скачивания
фронт.png
(59.8 КБ) 1900 скачиваний
задержка_2.png
(17.83 КБ) 1854 скачивания
задержка_схема.png
(97.82 КБ) 1978 скачиваний
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

UP :shock:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 84
Зарегистрирован: Пт дек 19, 2008 18:16:52
Откуда: West Ukraine

Сообщение digiRom »

Будет все работать. Протеус по цифре у меня в голове, по нику видно. :))) Все будет работать, только номиналы "не того". Резистор-1 кОм, кондей-сотни / тысячи пик. Тоже думал о линии задержки на цепочке элементов, но здесь не тот случай. Не надо ничего придумывать, все уже придумано, до нас. Собирайте в железе, делов-то. А если идти путем сравнения кода предустановки и кода на выходе... "Это ж сколько будет ??? Вот именно." (с) Куча логики ненужной.

пы.сы. Неплохо бы указать, что это вообще такое. Я привык видеть всю схему.
Берегите лес,он нам еще пригодится...
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

digiRom писал(а):пы.сы. Неплохо бы указать, что это вообще такое. Я привык видеть всю схему.
Мне тоже так привычнее... Но это не более чем задачка по цифровой схемотехнике - https://pp.vk.me/c618130/v618130074/458 ... xK6Xtg.jpg :)))
Даже если я реализую это в железе, то всё равно препод будет морочить голову и требовать результаты моделирования...
Такое вот у нас образование в стране, что отчётность важнее здравого смысла :facepalm:
Реклама
Друг Кота
Сообщения: 5232
Зарегистрирован: Пт авг 25, 2006 09:26:19
Откуда: Москва

Сообщение Rokl »

Chiper писал(а):В общем задача сделать 8-разрядный счётчик на двух 74x163 способный считать от 0011 0110 до 1010 1101
......Всё как-бы хорошо, но собранная мною схема считает с от 0000 0001 сразу после включения, и лишь после первого срабатывания логики управляющей ресетом (LOAD=0 при переполнении 1010 1101) счётчик начинает считать от 0011 0110.
.........
Перепробовал уже всё что только можно для того, чтоб в первый такт генератора вывод LOAD был подтянут к земле и счётчики установили начальную конфигурацию... Но что-то ничего реально работающего придумать не смог.
Что бы счетчик корректно работал не с 0, а с любого числа по параллельной записи, нужно использовать только 74193(К155ИЕ7). Только эти счетчики!!!!!! работают по параллельному вводу асинхронно, и только они могут при включении(при предустановке переллельной записи) устанавливаться в любое нужное число (если использовать счетчики на вычитание, то и SN74192 (К155ИЕ6) будут работать как 16ричные, как будто они SN74193. Вот такой фокус имеет место быть.
Все остальные счетчики без исключения имеют синхронный вход параллельной записи и при включении питания встанут в состояние лог.нуля (если будет предустановка) и только по спаду первого синхроимпульса установятся в выбраное на входах D число. Соответственно корректно считать с любого числа смогут только SN74193 (К155ИЕ7). Остальные счетчики нужно устанавливать в 0 и потом "нужное число" -1, а потом изменять установку на "нужное число"(что бы оставить коэффициент деления неизменным). Из-за этой особенности счетчиков SN74193 и SN74192 (асинхронный параллельный ввод числа) их продолжают выпускать до сих пор во всех современных 74...сериях.
Друг Кота
Аватара пользователя
Сообщения: 7377
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Если исходное состояние у счетчиков 0000 0000, то сделайте цепочку выводящую из "невалидных" состяний. Собственно, даже просто по старшему счетчику 3-х входовой элемент ИЛИ будет выдавать сигнал, который при комбинации 00х0 (второй бит можно игнорировать, так как 0010 хххх - тоже не валидное состояние) будет делать тоже, что и по окончании счета.

Еще вариант. делать счетчик от 0 до 0xAB-0x36, а к счетчику прибавлять сумматором 0x36 :)
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

Rokl писал(а): Все остальные счетчики без исключения имеют синхронный вход параллельной записи и при включении питания встанут в состояние лог.нуля (если будет предустановка) и только по спаду первого синхроимпульса установятся в выбраное на входах D число. Соответственно корректно считать с любого числа смогут только SN74193 (К155ИЕ7). Остальные счетчики нужно устанавливать в 0 и потом "нужное число" -1, а потом изменять установку на "нужное число".
Это я всё понимаю, но в расках ДЗ мне необходимо сделать чтоб счётчик считал с заданного состояния а не с 0001, т.е. мне нужно сначало произвести установку, а лишь потом начать счёт... Вот и встаёт вопрос, как это можно сделать схемотехнически?
Друг Кота
Сообщения: 5232
Зарегистрирован: Пт авг 25, 2006 09:26:19
Откуда: Москва

Сообщение Rokl »

Chiper писал(а): Это я всё понимаю, но в расках ДЗ мне необходимо сделать чтоб счётчик считал с заданного состояния а не с 0001, т.е. мне нужно сначало произвести установку, а лишь потом начать счёт... Вот и встаёт вопрос, как это можно сделать схемотехнически?
Сорри, дал неверную информацию. Счетчики по параллельной записи устанавливаются по переднему фронту тактирующего импульса. Есть ещё асинхронно устанавливающиеся счетчики это 555ИЕ14 и 555ИЕ15 (74196). В любом случае 74163 (ИЕ18) установится по параллельному входу только после прихода переднего фронта первого тактового импульса. А до этого будет стоять в 0 (если будет предустановка в 0) или в случайном состоянии.
Т.е. считать он начнет с нужного числа...по переднему фронту тактового импульса установится, а по заднему фронту (по спаду) тактового импульса начнет счет. Так что все ОК.
Встал на лапы
Аватара пользователя
Сообщения: 84
Зарегистрирован: Пт дек 19, 2008 18:16:52
Откуда: West Ukraine

Сообщение digiRom »

Почитал ТЗ. Там кроется маленькое западло, а именно-импульс, который произведет RC-цепочка, будет считаться внешним сигналом, аль нет ? Возможно, должна работать только цифра, без аналоговых вкраплений ?... Если да, то печально. В принципе, на АГ1 можно посмотреть. Если правильно помню, она допускает формирование импульса без обвеса, на чистой задержке. Считаю, сей момент нужно уточнить у препода. Правильное ТЗ - 80% правильного ответа.
пы.сы. Глянул внутреннюю структуру счетчика внимательнее. Если входы JK выходных триггеров приоритетные, как и должно быть, то загрузка никак не связана с тактовым сигналом, 9-я нога успеет раньше. Или я не прав?
Берегите лес,он нам еще пригодится...
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

digiRom писал(а):Почитал ТЗ. Там кроется маленькое западло, а именно-импульс, который произведет RC-цепочка, будет считаться внешним сигналом, аль нет ? Возможно, должна работать только цифра, без аналоговых вкраплений ?... Если да, то печально. В принципе, на АГ1 можно посмотреть. Если правильно помню, она допускает формирование импульса без обвеса, на чистой задержке. Считаю, сей момент нужно уточнить у препода. Правильное ТЗ - 80% правильного ответа.
пы.сы. Глянул внутреннюю структуру счетчика внимательнее. Если входы JK выходных триггеров приоритетные, как и должно быть, то загрузка никак не связана с тактовым сигналом, 9-я нога успеет раньше. Или я не прав?
Нуу, зная своего препода я с 80% уверен, что из-за "аналоговых" костылей он отправит переделывать ДЗ... Так что всёравно в конце концов прийдётся делать всё на логике...
Кстати, вчера я нашёл кафедральную методу, в которой разобран вариант этого-же задания, но другого варианта. Так вот, чел смог сделать всё в соответсвии с ТЗ добавив элемент 2-ИЛИ http://iu4.ru/edu/211001/sem06/spec/spes_dz.pdf стр. 9 ).
Сам он описывает работу магии со сбросом в начальное состояние следующим образом
Чтобы счетчик начинал считать с 64 = 0100 0000 , необходимо задать это состояние на входах A,B,C,D обоих счетчиков следующим образом: на вход C счетчика DD2 подать высокий уровень сигнала, а на оставшиеся входы – низкий. С помощью элемента «ИЛИ»(DD6), подключенному к выходам QC и QD счетчика DD2, обеспечивается первоначальная загрузка числа 6410 = 0100 00002 в счетчик DD2. Во время запуска схемы (на выходах QС и QD счетчика DD2 логические «0») на выходе элемента «ИЛИ»(DD6) формируется логический «0», который поступает на вход элемента «И»(DD7), c другой стороны с выхода элемента «И-НЕ»(DD5) на вход элемента «И»(DD7) также поступает логический «0», это приводит к возникновению на выходе элемента «И»(DD7) логического «0», который активирует вход LOAD счетчиков DD1 и DD2.
Я пытался реализовать подобное, но что-то не выходит.. Иногда мне удовалось выставить правильно начальное состояние на 0011 0110 но при этом счётчик не досчитывал до 1010 1101 т.к. в один прекрасный момент ложно срабатывала дополнительная логика, устанавливающая начальное значение.

Такие вот приколы, по крайней мере мне уже не особо приятно с моим относительно не малым опытом разработки электронных устройств вторые сутки сидеть с универской задачкой :shock:
Друг Кота
Сообщения: 5232
Зарегистрирован: Пт авг 25, 2006 09:26:19
Откуда: Москва

Сообщение Rokl »

Chiper писал(а):Сам он описывает работу магии со сбросом в начальное состояние следующим образом
Чтобы счетчик начинал считать с 64 = 0100 0000 , необходимо задать это состояние на входах A,B,C,D обоих счетчиков следующим образом: на вход C счетчика DD2 подать высокий уровень сигнала, а на оставшиеся входы – низкий. С помощью элемента «ИЛИ»(DD6), подключенному к выходам QC и QD счетчика DD2, обеспечивается первоначальная загрузка числа 6410 = 0100 00002 в счетчик DD2. Во время запуска схемы (на выходах QС и QD счетчика DD2 логические «0») на выходе элемента «ИЛИ»(DD6) формируется логический «0», который поступает на вход элемента «И»(DD7), c другой стороны с выхода элемента «И-НЕ»(DD5) на вход элемента «И»(DD7) также поступает логический «0», это приводит к возникновению на выходе элемента «И»(DD7) логического «0», который активирует вход LOAD счетчиков DD1 и DD2.
Я пытался реализовать подобное, но что-то не выходит.. Иногда мне удовалось выставить правильно начальное состояние на 0011 0110 но при этом счётчик не досчитывал до 1010 1101 т.к. в один прекрасный момент ложно срабатывала дополнительная логика, устанавливающая начальное значение.

Такие вот приколы, по крайней мере мне уже не особо приятно с моим относительно не малым опытом разработки электронных устройств вторые сутки сидеть с универской задачкой :shock:
Для счетчика74163 мало задать L=0 и число на входах, что бы сделать параллельную запись. Нужно ещё подать передний фронт импульса записи/счета на тактовый вход. Пока этого переднего фронта не будет, число на входах на выходы счетчика не запишется. Так что лукавит автор. Тем более на его временных диаграммах отчетливо видно, что 1 в 6 разряде пишется чуть позже, с появлением переднего фронта счетного импульса. Так что при включении, его счетчики встанут в неопределенное состояние и будут ждать этот передний фронт. А протеус, по дурости своей, включение определяет, как состояние счетчиков в нуле, что не есть истина. А у автора цепь начальной установки вообще отсутствует.
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

uldemir писал(а):Еще вариант. делать счетчик от 0 до 0xAB-0x36, а к счетчику прибавлять сумматором 0x36 :)
Это просто гениально!
В принципе, в рамках данного ТЗ никто не запрещал троллить препода!
Изображение
trololo_2.png
Временная даиграмма
(66.53 КБ) 475 скачиваний
Попробую так оформить и сдать, только для убедительности ещё на временной диаграмме паразитный сигнал на LOAD перед основным срабатыванием замажу в PAINT'e, чтоб препод не докопался :))) :))) :)))

Хотел ещё спросить, а есть-ли в 74 серии синхронный двоичный восьмиразрядный счётчик без начальной установки (по умолчанию считающий от 0), но имеющий вывод RESET ?
Вложения
trololo.png
(32.52 КБ) 1983 скачивания
Друг Кота
Аватара пользователя
Сообщения: 7377
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Chiper писал(а):Я пытался реализовать подобное, но что-то не выходит..
Так я ж описывал. Это называется вывод счетчика из невалидных состояний. В дополнение к переходу в состояние 0х36 из 0xAB, добавить условие, чтобы этот переход происходил и при нахождении счетчика в невалидном состоянии. Как пример (реальный), считаю, что достаточно проверять три разряда старшего счетчика на 0. Т.е. если счетчик имеет состояние 00[0/1]0, то тоже формировать сигнал LOAD. так что если счетчики будут по включению находиться в состояниях 0000 xxxx или 0010 xxxx выполнится условие загрузки начального значения. Усложнив логику, можно покрыть и состояния 0001, 1011 - 1111, которые тоже являются не валидными. Т.е. если даже при включении состояние счетчиков абсолютно не определено, потребуется не больше 6 тактов, чтобы счетчик перешел в допустимый диапазон счета.
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

uldemir писал(а):Так я ж описывал. Это называется вывод счетчика из невалидных состояний. В дополнение к переходу в состояние 0х36 из 0xAB, добавить условие, чтобы этот переход происходил и при нахождении счетчика в невалидном состоянии.
Спасибо конечно, но вариант с добавлением костылей из сумматоров мне больше понравился :)))
На досуге конечно-же попробую и описанный Вами способ, он более правильный и больше соответствует поставленной преподавателем задаче. Но пока попробую так сдать, по крайней мере "оригинально" получилось, может адекватно оценит препод :lol:
ДЗ2.pdf
Оформленное ДЗ
(478.85 КБ) 2481 скачивание
Встал на лапы
Аватара пользователя
Сообщения: 84
Зарегистрирован: Пт дек 19, 2008 18:16:52
Откуда: West Ukraine

Сообщение digiRom »

С годами выработалась странная привычка-не могу уснуть, пока мозг не выдаст команду "решено". Кушать-то хоцца... :))) Предлагаю не менее красивый вариант, а именно-использовать цифровые компараторы, СП1, применительно к ТТЛ. Два корпуса для начального значения, два-для конечного. Получим два восьмивходовых компаратора. На входы А первого, заводим исходное число. Входы Б-на выход счетчика. На входы А второго-конечное число, входы Б-так же на выход счетчика. Нужные выходы компараторов микшируем :solder: логикой, и заводим на вход записи. В итоге не теряем такты для вывода схемы из зоны невалидности. Льогишь ?
Берегите лес,он нам еще пригодится...
Ответить

Вернуться в «Цифровая техника»