Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Какую ПЛИС выбрать
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Shivers
Всем привет!

Есть вопрос. Нужна ПЛИС, у которой в LC есть возможность замкнуть LUT обратной связью. При этом, LUT должен быть минимум 3х3.
Уточню. На LC заходят два входа, идут в LUT. Выход LUT должен 1) с помощью мультиплексоров быть заведен на вход этого LUT, и 2) Иметь выход из LC, минуя триггеры/защелки.
Если в LC есть сразу два LUT, у которых выходы можно завести в обратную связь, в т.ч. и наперекрест, да еще и вывести наружу, было бы вообще шикарно.

Посмотрел наугад несколько зайлинксов и альтер -возможности обратной связи нигде нет. Почему такое не делают, в общем то понятно. Но, а вдруг кто такое видел sm.gif
Спасибо!
rloc
Цитата(Shivers @ Jun 20 2014, 16:25) *
Посмотрел наугад несколько зайлинксов и альтер -возможности обратной связи нигде нет.

Обратная связь возможна, но внешними (по отношению к LC) цепями.
Shivers
Цитата(rloc @ Jun 20 2014, 17:17) *
Обратная связь возможна, но внешними (по отношению к LC) цепями.

Это понятно sm.gif Но я спрашивал - про связи внутри LC
rloc
Зачем? Это противоречит здравому смыслу с точки зрения производителя.
yes
это для самосинхронных схем нужно, что-ли?

такой обратной связи в LC нет по определению - даже средства синтеза на такое ругается, то есть сама идея современного плисостроения считает такую связь порочной.

я использовал для самосинхронных схем актеловские проазики - там 3х входовые луты (вернее некая фигня, tile, которая может быть сконфигурена либо в триггер, либо в логику - реализовано на мультиплексорах) и можно сделать детерменированый путь быстрее чем остальные
Shivers
Цитата(yes @ Jun 20 2014, 17:45) *
я использовал для самосинхронных схем актеловские проазики - там 3х входовые луты (вернее некая фигня, tile, которая может быть сконфигурена либо в триггер, либо в логику - реализовано на мультиплексорах) и можно сделать детерменированый путь быстрее чем остальные

Спасибо за совет!

Да, мне это нужно для экспериментов с нестандартными триггерами и латчами, и в частности - С-элемент хотелось бы тоже сделать.
Вопрос - тот же 2-входовой С-элемент сколько этих tile требует?

Вообще, tile это круто. Название, возможно, говорит о NOC-архитектуре. Надо присмотреться к актелям поближе
p.s. и подвопрос -сколько может потребоваться tile для простой RS защелки на, скажем, двух NAND2?
yes
ну я давно этим занимался
введение вроде тут
http://www10.edacafe.com/book/ASIC/CH05/CH05.1.php

С по моему на одном можно (не уверен), я делал некий конвеер, без явного С элемента

RS - по-моему одна, но если explicit NAND2 то 2

в актелях проблемы - очень хреново сложная логика, скорость (задержка) от сложности, зависит как у студента финансы после степендии sm.gif - чем дальше, тем хуже.
Shivers
Редкий какой изврат они народили! Наверное, кто то пару докторских защитил, если авторы серьезно считают, что кучка мультиплексоров может заменить старый добрый LUT. Но, им виднее. К несчастью, обратные связи опять же отсутствуют внутри LC. Но судя по всему, ничего лучше я не наду.
Я так понимаю, мне из всего подходит только ACT1. Для RS триггера с прямым и инверсным выходом нужно два tile. Для С-элемента .. надо считать, но скорее всего так же два.

Проблема обратных связей в ПЛИС была и есть - их делают мало. Если передать сигнал от LC к другой LC занимает 1-2 задержки ключа, то роутинг в обратную связь - минимум в два раза больше, а то и в четыре. А что хуже всего, это ресурсы - на обратные связи линий не так много закладывается, ресурсы очень быстро сжираются. В Актеле, может ситуация обстоит лучше, буду пробовать. Еще раз, спасибо!
Shivers
Изучил доки на актель, RS триггер на двух ACT1 можно сделать. А С-элемент теоретически на одном, но работать почти наверняка не будет. Использовать две АСТ1 с перекрестными обратными связями - тоже сомнительно что будет работать. В общем, актель не подходит, видимо

Пожалуй, вопрос надо перефразировать:

Подскажите ПЛИС, в которой есть RS триггер в LC?

Иногда встречаются D-триггеры c асинхронным Set и Reset, но как правило эти сброс/установки являются региональными, т.е. много самостоятельных RS триггеров так не получишь.
rloc
Цитата(Shivers @ Jun 23 2014, 10:06) *
много самостоятельных RS триггеров так не получишь.

В пределах одной структуры, например SLICE у Xilinx, больше одного RS-триггера нельзя.
Shivers
Цитата(rloc @ Jun 23 2014, 10:17) *
И в Altera и в Xilinx нет ограничений. Один из входов set/reset приоритетный.

У Альтеры одновременно Set и Reset только в старых Flex/Apex сериях были, кажется. Циклоны и стратиксы я смотрел вроде все, не видел такого.
Не подскажете конкретную серию?
rloc
Триггер устанавливается в режиме "Latch", на вход D - "0" или "1", СK и SR - входы set/reset
Shivers
Цитата(rloc @ Jun 23 2014, 11:17) *
Триггер устанавливается в режиме "Latch", на вход D - "0" или "1", СK и SR - входы set/reset

Скачал доку (>link<) на CLB в 6м виртексе, про режим защелки почти ничего не сказано. Спасибо за инфу.

Проблема в том, что CK и RS - региональные, судя по доке. Меня даже компоновка в виде SLICE бы устроила, лишь бы Set и Reset задавались индивидуальными LUT. А в таком виде на один RS триггер нужно два SLICE: в одном функции сброса и установки с помощью LUT, а в другом одна защелка.

Спасибо за ответы

Видимо, ничего подходящего найти не удастся. Классика жанра, RS триггер, практически не реализуем в современных ПЛИС
rloc
Сложно понять что Вам хочется. На SR и CK могут подаваться и локальные сигналы. Один FF, даже без привлечения LUT, что может быть проще?
Shivers
Цитата(rloc @ Jun 23 2014, 12:22) *
Сложно понять что Вам хочется. На SR и CK могут подаваться и локальные сигналы. Один FF, даже без привлечения LUT, что может быть проще?

FF не нужен.
Нужен асинхронный RS триггер типа latch (классический пример - два NAND2, с заведенными обратными связями крест накрест). Для этого триггера надо задавать Set и Reset таблично, поскольку это могут быть функции 2х и более переменных. И разместить это нужно в одной LC.
rloc
Цитата(Shivers @ Jun 23 2014, 12:54) *
FF не нужен.
Нужен асинхронный RS триггер типа latch (классический пример - два NAND2, с заведенными обратными связями крест накрест). Для этого триггера надо задавать Set и Reset таблично, поскольку это могут быть функции 2х и более переменных. И разместить это нужно в одной LC.


Для Xilinx это возможно - один SLICE, из которого задействованы 2 LUT и один FF, но связи внешние (не внутри SLICE).
А вообще, на любой FPGA крайне не желательно делать асинхронные схемы. Подумайте на системном уровне о других вариантах решения.
Shivers
Цитата(rloc @ Jun 23 2014, 13:22) *
Для Xilinx это возможно - один SLICE, из которого задействованы 2 LUT и один FF, но связи внешние (не внутри SLICE).
А вообще, на любой FPGA крайне не желательно делать асинхронные схемы. Подумайте на системном уровне о других вариантах решения.

Вариантов как бы всего два - либо FPGA (есть еще - PAL, но я как то не верю что на нем можно сделать что то больше пары счетчиков), либо кремний (БМК в расчет не беру - смешно). Других опций погонять асинхронные схемы в железе нет. Кремний дорог, ПЛИС .. выяснили. Ну что же, увы
SM
А в чем проблема внешних связей то? PAR их разводит корректно, с учетом заданных таймингов. А вроде ничего более и не надо. Ведь работают же себе прототипы ИС, содержащие сотни латчей самых разных видов. Главное, чтобы разводчик понял, что от него хотят. А он, вроде, понимает.
Shivers
Цитата(SM @ Jun 23 2014, 15:02) *
А в чем проблема внешних связей то? PAR их разводит корректно, с учетом заданных таймингов. А вроде ничего более и не надо. Ведь работают же себе прототипы ИС, содержащие сотни латчей самых разных видов. Главное, чтобы разводчик понял, что от него хотят. А он, вроде, понимает.

Проблема асинхронная - таймингов нет, они ведь к частоте привязываются. Т.е. синтезатор не работает. Единственный вариант сделать RS триггер под свои нужды - описать вручную вызов LC с привязкой к архитектуре. При этом очень бы хотелось не выводить наружу обратную связь, потому что обратная связь - узкое место в триггере. В лучшем случае быстродействие будет с мегагерц, в худшем - вообще работать не будет.
SM
Цитата(Shivers @ Jun 23 2014, 15:10) *
Проблема асинхронная - таймингов нет, они ведь к частоте привязываются. Т.е. синтезатор не работает.

В порядке бредовой идеи - а если к каждому триггеру для цепи ОС задать пару set_max_delay и set_min_delay ? Ну не руками, естественно, а скриптом каким нибудь.
rloc
Вроде предлагал без обратных связей. Да и описывать на уровне примитивов не надо, синтезатор сам выбирает "Latch" в качестве основы RS-триггера, правда использует входы CK и D в качестве set/reset, что впрочем лучше с точки зрения прямой связи LUT с триггером. Похоже топикстартер сам не знает, что нужно.
ViKo
Делал элементарно:
Код
  bit        [15:0]    adda;        // address-data latch
  always_latch
    if (!PLS_N) adda <= ADB;
Shivers
Цитата(ViKo @ Jun 23 2014, 17:09) *
Делал элементарно:
Код
  bit        [15:0]    adda;        // address-data latch
  always_latch
    if (!PLS_N) adda <= ADB;

Это защелка с разрешением, несколько другое.

Нашел свое счастье, кажется: http://www.xilinx.com/support/documentatio...cs-pdf/lab5.pdf
Мне нужна защелка с первой картинки, но с раздельными LUT на каждом входе. Видимо, это реализуемо.

Код ViKo соответствует картинке на втором листе, это защелка с разрешением.
rloc
Метастабильного состояния не будет, один из входов обязательно приоритетный.
yes
проблема во всем этом не "быстрая" обратная связь, а "медленная" прямая.

то есть так или иначе все самосинхронные схемы опираются на то, что в цепи req/ack задержка была дольше, чем в функциональной логике.
а в современных ПЛИС трассировка составляет 70% от задержки, а "логика" 30%

то есть: после синтеза нужно получить времянку (я это делал повставляв обычные тактируемые регистры вместо латчей), затем заменить их на латчи, а добавленную цепочку буферов в req/ack разбросать по кристаллу так, чтобы площадь была не меньше, чем у "логики"

после этого добыть времянку сложно - я ничего лучше не нашел, чем добавлять регистры в начало конец и вырезать из полного отчета слака по пути нужные мне куски (гемор еще тот), писал какие-то скрипты и т.п.

практически мне это понадобилось для одной платы (да и то, если честно, хотелось просто такую крутотень воплотить в реальности), в которой поставили такой генератор тактов, который требовал начальной загрузки - в конце концов я остановился на кольцевом генераторе и синхронной схеме - уж слишком геморно было делать на асинхронщине - там нужно было что-то типа задержек (диаграммы) и SPI

с асинхронщиной еще раньше было интересно повозится, "заради концепции", у меня на тот момент было полно разного железа (отходы производства) и альтеры и ксайлинцы, но актел ProASIC3 и его производные (при том что я их не особо люблю для практических задач) по-моему самое то
то что я дал ссылку на asic the book - то просто показать как из мультиплексоров строится логика, а из PA3 tile строится и защелка, и может даже триггер - две защелки (точно не помню уже) - то есть там есть обратные связи, просто там сложная картинка, много элементов. струмент (либеро) позволяет достаточно просто генерить размещения (то есть скриптами, а не руками), без чего, имхо, никак.
Shivers
Цитата(yes @ Jun 24 2014, 17:54) *
проблема во всем этом не "быстрая" обратная связь, а "медленная" прямая.

Интересно, спасибо. Я не собирался в хендшейки линии задержек встраивать, но с ПЛИСовыми костылями по другому и не выйдет. Вы ведь понимаете, что линии задержек - это не чистые асинхронные схемы, а скажем так - гибрид? Высчитывать величину задержек для каждого участка .. нее. Мне больше интересно было бы реализовать настоящие асинхронные автоматы, где переключение идет по цепочке и не зависит от задержек. Но такие автоматы сильно привязаны к архитектуре, и на ПЛИС один фиг сделать не получится, видимо. Но вообще, Ваш опыт очень интересен. И что, действительно, на задержках удалось пайплайн запустить? Пробовали греть/морозить микросхему?
yes
Цитата(Shivers @ Jun 25 2014, 14:22) *
Интересно, спасибо. Я не собирался в хендшейки линии задержек встраивать, но с ПЛИСовыми костылями по другому и не выйдет. Вы ведь понимаете, что линии задержек - это не чистые асинхронные схемы, а скажем так - гибрид? Высчитывать величину задержек для каждого участка .. нее. Мне больше интересно было бы реализовать настоящие асинхронные автоматы, где переключение идет по цепочке и не зависит от задержек. Но такие автоматы сильно привязаны к архитектуре, и на ПЛИС один фиг сделать не получится, видимо. Но вообще, Ваш опыт очень интересен. И что, действительно, на задержках удалось пайплайн запустить? Пробовали греть/морозить микросхему?


нет в температуре не проверял.
но нетлист с sdf-ом симулировал, там вроде как крайние температуры

ну и я хотел 8ми битный контроллер типа PIC-а запустить, но самое сложное, что осилил - сумматор с защелками по краям
потом устал sm.gif , возможно, я неправильно организовал процесс - статьей практических не нашел, может как-то проще можно было

для кольцевого генератора смотрели где-то -30 +70, визуально заметно на осциллографе, точно не помню, но раза в полтора быстрее на морозе.
Shivers
Цитата(yes @ Jun 25 2014, 17:51) *
ну и я хотел 8ми битный контроллер типа PIC-а запустить, но самое сложное, что осилил - сумматор с защелками по краям
потом устал sm.gif ,

Задача очень трудоемкая, согласен. В мире асинхронных чипов на задержках по пальцам одной руки можно пересчитать. Самое известное - Филипс в начале 00х сделала и запустила в серию два микроконтроллера по такой технологии: аналог ARM-996 (32бит) и 8051. Остальное - только опытные образцы в исследовательских целях. А на ПЛИС -Вы были бы первым =)
yes
Цитата(Shivers @ Jun 25 2014, 19:00) *
А на ПЛИС -Вы были бы первым =)


это врядли
http://opencores.org/project,aspida

ну и более простых имплементаций находил раньше, по универам и т.п.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.