Связь между процессором и высокоскоростной периферией - PullRequest
2 голосов
/ 19 июня 2010

Учитывая, что процессор работает на частоте 100 МГц, а данные поступают в процессор с внешнего устройства / периферийного устройства со скоростью 1000 Мбит / с (8 бит / тактовый тактовый генератор при 125 МГц), что является лучшим способом обработкитрафик, который поступает на процессор с большей скоростью?

Ответы [ 4 ]

4 голосов
/ 19 июня 2010

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

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

Падение высокоскоростных чипов FIFO на удивление дорого (хотя большинство из них с двумя портами). Чтобы сократить расходы, лучше всего использовать микросхему SRAM и аппаратный сумматор для увеличения адресных строк на входящих данных.

2 голосов
/ 20 июня 2010

Это не редкая ситуация для программного обеспечения.Семай сказал правильное слово.Это проблема системной инженерии.Другие люди тоже имеют правильный ответ.Если вы хотите посмотреть или обработать эти данные с процессором 100 МГц, этого не произойдет, не пытайтесь.Вы МОЖЕТЕ посмотреть его снимки или аппаратный фильтр отфильтровывает определенный процент, который вы ищете.В конце концов, хотя это системная проблема, что обеспечивает аппаратное обеспечение, куда он помещает эти данные, какова задача программного обеспечения для этих данных, видит ли он, что X буферов данных поступает на gointa, иоповестить оборудование GoSouta, что X-буферы готовы к работе?Проверяет ли оборудование и выравнивает ли буферы, чтобы вы могли посмотреть на заголовок, а затем решить, куда маршрутизировать оборудование?Как только вы займетесь разработкой системы, вы узнаете, сможете ли вы использовать этот процессор или нет, и сможете ли вы использовать его, какова его задача и как это сделать.

Ваш прямой вопрос.Каков наилучший способ справиться с этим.Лучший способ справиться с этим - это заставить аппаратные средства (fpga, asic и т. Д.) Перемещать его в какое-либо устройство хранения (возможно, в виде оперативной памяти).Не обязательно тот же ОЗУ, из которого работает процессор (лучше избегать DMA).Программное обеспечение - это то, с чем может общаться программное обеспечение, но вы не можете проверить все эти данные, поэтому не пытайтесь.Не зная, что это за данные, какая форма, как выглядит программное обеспечение, сколько работы вы хотите заставить аппаратное обеспечение и т. Д., Определяют остальную часть ответа.Если вы ожидаете, что определенный (гарантированный) процент будет плохим или не будет принадлежать этому процессору и т. Д., Используйте аппаратный фильтр, а затем то, что осталось, вы можете обработать.

Хороший пример этого - работа в сети, у ПК есть большие порты, но они не могут обрабатывать данные о скорости линии GigE.Вот почему мы сейчас используем коммутаторы вместо концентраторов, аппаратное обеспечение выделяет процент данных, чтобы компьютер мог их обрабатывать, протоколы заботятся о данных, которые невозможно обработать, отправляя их позже.А процессоры коммутаторов не смотрят на все данные, аппаратное обеспечение разбивает их на части, чтобы программное обеспечение могло проверять только заголовок.Или иногда программное обеспечение просто управляет таблицами, которые управляют оборудованием, а оборудование выполняет всю работу по обработке данных.

Если ваша системная инженерия ответит, ответы просто выпадут.

2 голосов
/ 19 июня 2010

Вы буферизуете это.Обычно данные с устройства записываются в буфер памяти (круговая очередь) с использованием DMA (процессор не задействован).Процессор читает из буфера памяти с постоянной скоростью.Обычно устройства отправляют данные в пакетном режиме.Это удерживает буфер от заполнения.Если данных слишком много, переполнение буфера.

1 голос
/ 20 июня 2010

DMA (прямой доступ к памяти), возможно, является решением, однако кажется маловероятным, чтобы шина памяти работала быстрее, чем ядро ​​процессора, поэтому принимающее периферийное устройство должно было бы принимать данные в больший регистр, чем 8 бит, потому что 125 МГц мог не быть устойчивым. Например, 16-битный регистр позволяет осуществлять запись в память на частоте 62,5 МГц, что может быть достижимо. Кроме того, принимающее устройство должно быть в состоянии принимать внешние часы, которые являются более быстрыми и асинхронными с тактовыми частотами ядра. Также, конечно, принимающее периферийное устройство должно иметь поддержку DMA.

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

...