|
ADC -> FPGA -> Ethernet |
|
|
|
Jun 13 2013, 09:08
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(doom13 @ Jun 13 2013, 10:54)  Имеется: ADC (100 МГц, 4 канала)... И какую же скорость передачи нужно обеспечить? И что будет принимать такой поток? Цитата(doom13 @ Jun 13 2013, 10:54)  ADC_to_AvalonST => SgDMA_STtoMEM => Memory => SgDMA_MEMtoST => TSE Лучше так: ADC_to_AvalonST => udp_tx_offload => TSE. Это упрощенная схема, более полная выглядит так: Код Nios II Processor => On-Chip FIFO Memory | |Avalon-ST Multiplexer => TSE ADC_to_AvalonST => udp_tx_offload => | Компонент "udp_tx_offload" находится в папке "IP" проекта "sdr400cpu_ng". vadimuzzz, автор проекта, выложил его в этой теме.
|
|
|
|
|
Jun 13 2013, 09:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Копейкин @ Jun 13 2013, 11:35)  Пусть данные АЦП 8-битные. Тогда: 100МГц х 4канала х 8 = 3,2 ГБит/сек. Нет-ли ошибки? Или передаются накопленные за ограниченный период данные? На данном этапе это не принципиально, будут ещё DDC-конверторы стоять, задача запихнуть данные в TSE которым рулит Nios, чтобы не сильно грузить процессор при использовании максимально возможной частоты АЦП. Цитата(Konst_777 @ Jun 13 2013, 12:08)  И какую же скорость передачи нужно обеспечить? И что будет принимать такой поток? Скорость до 1Gb/s, передаваться будут не все данные, пока расчёт идёт на максимально возможную скорость. Цитата(Konst_777 @ Jun 13 2013, 12:08)  Лучше так: ADC_to_AvalonST => udp_tx_offload => TSE. Это упрощенная схема, более полная выглядит так: Код Nios II Processor => On-Chip FIFO Memory | |Avalon-ST Multiplexer => TSE ADC_to_AvalonST => udp_tx_offload => | Компонент "udp_tx_offload" находится папке "IP" проекта "sdr400cpu_ng". vadimuzzz, автор проекта, выложил его в этой теме. Спасибо, буду пробовать.
|
|
|
|
|
Jun 14 2013, 08:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Здравствуйте. Посмотрел проект и ip-core udp_tx_offload от автора vadimuzzz. Прикрутил по-быстрому к своему проекту, что-то заработало, данные передаются, но со всеми особенностями udp_tx_offload пока не разбирался. Насколько понимаю - непосредственно udp_tx_offload - немного не то, что имелось в виду. Фактически udp_tx_offload - реализация UDP на уровне железа. В моём случае UDP, ARP, ICMP уже реализованы на программном уровне, возможно, тут есть свои преимущества, но пока вопрос не в этом. Ethernet уже есть, вопрос - каким образом прокачать максимально возможный поток данных от источника (в моём случае АЦП) извне SOPC-системы, чтобы не сильно грузить Nios, и чтобы оставалиль рабочими UDP, ARP, ICMP. Ваш вариант с использованием Avalon-ST Multiplexer видится приемлемым, но пока не использовал данное ядро. Как понимаю, Nios должен будет выбирать - какой поток выдать на TSE (либо например ответ на ARP запрос, который формируется софтом, либо udp-пакет с данными от АЦП, который формируется на уровне железа). При использовании второго варианта видятся сложности с длинной udp пакета (может это и не так).
Сообщение отредактировал doom13 - Jun 14 2013, 08:47
|
|
|
|
|
Jun 14 2013, 10:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(iosifk @ Jun 14 2013, 12:09)  Если можно, то ответьте на мой вопрос: зачем Вам в данном случае нужна именно ПЛИС? Ведь задача получения данных от АЦП вполне тривиальна и ДМА есть в любом микроконтроллере. Стык с Ethrnet - гигабитный МАС - тоже не проблема. А уж обработка данных для Ethrnet в быстром процессоре всяко будет быстрее и дешевле, чем в ПЛИС... Так зачем же идти по дорогому и трудному пути? Если я правильно Вас понимаю, Вы имели в виду использование FPGA + DSP. FPGA принимает данные от АЦП, далее процессор выплёвывает их в Ethernet (АЦП –100 МГц, 4 канала, 16 бит, DDR LVDS интерфейс по 2 линии на канал, общий frame clock и bit clock). Но на плате не предусматривается использование DSP. Вообще разрабатывается прототип платы с 4-мя такими АЦП, и, при использовании максимально возможной частоты АЦП, Ethernet не сможет прокачать такой поток данных: 16 * 4 * 4 * 50MHz = 12.8 Gb/s Предусматриваются ещё оптоволоконные трансиверы для использования АЦП на максимальной частоте. Ethernet ставится с целью возможности замены старой системы с расчётом на максимальный поток данных: 16 * 4 * 4 * 1,28 MHz = 327.68 Mb/s Или (16 * 2) * 4 * 4 * 1.28 MHz = 655.36 Mb/s (комплексные данные)
|
|
|
|
|
Jun 15 2013, 04:33
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
несколько соображений по теме. во-первых нужен компонент, который будет складывать данные с АЦП в некоторый буфер. буфер желательно побольше, чтобы payload максимизировать. во-вторых нужен некий планировщик (скорее всего в составе первого компонента), который будет распределять память между каналами. а вот дальше надо определиться, сливать данные большими пачками, либо изобразить некий риалтайм (с соотв. понижением частот АЦП). почему имеет смысл использовать udp_tx_offload: он позволяет располагать в памяти данные для передачи в "сыром" виде, без заголовков и прочей шелухи. причем непрерывным куском в памяти. фактически, дескриптор для этого компонента - это указатель + длина пакета, причем пишется через регистры. копирование из памяти в память процессором (а именно это и происходит в основном при формировании заголовков) - это одно из узких мест ниоса. т.о. при использовании аппаратного ускорения задача сведется к передаче буфера по его заполнении (вариант с передачей большими пачками), либо по прерыванию от компонента-планировщика (если выберете вариант с риалтаймом). на правах ИМХО  вдогонку: при использовании udp_tx_offload можно оставить программную реализацию протоколов, потом всегда можно переделать.
|
|
|
|
|
Jun 15 2013, 08:24
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(doom13 @ Jun 13 2013, 10:54)  Видится вариант решения задачи следующим образом:... Все таки, какой тип задачи Вы решаете: - Регистрация данных с последующей их обработкой в нереальном времени.
- Обработка данных в реальном времени.
Анализируя эту тему можно предположить, что Ваш проект относится к типу 2. Но, может быть, Вы пытаетесь решать задачу 1, как задачу 2? В этом случае, скорее всего, Вы совершаете ошибку. Цитата(doom13 @ Jun 14 2013, 11:26)  Варианты реализации:... Как Вам уже объяснил vadimuzzz, программное формирование UDP пакетов с данными АЦП не позволит получить скорость обмена 40 Мбайт/сек. В то время как аппаратное способно обеспечить и 100 Мбайт/сек. Другой вопрос, что будет принимать такой поток и сумеет ли оно его обработать. Цитата(doom13 @ Jun 14 2013, 16:04)  ...Пока попробовал использовать Avalon ST multiplexer... В итоге работает передача только от одного источника, если их поменять местами - то начинает работать от другого. Поскольку vadimuzzz сейчас посещает этот форум, то вместо фразы "проект в студию!" рекомендую Вам пригласить Вадима для участия в Вашем проекте. Это позволит Вам сэкономить деньги и время, обеспечить высокое качество и сохранить приватность Вашей разработки.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|