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

Как буферизировать данные с JESD204C для выравнивания потока для обработки ПЛИС

Здравствуйте!

 

Есть АЦП которая выдает 10Гб/с поток, и есть Virtex Ultrascale+

Для того чтобы работать с АЦП необходимо IP JESD204C

Поскольку динамические характеристики самой ПЛИС(которые в районе 2 нс максимум на запись в BRAM и на защелкивание регистровой логики), необходимо буферизировать приходящие данные по JESD204C

В самом JESD204C есть буфер но его размер не понятен и не понятно можно его менять, по крайней мере в настройках IP я не нашел, в сигналах инстанса ядра тоже.

Подскажите пожалуйста как согласовывать высокоскоростные интерфейсы основанные на GTY с динамическими ограничениями самой ПЛИС(даже такой как Virtex Ultrscale+).

 

 

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


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

3 hours ago, another_one said:

Есть АЦП которая выдает 10Гб/с поток, и есть Virtex Ultrascale+

Чет то каша кая то - гигабиты,  наносекунды, GTY ... 

GTY  вам как раз и "согласовывает"  гигабиты с наносекундами  так как принимает быстрые гигабиты последовательно,  а выдаёт  принятое паралельно медленно на наносекундах которых хватит для записи в память или обработки ...
А  вот как вы будете буферизировать  принятые параллельные данные  зависит только  от вас (и хотелок дизайна) - либо в FIFO либо в двойной/кольцевой буфер в BRAM/DDR либо хоть сразу по 10G/40G/100G сети на сервер для вечного хранения ...

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


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

спасибо, звучит классно, а структурно как это происходит?. В структуре GTY есть какой-то буфер, но как пересчитать например глубину BRAM буфера чтобы далее на наносекундах ПЛИС не потерять приходящий быстрый гигабитный поток

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


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

49 minutes ago, another_one said:

спасибо, звучит классно, а структурно как это происходит?

Структурно это происходит методом чтения доков, даташитов, .., и в последствии коррекции запросов в соответствии с полученной новой информацией ...


А не структурно, по простому - GTY это конвертор сериал в паралель, почти как SPI ...
Поэтому если у него на последовательном 1 бит входе 10Gbit то на параллельном 32 бит выходе будет 10/32 = 312.5 MHz  (3.2ns) что уже удовлетворяет ваши лимиты в 2ns.   

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


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

8 hours ago, blackfin said:

не вижу буфера ни в GTY ни в JESDC IP

Также просинтезировав  IP я не нашел буфер, только системные регистры

image.png.a00ba7e885820e52319151aa289b672f.png

image.png.2ad82332b0c277621a31aa1627f18b37.png

image.png.29e49292fd13052f4cb0f3dac3c941c6.png

image.png.4440d057871a664edf92dcac7d8958d2.png

image.png.a60dc3d28a093fb1a5d0513cd82275df.png

image.png.6b2cb46d4d014627847126e803f4cb7b.png

image.thumb.png.55eb4ae1f652b00716e43c8b17e3bc5e.png

image.thumb.png.4a67f90d0a2652c69e59b293cf333095.png

image.thumb.png.e734be175248ee34d88f71953a41e77f.png

 

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


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

14 hours ago, another_one said:

не вижу буфера ни в GTY ни в JESDC IP

Также просинтезировав  IP я не нашел буфер, только системные регистры

И не увидите ... Да и зачем он (буфер) нужен если эти корки выдают данные с той же скоростью что и получают?

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


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

11 minutes ago, RobFPGA said:

И не увидите ... Да и зачем он (буфер) нужен в если эти корки выдают данные с той же скоростью что и получают?

ПЛИС, даже Virtex UltraScale+ со своими динамическими характеристиками, принять может(с помощью GTY) но обработать нет, без двухвортовой буферизации.

Но двухпортовая BRAM пропустит любой высокоскоростной поток, так как для записи ей нужно 2 нс

Возможность обработки может быть только если  JESD204C IP обладал бы конфигурируемый по глубине  буфер

 

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


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

On 9/24/2024 at 10:09 AM, another_one said:

Но двухпортовая BRAM пропустит любой высокоскоростной поток, так как для записи ей нужно 2 нс

Отуда у вас эти цифры? С потолка? И какой speed grade у вашей ПЛИС?

Читайте DS923, Table 33: Block RAM and FIFO Switching Characteristics.

Но даже самый медленный Virtex UltraScale+ умеет обрабатывать (читать и писать в BRAM) на частоте 642 МГц: vup_1_ctscanner.

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


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

54 minutes ago, another_one said:

ПЛИС, даже Virtex UltraScale+ ...

Ещё  раз - буферизация в общем случае  нужна в тогда когда  скорости потоков на входе и выходе не совпадают.  Как в школьной задачке про две трубы и бассейн ... 
Если  скорости входных и выходных потоков равны то зачем вам буфер? Если на  вход GTY (или JESD204) вливается поток по одной быстрой "трубе" в 10G bit/s и такой же поток 10GBit/s  из него выливается по 32 медленным "трубам"  зачем вам  внутри этой корки бассейн/буфер ?  А если скорость выходящего потока даже больше чем входящего тем более бассейн/буфер не нужен,  в этом случае достаточно простого тазика/регистра ... 

