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

10_100_1000 Mbps Ethernet MAC + Gb eth UDP/IP Stack с opencores.

Коллеги, поделитесь опытом работы с данными IP с opencores.

Насколько они "оживляемы" по отдельности и в связке?

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


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

2 wert101

"в принципе" оно рабочее, надо только подпилить под свои хотелки. А что вас именно интересует?

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


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

2 wert101

"в принципе" оно рабочее, надо только подпилить под свои хотелки. А что вас именно интересует?

Нужно изменить интерфейс в одном из проектов цифровой камеры на Ethernet.

Ранее, с реализацией Ethernet на ПЛИС я не сталкивался.

В результате изучения форума и поиска информации по данной теме остановился

на варианте, изложенном Алексеем Пашиновым в журнале КиТ №5/2015г.

http://kit-e.ru/articles/circuit/2015_05_100.php

Там описан вариант реализации Ethernet контроллера на ПЛИС на основе связки :

User layer (castom) + UDP/IP Stack (opencores) + TSE MAC (Xilinx core) + PHY (Marvell 88Е1111).

 

Под Альтеру я хочу использовать в качестве МАСа

10_100_1000 Mbps Ethernet MAC (opencores) или TSE от Альтеры (нужна лицензия, это "-").

Физ. уровень на тестовой плате - Marvell 88Е1512 в режиме RGMII.

 

Сначала был сделан тестовый проект в Ква генератора UDP-пакетов для "знакомства"

с 88Е1512. Плата и ПК соединены кроссоверным патч-кордом.

На ПК вижу прием UDP-пакетов Wireshark-ом.

На плате СигналТапом вижу пакеты (ARP) от ПК на выходе 88Е1512 и переходника RGMII/GMII.

 

Далее в проект добавлен 10_100_1000 Mbps Ethernet MAC с opencores.

По нему и вопросы :

В доке описано конфигурирование МАСа запуском скрипта #vish start.tcl и записью

конфигурации в файл "CPU.dat".

Это обязательно? Можно записать конфиг. регистры в проекте через

Host interface CSB, WRB, [15:0] CD_in, [15:0] CD_out, [7:0] CA ?

Судя по исходникам, модуль reg_int.v отвечает за инициализацию конф. регистров при сбросе?

reg_int.v

Tri_mode_Ethernet_MAC_Specifications.pdf

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


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

Можно записать конфиг. регистры в проекте через

Host interface CSB, WRB, [15:0] CD_in, [15:0] CD_out, [7:0] CA ?

Можно. Для этого вам нужен какой то софт-проц или ваш самописный мастер.

 

Судя по исходникам, модуль reg_int.v отвечает за инициализацию конф. регистров при сбросе?

Модуль "reg_int.v" - контейнер регистров MAC-а, с предустановками для регистров по сбросу.

 

Советую так же ознакомиться вот с этим:

../ethernet_tri_mode/trunk/EDK/edk_user_repository.tar.gz -> ../edk_user_repository/MyProcessorIPLib/drivers/opencore_tri_mac_v1_00_a/src/

 

 

 

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


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

Можно. Для этого вам нужен какой то софт-проц или ваш самописный мастер.

 

 

Модуль "reg_int.v" - контейнер регистров MAC-а, с предустановками для регистров по сбросу.

 

Советую так же ознакомиться вот с этим:

../ethernet_tri_mode/trunk/EDK/edk_user_repository.tar.gz -> ../edk_user_repository/MyProcessorIPLib/drivers/opencore_tri_mac_v1_00_a/src/

 

Написан простой VHDL модуль для записи всех регистров МАС после сигнала сброса.

 

Но, еще до принудительной перезаписи регистров внешним модулем,

в Сигналтапе я вижу несоответствие содержимого конф. регистров значениям,

указанным reg_int.v.

Например, согласно reg_int.v :

- регистр Tx_Hwmark д.б. инициализирован в 16'h001E, в железе после ресета он равен 16'h0019.

- регистр Tx_Lwmark д.б. инициализирован в 16'h0019, в железе после ресета он равен 16'h0000.

 

Хотя, в reg_int.v указаны след. строки для их первоначальной установки :

RegCPUData U_0_000(Tx_Hwmark ,7'd000,16'h001E,Reset,Clk_reg,!WRB,CSB,CA,CD_in);

RegCPUData U_0_001(Tx_Lwmark ,7'd001,16'h0019,Reset,Clk_reg,!WRB,CSB,CA,CD_in);

 

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

Содержимое EDK я смотрел, спасибо.

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


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

2 wert101

Если вы уверены что смотрите те регистры которые хотите, и у вас прошёл сброс перед этим - значит кто то переписал их. Проверяйте, например в симуляции, поведение вашей системы после сброса.

 

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


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

2 wert101

Если вы уверены что смотрите те регистры которые хотите, и у вас прошёл сброс перед этим - значит кто то переписал их. Проверяйте, например в симуляции, поведение вашей системы после сброса.

Проверил в Сигналтапе еще раз.

Инициализация регистров МАС после сброса проходит как указано в reg_int.v.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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