akorud 0 21 июня, 2013 Опубликовано 21 июня, 2013 · Жалоба спасибо, у меня 32р. сделал Bus2IP_BE все единицы. в mst_reg все записал, правда кроме 15. и как раз проблемы с mst_go. mst_go в 1 не могу сделать. делаю Bus2IP_Data в старшем байте = X"0A" при mst_byte_we(GO_BYTE_LANE) = '1' и ничего. ? А чем вы его смотрите? Если микроблейз - то и не увидите, т.к. он устанавливается только на один цикл и сам сбрасывается. Смотреть на регистр статуса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 24 июня, 2013 Опубликовано 24 июня, 2013 (изменено) · Жалоба Да я что-то уже путаюсь. Мне кажется что топикстартер где то еще что-то подобное уже обсуждал, а может это кто-то другой. То есть задача раскинута по нескольким топикам, или я ошибаюсь... да, я начал обсуждение на первый вариант. там не получилось сделать. но потом нашел уже начатое обсуждение здесь. если кто-то подскажет почему, буду очень признателен. Если есть данные которые надо просто передать по езернету, и скорость входа их меньше, то естественно тут даже микроблайз по хорошему не нужен. Но что-то мне подсказывает что когда говорят езернет, то имеют ввиду чтобы в компьютер включить и в виндусе получить. А это уже значит 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 смотрю. и хочу увидеть запуск чтения из фифо. Изменено 24 июня, 2013 пользователем serg_k1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 24 июня, 2013 Опубликовано 24 июня, 2013 · Жалоба Как то все очень запутано - кажется ТС пробует "объять необъятное" причем все и сразу. скорость менее 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. На все - день работы. Все усложнения (микроблейз например) должны ясно следовать из условий ТЗ, ну или если поиграться хочется и бюджет есть :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 24 июня, 2013 Опубликовано 24 июня, 2013 · Жалоба Как то все очень запутано - кажется ТС пробует "объять необъятное" причем все и сразу. Я бы сделал (и уже делал) так: 1. берем IP Ethernet стандартный. У него вход данных AXI-stream, проще некуда; я нашел только Tri_mod_Eth с AXI-stream и в нем там масса модулей...? и если это он , то можно поподробней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 24 июня, 2013 Опубликовано 24 июня, 2013 · Жалоба я нашел только 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 ); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 25 июня, 2013 Опубликовано 25 июня, 2013 (изменено) · Жалоба Да, он. Простой рабочий пример (только на передачу). Сигналы 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 можно писать следующий. Изменено 25 июня, 2013 пользователем serg_k1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 25 июня, 2013 Опубликовано 25 июня, 2013 · Жалоба или это самодостаточный модуль как бы core_eth.v, открываемый из core_eth.xco. с этим вроде бы разобрался. - это модуль , в который уже включена декларация ядра из core_eth.veo. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 25 июня, 2013 Опубликовано 25 июня, 2013 · Жалоба .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 - означает последний байт пакета (устанавливается вами). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flawless2504 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 (изменено) · Жалоба Здравствуйте, 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 направленными то? Изменено 12 февраля, 2016 пользователем TimeToSleep Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flawless2504 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 (изменено) · Жалоба Зачем ДМА? Зачем 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. Поэтому не понимаю в чем проблема может быть :( Прошу вас попытаться помочь с данными проблемами Изменено 12 февраля, 2016 пользователем TimeToSleep Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 13 февраля, 2016 Опубликовано 13 февраля, 2016 · Жалоба Но сигналы Valid и Ready относятся к топовому модулю axi_master.vhdl Если используется Bus2IP i IP2Bus то о AXI вам, в общем случае, знать не нужно и напрямую управлять ее сигналами тоже. IP2Bus конвертирует канал записи AXI master в "локальную шину", которая по задумке программистов Xilinx проще для понимания. Но они сами уже отказались от таких странностей и в Vivado все куда проще. Готовый пример AXI master по внешнему сигналу (ваша кнопка) пишет заданные данные по заданному адресу. А зажжется ли светодиод - никто вам не скажет, так как неизвестно как и куда он подключен. По второму вопросу ничем помочь не могу, так как не помню использовал ли Chipscope в системах с Microblaze и уж точно не использовал платы KC705. Да, очень рекомендую пройти Lab 4 из UG940 - вот прямо в режиме "делай раз, делай два" :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flawless2504 0 17 февраля, 2016 Опубликовано 17 февраля, 2016 · Жалоба Если используется 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 перенести. Большое спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flawless2504 0 18 февраля, 2016 Опубликовано 18 февраля, 2016 · Жалоба 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flawless2504 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 (изменено) · Жалоба Я бы сделал (и уже делал) так: 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. Светодиод не загорается. И ничего не происходит. Приложу заодно скрины что ли Изменено 19 февраля, 2016 пользователем TimeToSleep Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 22 февраля, 2016 Опубликовано 22 февраля, 2016 · Жалоба 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 и смотреть записалось ли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться