Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

TTL и CMOS логика Цифровая схемотехника на логических микросхемах. Счетчики, сдвиговые регистры, простая логика...

 
Опции темы
Непрочитано 07.01.2012, 11:30  
Skifi
Частый гость
 
Регистрация: 01.12.2011
Сообщений: 23
Сказал спасибо: 8
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
Skifi на пути к лучшему
По умолчанию 155им1

здравствуйте. такая задача:
пороговое логическое устройство с выходом, сигнализирующим о количестве единиц в 24-х разрядном двоичном коде, которое превышает заданное число (порог)
пороговое число равно7, используя микросхему к555им1. вопрос: разрядность кода на выходе должна быть больше 7, т.е. 8, 9 и т.д. правильно я рассуждаю?
просто если на входе будут все единички (24), то на выходе имеем 11000 и тут хватит 5 выводов.
прошу ответить. спасибо
Реклама:
Skifi вне форума  
Непрочитано 07.01.2012, 14:20  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: 155им1

Насколько я понял условие задачи, выход должен быть всего ОДИН разряд. То есть выход равен 1, если число единичек на входе больше 7. И выход равен 0, если число единичек меньше или равно 7.
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
Skifi (07.01.2012)
Непрочитано 09.01.2012, 16:11  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: 155им1

Мне почемуто кажется, что необходимо определить число единиц в исходном коде, а затем сравнить с порогом (лучше из этого числа отнять значение порога). Результат должен быть n-разрядным (как минимум 21).
Aleksashka1 вне форума  
Непрочитано 10.01.2012, 21:41  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Зачем так много???

Сообщение от Aleksashka1 Посмотреть сообщение
Мне почемуто кажется, что необходимо определить число единиц в исходном коде, а затем сравнить с порогом (лучше из этого числа отнять значение порога). Результат должен быть n-разрядным (как минимум 21).
В 24-разрядном коде максимальное число единиц - 24. Неужели 5 разрядов недостаточно?
Bill вне форума  
Непрочитано 10.01.2012, 23:56  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: 155им1

Bill, насколько я прочел - выполнить надо на 155ИМ1, это всего лишь сумматор. На нем можно выполнить и вычитание, для компрессии (так назовем процесс преобразования числа единиц превышающих порог в двоичный код) нужны еще, счетчики и простые двувходвки (И, ИЛИ ...).
В озвученном выше варианте счетчики не нужны: суммируем единички и отнимаем порог. Все реализуемо на сумматорах. Порог, раз он не меняется, можно задать "перемычками"
Aleksashka1 вне форума  
Непрочитано 11.01.2012, 07:47  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Все правильно, только

Сообщение от Aleksashka1 Посмотреть сообщение
Bill, насколько я прочел - выполнить надо на 155ИМ1, это всего лишь сумматор. На нем можно выполнить и вычитание, для компрессии (так назовем процесс преобразования числа единиц превышающих порог в двоичный код) нужны еще, счетчики и простые двувходвки (И, ИЛИ ...).
В озвученном выше варианте счетчики не нужны: суммируем единички и отнимаем порог. Все реализуемо на сумматорах. Порог, раз он не меняется, можно задать "перемычками"
суммирование единичек в 24-разрядном числе не есть суммирование 24-разрядных чисел. В данном случае речь может идти о суммировании 24-х 1-разрядных чисел. Ее, конечно, можно будет решить с помощью одних только сумматоров ИМ1 без всякой дополнительной логики. Но это будет далеко не самый оптимальный вариант.
Кстати сказать, примерно 30 лет назад фирма TRW выпустила БИС коррелятора TDC1023 (см. по ссылке). В этой БИС решалась аналогичная задача, только числа были 64-разрядные. Так вот результат там выдавался в 7-разрядном коде. Причем порог был также 7-разрядным.
http://www.datasheetarchive.com/inde...s-00118061.pdf

Последний раз редактировалось Bill; 11.01.2012 в 07:55.
Bill вне форума  
Непрочитано 11.01.2012, 19:37  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: Все правильно, только

Сообщение от Bill Посмотреть сообщение
суммирование единичек в 24-разрядном числе не есть суммирование 24-разрядных чисел. В данном случае речь может идти о суммировании 24-х 1-разрядных чисел. Ее, конечно, можно будет решить с помощью одних только сумматоров ИМ1 без всякой дополнительной логики. Но это будет далеко не самый оптимальный вариант.
Согласен!
Оптимальность определяется заданием и базой.
Если цель научить студента строить сумматоры, то других путей практически нет.
Конечно если студент не решит более изящно, потому как он в теме или ему помогли!
А пока ТС молчит как рыба об лед...
Aleksashka1 вне форума  
Непрочитано 13.01.2012, 00:06  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: 155им1

Не знаю насчет К155ИМ1, не пробовал.
Если требуется подсчитать количество единиц, то складывать каким-либо образом какие-то числа, как кое-кто тут предлагал, нельзя. Ибо числа будут просто арифметически сложены. Нужен именно подсчет единиц, которые в исходном числе могут располагаться в любых разрядах. И это нужно учитывать. И "плясать" нужно не от порога, а от подсчета лог.единиц в числе!

Пример реализации через преобразователь кода - во вложении TEST.zip (файл проекта Протеус).
Для простоты рассмотрен подсчет единиц в 8-разрядном числе. Реализовано на простых логических двух- и трехвходовых элементах AND, OR, XOR. Использовано 36 лог.элементов. Может быть, не оптимально с точки зрения количества элементов, но я сильно то не заморачивался.
Как видно, за основу взяты полусумматоры. Суммируются разряды попарно, причем для простоты 8-разрядное число разбил на два 4-разрядных - два одинаковых блока, затем эти два блока объединяются и на выходе получается 4-битное двоичное число, которое равно количеству единиц в исходном 8-битном числе. По сути - это преобразователь кода, а не сумматор.

