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

Zynq 7000 управлять ножкой ПЛИС используя Verilog

Что-ж, по советам сделал новый проект и все заработало. 

То-есть дело было не в коде, не в sdc, а в тонких настройках проекта.

Не факт правда, что правильно все сделал. В новом проекте надо нажимать кнопку Program FPGA (в Xilinx SDK), а потом уже кнопку "Run system Debugger".

Причем понял в чем был косяк в старом проекте. Там было design_1_wrapper_hw_platform_0 и  design_1_wrapper_hw_platform_1 . По умолчанию выбирался не тот, что требуется wrapper. Если поставить правильный wrapper, то мой код на Verilog начинает работать. Я так и не понял почему их два и как выбирать в какой пишет Vivado. 

Ладно, спишем все на "хаос при тыканье кнопочек", который возникает у любого новичка.

 

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


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

Использовать AXI GPIO и код на Си

#include <stdio.h>
#include "xparameters.h"
#include "xil_printf.h"
#include "xgpio.h"

int main() {

    XGpio leds;


    int status;
    volatile int Delay;
    const int LED_DELAY = 10000000;

    // initialize GPIO driver for LEDs and RGB LEDs
    // Both are connected to GPIO1 in the design as dual channel
    print("Initializing LEDs & RGB LEDs\n");
    status = XGpio_Initialize(&leds, XPAR_AXI_GPIO_0_DEVICE_ID);
    if (status != XST_SUCCESS) { return XST_FAILURE; }

    // set the direction to outputs for both LEDs and RGB LEDs
    XGpio_SetDataDirection(&leds, 1, 0x0); // Channel 1


    // set initial LED outputs to low
    XGpio_DiscreteWrite(&leds, 1, 0x0);


    while(1) {


        // Blink the LEDs (there are 4 of them)
        for (int i = 0; i < 16; i++)  {
            XGpio_DiscreteWrite(&leds, 1, i);
            for (Delay = 0; Delay < LED_DELAY/2; Delay++);
        }
        XGpio_DiscreteClear(&leds, 1, 0xFF);

    }
}
 

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

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


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

41 minutes ago, ovn said:

Использовать AXI GPIO и код на Си

 

Попробую объяснить. Есть у меня дисплейчики 480x320 с ILI9481 и параллельным дисплеем, которые я давно и успешно использую в разных железках.

Вот буду прикручивать к Zynq. Естественно хочется FPGA часть задействовать и не напрягать ARM часть пересылкой картинок на дисплей. Пока научился использовать AXI Lite. На очереди AXI Stream и DMA.

DSCN1457.JPG.cf5596dc4397f41d8b3686be8f8ec86c.JPG

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


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

Вот я экранчиком SSD1306 на Zynq 7000 управлял, всё на Си, FPGA там так и так будет использована.

IMG_20200907_154156.jpg

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

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


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

21 minutes ago, ovn said:

Вот я экранчиком SSD1306 на Zynq 7000

Для того, чтобы управлять таким экранчиком достаточно STM32F0, хотя лично мне больше нравятся дисплейчики от старых телефонов для мелочевки.

Zynq нужен для быстрых ADC, гигабитного Ethernet и других плюшек. Смысл использовать Zynq в вышеозвученным вами режиме? Под какую задачу? Если использовать как ARM процессор, то лично мне больше нравится либо STM32H750 либо Allwinner V3S.

DSCN1459.JPG.d5b50c780307460ae71f775bf6682f33.JPG

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


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

3 минуты назад, Balmer сказал:

Для того, чтобы управлять таким экранчиком достаточно STM32F0, хотя лично мне больше нравятся дисплейчики от старых телефонов для мелочевки.

Zynq нужен для быстрых ADC, гигабитного Ethernet и других плюшек. Смысл использовать Zynq в вышеозвученным вами режиме? Под какую задачу? Если использовать как ARM процессор, то лично мне больше нравится либо STM32H750 либо Allwinner V3S.

DSCN1459.JPG.d5b50c780307460ae71f775bf6682f33.JPG

Учебная задача, отработка SPI и I2C, просто посложнее чем на STM32 и т.п., библиотек нет. Вы вопрос задали, как моргнуть светодиодом на zynq 7000, я ответил. В Си лезть придётся,   zynq это больше SoC а не ПЛИС.

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


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

26 minutes ago, ovn said:

Учебная задача, отработка SPI и I2C, просто посложнее чем на STM32 и т.п., библиотек нет. Вы вопрос задали, как моргнуть светодиодом на zynq 7000, я ответил. В Си лезть придётся,   zynq это больше SoC а не ПЛИС.

Да, отлично всё. Вопрос только другой был. См. первый пост:

Купил отладку - стандартные сэмплы на ней запускаются отлично (Blink LED, Ethernet, Mem test).

Но вот застопорился на совсем простой вещи - управлении ножкой FPGA из PL части.

 

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


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

1 час назад, Balmer сказал:

Да, отлично всё. Вопрос только другой был. См. первый пост:

Купил отладку - стандартные сэмплы на ней запускаются отлично (Blink LED, Ethernet, Mem test).

Но вот застопорился на совсем простой вещи - управлении ножкой FPGA из PL части.

 

https://www.jianshu.com/p/b83c663ecaaa

Вот пример пошагово светодиодами моргают на верилоге в zynq 7000, главное выводы назначить, запись во флешь можно упустить, запуская из под JTAG.

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

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


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

Встретился как-то эмбеддед программист и ФПГА девелопер, и начался у них холивар, не на жизнь, а на КЗ...

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


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

1 hour ago, ovn said:

Вот пример пошагово светодиодами моргают на верилоге в zynq 7000, главное выводы назначить, запись во флешь можно упустить, запуская из под JTAG.

 

Дык это, работает у меня всё. Три дня уже как работает.

См сообщение в начале второй странице. "Что-ж, по советам сделал новый проект и все заработало. "

Я жеж уже и на Verilog помигал, и AXI lite воспользовался для общения FPGA<>ARM. Набил шишек при создании IP блоков (кстати так и не нашел, где ревизия меняется).

Всё в Vivado достаточно разумно и понятно. Теперь надо научиться замерять максимальную частоту дизайна и радоваться, насколько Zynq быстрее, чем Cyclone IV работает.

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


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

1 hour ago, Balmer said:

(кстати так и не нашел, где ревизия меняется)

Лучше не менять. Она если нужно автоматом сама изменится, когда переходите на Edit in IP Packager через интерфейс BD. Иначе только заново создавать. Я как-то пробовал вручную поменять, так сломал весь IP блок :smile:

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


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

ну и в качестве офтопа мигать можно мимо драйвера AXI GPIO обращаясь непосредственно к регистрам блока https://stackoverflow.com/questions/29576636/use-of-xil-out32-in-xilinx-sdk

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


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

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

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

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

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

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

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

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

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

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