Перейти к содержанию
    

Разделение логики на два чипа

Предположим есть уже большой проект который не умещается на один Спартан6 чип, и планируется разместить два Спартан6 чипа на плате, а проект

разделить так чтобы уместить всю логику на два чипа.

 

Возможна например такая схема:

 

ФПГА 1 Принимает входной клок 100МГц от резонатора на плате, внутри имеет DCM выдающий 300МГц клок для всей рабочей логики на этом чипе, а также этот 300МГц клок от DCM подается на выход чипа и как вход основного клока на ФПГА 2. Ну а ФПГА 2 принимает этот 300МГц клок и использует его как основной клок для своей логики.

 

Итого возможно будет около 70-90 сигналов между двумя чипами обменивающиеся данными на скорости до 300МГц.

 

Также внутри обоих чипов есть отдельные блоки работающие на других частотах и использующих дополнительные DCM, ну а вобщем вся логика на обеих чипах должна работать синхронно на частоте 300МГц.

 

Это нормально или есть предложения как можно получше это организовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По какому стандарту планируется соединить ПЛИС (LVDS?) и как будет выглядеть интерфейс соединения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то это очень стремно выглядит.

 

На мой взгляд, есть смысл поделить проект так, чтобы не было необходимости таскать между микросхемами высокоскоростные данные, причем СТОЛЬКО.

 

ФПГА 1 Принимает входной клок 100МГц от резонатора на плате, внутри имеет DCM выдающий 300МГц клок для всей рабочей логики на этом чипе, а также этот 300МГц клок от DCM подается на выход чипа и как вход основного клока на ФПГА 2

Не лучше ли от одного генератора запитать обе через "размножитель" тактовых сигналов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО, при ценовой политке хилых, проще взять чип большего объема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предположим есть уже большой проект который не умещается на один Спартан6 чип, и планируется разместить два Спартан6 чипа на плате, а проект разделить так чтобы уместить всю логику на два чипа.
Если у Вас изделие производится ограниченным тиражом, то, возможно, дешевле (с учётом затрат на создание и отладку стыка между двумя Spartan-6) поставить один Virtex-6 CXT.

 

Не лучше ли от одного генератора запитать обе через "размножитель" тактовых сигналов?
Я думаю лучше всё-таки не разветвлять clock. Т.к. с передаваемыми данными всё равно необходимо будет передавать clock - иначе, из-за разбросов в Global clock distribution network, высокоскоростные данные не получится надёжно передавать. Так зачем же еще один clock передавать ?

А еще лучше вообще ничего не передавать, а, как и говорил des00, взять ПЛИС большего объёма, если таковые имеются в семействе Spartan-6.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

Насчет большего объема девайса врядли, максимальный спартан6 уже выбран. А на виртекс переходить это дорого.

Есть еще вариант оптимизировать проект, столько различных сигналов между чипами это на самом деле нето... посмотрим.

 

Но в общем: то что Koluchiy предлагал ето своего рода system synchronous interface , и в таком случае нужно особое внимание уделить разводке клока.

А то что Boris_TS это вроде как source synchronous interface

 

я так понял что лучше это зависит от того как в целом плата будет спроектирована.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ФПГА 1 Принимает входной клок 100МГц от резонатора на плате, внутри имеет DCM выдающий 300МГц клок для всей рабочей логики на этом чипе, а также этот 300МГц клок от DCM подается на выход чипа и как вход основного клока на ФПГА 2.

 

А кто нибудь 300 Мгц клок по плате гонял между двумя чипами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто нибудь 300 Мгц клок по плате гонял между двумя чипами?

Я гонял 330 для stratix4 с 18-разярядными данными по lvds и 5 чипов(частота данных 660), в перспективе 500МГц должно быть. При этом на большой загрузке линии обнаружилась ошибка по CRC на 3 день :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю лучше всё-таки не разветвлять clock. Т.к. с передаваемыми данными всё равно необходимо будет передавать clock - иначе, из-за разбросов в Global clock distribution network, высокоскоростные данные не получится надёжно передавать. Так зачем же еще один clock передавать ?

 

Ну, детали интерфейса и алгоритма работы вообще не конкретизированы.

Суть в том, что если питать 2-ю микросхему клоком 300МГц от 1-й, это создаст

1) Сдвиг по фазе между клоками 2-х микросхем. Он в любом случае будет, но его можно минимизировать. Насколько он критичен в данном проекте - ХЗ.

2) Дополнительные джиттеры/шумы/искажения на клоке, питающем 2-ю микросхему.

 

Так что, на мой взгляд, в любом случае лучше дать в обе микросхемы 100МГц и умножать самостоятельно.

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

 

Но в общем: то что Koluchiy предлагал ето своего рода system synchronous interface , и в таком случае нужно особое внимание уделить разводке клока.

Мои слова относятся исключительно к подаче опорных тактовых на обе микросхемы, а не к каким-то интерфейсным делам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насчет большего объема девайса врядли, максимальный спартан6 уже выбран. А на виртекс переходить это дорого.
Еще разок обращу Ваше внимание на Virtex-6 CXT - это удешевлённая серия: Virtex-6 CXT заметно дешевле, чем Virtex-6 LXT. Собственно, Xilinx и позиционирует Virtex-6 CXT как ПЛИС для тех, кого выперло за Spartan-6, а Virtex-6 LXT - слишком дорого.

Прекрасно понимаю, что цены на любые Virtex-6, по сравнению с тем же Spartan-6, - негуманные.

 

Но в общем: то что Koluchiy предлагал ето своего рода system synchronous interface , и в таком случае нужно особое внимание уделить разводке клока.

А то что Boris_TS это вроде как source synchronous interface

Именно так. Source Synchronous Interface позволяет развить большую скорость передачи данных, но требует синхронизирующих элементов в приёмных трактах.

 

я так понял что лучше это зависит от того как в целом плата будет спроектирована.
У Xilinx есть неплохая, хоть и старенькая, книжка High-Speed Serial I/O Made Simple. Если Вы еще её не видели, то проглядите хотя бы начало – оно может натолкнуть Вас на некоторые мысли по улучшению канала связи между ПЛИС.

 

А кто нибудь 300 Мгц клок по плате гонял между двумя чипами?
Ну мы "гоняем" на 500МГц: полный банк Virtex-6 <-> полный банк Virtex-6, LVDS 2.5V DDR, итого по каждой паре 1000МБит/с (Source Synchronous Interface)...

Но опорные clock’и, на которых работает почти вся внутренняя логика, всё-таки через разветвители передаются - так clock чище.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто нибудь 300 Мгц клок по плате гонял между двумя чипами?

 

Ну мы гоняем между Spartan6-ми 300МГц в DDR по 10 парам. Работает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я немного сомневаюсь, что без лвдса 300МГц Вы безошибочно прокачаете данные между плисками, я бы на Вашем месте попробовал завести один синхронизированный клок на обе плиски, а вот обмен между ними проводить на меньшей частоте распараллеливая и развязывая через ФИФО, но, если алгоритм это не позволяет, конечно придется разводить очень аккуратно, и, может Вам повезет.

 

Я недавно работал на системе с 4-мя бордами DE2 115 от Terasic, которые у меня были соединены по обычному 40пиновому штеккеру. Мне было достаточно организовать асинхронный броадкаст данных с каждой борды на все остальные, и для этого я использовал по 9 пинов - один клочный, и остальные датные. Все клочилось с одного 50МГц внешнего клока, а потом внутри каждой плиски повышалось до 200МГц. Обмен был развязан через ФИФО и клочился отдельно. Частотой обмена я игрался, меньше 40МГц ошибок не было, больше 50МГц уже были ошибки, больше 100МГц ошибок уже было так много, что работать было уже не возможно.

 

Использование 4-х таких борд я мотивировал теми же как и у Вас аргументами - 4 эти борды стоили мне меньше одной стратиковской борды, а суммарное число умножителей, простота их использования, и достигаемая скорость были выше чем на стратиксе. Но мне сильно повезло с алгоритмом, что я мог его очень ровно распараллелить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну примерно все ясно, читаю сейчас соответствующие доки. Значит такое дело:

 

В проекте планируется иметь один АЦП подключенный к основной ФПГА. Но это отдельная тема.

 

В проекте также есть несколько блоков имеющих выход из чипа через SPI, но это не проблема.

 

А также, есть один блок, скажем блок формирования изображения, который берет результаты работы всего алгоритма которые записаны в память БРАМ, и превращает их в изображение, которое в свою очередь подается на контроллер ЖК или чего еще пока не решено.

т.е. в память БРАМ алгоритмом после завершения его работы пишется матрица размером 1024 х 1024, строка за строкой; каждая строка 1024 элемента; каждый элемент матрицы 32-битное число.

 

Блок формирования изображения формирует изображения из каждого значения строки матрицы определенным образом, проводя серию различных операций. Так вот, я примерно прикинул что если я этот блок формирования изображения из проекта вынесу, то все остальное в один ФПГА чип умещается вроде бы.

 

Ну тогда мне придется передавать из чипа только эту матрицу данных на другой чип, в котором будет реализован блок формирования изображения ну и контроллер дисплея, или на внешнее устройство записи итд..

 

т.к. элементы матрицы 32-битные, то используя диф-пары и LVDS нужно будет я так понял:

* 64 сигнала для данных, +/-

* eще два сигнала на положительный и отрицательный клок,

* еще пару сигналов типа req/ack для синхронизации. Ну и посылаю тогда данные в режиме DDR. Рассмотреть просто нужно будет схему того как это на спартане6 реализовать.

 

учитывая такие детали, что думаете насчет данной реализации?

 

Ну а второй ФПГА (который может быть значительно поменьше) будет принимать данные в режиме DDR, и возможно будет использоватся элемент ISERDES.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно изучали одно изделия, так там между Циклонами3 с 8 по скорости гоняли LVDS сигналы примерно на 600 МГц по одной шине в обе стороны и работает. Как согласовано на 25 см и через разъём PCI непонятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...