|
Использование выводов LOAN IO на Altera SoC Cyclone V |
|
|
|
Mar 5 2015, 11:16
|
Знающий
   
Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559

|
Всем привет! Разбираюсь с работой LOAN IO на своей плате. Задача - поморгать светодиодом посредством вывода HPS LOANIO. Собрал систему с HPS, NIOS II и PIO. У HPS сконфигурировал вывод LOANIO 48. Выход LOANIO 48 подключен к выводу PIO. PIO также подключен к обычному выводу FPGA. HPS стартует с SD карты, на карту записан spl загрузчик. После подачи питания, HPS выполняет spl загрузчик (выводится информация в консоль). Далее я прошиваю FPGA и запускаю в режиме отладки программу, которая переключает состояние вывода PIO. На отладке вижу, что светодиод который подключен к обычному выводу переключается, а светодиод подключенный к LOANIO 48 не меняет своё состояние (горит постоянно). Возможно я что-то пропустил? Прикладываю гланвый модуль проекта. Вырезал ненужное: Код module fpga (
//loaner IOs inout hps_gpio_LOANIO48,
// FPGA // clock and reset input fpga_clk_25, input fpga_reset_n,
// pio output fpga_pio );
// wire instances of the 3 loan IO buses from Qsys instance wire [66:0] loan_io_in; wire [66:0] loan_io_out; wire [66:0] loan_io_oe;
// loan_io // cpu_led assign loan_io_out[48] = led_export; assign loan_io_in[48] = 1'b0; assign loan_io_oe[48] = 1'b1; assign fpga_pio = led_export;
altpll_dev u0 ( .rst (~fpga_reset_n), .refclk (fpga_clk_25), .outclk_0 (pll_clk_50), .locked (pll_locked) );
soc_system u1 ( // HPS .hps_io_hps_io_gpio_inst_LOANIO48 (hps_gpio_LOANIO48),
.hps_loan_io_in (loan_io_in), .hps_loan_io_out (loan_io_out), .hps_loan_io_oe (loan_io_oe),
// FPGA .clk_50_clk (pll_clk_50), .reset_50_reset_n (pll_locked), .led_export (led_export), ); endmodule //fpga
|
|
|
|
|
Mar 5 2015, 14:35
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Подозреваю, что кроме spl необходим убут.
P.S. Остаются неясные для меня моменты - что делает с HPS spl, когда не находит убут или приложение. Где все таки конфигурируются выводы HPS - в spl или в убуте. Убут нужен для линукса. Bare metal приложение требует только spl. Ноги конфигурируются в spl (pinmux). То, что он рассказывает в терминал что-то, еще не значит что все хорошо - у меня было такое, что в терминал выводится, а что-то конкретное не работало. 1 раз было, что spl не знал про qspi контроллер, а другой - конфликт на ноге, которая нужна интерфейсу. Ну вы мои темы видели про эти проблемы Я вот только не понял, у вас программа в ниосе, которая управляет светодиодом или в hps? Если используете дефолтную ногу проца, то подозреваю, что в проце. Вы ее по jtag заливаете или она у вас на sd карте рядом с preloader'ом лежит?
|
|
|
|
|
Mar 5 2015, 18:18
|
Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 10-12-04
Из: spb
Пользователь №: 1 435

|
Ножками HPS рулить со стороны FPGA можно! У меня так сделано. В выше выложенном коде явных ошибок не нащёл. led_export подключен к HPS, а не как написано к НИОСу. Только у меня имена длиннее и везде присутствует "wire". ... inout wire hps_io_hps_io_gpio_inst_LOANIO49, ... sopc_0 sopc_0_inst ( // это HPS
.hps_io_hps_io_gpio_inst_LOANIO49 (hps_io_hps_io_gpio_inst_LOANIO49),
.hps_0_h2f_loan_io_in (loan_in), // <-- [66:0] Connect to FPGA logic .hps_0_h2f_loan_io_out (loan_out), // <-- [66:0] Connect to FPGA logic .hps_0_h2f_loan_io_oe (loan_oe) // <-- [66:0] Connect to FPGA logic If '1' , then it is an output );
wire [66:0] loan_in,loan_out,loan_oe;
assign loan_oe[49] = 1'b1; assign loan_out[49] = MigSveto[25];
В qsys в hps в пинах должна быть нажата кнопка LOANIOxx , где хх ваш пин.
|
|
|
|
|
Mar 5 2015, 20:20
|
Знающий
   
Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559

|
Цитата(serjj @ Mar 5 2015, 20:10)  У меня сильное предчувствие, что здесь что-то не так. Разве можно ножками HPS рулить со стороны FPGA? Вы можете переназначить некоторые интерфейсы что бы HPS использовал ножки FPGA. Но насколько мне известно обратная операция недопустима. Единственное исключение - SDRAM bridge, но и то он даёт только интерфейс к контроллеру памяти, который находится в HPS.
Выложите плиз qsys файл, тут нужно глядеть настройки HPS компонента и как там что соединено. Завтра на работе прикреплю tvcam, у меня примерно также: soc_system u1 () // система в QSYS содержит в себе ниос и hps .led_export (led_export), // Это выход из системы с NIOS assign loan_io_out[48] = led_export; // соединяем с выводом led_export которым управляет NIOS II assign loan_io_in[48] = 1'b0; assign loan_io_oe[48] = 1'b1; // Конфигурируем на выход assign fpga_pio = led_export; // led_export - дополнительно выводим на обычный вывод FPGA кнопка LOANIO48 нажата. tvcam, с чего у Вас грузится hps? P.S. Попробую явно объявить wire.
|
|
|
|
|
Mar 6 2015, 07:36
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Завтра на работе прикреплю Ждём  мне уже стало интересно, не думал, что можно к ногам HPS из FPGA залезть. Цитата это осталось последней проблеммой для сдачи заказа к которой я не притрагивался, пока грузится прямо из компьютера из DS-5 Ох зря не притрагивались, там столько подводных камней... Если будут проблемы с этим пишите в личку, в январе много с этим ковырялся, получил пару рабочих конфигураций.
|
|
|
|
|
Mar 6 2015, 08:29
|
Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 10-12-04
Из: spb
Пользователь №: 1 435

|
serjj, Вот по этому и не притрагивался , уверен что там много подводных камней. Спасибо за предложение, воспользуюсь. Я и так пол года осваивал этот HPS. В конце концов мне он надоел со своими глюками и не мерянным софтом. К примеру чтобы заработал RS232 нужно скомпилировать в СИ 1000 строк, подключить кучу .h файлов, чума. Вот тут меня достало и я завёл нужные мне ноги RS232, SPI и Ethernet от HPS прямо в FPGA, а там на шине авалон работают проверенные блоки, а HPS использую как NIOS. Да, только на эти ноги невозможно положить констрейны, он не знает время от триггера FPGA до Пина HPS, и там только простые входы и выходы (нет триггеров в пинах).
|
|
|
|
|
Mar 6 2015, 08:52
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата В конце концов мне он надоел со своими глюками и не мерянным софтом. К примеру чтобы заработал RS232 нужно скомпилировать в СИ 1000 строк, подключить кучу .h файлов, чума. Вот тут меня достало и я завёл нужные мне ноги RS232, SPI и Ethernet от HPS прямо в FPGA, а там на шине авалон работают проверенные блоки, а HPS использую как NIOS. Ну RS232 в hwlib есть, так что должно быть все норм. Я из hwlib пробовал qspi, timer, nand, watchdog, mmu. Всё работает, пару раз только нужно было кое что ручками править в исходниках. Проблема с тем, чего нет в hwlib. Вот например EMAC. Я начинал разбираться с драйвером для этого дела, пока получилось только достучаться до контроллера и до физики через MDIO. За основу брал линуксовый драйвер для designware с выкидыванием кучи лишнего. Обмен я так и не поднял, переключился на более нужные задачи и оставил все это до лучших времен. Там нужно с DMA заморачиваться и с динамическим выделением памяти, на этом мой непрограммистский мозг устал и я пошел на верилоге писать  .
|
|
|
|
|
Mar 6 2015, 13:12
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Ну я не знаю! 2 варианта - попробуйте перейти на 14.1 квартус или еще вот есть на альтере описание одной фичи
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|