Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "Оптимизатор" логических выражений
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Alex03
Такой чтобы ввести строчку вида:
((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)
litv
Самый Хороший оптимизатор для такой задачки -
Synplify. Напишите ее на VHDL или Verilog
- запустите синтезатор и посмотрите в RTL вью
оптимизированную логическую схему. smile3009.gif
Doka
Alex03, что-то я не понял. причем тут карты Карно или диаграмы Вейча? Они же для булевых операций, а у Вас, насколько я понял: арифметичекие ( так?)

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


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

ЗЫ
А по делу - я бы предложил синтезировать в синопсисе на библиотеку gtech, включив минимизатор (set_flatten и set_structure с опцией boolean)
TailWind
Тебе нужно чтобы:
-компактно выглядело
-быстро работало
-занимало маленькую площадь
-просто для понимания?
Doka
Цитата(SM @ Nov 10 2006, 19:02) *
Какие же они арифметические? Явно булева алгебра, там же инверсия у товарисча.

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


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


Ничего про семинары не знаю, а в общепринятой записи "+" это "ИЛИ", умножение - "И". Это не верилог!!! Это булева алгебра! smile.gif
sazh
Если это булева алгебра, то при записи в лоб любой синтезатор должен выдать типа
Warning: Design contains 1 input pin(s) that do not drive logic
Warning: No output dependent on input pin "a"
и в результате будет искомое b&c
А почему должно быть иначе.
tegumay
кроме карт Карно есть еще 4-5 методов оптимизации. 4 из них для ручного расчета
5-й на основе матриц применяется для автоматического расчета. Он везде и применяется.
... полез в книгу...
ой нетути книги
смысл в том что все состояний системы сводятся к матрицам потом над ними производится магическая операция, а на выходе минимизированная функция
т.к. все эти операции были оптимизированы для ПК то они по идее и должны везде применятся
Alex03
Я имел ввиду логические выражения, о чём и было написано в заголовке.
А уж формат записи
Код
    ((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
SM
А зачем Вам на самой схеме-то оптимизировать? Ведь синтезатору-оптимизатору не важно, на HDL исходник, или схема. Оптимизации он все сделает сам, как раз с учетом структуры ПЛИС. А Вы потом можете логические выражения посмотреть в отчетах.
klop
В нормальных книжках по xHDL обычнно есть главы посвященные уровням абстракции. Почитайте.


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

и

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

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


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

Я когда студентом был AHDL за пару дней выучил ;)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.