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

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

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

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


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

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

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

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

Изменено пользователем serg_k1

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


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

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

 

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

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

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

 

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


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

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

 

 

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

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

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

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


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

я нашел только 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
);

 

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


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

Да, он.

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

Сигналы 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

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


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

или это самодостаточный модуль как бы core_eth.v, открываемый из core_eth.xco.

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

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


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

.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 - означает последний байт пакета (устанавливается вами).

 

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


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

Здравствуйте, 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 направленными то?

Изменено пользователем TimeToSleep

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


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

Зачем ДМА? Зачем 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. Поэтому не понимаю в чем проблема может быть :(

 

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

Изменено пользователем TimeToSleep

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


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

Но сигналы Valid и Ready относятся к топовому модулю axi_master.vhdl

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

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

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

 

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

 

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

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


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

Если используется 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 перенести.

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

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


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

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?

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


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

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

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

 

Изменено пользователем TimeToSleep

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


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

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 и смотреть записалось ли.

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


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

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

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

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

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

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

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

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

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

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