Jump to content

    
Sign in to follow this  
zuuuuk

MicroBlaze + DDR3 + my_IP на AXI

Recommended Posts

спасибо, у меня 32р. сделал Bus2IP_BE все единицы. в mst_reg все записал, правда кроме 15. и как раз проблемы с mst_go. mst_go в 1 не могу сделать. делаю Bus2IP_Data в старшем байте = X"0A" при mst_byte_we(GO_BYTE_LANE) = '1' и ничего. ?

А чем вы его смотрите? Если микроблейз - то и не увидите, т.к. он устанавливается только на один цикл и сам сбрасывается. Смотреть на регистр статуса.

Share this post


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

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

Если есть данные которые надо просто передать по езернету, и скорость входа их меньше, то естественно тут даже микроблайз по хорошему не нужен. Но что-то мне подсказывает что когда говорят езернет, то имеют ввиду чтобы в компьютер включить и в виндусе получить. А это уже значит 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

 

IP/UDP надо по условию задачи? Скорость поступления данных?

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

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

 

А чем вы его смотрите? Если микроблейз - то и не увидите, т.к. он устанавливается только на один цикл и сам сбрасывается. Смотреть на регистр статуса.

в 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 смотрю. и хочу увидеть запуск чтения из фифо.

Edited by serg_k1

Share this post


Link to post
Share on other sites

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

 

скорость менее 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.

На все - день работы.

Все усложнения (микроблейз например) должны ясно следовать из условий ТЗ, ну или если поиграться хочется и бюджет есть :)

 

Share this post


Link to post
Share on other sites
Как то все очень запутано - кажется ТС пробует "объять необъятное" причем все и сразу.

 

 

Я бы сделал (и уже делал) так:

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

я нашел только Tri_mod_Eth с AXI-stream и в нем там масса модулей...? и если это он , то можно поподробней.

Share this post


Link to post
Share on other sites
я нашел только 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
);

 

Share this post


Link to post
Share on other sites
Да, он.

Простой рабочий пример (только на передачу).

Сигналы 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 можно писать следующий.

Edited by serg_k1

Share this post


Link to post
Share on other sites
или это самодостаточный модуль как бы core_eth.v, открываемый из core_eth.xco.

с этим вроде бы разобрался. - это модуль , в который уже включена декларация ядра из core_eth.veo.

Share this post


Link to post
Share on other sites
.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 можно писать следующий.

Я пример не смотрел, так что там не помогу.

Пакет - все что угодно, что выглядит как более-менее правильный Ethernet frame. Начинается от destination MAC (6). Т.е. 14 байт заголовка и свои данные. Я заголовок просто делал 0 1 2 3 ... 0xd - проходило.

Про AXI-stream - вообще-то спецификация открытая, но вкратце - байт считается переданным если tvalid = 1 и tready = 1. Если приемник не готов принимать - он выставит tready = 0, если вы не готовы передавать - устанавливаете tvalid = 0. tlast - означает последний байт пакета (устанавливается вами).

 

Share this post


Link to post
Share on other sites

Здравствуйте, akorud .

Тема достаточно забытая, но я столкнулся с подобной проблемой сейчас.

Задача состоит в том, чтобы по сути создать своего мастера на шину AXI руками.

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

 

Задача изначально сводится к тому, чтобы по нажатию кнопки загорался светодиод по шине акси от мастера, написанного

в user_logic. Плата KC705 (Kintex 7). Создан microblaze, далее периферия AXI с галочками на мастера и user_logic.

Кнопку естественно завел в юзера, прописал в .mhs и .ucf.

Прочитал также протокол передачи по шине. Шина AXI4 (создал обычную, но он вроде как переделал её в Lite).

Это всё делается для освоения мастера на шине, чтобы в будущем управлять устройствами в обход microblaze'a (ускорить его работу,

отвлекая его от ненужной нагрузки).

 

Я могу менять полностью внутреннюю корку User_logic, так ведь? Каким образом мне нужно выставлять данные на выход шины? Я должен управлять регистром mst_reg (control reg, address, status(?? его самому нужно задавать? ), byte enable,length,go), Задавать биты разрешения mst_read_ack,mst_reg_read_sel, писать данные в фифо внутри user_logic (единичку, чтобы зажегся светодиод). А потом соответственно у меня он сразу и зажгется? (Сделал всё то, что сказал, но оно не сработало :( )

 

 

BE - Byte Enable. Т.е. если Bus2IP_Data шире 8 бит, то BE указывает какие из байтов несут данные (если ширина данных < ширины Bus2IP_Data).

Типичные сценарии:

- запись 8-битного значения на 32-битной шине;

- при burst передаче если размер burst в байтах не кратный 4 (на 32-битной шине) - то при передаче последнего 32-битного слова не все биты Bus2IP_BE будут 1.

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

 

Поясните, пожалуйста, поподробнее. Если, например, в последней передаче будет 27 бит информации, то какой будет BE? Он ведь читает лишь с 15 до 0 бита сигнала Bus2IP_Data

 

        -- be register (byte 8 to 9)
        for byte_index in 4 to 14 loop
          if ( mst_byte_we(byte_index) = '1' ) then
            mst_reg(byte_index) <= Bus2IP_Data(
                                     (byte_index-(byte_index/BE_WIDTH)*BE_WIDTH)*8+7 downto
                                     (byte_index-(byte_index/BE_WIDTH)*BE_WIDTH)*8);
          end if;
        end loop;

 

Здравствуйте.

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

 

я нашел только Tri_mod_Eth с AXI-stream и в нем там масса модулей...? и если это он , то можно поподробней.

 

 

Здравствуйте

Хотел бы подключить и вас к этой теме (указана выше в теме).

Буду очень признателен за помощь

 

да ничего там не условно:).

 

В модуль входит шина АКСИ - сложная.

Есть компонент от ксалинкса который сложную акси переделывает в Bus2IP и IP2Bus.

 

Один от шины в компонент, другой от компонента в шину. Зачем их делать 2 направленными то?

Edited by TimeToSleep

Share this post


Link to post
Share on other sites
Зачем ДМА? Зачем 2 порта памяти? Насколько я понял речь идет о 1Gbps - это медленно.

Я сам собственноручно написал модуль принимающий пакеты по ethernet и складывающий в ДДР без участия microblaze. Все чудесно работает с однопортовой ДДР, при частоте шины 50MHz. Где-то тут я уже постил скриншот из XPS.

 

Доброго времени суток.

 

Еще у меня возник вопрос по протоколу передачи по AXI4. Он состоит в том, что передаётся сигнал valid совместно с адресом, далее по принятому сигналу ready, начинается чтение данные (передача данных в slave). Затем по принятому сигналу Last (или Last только при Burst передаче?) посылается последний пакет передачи и собственно передача закончилась. Я правильно всё понял? Но сигналы Valid и Ready относятся к топовому модулю axi_master.vhdl, как я могу ими управлять и нужно ли это делать? Если я просто сымитирую выставление адреса, сигнала чтения (запрос на выдачу данных мастером на шину), и данные, зажжется ли в этом случае светодиод?

 

Помимо этого у меня возник вопрос о работе платы. Я загрузил часть своего проекта, в котором microblaze посредством той же шины AXI управляет другим светодиодом (мигает), (кстати, можно ли два мастера на шине? т.е. Microblaze со своим светодиодом и я, управляя user_logic'ом, другим светодиодом мигать по кнопке посредством той же шины?). Так вот при загрузке проекта на плату kc705(kintex 7) у меня не работают XMD и ChipScope одновременно. Прошерстил множество интернета, но в основном пишут про jumper'ы и про криво поставленные драйвера, у меня с этим проблем нет (ну вроде). Еще говорилось про DIP_Switch и я их выставил на соединение по JTAG. Поэтому не понимаю в чем проблема может быть :(

 

Прошу вас попытаться помочь с данными проблемами

Edited by TimeToSleep

Share this post


Link to post
Share on other sites
Но сигналы Valid и Ready относятся к топовому модулю axi_master.vhdl

Если используется Bus2IP i IP2Bus то о AXI вам, в общем случае, знать не нужно и напрямую управлять ее сигналами тоже. IP2Bus конвертирует канал записи AXI master в "локальную шину", которая по задумке программистов Xilinx проще для понимания. Но они сами уже отказались от таких странностей и в Vivado все куда проще.

Готовый пример AXI master по внешнему сигналу (ваша кнопка) пишет заданные данные по заданному адресу.

А зажжется ли светодиод - никто вам не скажет, так как неизвестно как и куда он подключен.

 

По второму вопросу ничем помочь не могу, так как не помню использовал ли Chipscope в системах с Microblaze и уж точно не использовал платы KC705.

 

Да, очень рекомендую пройти Lab 4 из UG940 - вот прямо в режиме "делай раз, делай два" :-)

Share this post


Link to post
Share on other sites
Если используется Bus2IP i IP2Bus то о AXI вам, в общем случае, знать не нужно и напрямую управлять ее сигналами тоже. IP2Bus конвертирует канал записи AXI master в "локальную шину", которая по задумке программистов Xilinx проще для понимания. Но они сами уже отказались от таких странностей и в Vivado все куда проще.

Готовый пример AXI master по внешнему сигналу (ваша кнопка) пишет заданные данные по заданному адресу.

А зажжется ли светодиод - никто вам не скажет, так как неизвестно как и куда он подключен.

 

По второму вопросу ничем помочь не могу, так как не помню использовал ли Chipscope в системах с Microblaze и уж точно не использовал платы KC705.

 

Да, очень рекомендую пройти Lab 4 из UG940 - вот прямо в режиме "делай раз, делай два" :-)

 

