lotor 0 18 мая, 2008 Опубликовано 18 мая, 2008 (изменено) · Жалоба Люди, не подскажите, как можно посчитать количество единиц в 8 разрядном результате ацп с помощью цифровых микросхем? Хотя бы идею. Я научен мыслить микропроцессорной схемотехникой, а тут курсовик. И как назло препод-динозавр. Говорит, можешь делать курсач на МК, но количество единиц покажешь мне, как считать на микросхемах. Мне на ум приходит только такая схема, что кварц формирует импульсы, по каждому импульсу из регистра выталкивается разряд, который подается на счетчик. Счетчик срабатывает только при единичном уровне на входе. Результат счетчика - параллельный код... Изменено 18 мая, 2008 пользователем Lotor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 5 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Принципиально не помогаю студентам-двоечникам, но раз Вы "научены мыслить микропроцессорной техникой", сделаю исключение. Идея: используем сумматор - логическую схему. Надеюсь, легко разберётесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Очень просто. Поставить на выход АЦП ПЗУ. Минимум 256х3. Каждое значение АЦП в диапазоне 0-255 будет адресом ПЗУ. Ну а запрограммировать ПЗУ так, чтобы в соот. адресе было число, которое показывает число единиц в этом адресе. Тут хватит всего три бита. Это самая простая схема. А если вы не знакому с методами построения логических схем, то на более простых элементах вам это не сделать. Но идея такова. Записываете логическое выражение зависимость конкретного разряда выхода от состояния всях входов. Минимизируете ее. Оставшееся - реализуете на элементах И-НЕ или ИЛИ-НЕ. Но чтобы вам тут все это рассказать нужно примерно 1 семестр времени и сотня килобайт текста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lotor 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Принципиально не помогаю студентам-двоечникам Никогда не понимал людей, которые дают подобные характеристики. Вам было так трудно ответить без этой фразы? Кстати, спасибо за ответ, но. Попросил дать идею в ветке для начинающих - получил себе характеристику. И что Вас в моем сообщении натолкнуло на подобное? Да, представьте, научен делать и делаю микропроцессорные системы. И, в принципе, это уже считается вчерашним днем, что уж говорить о рассыпухе. Удачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Специалист, который не умеет делать на рассыпухе - никто. Это радиолюбитель. Для дома, для семьи. Сделай сам. И пр. Надо учиться. Надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lotor 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Давайте только без громких фра. =) Вот я 2 года как разрабатываю приборы на микроконтроллеров (хотя больше программы к ним пишу) и не разу не потребовались счетчики, сумматоры, логические И. И зачем мне учиться рассыпухе, если она не используется? И не надо говорить, что я никто. Начальство не жалуется. =) И кстати, я тут нигде не утверждал, что не знаю как это все работает. Попросил всего-то идею, как считать единицы. Вы же тут слепили выводы, что Вам пишет двоечник, ничего не понимающий, ничего не знающий. Ну давайте, расскажите обо мне еще чего нового. =)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба А если поставить преобразователь из параллельного в последовательный код, а потом просто подсчитывать кол-во импульсов счетчиком. Преобразователь и счетчик реализуются несложным образом на триггерах, ну и всю эту бодягу надо будет затактировать генератором, который можно собрать на И-НЕ, например. Хотя решение с сумматором мне кажется проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lotor 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба А если поставить преобразователь из параллельного в последовательный код, а потом просто подсчитывать кол-во импульсов счетчиком. Преобразователь и счетчик реализуются несложным образом на триггерах, ну и всю эту бодягу надо будет затактировать генератором, который можно собрать на И-НЕ, например. Вроде практически одно и тоже, что я описывал в первом посте - считать количество единиц, выталкиваемых генератором из регистра, в котором сидит результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 7 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Люди, не подскажите, как можно посчитать количество единиц в 8 разрядном результате ацп с помощью цифровых микросхем? Хотя бы идею. Я научен мыслить микропроцессорной схемотехникой, а тут курсовик. И как назло препод-динозавр. Говорит, можешь делать курсач на МК, но количество единиц покажешь мне, как считать на микросхемах. Мне на ум приходит только такая схема, что кварц формирует импульсы, по каждому импульсу из регистра выталкивается разряд, который подается на счетчик. Счетчик срабатывает только при единичном уровне на входе. Результат счетчика - параллельный код... Полковник был большая сволочь и пасовал при 3 тузах. (Этот я о Вашем преподе) Вы правильно мыслите, но представьте, что это Вам нужно делать на лету, по каждому 8 разрядному отсчету на такт. Такую схему на 8 разрядов умаетесь рисовать. Поэтому Вам и предлагают табличный метод на ПЗУ. Но как говориться за нас все делает синтезатор (пакеты для работы с программируемой логикой) Главное правильно описать. И ВЫ как алгоритмист легко это сможете. Вот пример на верилоге (уже все сделано) Идея проста. Берется 32 разрядная переменная и обнуляется. Потом в цикле берется каждый разряд последовательно и сравнивается с 1. Если это единица к значению в переменной прибавляется 1. После последнего разряда выходим их цикла и в переменной num_bits исконное значение Этот пример предложен в пакете MAX+ Альтера. Запустите в любом пакете, где есть просмотрщик того, во что (схема) это выльется. А выльется это в цепочку чередующихся сумматоров и мультиплексоров. Длина цепочки прямо пропорциональна количеству разрядов на входе схемы. Это сходу никто не нарисует. Да и глупо требовать это делать на рассыпухе, если адгоритмически все понятно. // MAX+plus II Verilog Example // Combinatorial Always Statement // Copyright © 1994 Altera Corporation module proc (d, q); input [2:0] d; output [1:0] q; integer num_bits; always @(d) begin: block integer i; num_bits = 0; for (i = 0; i < 3; i = i + 1) if (d) num_bits = num_bits + 1'b1; end assign q = num_bits; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lotor 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба sazh , большое спасибо! И, извиняюсь за оффтоп, всех с победой сборной России по хоккею! :08: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amper25 0 18 мая, 2008 Опубликовано 18 мая, 2008 (изменено) · Жалоба Все можно сделать без тактирования и триггеров, а с помощью обычной логики. Например, бит0 результата вычисляется как: RES_Bit0 <= BIT0 xor BIT1 xor BIT2 xor ... BIT7; Биты 1 и 2 результата будут чуть сложнее считатся, как - мне лень сейчас думать. Можно пойти другим путем - составить таблицу истиности для суммирования двух однобитовых величин, реализовать эту таблицу с помошью логики и потом просто каскадировать это все на 8 входов. IN1: IN2: RESULT: CARRY: 0____0________0________0 0____1________1________0 1____0________1________0 1____1________0________1 те. RESULT <= IN1 xor IN2; CARRY <= IN1 and IN2; ... Изменено 18 мая, 2008 пользователем Amper25 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба Проще ПЗУ не придумать. А раз человек не в курсе про схемотехнику, то подключать альтеру какую-нибудь чисто умается. -- Есть еще один извратный способ, но очень простой. Все выходы АЦП объединяются через резисторы, к примеру, 10 килоом. С точки объединения - на землю какой-нибудь резистор, килоом 100, например. Тогда напряжение на выходе будет прямопропорционально числу единиц. ставим крутой стрелочный прибор и градуируем его. Точность будет очень хорошей. Ибо всего 8 градаций. Это примерно 0.6 вольта на единицу при питании 5 вольт. Очень круто будет. Hi-end измеритель чила единиц. Почти ламповый. К тому же препод отвергнет идею с альтерой. Это не есть рассыпуха. А вот ПЗУ под это дело подходит лучше. Формально - это рассыпуха. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aesthete Animus 0 18 мая, 2008 Опубликовано 18 мая, 2008 · Жалоба А что мешает сделать так. Разбиваем байт на "слова" по два бита, суммируем количество едениц в каждом из них (на это уйдет 4 однобитных сумматора), далее, получив четыре числа попарно суммируем их (еще два 2-битных сумматора) - получаем два числа. Просуммировав последние (еще один 3-битный сумматор) - получаем результат - количество единичных бит в байте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 21 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Есть еще один извратный способ, но очень простой. Все выходы АЦП объединяются через резисторы, к примеру, 10 килоом. С точки объединения - на землю какой-нибудь резистор, килоом 100, например. Классная идея! немного модифицирую: с выходов АЦП делаем аналоговый сумматор на опере, далее ставим простенькое АЦП, 8 бит, например, и тогда его старшие 3 разряда как раз будут показывать количество единиц. PS: не сочтите за издевательство, на самом деле классная идея! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Классная идея! немного модифицирую: с выходов АЦП делаем аналоговый сумматор на опере, далее ставим простенькое АЦП, 8 бит, например, и тогда его старшие 3 разряда как раз будут показывать количество единиц. PS: не сочтите за издевательство, на самом деле классная идея! Очень похоже на: "чтобы понять рекурсию, нужно понять рекурсию" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться