Как получить логические уравнения?

User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Как получить логические уравнения?

Post by perasperaadastra »

Есть ящик: на входе 8 бит, на выходе 8 бит. Известна зависимость выхода от входа. Нужно подобрать логические уравнения. Понятно, что это можно сделать вручную, но работа муторная. А есть ли простой способ сделать это автоматически? Я думаю какой-нибудь verilog или vhdl это умеет, но без знания языка/среды непонятно, как такие вещи делать. Может быть есть какие-нибудь более простые средства, чтобы ввести таблицу соответствий и набор допустимых операций, и оно само сгенерирует уравнения?
User avatar
thinker
Уже с Приветом
Posts: 26871
Joined: 29 Aug 2000 09:01

Re: Как получить логические уравнения?

Post by thinker »

All rights reserved, all wrongs revenged.
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: Как получить логические уравнения?

Post by Palych »

А зачем уравнения для 256 комбинаций? Проще таблицу использовать...
OtherSide
Уже с Приветом
Posts: 15770
Joined: 01 Mar 2008 15:14

Re: Как получить логические уравнения?

Post by OtherSide »

perasperaadastra wrote: 23 Apr 2017 15:59 Есть ящик: на входе 8 бит, на выходе 8 бит. Известна зависимость выхода от входа. Нужно подобрать логические уравнения. Понятно, что это можно сделать вручную, но работа муторная. А есть ли простой способ сделать это автоматически? Я думаю какой-нибудь verilog или vhdl это умеет, но без знания языка/среды непонятно, как такие вещи делать. Может быть есть какие-нибудь более простые средства, чтобы ввести таблицу соответствий и набор допустимых операций, и оно само сгенерирует уравнения?
теоретически это несложно, помню у нас лабораторки даже были для этой задачи, но технически правильно написали - надо делать через таблицу
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как получить логические уравнения?

Post by perasperaadastra »

Palych wrote: 23 Apr 2017 17:29 А зачем уравнения для 256 комбинаций? Проще таблицу использовать...
Таблицу проще, когда есть возможность поставить EEPROM или вообще делать всё в микроконтроллере. А если хочется использовать теплые ламповые логические ворота 7400 серии?
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как получить логические уравнения?

Post by perasperaadastra »

OtherSide wrote: 23 Apr 2017 17:36 теоретически это несложно, помню у нас лабораторки даже были для этой задачи
Для четырех бит — несложно, хоть и нудная работа. Всего лишь 16 клеток в карте Карно. Помножить на число бит на выходе. А вот для задачи с 8 битами, каждая карта Карно имеет 256 клеток. А если помножить на 8 бит на выходе, то решение точно займет многие часы. Так что без компьютера никак.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как получить логические уравнения?

Post by perasperaadastra »

Это же только для XY построений. С логикой оно не работает.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Как получить логические уравнения?

Post by Alexandr »

perasperaadastra wrote: 23 Apr 2017 15:59 Есть ящик: на входе 8 бит, на выходе 8 бит. Известна зависимость выхода от входа. Нужно подобрать логические уравнения. Понятно, что это можно сделать вручную, но работа муторная. А есть ли простой способ сделать это автоматически? Я думаю какой-нибудь verilog или vhdl это умеет, но без знания языка/среды непонятно, как такие вещи делать. Может быть есть какие-нибудь более простые средства, чтобы ввести таблицу соответствий и набор допустимых операций, и оно само сгенерирует уравнения?
строите таблицу истинности, а потом тупо через sum of products или product of sums
как оптимизировать - это уже другой вопрос, но на него тоже есть алгоритмический ответ

https://www.allaboutcircuits.com/textbo ... pressions/

по поводу оптимизации смотрите Karnaugh Maps
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Как получить логические уравнения?

Post by Alexandr »

по поводу оптимизации по Karnaugh Maps online нашел вот http://www.32x8.com/
думаю вам хватит
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как получить логические уравнения?

Post by perasperaadastra »

Карты Карно удобны для небольшого числа бит. А с 8 битами получается 256 клеток в карте. Если на выходе 7 бит (например, для сегментного дисплея), получается 7 таких таблиц. Вручную такое не сделать.
User avatar
thinker
Уже с Приветом
Posts: 26871
Joined: 29 Aug 2000 09:01

Re: Как получить логические уравнения?

Post by thinker »

perasperaadastra wrote: 26 Apr 2017 20:05 Карты Карно удобны для небольшого числа бит. А с 8 битами получается 256 клеток в карте. Если на выходе 7 бит (например, для сегментного дисплея), получается 7 таких таблиц. Вручную такое не сделать.
ну так для 7-сегментного дисплея сегодня вручную никто и не делает. Ставят микропроцессор с EEPROM и загоняют в него таблицу, а не используют "логические ворота 7400 серии". You can't make a chicken out of shit. :wink:
All rights reserved, all wrongs revenged.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Как получить логические уравнения?

Post by Alexandr »

perasperaadastra wrote: 26 Apr 2017 20:05 Карты Карно удобны для небольшого числа бит. А с 8 битами получается 256 клеток в карте. Если на выходе 7 бит (например, для сегментного дисплея), получается 7 таких таблиц. Вручную такое не сделать.
Карты Карно (либо аналог) использует любой софт, который оптимизит булевы выражения
руками не надо: можно например вот взять прогу http://k-map.sourceforge.net/

Return to “Вопросы и новости IT”