24-разрядное число обрабатывается наращиванием разрядности. Скорее всего, удобней будет составлять из блоков по 4 разряда - сам не пробовал, ибо жесть. Количество элементов для 24-битного числа будет внушительным. Тут лучше уже будет выполнять на программируемых логических матрицах.
Если нужен какой-то порог, то уже на выходе поставить обычный компаратор двоичного кода.

А еще лучше применить для решения задачи какой-нибудь контроллер. Да хотя бы PIC. Больших вычислительных мощностей не требуется. И даже есть 2 варианта. Либо подороже - использовать большой 4-х портовый - 3 порта для параллельного ввода 24-битного слова и 1 порт - для вывода 5-битного результата, что-то типа PIC16F871. Либо подешевле - какой-нибудь простенький с USART-ом для последовательного синхронного ввода 24-битного слова, и вывод так же через USART, либо на обычный порт параллельно. Только придется сделать скоростной сдвиговый регистр на отдельных микросхемах. Или еще более удешевить, использовав предельно простой контроллер начальныго семейства, эмулировав программно работу USART-а.
Можно даже вместо кварца поставить RC-цепь или внутренний осциллятор, если он есть.

Подсчет единиц в микроконтроллере PIC реализуется предельно просто.
После прочтения портов (или приема по USART) проверяем каждый бит на равенство единице, если бит =1, то инркементируем регистр количества единиц. Ну и выдаем результат на выход.

Пример на первом попавшемся контроллере PIC16F871 с параллельным вводом 24 бит - во вложении PIC.zip
Код - простейший. Задача выполнена сдвигом регистров вправо через бит переноса C и проверкой этого бита.
Если через USART, тогда впереди добавить блок приема числа.

Как видишь, контроллером задача решается оч-ч-чень компактно, быстро, и даже дешевле. В контроллере как раз можно быстренько сделать и сравнение с заданным порогом, и все остальное.

Да, а ведь эту задачу можно решить аналогичным образом и на микросхемах. То же самое -трехбайтный сдвиговый параллельно-последовательный регистр, на выходе - детектор лог."1" - например лог.элемент AND и обычный двоичный счетчик, инкрементируемый при поступлении лог."1" на счетный вход. Ну и цепь управления всем этим преобразованием в виде счетчика до 24 и установки разрешений для загрузки/сдвига.

И ваапсче. Меня всегда удивляли некоторые челы, пространно рассуждающие про "оптимальность задания и базы и цель научить студента более изящно строить камунизьмь" Я ваще валяюсь, блин. Ну зачем писать чепуху, ну не сообразил по теме - ну промолчи, ну не нада вот этава вот этава, блин, ну народная мудрость ж - "молчание - золото", "промолчишь - за умного сойдешь".
А то так и получается, что мол, 21-битный результат подсчета количества единиц в 24 битном числе! Эт ваще с какой горы 21 бит то взялся, как это посчитал то? Это 2 миллиона единиц! Какая такая компрессия??? Вы че, господа, какая нах компрессия? Че за бред, ёпм! Зато как многозначительно то...
Вложения:
Тип файла: zip TEST.zip (16.3 Кб, 48 просмотров)
Тип файла: zip PIC.zip (41.8 Кб, 49 просмотров)

Последний раз редактировалось Bumbarra; 13.01.2012 в 01:11.
Bumbarra вне форума  
Непрочитано 13.01.2012, 10:41  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Задача в том и состоит, чтобы

Сообщение от Bumbarra Посмотреть сообщение
Подсчет единиц в микроконтроллере PIC реализуется предельно просто.
После прочтения портов (или приема по USART) проверяем каждый бит на равенство единице, если бит =1, то инркементируем регистр количества единиц. Ну и выдаем результат на выход.
Пример на первом попавшемся контроллере PIC16F871 с параллельным вводом 24 бит - во вложении PIC.zip
Код - простейший. Задача выполнена сдвигом регистров вправо через бит переноса C и проверкой этого бита.
Если через USART, тогда впереди добавить блок приема числа.
Как видишь, контроллером задача решается оч-ч-чень компактно, быстро, и даже дешевле. В контроллере как раз можно быстренько сделать и сравнение с заданным порогом, и все остальное.
Да, а ведь эту задачу можно решить аналогичным образом и на микросхемах. То же самое -трехбайтный сдвиговый параллельно-последовательный регистр, на выходе - детектор лог."1" - например лог.элемент AND и обычный двоичный счетчик, инкрементируемый при поступлении лог."1" на счетный вход. Ну и цепь управления всем этим преобразованием в виде счетчика до 24 и установки разрешений для загрузки/сдвига.
использовать именно сумматор.
А что касается программной реализации, то предложенный алгоритм не является эффективным. Есть более эффективные алгоритмы. Да и при аппаратной реализации регистры сдвига не нужны, если необходимо подсчитать единицы в числе заданным в параллельном коде.
Bill вне форума  
Непрочитано 13.01.2012, 13:53  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: 155им1

Окей, не возражаю - предложи свой вариант. Я ж сказал, что не претендую на оптимальность. Тем неменее, задача, поставленная топикстартером (посчитать количество лог.единиц в 24-разрядном слове) - решена. В данном контексте - абсолютно все равно, какой алгоритм, ресурсов контроллера хватает с диким запасом.
Bumbarra вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 11:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot