Balmer 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Добрый день. Совсем я новичок в Xilinx устройствах (до этого только Cyclone IV использовал). Решил попробовать Zynq 7000. Купил отладку - стандартные сэмплы на ней запускаются отлично (Blink LED, Ethernet, Mem test). Но вот застопорился на совсем простой вещи - управлении ножкой FPGA из PL части. Что я делаю. Взял работающий сэмпл который мигает светодиодом из кода для ARM . В led.xdc файл добавил строчки. set_property IOSTANDARD LVCMOS33 [get_ports GPIO_led] set_property PACKAGE_PIN L17 [get_ports GPIO_led] В top entry добавил соовсем простой код и вывел GPIO_led как output wire в этом модуле. OBUF led_buf( .I(1'b1), .O(GPIO_led)); После синтеза в Schematic этот элемент выглядит тоже логично. Единственная проблема - на ножке всё время логический ноль. Соответственно вопрос - что я делаю не так? PS: Использую Vivado 2019.1 и той-же версии SDK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба А точно не постоянная 1? Часто диоды ставят так, чтобы они зажигались нулем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба А напряжение на банке какое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 (изменено) · Жалоба Точно 0. Я свой диод с резистором подключил. Причем правильно. У ножки, которая корректно работает тоже LVCMOS33 выставлено. set_property IOSTANDARD LVCMOS33 [get_ports {GPIO_0_0_tri_io[0]}] set_property PACKAGE_PIN D19 [get_ports {GPIO_0_0_tri_io[0]}] Причем, если точнее на этой ножке GPIO_led - Hi-Z . Т.е. она ни к чему не подключена получается. Но обрыва на схеме точно нет. Когда схема без программы залитой - светодиод слабо-слабо светится. Видимо Weak Pull-Up работает. В этом состоянии на ножке 3.3 вольта можно намерять. D19 и L17 относятся к одному банку 35. Изменено 24 сентября, 2020 пользователем Balmer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Если Вы новичёк, тогда советую не колупать руками xdc и создать в Block design схему подключения того самого светодиода через GPIO IP, всё это дело коннектится через AXI в PL, где командами можно засветить диод. Там есть ещё нюансы в карте адресов и правильных функциях вывода наружу. На крайний случай попробуйте взять пробный проект от Arty Z7, помнится там есть всё нужное с вводом-выводом. Ну и проект скиньте, так тяжело угадывать где загвоздка. З.Ы. Не бойтесь интерфейсных частей Xilinx, по моему опыту для начального понимания они намного лучше и удобнее Квартусовских. Хотя и тупят безбожно иногда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 32 minutes ago, Nick_K said: Ну и проект скиньте, так тяжело угадывать где загвоздка. Вот ссылка на проект. Использую вот такую плату отладочную xc7z010. Мои изменения в конце файлов design_1_wrapper.v и led.xdc Да, если ничего не получится, то буду пробовать "AXI в PL" - но для меня как для новичка это сложновато. Там сразу несколько "черных ящиков" добавляется. Впрочем, проект кривой скинул. Изменения в design_1_wrapper.v исчезли. Видимо нельзя внутрь этого файла код писать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба PS: Вот, теперь более правильный проект, который попадает на Diagram. Теперь весь код сосредоточен в module my_code2. Впрочем это тривиальный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Вот результат синтеза Вашего проекта. Или где-то косяк в синтезе или в коде ибо подтяжка в '1' никогда не будет мигать. Плюс накручено сложного очень уйма. И ненужного. Как Ethernet модуль, ещё один GPIO модуль... Плюс насколько я вижу, у Вас есть попытки подключиться в Блок дизайне. Увы то что тут сформировано, не будет выходить наружу, пока не будут заданы правильные констрейны пинов. З.Ы. Этот код не является "мигалкой", а делает простую подтяжку в 1: always @(posedge clk) begin led_out_reg <= 1'd1; end Такое чувство, что вы новичёк не только в Xilinx, но и вообще в ПЛИС... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Ну немножко в ПЛИС я понимаю, вот пример моего кода. Накручено много - потому как это стандартный пример. Там сначала добавляется вся аппаратура, а потом уже пишется какой-то код. Ethernet не используется, UART используется только для логов в Си коде. И да, совершенно верно подмечено, этот код не является мигалкой, просто устанавливает единицу на ножку. Только она туда не устанавливается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Окей, значит чувство ошибочно. Но тут есть ещё нюансы, к примеру светодиод может драйвится нулем. Из всех виденных мной плат - это вполне себе распространённое явление для Xilinx. Соответственно, чтобы светилось, нужно подать 0. Второе. Архитектура Zynq построена таким образом, что к PS GPIO имеет доступ только ядро. Если Вы пытаетесь подключить туда PL, Вас ждёт фиаско. По крайней мере у меня так не получилось. К какой именно ноге Вы пытаетесь подключится - я не знаю. Третье. Всё же советую начать с чистого листа. Взять xdc от Вашей платы и прикрутить к пустому проекту. Далее в BD создать всего 2 компонента Run connection automation подключит все нужные порты, останется только в I/O интерфейсе настроить пины, предварительно создав враппер для BD проекта. По сути это всё что нужно для имплементации. Во вкладке Address Editor указаны адреса, по которым нужно стучаться через Xil_In32() функцию в main.c Кстати, если для борды есть board files это очень облегчит работу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Светодиод светится при логической единице. Я его сам подключал к 2.54 мм pin header и точно не ошибся. Более того - проверял напряжение на ножке вольтметром. Подключаю к ножке L17 которая не является PS_MIO (это корпус на 400 выводов). axi_gpio не является простым элементом, но вечером попробую. Кроме того, непонятен такой момент - вот получится у меня управлять ножкой, используя axi_gpio, что дальше делать? Как мне перейти к написанию своего драйвера, который будет полностью в PL части? Хочется всё таки axi изучать отдельно от ногодрыга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Just now, Balmer said: Подключаю к ножке L17 которая не является PS_MIO (это корпус на 400 выводов). Значит не будет работать. Ранее я говорил: PS-ные пины напрямую включены в ядро и подлезть к ним через ПЛИСовую часть невозможно. Посему то, что Вы пытаетесь задать в Верилоге не будет подключено. 2 minutes ago, Balmer said: axi_gpio не является простым элементом, но вечером попробую Для тестов этого достаточно. Далее если придётся работать можно или разобраться как работает AXI протокол и использовать его впроекте (а это лучший вариант и наиболее удобный), либо заказывать платы с нужными подключениями MIO (в дев бордах они обычно не играють большого значения и законнекчены как попало). 9 minutes ago, Balmer said: Кроме того, непонятен такой момент - вот получится у меня управлять ножкой, используя axi_gpio, что дальше делать? Тут тоже 2 варианта: либо учить AXI, что является наиболее правильным вариантом для средних и больших проектов, либо использовать тот же GPIO IP как транслятор между PL и Вашей логикой (там на выходе обычный вектор, который можно подключать куда и как хочется). Честно я второй вариант не проверял но думаю реально пользоваться им. Для первого варианта есть очень удобная функция Custom User IP, которая позволяет создать "враппер" в регистр (AXI-Lite) или в память (AXI) через AXI интерфейс (см. тут и тут). Сие чудо можно колупать как душе угодно и впиливать туда кучу всего нужного. В результате у Вас будет свой модуль, подключённые к PS по проприетарной AXI шине. По ходу во враппере можно разобраться как работает протокол, что для начала не обязательно, так как оно будет работать "из коробки". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balmer 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 (изменено) · Жалоба 16 minutes ago, Nick_K said: Значит не будет работать. Ранее я говорил: PS-ные пины Точно не пропустили НЕ в предложении "Подключаю к ножке L17 которая не является PS_MIO" ?? Если не к L17 подключать, то к какому пину? Вот картинка доступных. Изменено 25 сентября, 2020 пользователем Balmer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба 1 hour ago, Balmer said: Точно не пропустили НЕ в предложении "Подключаю к ножке L17 которая не является PS_MIO" ?? Сори, действительно недосмотрел. Вечером это было, мог уже и не настолько внимательным быть. 1 hour ago, Balmer said: Если не к L17 подключать, то к какому пину? Вот картинка доступных. Да в общем-то к любому из 34-35 банки. Все эти пины для юзера. Хотя лучше глянуть плату, что куда идёт. Для перепроверки засинтезите проект, откройте его и вызовите менеджер Package, там будут разрисованы все доступные пины (обведено оранжевым). Можно проверить что пин не переназначен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KeisN13 6 25 сентября, 2020 Опубликовано 25 сентября, 2020 (изменено) · Жалоба Вот здесь рассказываю как получить несколько примеров/курсов по цинкам Изменено 25 сентября, 2020 пользователем KeisN13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться