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

 
 
> MicroBlaze + DDR3 + my_IP на AXI, подключение к AXI
zuuuuk
сообщение May 5 2013, 15:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Добрый день.
У меня система на SPARTAN6 Mbz + MCB_DDR3 на шине AXI.
Я хочу подключить свой IP блок ко второму порту MCB и получить доступ к DDR3.
т.е. мой IP блок должен быть мастером. Для чтения данных из DDR3.

Подскажите,пожалуйста, какой-нибудь пример подключения своего IP к шине AXI.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jun 20 2013, 18:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Да я что-то уже путаюсь. Мне кажется что топикстартер где то еще что-то подобное уже обсуждал, а может это кто-то другой. То есть задача раскинута по нескольким топикам, или я ошибаюсь...

Если есть данные которые надо просто передать по езернету, и скорость входа их меньше, то естественно тут даже микроблайз по хорошему не нужен. Но что-то мне подсказывает что когда говорят езернет, то имеют ввиду чтобы в компьютер включить и в виндусе получить. А это уже значит IP, а то и ТСР, UDP - край.

Но даже по UDP задача решаема, есть модули которые напрямую формируют пакеты UDP с контрольной суммой и так далее....

Но я так понимаю речь идет о полной системе, которая нормально видится в сети, и с нее можно забрать какие то намеренные показания, отсюда и строю свое понимание, а именно

что надо взять микроблайз с DDR и LwIP, сделать нормальный серверочек данных с протоколом, а то и что-то стандартное выше уровнем типа ФТП, ХТТП...

а к этой системе уже прикрутить модуль сбора, первичной обработки данных, который их уложит аккуратными стопочками в память.

Я бы конечно бы их из модуля в память перекладывал бы Микроблайзом, но ТС хочет его освободить от этого как я понял, и потому фактически старается написать свой модуль ДМА, а я предлагаю взять готовый...


Вот такое мое понимание задачи, хотя я признаю может я все и перепуталsm.gif...
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 24 2013, 05:43
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(Golikov A. @ Jun 20 2013, 22:41) *
Да я что-то уже путаюсь. Мне кажется что топикстартер где то еще что-то подобное уже обсуждал, а может это кто-то другой. То есть задача раскинута по нескольким топикам, или я ошибаюсь...

да, я начал обсуждение на первый вариант. там не получилось сделать. но потом нашел уже начатое обсуждение здесь. если кто-то подскажет почему, буду очень признателен.
Цитата
Если есть данные которые надо просто передать по езернету, и скорость входа их меньше, то естественно тут даже микроблайз по хорошему не нужен. Но что-то мне подсказывает что когда говорят езернет, то имеют ввиду чтобы в компьютер включить и в виндусе получить. А это уже значит IP, а то и ТСР, UDP - край.

про скорость было здесь. изначально - байт под 66МГц. нужно распознать, определить что и куда и получается 32р под16МГц. т.е. 0.6Гбита.далее 2 варианта оба нужны ТСР и UDP. почему UDP край? я то думал, что как раз он возможен без микроблэйза. и все обсуждение было для ТСР.
Цитата
что надо взять микроблайз с DDR и LwIP, сделать нормальный серверочек данных с протоколом, а то и что-то стандартное выше уровнем типа ФТП, ХТТП...
а к этой системе уже прикрутить модуль сбора, первичной обработки данных, который их уложит аккуратными стопочками в память.
так и есть.
Цитата
Я бы конечно бы их из модуля в память перекладывал бы Микроблайзом, но ТС хочет его освободить от этого как я понял, и потому фактически старается написать свой модуль ДМА, а я предлагаю взять готовый...

я интернетом пока не занимался. но почитал на форуме. и вычитал , что если микроблэйз будет заниматься подготовкой данных , то гигабит не получить. плата спартан6. поэтому и хотелось его исключить. и еще я не очень понимаю- данные о том, куда записывать и сколько, есть только во внешнем блоке. как микроблэйз будет управлять куда и сколько без получения этих данных. ведь он знает откуда и сколько брать для передачи и не более.
Цитата
и есть ДМА контроллер, уже готовый ксалинксом написанный, который соединит выход вашего фифо и ДДР

микроблэйз уже (это значит, что когда я указываю плату , то эта связь изначально присутствует)соединен с DDR по AXI4 через порт P0 MCB_DDR3 и далее на DDR3. почему нельзя наш компонент с фифо и выходом на axi соединить сразу с входом порта P1 MCB_DDR3. у него есть арбитр и он для этого служит. или не так? и нужна связь компонент -> ДМА -> MCB_DDR3 -> DDR3

Цитата(akorud @ Jun 20 2013, 19:51) *
IP/UDP надо по условию задачи? Скорость поступления данных?
Если данные поступают медленнее чем их высылает сеть, то такая задача решается за полдня, делал недавно и думаю вполне смогу поделится кодом.

скорость менее 1Г. изначально думал просто выдывать по UDP .без микроблэйза и без любого IP Ethernet. плата спартан 6 SP605. просто через М88Е1111. но не смог найти информацию для инициализации этой м\с(MDIO). вроде находилась информация, что функциональный аналог DP83865 и можно воспользоваться. в стандарте больно много всего. т.е. в какие именно регистры нужна запись? но такая передача собственно и сейчас интересует. так что буду рад, если можно поделиться кодом.

Цитата(akorud @ Jun 21 2013, 10:58) *
А чем вы его смотрите? Если микроблейз - то и не увидите, т.к. он устанавливается только на один цикл и сам сбрасывается. Смотреть на регистр статуса.

в XPS создан микроблейз с компонентом. далее в ISE его правлю . делаю выходы в user_ligic для my_wrce ,my_Bus2IP_Data , my_Bus2IP_BE завожу их обратно . записываю нужную мне инф. в mst_reg в 0..14, в 15 там не записывается. потом выполняю все условия для выполнения mst_go <= '1'; в MASTER_WRITE_GO_PORT и в ISim смотрю. и хочу увидеть запуск чтения из фифо.

Сообщение отредактировал serg_k1 - Jun 24 2013, 07:19
Go to the top of the page
 
+Quote Post
akorud
сообщение Jun 24 2013, 10:03
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Как то все очень запутано - кажется ТС пробует "объять необъятное" причем все и сразу.

Цитата(serg_k1 @ Jun 24 2013, 07:43) *
скорость менее 1Г. изначально думал просто выдывать по UDP .без микроблэйза и без любого IP Ethernet. плата спартан 6 SP605. просто через М88Е1111.

Я бы сделал (и уже делал) так:
1. берем IP Ethernet стандартный. У него вход данных AXI-stream, проще некуда;
2. Насколько я помню ничего в PHY изменять не надо, он сам стартует в режиме 1Gb Autoneg, я правда делал на KC705 но даже не интересовался какой там PHY.
3. Пишем свой модуль который будет генерировать фиксированный заголовок Ethernet перед каждыми N (например 1500) байтами полезных данных и высылать по AXI-stream.
4. На PC запускаем простейшую программку под Linux принимающую все это через raw socket и далее можно делать что душе угодно - хоть в файл, хоть в UDP, хоть в TCP.
На все - день работы.
Все усложнения (микроблейз например) должны ясно следовать из условий ТЗ, ну или если поиграться хочется и бюджет есть sm.gif
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 24 2013, 14:03
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(akorud @ Jun 24 2013, 14:03) *
Как то все очень запутано - кажется ТС пробует "объять необъятное" причем все и сразу.


Я бы сделал (и уже делал) так:
1. берем IP Ethernet стандартный. У него вход данных AXI-stream, проще некуда;

я нашел только Tri_mod_Eth с AXI-stream и в нем там масса модулей...? и если это он , то можно поподробней.
Go to the top of the page
 
+Quote Post
akorud
сообщение Jun 24 2013, 14:38
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(serg_k1 @ Jun 24 2013, 16:03) *
я нашел только Tri_mod_Eth с AXI-stream и в нем там масса модулей...? и если это он , то можно поподробней.

Да, он.
Простой рабочий пример (только на передачу).
Сигналы ETHERNET_* - прямо на пины PHY. Не забудьте phy_reset_n установить в 1 так он active low.
clk_125M_tx - ваша забота; clk_125M_rx - придет от PHY.
Код
//----------------------------------------------------------------------------
// Ethernet
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
// TX PHY physical interface interface
//----------------------------------------------------------------------------

wire [7:0] gmii_txd;
wire gmii_tx_en;
wire gmii_tx_er;

always @(posedge clk_125M_tx) begin
    ETHERNET_TXD <= gmii_txd;
    ETHERNET_TX_EN <= gmii_tx_en;
    ETHERNET_TX_ER <= gmii_tx_er;
end    

ODDR #(
    .DDR_CLK_EDGE("OPPOSITE_EDGE"),
    .INIT(1'b0),
    .SRTYPE("SYNC")
) ODDR_inst (
      .Q(ETHERNET_TX_CLK),
      .C(clk_125M_tx),
      .CE(1'b1),
      .D1(1'b0),
      .D2(1'b1),
      .R(1'b0),
      .S(1'b0)
);

//----------------------------------------------------------------------------
// RX PHY physical interface interface
//----------------------------------------------------------------------------

wire clk_125M_rx_io;

BUFIO BUFIO_inst (.I(ETHERNET_RX_CLK), .O(clk_125M_rx_io));
BUFG BUFG_inst (.I(ETHERNET_RX_CLK), .O(clk_125M_rx));

reg [7:0] gmii_rxd;
reg gmii_rx_dv;
reg gmii_rx_er;

always @(posedge clk_125M_rx_io) begin
    gmii_rxd <= ETHERNET_RXD;
    gmii_rx_dv <= ETHERNET_RX_DV;
    gmii_rx_er <= ETHERNET_RX_ER;
end    

//----------------------------------------------------------------------------
// Core itself
//----------------------------------------------------------------------------

wire mac_tx_reset;
reset_sync rsync_mac_tx(.clk(clk_125M_tx), .areset(1'b0), .reset(mac_tx_reset), .resetn());

wire mac_rx_reset;
reset_sync rsync_mac_rx(.clk(clk_125M_rx), .areset(1'b0), .reset(mac_rx_reset), .resetn());

wire [79:0] tx_mac_config_vector = {64'b0, 15'b0010_0000_0000_001, mac_tx_reset};
wire [79:0] rx_mac_config_vector = {64'b0, 15'b0010_0000_0000_001, mac_rx_reset};

tri_mode_eth_mac tri_mode_eth_mac (
    .glbl_rstn(1'b1),
    .rx_axi_rstn(1'b1),
    .tx_axi_rstn(1'b1),
    .rx_axi_clk(clk_125M_rx),
    .rx_reset_out(),
    .rx_axis_mac_tdata(),
    .rx_axis_mac_tvalid(),
    .rx_axis_mac_tlast(),
    .rx_axis_mac_tuser(),
    .rx_statistics_vector(),
    .rx_statistics_valid(),
    .tx_axi_clk(clk_125M_tx),
    .tx_reset_out(),
    .tx_axis_mac_tdata(eth_axis_tdata),
    .tx_axis_mac_tvalid(eth_axis_tvalid),
    .tx_axis_mac_tlast(eth_axis_tlast),
    .tx_axis_mac_tuser(1'b0),
    .tx_axis_mac_tready(eth_axis_tready),
    .tx_ifg_delay(8'b0),
    .tx_statistics_vector(),
    .tx_statistics_valid(),
    .pause_req(1'b0),
    .pause_val(16'b0),
    .speed_is_100(),
    .speed_is_10_100(),
    .gmii_txd(gmii_txd),
    .gmii_tx_en(gmii_tx_en),
    .gmii_tx_er(gmii_tx_er),
    .gmii_rxd(gmii_rxd),
    .gmii_rx_dv(gmii_rx_dv),
    .gmii_rx_er(gmii_rx_er),
    .rx_mac_config_vector(rx_mac_config_vector), // input [79 : 0] rx_mac_config_vector
    .tx_mac_config_vector(tx_mac_config_vector) // input [79 : 0] tx_mac_config_vector
);

Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 25 2013, 11:14
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(akorud @ Jun 24 2013, 18:38) *
Да, он.
Простой рабочий пример (только на передачу).
Сигналы ETHERNET_* - прямо на пины PHY. Не забудьте phy_reset_n установить в 1 так он active low.
clk_125M_tx - ваша забота; clk_125M_rx - придет от PHY.

в примере IP Core головной файл core_eth_example_design.v, связанный с PHY и с core_eth_fifo_block.v , который включает в себя core_eth_ten_100_1g_eth_fifo.v , включающий core_eth_tx_client_fifo.v и core_eth_rx_client_fifo.v, и связанный с pat_gen. в вашем примере как бы часть core_eth_fifo_block.v который стал головным и связан с PHY и он должен включать в себя core_eth_tx_client_fifo.v и core_eth_rx_client_fifo.v . это нужно сделать? и вместо pat_gen по axi stream через
.tx_axi_clk(clk_125M_tx),
.tx_axis_mac_tdata(eth_axis_tdata),
.tx_axis_mac_tvalid(eth_axis_tvalid),
.tx_axis_mac_tlast(eth_axis_tlast),
.tx_axis_mac_tuser(1'b0),
.tx_axis_mac_tready(eth_axis_tready),
нужно подключить пакет для передачи?
пакет это преамбула ? , разделитель?, адрес приемника(4 или 6 ?), адрес передатчика(4 или 6 ?), длина , данные, crc.
или это самодостаточный модуль как бы core_eth.v, открываемый из core_eth.xco. и к нему подключаться также по axi stream по тем же сигналам.
и еще вопрос по axi stream. данные записываются пока не появится tready под каждый клок новый байт.если не успеваю сформировать новый байт , то выдавать tvalid. а tlast - конец пакета и если нет tready можно писать следующий.

Сообщение отредактировал serg_k1 - Jun 25 2013, 11:44
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 25 2013, 12:29
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(serg_k1 @ Jun 25 2013, 15:14) *
или это самодостаточный модуль как бы core_eth.v, открываемый из core_eth.xco.

с этим вроде бы разобрался. - это модуль , в который уже включена декларация ядра из core_eth.veo.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zuuuuk   MicroBlaze + DDR3 + my_IP на AXI   May 5 2013, 15:44
- - akorud   Цитата(zuuuuk @ May 5 2013, 17:44) Добрый...   May 5 2013, 18:47
|- - serg_k1   Цитата(akorud @ May 5 2013, 22:47) Лучше ...   Jun 7 2013, 10:11
|- - aabmail   Цитата(serg_k1 @ Jun 7 2013, 14:11) если ...   Jun 7 2013, 12:19
|- - serg_k1   Цитата(aabmail @ Jun 7 2013, 16:19) Могу ...   Jun 10 2013, 06:33
|- - aabmail   Цитата(serg_k1 @ Jun 10 2013, 10:33) было...   Jun 11 2013, 08:01
|- - serg_k1   Цитата(aabmail @ Jun 11 2013, 12:01) Откр...   Jun 11 2013, 09:35
|- - aabmail   Цитата(serg_k1 @ Jun 11 2013, 13:35) все ...   Jun 11 2013, 09:54
|- - akorud   Цитата(aabmail @ Jun 11 2013, 11:54) Ваш ...   Jun 11 2013, 10:52
||- - aabmail   Цитата(akorud @ Jun 11 2013, 14:52) Подде...   Jun 11 2013, 16:42
||- - serg_k1   Цитата500 слов раз в секунду или чаще? 32р 400 сло...   Jun 13 2013, 05:36
||- - aabmail   Цитата(serg_k1 @ Jun 13 2013, 09:36) 32р ...   Jun 13 2013, 09:56
||- - serg_k1   Цитата(aabmail @ Jun 13 2013, 13:56) Разъ...   Jun 13 2013, 11:52
||- - aabmail   Цитата(serg_k1 @ Jun 13 2013, 15:52) 32р ...   Jun 13 2013, 15:34
||- - serg_k1   Цитата(aabmail @ Jun 13 2013, 19:34) 3. к...   Jun 14 2013, 06:42
|- - serg_k1   Цитата(aabmail @ Jun 11 2013, 13:54) Ваш ...   Jun 11 2013, 12:11
- - Golikov A.   А что если так. Делаете микроблайз в нем включае...   Jun 10 2013, 10:44
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 14:44) А...   Jun 10 2013, 12:24
- - Golikov A.   так вы что хотите написать свой акси конектор что ...   Jun 10 2013, 14:07
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 18:07) т...   Jun 11 2013, 06:43
- - Golikov A.   я делаю визардом из XPS компонент, обычно с верило...   Jun 12 2013, 07:42
- - Golikov A.   на гигабитном езернете, в крайне не оптимальном ре...   Jun 13 2013, 17:19
- - Golikov A.   такс... ФИФО это компонент с входом и выходом пар...   Jun 14 2013, 07:00
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 11:00) Д...   Jun 14 2013, 07:54
|- - akorud   Цитата(serg_k1 @ Jun 14 2013, 09:54) созд...   Jun 16 2013, 20:54
|- - aabmail   Цитата(akorud @ Jun 17 2013, 00:54) Ну та...   Jun 17 2013, 10:09
|- - akorud   Цитата(aabmail @ Jun 17 2013, 12:09) Обыч...   Jun 17 2013, 13:26
- - aabmail   ЦитатаКогда на входе строба записи появляется един...   Jun 14 2013, 08:04
- - Golikov A.   то данные из data_in на этом же цикле записываются...   Jun 14 2013, 10:36
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 14:36) я...   Jun 14 2013, 12:53
- - Golikov A.   сдается мне у кого-то полная путаница в голове.. ...   Jun 14 2013, 13:59
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) ...   Jun 14 2013, 14:11
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 17 2013, 13:25
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 19 2013, 12:21
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 14:21) помо...   Jun 19 2013, 13:25
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 17:25) Если ...   Jun 19 2013, 14:05
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 16:05) т.е....   Jun 19 2013, 14:27
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 18:27) BE - ...   Jun 20 2013, 13:53
|- - akorud   Не соглашусь, ну на то тут и форум чтобы можно был...   Jun 20 2013, 15:51
||- - TimeToSleep   Цитата(akorud @ Jun 20 2013, 16:51) Зачем...   Feb 12 2016, 07:16
||- - akorud   Цитата(TimeToSleep @ Feb 12 2016, 08:16) ...   Feb 13 2016, 15:45
||- - TimeToSleep   Цитата(akorud @ Feb 13 2016, 16:45) Если ...   Feb 17 2016, 14:34
||- - TimeToSleep   Цитата(akorud @ Jun 19 2013, 15:27) BE - ...   Feb 18 2016, 07:40
||- - akorud   Цитата(TimeToSleep @ Feb 18 2016, 08:40) ...   Feb 22 2016, 10:43
||- - TimeToSleep   Цитата(akorud @ Feb 22 2016, 11:43) 1. По...   Feb 25 2016, 07:00
||- - akorud   Цитата(TimeToSleep @ Feb 25 2016, 08:00) ...   Feb 25 2016, 09:48
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 10:48) Если ...   Feb 25 2016, 12:40
|||- - akorud   Да, оно.   Feb 25 2016, 18:58
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 12:48) Далее...   Feb 26 2016, 07:11
||- - akorud   Цитата(TimeToSleep @ Feb 26 2016, 08:11) ...   Feb 26 2016, 10:17
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 9 2016, 06:04
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 11 2016, 06:13
|- - akorud   Цитата(serg_k1 @ Jun 20 2013, 15:53) спас...   Jun 21 2013, 06:58
- - Golikov A.   да ничего там не условно. В модуль входит шина АК...   Jun 17 2013, 19:47
- - Golikov A.   чет я не понимаю. вроде бы 2 задачи 1. У вас модул...   Jun 20 2013, 05:01
|- - akorud   Цитата(Golikov A. @ Jun 20 2013, 07:01) ....   Jun 20 2013, 08:18
- - Golikov A.   каким мастером? как можно управлять мастером? я т...   Jun 20 2013, 10:13
- - Golikov A.   вообщем это делается так. Есть микроблайз с ДДР, ...   Jun 20 2013, 15:02
||- - akorud   Цитата(serg_k1 @ Jun 25 2013, 13:14) .tx_...   Jun 25 2013, 13:28
|- - TimeToSleep   Цитата(akorud @ Jun 24 2013, 11:03) Я бы ...   Feb 19 2016, 12:55
- - TimeToSleep   Здравствуйте, akorud . Тема достаточно забытая, н...   Feb 11 2016, 14:20
- - TimeToSleep   Подскажите, пожалуйста, сталкивался ли кто-то с те...   Mar 18 2016, 06:03


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

 


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


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