Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дешифратор для семисегментников
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Kuzmi4
Здравствуйте.

Есть у нас дешифратор для семисегментников.
Нажмите для просмотра прикрепленного файла
Логика его проста - декодируем бинарный код на входе так чтоб на выходе 7-сегментник высвечивал нужные циферки (тобто выдавал нужные комбинации a,b,c,d....). Собсно реализация его на вентилях такова
Нажмите для просмотра прикрепленного файла
И значит в книге Дк. Ф. Уэйкерли "Проектирование цифровых устройств" дано такое объяснение, которое приводит имеено к ячейке , что я обвёл красным :
Цитата
...каждый выходной сигнал дешифратора, относящийся к соответствующему сегменту, является минимальным выражением вида "произведение сумм"[собсно что и являет собой обведённый красным кружок] , значения которого при недесятичных входных комбинациях"безразличны"...

Реализация через таблицу в принципе ясна , тут нету трабла, однако должна быть реализация не через неё, вот как например в простом шифраторе 3х8 ():
Нажмите для просмотра прикрепленного файла
Фунция CONV_INREGER(x) возвращает интергер с вектора std_logic_vector.

Да и не ясно откуда видно что у нас "произведение сумм"..
1111493779.gif
MrYuran
чё-то я не понял в чём тут фишка.
В любом случае в конечном итоге таблица получится.
Какой смысл расписывать её в виде крутых циклических алгоритмов?
тем более что таблица 7-сегментного дешифратора нециклическая, в отличие от шифратора 3х8
Kuzmi4
2 MrYuran - оно то конечно можно через таблицу, но Уэйкерли откуда-то стало видно что это будет "произведение сумм" - вот и спрашиваю - может кто знает - откуда это видно.. А там рядом должна лежать и реализация...
wacko.gif
MrYuran
Цитата(Kuzmi4 @ May 22 2008, 15:52) *
2 MrYuran - оно то конечно можно через таблицу, но Уэйкерли откуда-то стало видно что это будет "произведение сумм" - вот и спрашиваю - может кто знает - откуда это видно.. А там рядом должна лежать и реализация...
wacko.gif

а то что вы кружочком обвели это что - не произведение сумм?
можно и по другому сказать - конъюнкция дизъюнкций (или наоборот, точно уже не помню, что чего означает, "и" или "или")
Короче: в булевой алгебре произведение - это "и", сложение - "или"
Kuzmi4
2 'MrYuran' -
Цитата(MrYuran @ May 22 2008, 16:04) *
в булевой алгебре произведение - это "и", сложение - "или"

Спасибо, знаю.

Цитата(MrYuran @ May 22 2008, 16:04) *
а то что вы кружочком обвели это что - не произведение сумм?

Именно оно!
Мне просто трудно увидеть откуда автору вдруг стало видно до построения на вентилях ( через мин/макс-термы), что мы имеем дело с произведениями сумм...
Во это собственно и вопрос..
Вопрос так же в том - как будет выглядеть поведенческое описание..
MrYuran
чё-то не понимаю я, чего вы хотите добиться. Туповат стал...
Да и логическое описание для меня как-то роднее, чем разные там HDL...
а схема - это как раз-таки логическая реализация таблицы состояний
Kuzmi4
2 MrYuran - для меня непонятно как написать поведенческое описнание схемы на VHDL - судя из книги Уэйкерли - главная идея в том, что у нас
Цитата
сигнал дешифратора, относящийся к соответствующему сегменту, является минимальным выражением вида "произведение сумм", значения которого при недесятичных входных комбинациях"безразличны"...

Мне вот невидно откудова автор это увидел до начала построения схемы на вентилях.
Потому прошу объяснить или тыкануть носом в источник где это описывается.
А там рядом и лежить поведенческое описание.

--
приведу пример с простым шифратором 3х8 - идея в том что бы выставить соответствующую лапку в зависимости от бинарного значения на входе - то есть другими словами - нам надо взять значение входного числа ( CONV_INREGER ) и выставить лапку с номером числа в массиве выходных лапок...
Это ж и реализовано в поведенческом описании , что я привёл выше...
MrYuran
В моём понимании синтез комбинационного устройства происходит таким образом:
Пишется таблица состояний.
По таблице строятся функции выходов с форме СКНФ или СДНФ (как раз пресловутые произведения сумм или суммы произведений).
Потом они минимизируются и при желании приводятся к базису (и-не, к примеру).
По крайней мере меня так в школе учили.
Не знаю, может за 15 лет наука далеко вперёд ушла и я чего-то не понимаю...
XVR
Цитата(Kuzmi4 @ May 22 2008, 17:37) *
2 MrYuran - для меня непонятно как написать поведенческое описнание схемы на VHDL - судя из книги Уэйкерли - главная идея в том, что у нас


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

Мне вот невидно откудова автор это увидел до начала построения схемы на вентилях.
Любая логическая функция (читай - чисто комбинаторная схема) может быть представленна в виде "произведение сумм" (т.н. 'нормальная конъюктивная форма').
Kuzmi4
2 MrYuran - это да , тут я не спорю, но есть есчё поведенческое описание на всяких HDL`ях.. Вот его я пытаюсь уразуметь..
2 XVR - согласен, или суммы произведений..

Ладно пойдём другим путём, может кто то дать поведенческое описание , что б я неразумный понял ??
rv3dll(lex)
чего непонятного

под процессом
if input = "0001" then
output <= "01010101" ;
elsif input = "0010" then
output <= "01110101" ;


-- ********

else
output <= "00000000" ;
end if;
Maverick
Можно и так, только это описывается вне процесса (к Kuzmi4 она описывает твою схему нарисованную в схематике)

--HEX-to-seven-segment decoder
-- HEX: in STD_LOGIC_VECTOR (3 downto 0);
-- LED: out STD_LOGIC_VECTOR (6 downto 0);
--
-- segment encoinputg
-- 0
-- ---
-- 5 | | 1
-- --- <- 6
-- 4 | | 2
-- ---
-- 3

with HEX SELect
LED<= "1111001" when "0001", --1
"0100100" when "0010", --2
"0110000" when "0011", --3
"0011001" when "0100", --4
"0010010" when "0101", --5
"0000010" when "0110", --6
"1111000" when "0111", --7
"0000000" when "1000", --8
"0010000" when "1001", --9
"0001000" when "1010", --A
"0000011" when "1011", --b
"1000110" when "1100", --C
"0100001" when "1101", --d
"0000110" when "1110", --E
"0001110" when "1111", --F
"1000000" when others; --0
Kuzmi4
Понимаете , это получается не что иное как табличное описание - я прcото загоняю таблицу истинностей в VHDL да и всё...

Ладно, пришёл к выводу что нестандартный дешифраторы загонять таблицей, делать компонент и не мучаться...
rv3dll(lex)
Цитата(Kuzmi4 @ May 23 2008, 11:25) *
Понимаете , это получается не что иное как табличное описание - я прcото загоняю таблицу истинностей в VHDL да и всё...

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


то что ты пытаешься сделать за тебя сделает компиллятор
Kuzmi4
Цитата(rv3dll(lex) @ May 23 2008, 10:54) *
то что ты пытаешься сделать за тебя сделает компиллятор


Вот так всегда -
Цитата
Тефаль - думает за нас...
MrYuran
Цитата(Kuzmi4 @ May 23 2008, 11:11) *

Как ни пиши, конечный результат будет один и тот же с точностью до вентиля.
Так что писать надо так, чтобы было понятнее и удобнее потом работать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.