Jump to content

    
Balmer

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

Recommended Posts

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

Использовать 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);

    }
}
 

Edited by ovn

Share this post


Link to post
Share on other sites
41 minutes ago, ovn said:

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

 

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

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

DSCN1457.JPG.cf5596dc4397f41d8b3686be8f8ec86c.JPG

Share this post


Link to post
Share on other sites
21 minutes ago, ovn said:

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

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

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

DSCN1459.JPG.d5b50c780307460ae71f775bf6682f33.JPG

Share this post


Link to post
Share on other sites
3 минуты назад, Balmer сказал:

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

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

DSCN1459.JPG.d5b50c780307460ae71f775bf6682f33.JPG

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

Share this post


Link to post
Share on other sites
26 minutes ago, ovn said:

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

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

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

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

 

Share this post


Link to post
Share on other sites
1 час назад, Balmer сказал:

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

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

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

 

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

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

Edited by ovn

Share this post


Link to post
Share on other sites
1 hour ago, ovn said:

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

 

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

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

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Balmer said:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.