Т.е. если я напрямую посылаю сигнала на IP2Bus, то это уже означает, что по адресу должны присваиваться данные slave'ом? Если так, то у меня не выставляются данные (светодиод не загорается), может ли быть это связано с тем, что на шине два мастера (microblaze и я)? (Адрес светодиода я узнал из XPS.)

К сожалению, я пользуюсь не Vivado, а ISE Project Navigator в силу того, что мне никто не сможет помочь по вивадо (хотя и по ISE мне не могут помочь с мастером).

 

Ну ладно. Спасибо.

 

Хорошо, попробую. Правда там опять же вивадо, но попробую на ISE перенести.

Большое спасибо

Share this post


Link to post
Share on other sites
BE - Byte Enable. Т.е. если Bus2IP_Data шире 8 бит, то BE указывает какие из байтов несут данные (если ширина данных < ширины Bus2IP_Data).

Типичные сценарии:

- запись 8-битного значения на 32-битной шине;

- при burst передаче если размер burst в байтах не кратный 4 (на 32-битной шине) - то при передаче последнего 32-битного слова не все биты Bus2IP_BE будут 1.

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

 

 

»Поясните, пожалуйста, поподробнее. Если, например, в последней передаче будет 27 бит информации, то какой будет BE? Он ведь читает лишь с 15 до 0 бита сигнала Bus2IP_Data

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

 

 

 

1) Если используется Bus2IP i IP2Bus то о AXI вам, в общем случае, знать не нужно и напрямую управлять ее сигналами тоже. IP2Bus конвертирует канал записи AXI master в "локальную шину"

 

 

2) Готовый пример AXI master по внешнему сигналу (ваша кнопка) пишет заданные данные по заданному адресу.

 

3) А зажжется ли светодиод - никто вам не скажет, так как неизвестно как и куда он подключен.

 

1) В каком плане конвертирует канал записи? То, что я описал выше ("...напрямую посылаю сигнала на IP2Bus, то это уже означает, что по адресу должны...") это относится к этому?

 

2) Эм. А где этот готовый пример? :)

 

3) А почему неизвестно, если я в XPS подключил его к одной и той же шине AXI, и знаю адреса этих gpio?

Share this post


Link to post
Share on other sites
Я бы сделал (и уже делал) так:

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

2. Насколько я помню ничего в PHY изменять не надо, он сам стартует в режиме 1Gb Autoneg, я правда делал на KC705 но даже не интересовался какой там PHY.

3. Пишем свой модуль который будет генерировать фиксированный заголовок Ethernet перед каждыми N (например 1500) байтами полезных данных и высылать по AXI-stream.

4. На PC запускаем простейшую программку под Linux принимающую все это через raw socket и далее можно делать что душе угодно - хоть в файл, хоть в UDP, хоть в TCP.

На все - день работы.

Все усложнения (микроблейз например) должны ясно следовать из условий ТЗ, ну или если поиграться хочется и бюджет есть :)

А вы же работали на KC705, если я правильно прочитал пост, разве нет? Поэтому и уточнил, что я на ней же работаю.

 

По пройденной работе на данный момент:

Изменил структуру внутреннюю, а именно по сигналу с кнопки у меня выставляется адрес, данные (проверил через chipscope), WrReq (для запуска state machine), выставил mst_go (он на такт выставляется, потом сбарсывается), обозначил длину через '1'. Но на выходе не формируется сигнала Valid и соответственно сигнала Ready. Светодиод не загорается. И ничего не происходит. Приложу заодно скрины что ли

 

 

CS_wr_1_after_but_with_AXI_Inter_with_wr_ack_2.jpg

 

XPS.jpg

 

Edited by TimeToSleep

Share this post


Link to post
Share on other sites
1) В каком плане конвертирует канал записи? То, что я описал выше ("...напрямую посылаю сигнала на IP2Bus, то это уже означает, что по адресу должны...") это относится к этому?

 

2) Эм. А где этот готовый пример? :)

 

3) А почему неизвестно, если я в XPS подключил его к одной и той же шине AXI, и знаю адреса этих gpio?

 

1. По монстрам Bus2IP и IP2Bus я Вам уже не помогу - последний раз работал в ними года 3 назад и уже все забыл.

 

2. Vivado -> Tools -> "Create and package IP" -> и Next, Next, Next... :-)

 

3. Вам известно, а нам нет. Вы кажется даже не писали, что он к GPIO подключен.

 

Далее, на приложенной картинке в видимом времени транзакции на шине AXI нет от слова вообще.

Да и зачем вам 2 шины? Куда проще своим мастером писать в память видимую Microblaze и смотреть записалось ли.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this