Поэтому  повторюсь  - почитайте доки - и сформулируйте ваши желания  более понятно - что вы хотите сделать?   

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


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

1 hour ago, blackfin said:

Отуда у вас эти цифры? С потолка? И какой speed grade у вашей ПЛИС?

Читайте DS923, Table 33: Block RAM and FIFO Switching Characteristics.

Но даже самый медленный Virtex UltraScale+ умеет обрабатывать (читать и писать в BRAM) на частоте 642 МГц: vup_1_ctscanner.

У меня 19p я как раз взял самый худший вариант, округлив до 2 нс

У меня -2

 

1 hour ago, RobFPGA said:

Ещё  раз - буферизация в общем случае  нужна в тогда когда  скорости потоков на входе и выходе не совпадают.  Как в школьной задачке про две трубы и бассейн ... 
Если  скорости входных и выходных потоков равны то зачем вам буфер? Если на  вход GTY (или JESD204) вливается поток по одной быстрой "трубе" в 10G bit/s и такой же поток 10GBit/s  из него выливается по 32 медленным "трубам"  зачем вам  внутри этой корки бассейн/буфер ?  А если скорость выходящего потока даже больше чем входящего тем более бассейн/буфер не нужен,  в этом случае достаточно простого тазика/регистра ... 

Поэтому  повторюсь  - почитайте доки - и сформулируйте ваши желания  более понятно - что вы хотите сделать?   

я об этом и говорю что на вход приходит 10Гбит и эти 10 Гбит ПЛИС должна успеть принять чтобы далее обработать и далее передать уже на меньше частоте по GTH

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


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

1 hour ago, another_one said:

я об этом и говорю что на вход приходит 10Гбит и эти 10 Гбит ПЛИС должна успеть принять чтобы далее обработать и далее передать уже на меньше частоте по GTH

Так и я об этом же -  как я выше вам уже говорил - 10Gbit  всего-навсего каких то жалких  ~1 GByte/s.   Это частота 312.5 MHz (3.2 ns) для шины данных в 32 бита, или 156.25 MHz (6.4 ns) для шины в 64 бит. 
 Неужели ваша версия VU+ 19p  не способна работать на таких частотах?  Может это не VU+ а GOW+ ? ...    

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


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

6 hours ago, RobFPGA said:

Так и я об этом же -  как я выше вам уже говорил - 10Gbit  всего-навсего каких то жалких  ~1 GByte/s.   Это частота 312.5 MHz (3.2 ns) для шины данных в 32 бита, или 156.25 MHz (6.4 ns) для шины в 64 бит. 
 Неужели ваша версия VU+ 19p  не способна работать на таких частотах?  Может это не VU+ а GOW+ ? ...    

Прошу прощения, ввел в заблуждение, я теперь понял в чем наше недопонимание

Вечная путаница с бит с байтами....

У меня АЦП 12 бит, частота семплирования 10 ГГц

Значение с АЦП должно поступать по JESD204C в 19p(не китай)

Таким образом, в зависимости от выбранной конфигурации лейнов и линков получается скорость потока не менее 10 Гбайт/с, и это уже требует буферизацию

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


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

1 hour ago, another_one said:

получается скорость потока не менее 10 Гбайт/с, и это уже требует буферизацию

Это  всего-лишь требует увеличить число "медленных труб" на выходе GTY/JESD -  Если грубо считать то 12 бит 10Gs/s  то скорее всего используются 8 линий по 15 Gbit/s,  что даёт при 32 бит интерфейсе GTY  на линию  ~469 MHz (2.13 ns)  или ~234 MHz (4.26 ns) для шины 64 бит. Для 8 линий соответственно  будет  шина 256 или 512 бит.  Для VU19  мелочи ... 
А дальше  уже  все зависит  от вас - хотите обрабатывайте эти 256/512 на лету,  а хотите то и буферизируйте как вам удобно  

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


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

4 hours ago, RobFPGA said:

Это  всего-лишь требует увеличить число "медленных труб" на выходе GTY/JESD -  Если грубо считать то 12 бит 10Gs/s  то скорее всего используются 8 линий по 15 Gbit/s,  что даёт при 32 бит интерфейсе GTY  на линию  ~469 MHz (2.13 ns)  или ~234 MHz (4.26 ns) для шины 64 бит. Для 8 линий соответственно  будет  шина 256 или 512 бит.  Для VU19  мелочи ... 
А дальше  уже  все зависит  от вас - хотите обрабатывайте эти 256/512 на лету,  а хотите то и буферизируйте как вам удобно  

Спасибо большое!

Похоже я ошибся с преобразованием в линии с АЦП, а в Вашем случае это похоже на правду, только не совсем понятно как именно получилось ~469 MHz (2.13 ns)  или ~234 MHz (4.26 ns)

Прошу по возможности предоставить Ваш расчет

Спасибо!

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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