Azatot
Участник-
Постов
108 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Azatot
-
Звание
Частый гость
- День рождения 13.06.1986
Контакты
-
Сайт
Array
Информация
-
Город
Array
-
Xilinx Platform Studio отвечает за ARM ядро, которое Вы не добавляете(об этом как раз и варнинг). А Вы меняете конфигурацию логики. Вам надо добавлять свою "мигалку" к имеющейся прошивке логики. Но что бы это все работало вместе с ARM ядром и грузилось из памяти необходимо будет менять и загрузчик ARMа.
-
Да, учтено. Тем более, что GPIO пины должны работать без этих ухищрений.
-
Zynq SPI через EMIO
Azatot опубликовал тема в Системы на ПЛИС - System on a Programmable Chip (SoPC)
Всем доброго времени суток! Имеется плата ZC706. Хочу вывести сигналы SPI через EMIO пины (привязанные к логике). SPI1 запустил через MIO, все работает. SPI0 завел через EMIO, не работает. Попробовал просто GPIO вывести через EMIO к LEDам, подключенным к логике, тоже не работает. Использую ISE 14.7+EDK. В ISE подключаю ARM, назначаю пины EMIO, заливаю в плисовую часть. В SDK запускаю программу ARMa. И не работает. В интернете примеры все через Vivado, но ее нет(точнее лицензии нет :laughing:). Может кто встречался с таким и поделится опытом? Заранее благодарю! -
Был бы очень благодарен, если бы могли поднять проект. Просто примеров на плату у меня не было, а найти рабочий не получается.
-
Serhiy_UA А Вы бы не могли поделиться этим проектом, если, конечно есть такая возможность. Я бы попробовал проц в Qsys открыть и посмотреть что куда идет. Да и ethernet софт на Ниос тоже пригодился бы.
-
Да что то не понятно мне. Пишу: for(i=0;i<20;i++) { IOWR_16DIRECT(LAN_BASE_ADDRESS+0xE, 14, 0x0003); reg[i]=IORD_16DIRECT(LAN_BASE_ADDRESS+i, 14); } Хочу записывая один регистр, посмотреть, что в других, включая и записанный. В reg[] после выхода из for какая то ерунда лежит. В том числе и в BASE_ADR+0xA. Пишу: IOWR_16DIRECT(LAN_BASE_ADDRESS+0xE, 14, 0x0003); reg2=IORD_16DIRECT(LAN_BASE_ADDRESS+0xA, 14); IOWR_16DIRECT(LAN_BASE_ADDRESS+0xE, 14, 0x0003); reg3=IORD_16DIRECT(LAN_BASE_ADDRESS+0xB, 14); IOWR_16DIRECT(LAN_BASE_ADDRESS+0xE, 14, 0x0003); reg4=IORD_16DIRECT(LAN_BASE_ADDRESS+0xC, 14); IOWR_16DIRECT(LAN_BASE_ADDRESS+0xE, 14, 0x0003); reg5=IORD_16DIRECT(LAN_BASE_ADDRESS+0xD, 14); Так же, по идее, как и с for, но в результате выдает: reg2=0х3 reg3=0х300 reg4=0х3 reg5=0х0
-
Попробовал так. Подключил, как написано, пишу 0х0003, читаю 0х3. Ради интереса записал 0х0007 и 0х0123, прочитал 0х7 и 0х123. По моему, не работает. А ссылку не кинете на тему альтеровского форума откуда взяли этот текст?
-
Беру из вкладки HDL Example Qsys'а (в VHDL): component Nios1_proc is port ( clk_0 : in std_logic := 'X'; -- clk reset_n : in std_logic := 'X'; -- reset_n out_port_from_the_pio_0 : out std_logic_vector(7 downto 0); -- export tri_state_bridge_0_bridge_0_out_select_n_to_the_cfi_flash_0 : inout std_logic_vector(0 downto 0) := (others => 'X'); -- select_n_to_the_cfi_flash_0 tri_state_bridge_0_bridge_0_out_write_n_to_the_cfi_flash_0 : inout std_logic_vector(0 downto 0) := (others => 'X'); -- write_n_to_the_cfi_flash_0 tri_state_bridge_0_bridge_0_out_read_n_to_the_cfi_flash_0 : inout std_logic_vector(0 downto 0) := (others => 'X'); -- read_n_to_the_cfi_flash_0 tri_state_bridge_0_bridge_0_out_data_to_and_from_the_cfi_flash_0 : inout std_logic_vector(7 downto 0) := (others => 'X'); -- data_to_and_from_the_cfi_flash_0 tri_state_bridge_0_bridge_0_out_address_to_the_cfi_flash_0 : inout std_logic_vector(23 downto 0) := (others => 'X'); -- address_to_the_cfi_flash_0 tristate_conduit_bridge_0_out_tcm_byteenable_n_out : inout std_logic_vector(3 downto 0) := (others => 'X'); -- tcm_byteenable_n_out tristate_conduit_bridge_0_out_tcm_irq_in_in : in std_logic_vector(0 downto 0) := (others => 'X'); -- tcm_irq_in_in tristate_conduit_bridge_0_out_tcm_data_out : inout std_logic_vector(31 downto 0) := (others => 'X'); -- tcm_data_out tristate_conduit_bridge_0_out_tcm_write_n_out : inout std_logic_vector(0 downto 0) := (others => 'X'); -- tcm_write_n_out tristate_conduit_bridge_0_out_tcm_reset_out : inout std_logic_vector(0 downto 0) := (others => 'X'); -- tcm_reset_out tristate_conduit_bridge_0_out_tcm_chipselect_n_out : inout std_logic_vector(0 downto 0) := (others => 'X'); -- tcm_chipselect_n_out tristate_conduit_bridge_0_out_tcm_address_out : inout std_logic_vector(15 downto 0) := (others => 'X'); -- tcm_address_out tristate_conduit_bridge_0_out_tcm_read_n_out : inout std_logic_vector(0 downto 0) := (others => 'X') -- tcm_read_n_out );
-
Хорошо, поменяю. Меня это тоже насторожило, но подумал раз Qsys так генерит, значит так и надо. LAN_AEn[0] я ввел, когда cs вывел из компонента. А сейчас на ADR[0] подключено, поэтому LAN_AEn[0] остался голый. Эти пины подключены к ногам ПЛИС, которые являются GND ногами. Смотрю осциллографом: WR и RD оба в 0 лежат. По адресной шине что то проскакивает. На данных вообще пила какая то. AEn в третьем состоянии будто бы.
-
Так Qsys сгенерировал. В файле, что я выложил, эти сигналы идут от Nios к выводам FPGA: LAN_data LAN_adr LAN_byte LAN_read LAN_irq LAN_AEn LAN_write Остальные ноги LAN: LAN_RDYRTN<='1'; LAN_CYCLE<='1'; LAN_VLBUS<='1'; LAN_LCLK<='1'; Эти ноги LAN сидят на жесткую (либо земля, либо питание): DATA_CS<='1'; IOCHRDY<='1'; LDEV<='0'; SRDY<='0'; W_R_N<='1';
-
Даже не в 1, а TriState. В приложении. PIN.txt
-
Да тут похоже, всетаки с сигналами что то не так. AEN и на ADR0 вешал и CS на выводил. Потом смотрю осциллографом AEN, а он как стоит в 1, так и не шелохнется.
-
Да, похоже, что не работает и макросами, либо я что то не так делаю. Через указатель пишу, потом читаю, во вкладке Variables в переменной reg показывает то, что писал. А в lan_reg (откуда считываю) всеравно лежит FF.
-
А Nios точно должен распознать LAN, как память и видеть, что в регистрах через вкладку Memory в Eclipse? Там все время FF, а если пишу через IOWR_ALTERA_AVALON_LAN91C111_BSR, а потом читаю IORD_ALTERA_AVALON_LAN91C111_BSR, то в переменной лежит, то что писал. Но, может это и не работает на самом деле.
-
Просто, тогда странно, что делать с ADDR0.