|
Подключение Ethernet MAC, особенности подключения |
|
|
|
Sep 7 2015, 19:24
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Приветствую всех! Есть несколько вопросов к гуру по реализации Ethernet на FPGA. Я рассматривал несколько примеров реализации МАС-а для ПЛИС (один - от mentor-a, что на ftp лежит и другой с сайта fpga4fun) и меня смутило несколько моментов: 1- Это то, что частоты tx_clk и rx_clk, которые выходят из PHY используются для тактирования регистров, соответствующих веток ПО. Не правильнее было бы использовать для тактирования системную частоту (при условии, что она выше, чем tx_clk и rx_clk) для тактирования регистров, а уже tx_clk и rx_clk использовать в качестве сигнала разрешения? В чем подвох? или я что-то упустил? * Плюс к выше описанному мы получаем разные клоковые домены по веткам приема и передачи в МАС. Потому, что от PHY tx_clk формируется от внешнего кварцевого резонатора, а rx_clk - из несущей частоты в линии связи. Естественно они будут немного отличаться друг от друга, что добавляет проблем. 2- Это то, что для тактирования частотами tx_clk и rx_clk было бы неплохо пропустить их предварительно через DCM или хотяб через PLL. Однако, (не знаю , как в других сериях ПЛИС), в Spartan6 на DCM нельзя подать частоту ниже 5 МГц. А для 10 Мб\с по MII надо как раз 2,5 МГц. И как тут быть  , если надо реализовать 10\100 МБ\с?
|
|
|
|
|
 |
Ответов
|
Sep 7 2015, 19:58
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 3-09-12
Пользователь №: 73 371

|
Добрый день! 1. Я бы рекомендовал сделать так: бОльшую часть логики, которая нужна - сделать на системной, а затем через dual clock FIFO перекидывать в нужный домен. В одном из проектов у меня сделано так: на RX_CLK ищем преамбулу и считаем CRC, вся задача - собрать слова из 8 байт - кидаем это слово в FIFO, где уже это разгребается на системной частоте (просто дальше вся обработка идет с 64-битными словами, поэтому делается именно так) Не могу сказать, что это самый прекрасный и идеальный вариант, но вполне рабочий (всё зависит от того, что вы хотите делать с MAC-ядром). Однако, надо предусмотреть, что этих клоков может не быть. Например, можно сделать дополнительный управляющий сигнал для разрешения работы RX или TX (а эту информацию можно получать из статуса линка трансивера). 2. Не обязательно. И без этого должно работать. Главное - не забыть про констрейны  Кстати, на opencores тоже есть MAC-ядра, например: http://opencores.com/project,ethernet_tri_mode
Сообщение отредактировал johan - Sep 7 2015, 19:59
--------------------
|
|
|
|
|
Sep 8 2015, 12:46
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(johan @ Sep 7 2015, 22:58)  1. Я бы рекомендовал сделать так: .... Кстати, на opencores тоже есть MAC-ядра, например: http://opencores.com/project,ethernet_tri_modeСпасибо за ответ. Про ресурс OpenCores я знаю. Просто там слишком навороченный МАС, мне и половины его функционала не нужно. Однако, основные вопросы были не по этому поводу. Возможно я не достаточно четко выразил свою мысль в вопросах. Постараюсь поянить: 1. Вопрос заключается в том, что многие делают именно так (tx_clk и rx_clk используют как тактовый сигнал для входных/выходных регистров работы с PHY, потом мучаются с клоковыми доменами). Но я не встречал еще реализации в которой бы tx_clk и rx_clk использовались только как CE для входных/выходных регистров приема/отправки данных с PHY. Собственно сам вопрос : почему реализованно именно так? может есть какие-то особенности? не лучше ли реализовать так, как я предложил? как вообще правильно клоки с PHY использовать?2. Для реализации 10/100/1000 нужно заводить разные частоты на МАС ПЛИС 2,5МГц ; 25МГц и 125 МГц .... Вопрос: как правлиьно это сделать , если DCM/PLL ниже 5 МГц не воспринимает?
|
|
|
|
|
Sep 9 2015, 10:04
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
QUOTE (ADA007 @ Sep 8 2015, 15:46)  1. Вопрос заключается в том, что многие делают именно так (tx_clk и rx_clk используют как тактовый сигнал для входных/выходных регистров работы с PHY, потом мучаются с клоковыми доменами). Но я не встречал еще реализации в которой бы tx_clk и rx_clk использовались только как CE для входных/выходных регистров приема/отправки данных с PHY. Собственно сам вопрос : почему реализованно именно так? может есть какие-то особенности? не лучше ли реализовать так, как я предложил? как вообще правильно клоки с PHY использовать? 2. Для реализации 10/100/1000 нужно заводить разные частоты на МАС ПЛИС 2,5МГц ; 25МГц и 125 МГц .... Вопрос: как правлиьно это сделать , если DCM/PLL ниже 5 МГц не воспринимает? много лет назад делал MAC. если делать его один на весь чип, и есть свободные линии глобального тактирования - то схема получается весьма компактная, ибо параллельно с потоком данных проходит лишь сигнал "есть пакет/нет пакета". а когда пришлось сделать 4 MAC на спартане у которого всего 8 глобальных линий (и требовалось ещё отдельно тактировать остальную схему). то пришлось все приёмные части переводить в другой тактовый домен (передатчикам получилась одна частота на всех). и вот с этим переводом пришлось слегка повозиться.
|
|
|
|
Сообщений в этой теме
ADA007 Подключение Ethernet MAC Sep 7 2015, 19:24  johan Цитата(ADA007 @ Sep 8 2015, 15:46) Постар... Sep 9 2015, 20:31 Artemius_tv Посмотрел проект с fpga4fun, там вообще нет интерф... Sep 8 2015, 11:49 likeasm PHY можно тактировать с PLL FPGA, а не с внешнего ... Sep 8 2015, 17:54 Artemius_tv Непонятно, зачем пропускать rx_clk через DCM/PLL.
... Sep 10 2015, 07:40 ADA007 Микросхему PHY использую LAN8810. Частота, на кото... Sep 13 2015, 11:44 Artemius_tv Цитата(ADA007 @ Sep 13 2015, 15:44) Микро... Sep 14 2015, 08:16 likeasm Цитата(ADA007 @ Sep 13 2015, 15:44) Для P... Sep 13 2015, 15:46 Golikov A. И как плл поправит ппм генератора, если она
от нег... Sep 13 2015, 18:07 ADA007 И правда, заблуждаюсь. Sep 13 2015, 21:24 likeasm Цитата(Artemius_tv @ Sep 14 2015, 12:16) ... Sep 14 2015, 10:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|