реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> "Оптимизатор" логических выражений, Есть ли такой в виде отдельной проги или в составе чегонить
Alex03
сообщение Nov 10 2006, 13:26
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Такой чтобы ввести строчку вида:
((a + cool.gif * c) * ((~a + cool.gif * c)
и получить соответствующий ответ
c * b

Бывает такое?

Ну или ссылки на методы, только не на карты карно, там больше 4-х переменных уже труба. smile.gif


Цитата(Alex03 @ Nov 10 2006, 18:24) *
((a + cool.gif * c) * ((~a + cool.gif * c)


Промашка вышла! smile.gif

Код
((a + b) * c)  * ((~a + b) * c)
Go to the top of the page
 
+Quote Post
litv
сообщение Nov 10 2006, 13:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



Самый Хороший оптимизатор для такой задачки -
Synplify. Напишите ее на VHDL или Verilog
- запустите синтезатор и посмотрите в RTL вью
оптимизированную логическую схему. smile3009.gif
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 10 2006, 13:57
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Alex03, что-то я не понял. причем тут карты Карно или диаграмы Вейча? Они же для булевых операций, а у Вас, насколько я понял: арифметичекие ( так?)

самый лучший "оптимизатор" для этих вещей: системы симольной математики (matlab, mathcad, maple, etc..)


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 10 2006, 16:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Doka @ Nov 10 2006, 16:57) *
Alex03, что-то я не понял. причем тут карты Карно или диаграмы Вейча? Они же для булевых операций, а у Вас, насколько я понял: арифметичекие ( так?)


Какие же они арифметические? Явно булева алгебра, там же инверсия у товарисча.

ЗЫ
А по делу - я бы предложил синтезировать в синопсисе на библиотеку gtech, включив минимизатор (set_flatten и set_structure с опцией boolean)
Go to the top of the page
 
+Quote Post
TailWind
сообщение Nov 10 2006, 17:05
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135



Тебе нужно чтобы:
-компактно выглядело
-быстро работало
-занимало маленькую площадь
-просто для понимания?
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 10 2006, 18:02
Сообщение #6


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(SM @ Nov 10 2006, 19:02) *
Какие же они арифметические? Явно булева алгебра, там же инверсия у товарисча.

дык... так ведь если числа в дополнительном коде - то простая инверсия не проканает (в смысле нифига не упростится)


ЗЫЖ по поводу булевости: что-то на семинарах никогджа не доводилось рисовать таблицы истинности для операторов + и *


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 10 2006, 18:35
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Doka @ Nov 10 2006, 21:02) *
ЗЫЖ по поводу булевости: что-то на семинарах никогджа не доводилось рисовать таблицы истинности для операторов + и *


Ничего про семинары не знаю, а в общепринятой записи "+" это "ИЛИ", умножение - "И". Это не верилог!!! Это булева алгебра! smile.gif
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 10 2006, 19:19
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Если это булева алгебра, то при записи в лоб любой синтезатор должен выдать типа
Warning: Design contains 1 input pin(s) that do not drive logic
Warning: No output dependent on input pin "a"
и в результате будет искомое b&c
А почему должно быть иначе.
Go to the top of the page
 
+Quote Post
tegumay
сообщение Nov 10 2006, 21:22
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-09-05
Из: Москва
Пользователь №: 8 640



кроме карт Карно есть еще 4-5 методов оптимизации. 4 из них для ручного расчета
5-й на основе матриц применяется для автоматического расчета. Он везде и применяется.
... полез в книгу...
ой нетути книги
смысл в том что все состояний системы сводятся к матрицам потом над ними производится магическая операция, а на выходе минимизированная функция
т.к. все эти операции были оптимизированы для ПК то они по идее и должны везде применятся


--------------------
;X
Go to the top of the page
 
+Quote Post
Alex03
сообщение Nov 13 2006, 12:06
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Я имел ввиду логические выражения, о чём и было написано в заголовке.
А уж формат записи
Код
    ((a + b) * c)  * ((~a + b) * c)
или
    ((a | b) & c)  & ((~a | b) & c)
или
    ((a OR b) AND c)  AND (((NOT a) OR b) AND c)
или
    ...

ИМХО дело десятое.

Цитата
Тебе нужно чтобы:
-компактно выглядело
-быстро работало
-занимало маленькую площадь
-просто для понимания?


Как новичёк в ПЛИС-о строении (а вообще я программер) я до хHDL-ев ещё не дорос.
Разбираться с хHDL пока некогда.
Посему певый проект - схемный ввод, как абсолютно понятный, но вот при отладке его я уже понял что у хHDL одни плюсы, чего только стоит "закоментарить" один кусок и породить его замену в схеме. smile.gif
В планах когда время будет поблочно схему в HDL попереводить.


Так вот. Изначально вопрос возник из оптимизации логики на схеме, там гдето из 8-ми сигналов получал 2. И соответственно делал поэтапно, через промежуточные осмысленные по логике работы.

Видимо теперь я хочу уже не просто упрощать, но ещё и с заведомым результатом.
Т.е.
1. Упростить по общему кол-ву операций
2. Упростить/преобразовать с минимизацией операций от "входа к выходу" smile.gif
3. Упростить/преобразовать в сумму произведений или наоборот (например с оглядкой на структуру ПЛИС, хотя другим ПЛИС с лукап-тэйблами вообще по барабану)
4. Упростить/преобразовать для удобочитаемости (это уже в программировании порой полезно)
... ну и т.д. smile.gif

В общем расширить кругозор по всей теме. smile.gif
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 13 2006, 12:18
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



А зачем Вам на самой схеме-то оптимизировать? Ведь синтезатору-оптимизатору не важно, на HDL исходник, или схема. Оптимизации он все сделает сам, как раз с учетом структуры ПЛИС. А Вы потом можете логические выражения посмотреть в отчетах.
Go to the top of the page
 
+Quote Post
klop
сообщение Nov 13 2006, 12:23
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



В нормальных книжках по xHDL обычнно есть главы посвященные уровням абстракции. Почитайте.


a <= '1' when b=x"1" else '0';

и

a <= not b(3) and not b(2) and not b(1) and b(0);

означают одно и то же но вот вторая запись как то не того...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Nov 13 2006, 12:28
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(sazh @ Nov 10 2006, 22:19) *
Если это булева алгебра, то при записи в лоб любой синтезатор должен выдать типа
Warning: Design contains 1 input pin(s) that do not drive logic
Warning: No output dependent on input pin "a"
и в результате будет искомое b&c
А почему должно быть иначе.


Иначе должно быть, например, потому, что задача оптимизации логических выражений является NP-полной biggrin.gif
Точнее, классической NP-полной задачей является задача выполнимости, которую. очевидно, элементарно сводится к обсуждаемой задаче оптимизации. Является ли задача оптимизации даже NP - с ходу не скажу.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
TailWind
сообщение Nov 13 2006, 14:09
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135



Цитата(Alex03 @ Nov 13 2006, 15:06) *
Так вот. Изначально вопрос возник из оптимизации логики на схеме, там гдето из 8-ми сигналов получал 2. И соответственно делал поэтапно, через промежуточные осмысленные по логике работы.


Всё правильно, так и делай.
Или переходи на hdl.

Я когда студентом был AHDL за пару дней выучил ;)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 09:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016