Kuzmi4
May 22 2008, 12:18
Здравствуйте.
Есть у нас дешифратор для семисегментников.
Нажмите для просмотра прикрепленного файлаЛогика его проста - декодируем бинарный код на входе так чтоб на выходе 7-сегментник высвечивал нужные циферки (тобто выдавал нужные комбинации a,b,c,d....). Собсно реализация его на вентилях такова
Нажмите для просмотра прикрепленного файлаИ значит в книге Дк. Ф. Уэйкерли "Проектирование цифровых устройств" дано такое объяснение, которое приводит имеено к ячейке , что я обвёл красным :
Цитата
...каждый выходной сигнал дешифратора, относящийся к соответствующему сегменту, является минимальным выражением вида "произведение сумм"[собсно что и являет собой обведённый красным кружок] , значения которого при недесятичных входных комбинациях"безразличны"...
Реализация через таблицу в принципе ясна , тут нету трабла, однако должна быть реализация не через неё, вот как например в простом шифраторе 3х8 ():
Нажмите для просмотра прикрепленного файлаФунция CONV_INREGER(x) возвращает интергер с вектора std_logic_vector.
Да и не ясно откуда видно что у нас "произведение сумм"..
MrYuran
May 22 2008, 12:45
чё-то я не понял в чём тут фишка.
В любом случае в конечном итоге таблица получится.
Какой смысл расписывать её в виде крутых циклических алгоритмов?
тем более что таблица 7-сегментного дешифратора нециклическая, в отличие от шифратора 3х8
Kuzmi4
May 22 2008, 12:52
2 MrYuran - оно то конечно можно через таблицу, но Уэйкерли откуда-то стало видно что это будет "произведение сумм" - вот и спрашиваю - может кто знает - откуда это видно.. А там рядом должна лежать и реализация...
MrYuran
May 22 2008, 13:04
Цитата(Kuzmi4 @ May 22 2008, 15:52)

2 MrYuran - оно то конечно можно через таблицу, но Уэйкерли откуда-то стало видно что это будет "произведение сумм" - вот и спрашиваю - может кто знает - откуда это видно.. А там рядом должна лежать и реализация...

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

в булевой алгебре произведение - это "и", сложение - "или"
Спасибо, знаю.
Цитата(MrYuran @ May 22 2008, 16:04)

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

2 MrYuran - для меня непонятно как написать поведенческое описнание схемы на VHDL - судя из книги Уэйкерли - главная идея в том, что у нас
сигнал дешифратора, относящийся к соответствующему сегменту, является минимальным выражением вида "произведение сумм", значения которого при недесятичных входных комбинациях"безразличны"...
Мне вот невидно откудова автор это увидел до начала построения схемы на вентилях.
Любая логическая функция (читай - чисто комбинаторная схема) может быть представленна в виде "произведение сумм" (т.н. 'нормальная конъюктивная форма').
Kuzmi4
May 22 2008, 13:54
2 MrYuran - это да , тут я не спорю, но есть есчё поведенческое описание на всяких HDL`ях.. Вот его я пытаюсь уразуметь..
2 XVR - согласен, или суммы произведений..
Ладно пойдём другим путём, может кто то дать поведенческое описание , что б я неразумный понял ??
rv3dll(lex)
May 23 2008, 05:07
чего непонятного
под процессом
if input = "0001" then
output <= "01010101" ;
elsif input = "0010" then
output <= "01110101" ;
-- ********
else
output <= "00000000" ;
end if;
Maverick
May 23 2008, 05:26
Можно и так, только это описывается вне процесса (к 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
May 23 2008, 07:25
Понимаете , это получается не что иное как табличное описание - я прcото загоняю таблицу истинностей в VHDL да и всё...
Ладно, пришёл к выводу что нестандартный дешифраторы загонять таблицей, делать компонент и не мучаться...
rv3dll(lex)
May 23 2008, 07:54
Цитата(Kuzmi4 @ May 23 2008, 11:25)

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

то что ты пытаешься сделать за тебя сделает компиллятор
Вот так всегда -
Цитата
Тефаль - думает за нас...
MrYuran
May 23 2008, 10:45
Цитата(Kuzmi4 @ May 23 2008, 11:11)

Как ни пиши, конечный результат будет один и тот же с точностью до вентиля.
Так что писать надо так, чтобы было понятнее и удобнее потом работать.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.