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

 
 
 
Reply to this topicStart new topic
> Две логические функции на одном LUT-e в Altera Cyclone II - IV
files
сообщение Jul 27 2014, 21:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



FPGA Altera Cyclone до 4-го поколения включительно имеют в составе LE 4-входовой LUT. В арифметическом режиме этот LUT фактически интерпретируется как два 3-входовых LUT-а, один из которых реализует функцию суммирования, а другой переноса. Причем оба эти 3-входовых LUT-а имеют каждый свой отдельный выход.

Вопрос к знающим людям: есть ли возможность реализовать на арифметической конфигурации LE (с двумя 3-входовыми LUT-ами) две произвольные логические функции от трех общих переменных?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 28 2014, 06:13
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А вы проверьте сами, сделайте то, что вам нужно.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jul 28 2014, 08:14
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (files @ Jul 28 2014, 04:41) *
FPGA Altera Cyclone до 4-го поколения включительно имеют в составе LE 4-входовой LUT. В арифметическом режиме этот LUT фактически интерпретируется как два 3-входовых LUT-а, один из которых реализует функцию суммирования, а другой переноса. Причем оба эти 3-входовых LUT-а имеют каждый свой отдельный выход.

Если судить по картинке LUT в арифметическом режиме (С4 handbook), то выход-то каждый под-LUT имеет отдельный, но вот наружу из них отдаётся только один (мультиплексор стоит), а выход второго ещё напрямую зацеплен на cout, т.е. подаётся на carry-chain этого LAB, на вход сin следующего LE. Поэтому как-то не очень понятно, как вы хотите использовать оба выхода одновременно как выходы разных функций.

QUOTE (files @ Jul 28 2014, 04:41) *
Вопрос к знающим людям: есть ли возможность реализовать на арифметической конфигурации LE (с двумя 3-входовыми LUT-ами) две произвольные логические функции от трех общих переменных?

Боюсь, что это прерогатива синтезатора, и он не даст туда лазить "грязными руками".

А что у вас за потребность такая? Ресурсов не хватает (хочется выжать из чипа всё "до капли") или чисто академический интерес?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
SM
сообщение Jul 28 2014, 09:25
Сообщение #4


Гуру
******

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



Цитата(files @ Jul 28 2014, 01:41) *
Вопрос к знающим людям: есть ли возможность реализовать на арифметической конфигурации LE (с двумя 3-входовыми LUT-ами) две произвольные логические функции от трех общих переменных?


Возможность есть - для этого есть примитив CARRY_SUM (в старых версиях был только примитив CARRY) - используя его, можно указать, какая из функций идет на cout, какая на sum. Но! При этом надо учитывать физические ограничения возможности трассировки сигналов с выхода cout (да и на вход cin тоже), поэтому синтезатор может с легкостью Ваш CARRY_SUM выкинуть.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Jul 31 2014, 18:14
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(dxp @ Jul 28 2014, 12:14) *
Боюсь, что это прерогатива синтезатора, и он не даст туда лазить "грязными руками".

Даёт. В исходник вставляете элемент cycloneii_lcell_comb #(...) name (...); и Квартус его не оптимизирует и вставляет "как есть". Маску рисуете сами. На этом хаке сделаны некоторые мегафункции типа ALTDQ ALTDDIO.

Но:
1. Как и говорил SM: лучше через примитив.
2. Один из выходов идёт только на вход следующего LUT. Так что применение оч. ограничено.
Go to the top of the page
 
+Quote Post
files
сообщение Aug 27 2014, 10:40
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



Цитата(SM @ Jul 28 2014, 12:25) *
Возможность есть - для этого есть примитив CARRY_SUM (в старых версиях был только примитив CARRY) - используя его, можно указать, какая из функций идет на cout, какая на sum. Но! При этом надо учитывать физические ограничения возможности трассировки сигналов с выхода cout (да и на вход cin тоже), поэтому синтезатор может с легкостью Ваш CARRY_SUM выкинуть.
Огромное спасибо за комментарии.

Однако относительно примитива CARRY_SUM не все понятно.
Я правильно понимаю принцип работы этого примитива: сигналы, которые я подаю на входы sin, cin разведуться на выходы суммы и переноса логического элемента LE FPGA?

У меня такой разводки при помощи примитива CARRY_SUM добиться не удалось. Оба выхода LUT-а подключаются к выходам суммы, а цепь переноса оказывается не задействована.

Или я неправильно понял, как работает примитив?


Go to the top of the page
 
+Quote Post
SM
сообщение Aug 27 2014, 11:17
Сообщение #7


Гуру
******

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



Поняли все правильно. А то, что не получается - это значит, что физически нельзя развести то, что Вы хотите и куда хотите, с физического выхода переноса ячейки.

Ну, либо, у Вас в опциях где-то стоит игнорирование CARRY
Go to the top of the page
 
+Quote Post
files
сообщение Aug 27 2014, 16:04
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



Цитата(SM @ Aug 27 2014, 14:17) *
Поняли все правильно. А то, что не получается - это значит, что физически нельзя развести то, что Вы хотите и куда хотите, с физического выхода переноса ячейки.

Ну, либо, у Вас в опциях где-то стоит игнорирование CARRY
Спасибо за комментарий.

Я вот сделал такую примитивную схему.

Ожидалось, что:
– верхний элемент И (inst3) и элемент ИЛИ (inst4) упакуются в один LUT элемента, находящегося в арифметическом режиме;
– второй элемент И (inst5) примет данные из этого LUT-а через цепь переноса;
– всего для реализации этой схемы будет задействовано 2 LUT-а.
У меня были правильные ожидания относительно этой схемы, или я что-то делаю не так?

Реально же схема размещается в 3-х LE (каждый логический элемент в отдельном LUT), все LE в нормальном режиме, цепь переноса не задействована.

Среда разработки – Quartus 13.0. Опции игнорирования CARRY вроде нет
Прикрепленное изображение


Сообщение отредактировал files - Aug 27 2014, 16:05
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 27 2014, 16:18
Сообщение #9


Гуру
******

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



По идее, должно упаковаться в два лута. Смотрите опции....

У меня, кстати, были случаи, когда свежий квартус не упаковывал как мне надо, как не танцуй вокруг него, а какой-то древний - делал без проблем заказанное...
Go to the top of the page
 
+Quote Post
files
сообщение Aug 28 2014, 11:36
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



Цитата(SM @ Aug 27 2014, 19:18) *
По идее, должно упаковаться в два лута. Смотрите опции....

У меня, кстати, были случаи, когда свежий квартус не упаковывал как мне надо, как не танцуй вокруг него, а какой-то древний - делал без проблем заказанное...
Как я опции не крутил, все равно при синтезе этой схемы выдает сообщение «Ignored 1 CARRY_SUM primitive» и Quartus 13.0 и Quartus 8.1.

Может, у кого есть мысли, что не так?

Go to the top of the page
 
+Quote Post
SM
сообщение Aug 28 2014, 11:50
Сообщение #11


Гуру
******

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



Цитата(files @ Aug 28 2014, 15:36) *
Может, у кого есть мысли, что не так?

Видимо, мой тот случай, когда свежий (на то время, наверное, 9-й) квартус упрямо выкидывал примитив, а 7-ой собрал все по моему заказу.

Попробуйте, разве что, еще оставшуюся часть схемы (выход AND3 которая внизу справа) пропустить через CARRY_SUM, sin->sout, а cin не задействовать.

А потом останется только техподдержка альтеры.
Go to the top of the page
 
+Quote Post

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

 


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


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