реклама на сайте
подробности

 
 
> Ethernet to Е1, Переброс данных из MAC уровня Ethernet в Е1
Tolas
сообщение Aug 17 2016, 12:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 14-11-10
Пользователь №: 60 881



Здравствуйте!
Являюсь начинающим разработчиком на FPGA. Работаю с ПЛИС Xilinx Spartan 6. Среда разработки ISE 14.7.
Стоит задача: переброс данных из МАС уровня Ethernet в Е1.
Имеется ПЛИС Spartan6 xc6slx150t-2fgg900, PHY Marvell 88E1111, сконфигурированный на работу по оптическому каналу на скорости 1 Gbs, E1 микросхема ds21348, сконфигурированная с NRZE = 1 (не биполярные данные на RPOS и RNEG (TPOS, TNEG), а используются только ноги RPOS и TPOS). Обмен информацией по Е1 организован с помощью HDLC протокола.
Алгоритм работы:
1) полностью принимается пакет с МАС уровня (в буфер), убирается флаг готовности приема данных с МАС уровня;
2) этот пакет передается по Е1 удаленному абоненту, в конце передачи выставляется флаг готовности приема данных с МАС уровня;
3) удаленный абонент, принимая данные по Е1 кладет, их в буфер для передачи в МАС уровень;
4) сразу после окончания приема по Е1 удаленный абонент выдает в МАС уровень принятый пакет.
Используемом соединение: точка-точка, поэтому количество пакетов не очень большое и время между пакетами не превышает времени передачи одного пакета по Е1, следовательно буфер приема данных с МАС уровня не должен переполняться (пока писал, подумал что не плохо было бы все-таки поставить флаг попытки положить данные из МАС уровня в буфер во время передачи по Е1).
Суть вопроса: так как я являюсь начинающим разработчиком на FPGA, я не могу понять почему у меня при разных попытках сборки при малых исправлениях кода (или даже если вовсе код не править) все ведет себя абсолютно непредсказуемо?
Пример: собрал проект, загрузил на плату, смотрю в Wireshark пакеты, приходящие от другого устройства - они абсолютно битые, вовсе не похожи на то, что надо. Запускаю SmartXplorer, выбираю один из вариантов сборки, загружаю на плату, получаю пакеты с битым широковещательным МАС адресом (заместо FF:FF:FF:FF:FF:FF принимается FF:7F:FF:FF:FF:FF или FE:FF:FF:FF:FF:FF), выбираю какой-нибудь другой вариант сборки в результатах SmartXplorer, получаю боле-менее стабильный результат, но есть потери пакетов (каждые 5 секунд высылаю пакет, но, примерно каждые 50 секунд 1-3 пакета теряются).
Части кода, связанные с HDLC и МАС тестировались отдельно, в том числе создавались testbanches. Может что-то в настройках проекта следует указывать или как-то задавать какие-то параметры и флаги портам? Может как-то надо более правильно относиться к тактовым? (Тактовую 2.048 МГц для Е1 получаю простым счетчиком из 32.768 МГц).
В общем, хотелось бы получить какие либо рекомендации по разработке устройств на ПЛИС чтобы не получать непредсказуемого поведения)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tolas
сообщение Aug 22 2016, 13:26
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 14-11-10
Пользователь №: 60 881



Цитата(BackEnd @ Aug 18 2016, 14:44) *
К тактовым всегда нужно относиться правильно. Про кустарные делители частоты в промышленных решениях забудьте сразу, для этого есть DCM и PLL.

В стандартной xilinx'овской библиотеке я не нашел делителя тактовой на 16, а счетчик Вы говорите лучше не использовать. Неужели даже для деления на 16 входной тактовой нужно использовать целый блок PLL или DCM? И еще вопрос про тактовые: "Как быть с тактовыми, частота которых не очень высока, например тактовая на интерфейсе I2C?". Неужели даже для таких тактовых нужно использовать глобальные буфера (BUFG) и писать констрейны для них? Просто я Е1 причислял к интерфейсам с низкой тактовой, поэтому не задумывался об констрейнах на Е1.
Цитата(BackEnd @ Aug 18 2016, 14:44) *
Работайте с привязками

Я попытался обконстрейнить все, что связано с Е1:
Код
NET "clk_32768"       LOC = "C1" | IOSTANDARD = LVTTL;
NET "clk_32768"       TNM_NET = "clk_32768";
TIMESPEC "TS_clk_32768" = PERIOD "clk_32768" 30517 ps HIGH 50.00%;

NET "e1t1_rclk0"     TNM_NET = "e1t1_rclk0";
TIMESPEC "TS_e1t1_rclk0" = PERIOD "e1t1_rclk0" 488281 ps HIGH 50.00%;
OFFSET = IN 122070 ps VALID 244100 ps BEFORE "e1t1_rclk0";

Это для тактовой 32.768 МГц и для входных данных.
А как быть с передаваемыми данными, если тактовую для передаваемых данных вырабатываю я, из 32.768 МГц?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Tolas   Ethernet to Е1   Aug 17 2016, 12:40
- - Lutovid   Вообще поведение похоже на проблемы с времянкой - ...   Aug 17 2016, 19:31
- - Tolas   Цитатаповедение похоже на проблемы с времянкой Про...   Aug 18 2016, 07:08
- - BackEnd   Цитата(Tolas @ Aug 17 2016, 12:40) я не м...   Aug 18 2016, 11:44
|- - des00   Цитата(BackEnd @ Aug 18 2016, 18:44) К та...   Aug 23 2016, 02:04
|- - Lutovid   Цитата(des00 @ Aug 23 2016, 05:04) Давая ...   Aug 23 2016, 20:21
|- - wolfman   Цитата(Tolas @ Aug 22 2016, 22:56) И еще ...   Aug 24 2016, 04:44
- - Lutovid   Можно попробовать работать через clock enable, есл...   Aug 22 2016, 14:18
- - Волощенко   Цитата(Tolas @ Aug 17 2016, 16:40) Стоит ...   Aug 23 2016, 04:47
- - Alex11   Для гигабитного интерейса обычно нужно не просто б...   Aug 23 2016, 09:05
|- - Tolas   Цитата(Alex11 @ Aug 23 2016, 12:05) Для г...   Aug 23 2016, 09:47
|- - iosifk   Цитата(Tolas @ Aug 23 2016, 12:47) Да, дл...   Aug 23 2016, 09:54
- - Tolas   Цитата(Lutovid @ Aug 23 2016, 23:21) Судя...   Aug 24 2016, 08:31
|- - andrew_b   Цитата(Tolas @ Aug 24 2016, 11:31) Сейчас...   Aug 24 2016, 08:44
- - Tolas   Цитата(andrew_b @ Aug 24 2016, 11:44) Ста...   Aug 24 2016, 13:01
|- - andrew_b   Цитата(Tolas @ Aug 24 2016, 16:01) В пара...   Aug 24 2016, 13:33
- - Tolas   Изменил констрейн, добавил слово FALLING в конце, ...   Aug 24 2016, 13:37
- - Tolas   Итак, пока я переписываю проект и упрощаю его чтоб...   Aug 30 2016, 08:49
|- - andrew_b   Цитата(Tolas @ Aug 30 2016, 11:49) 1) Пол...   Aug 30 2016, 09:01
- - BackEnd   Цитата(Tolas @ Aug 22 2016, 13:26) В стан...   Aug 30 2016, 14:18
- - andrew_b   Кстати говоря, в Spartan6 есть специальные буферы ...   Aug 31 2016, 11:32
- - Tolas   Благодарю пользователя BackEnd за развернутый отве...   Sep 13 2016, 08:31


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016