0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PYNQ-Z1でVideo Series 23: Generate a video output on Pynq-Z2 HDMI outを行った際のつまづき

Posted at

内容

PYNQ-Z1にてPYNQ-Z2のチュートリアルである
Video Series 23: Generate a video output on Pynq-Z2 HDMI outを行う。
bitstreamまで完了、Vitisでのコンパイル、ボードへの書き込みも問題なし。
しかしながら、一向に画面が表示されない。
改善したので備忘録です。

環境

Ubuntu 22.04.4 LTS
vivado 2023.2
vitis IDE 2023.2.0

チュートリアルからの変更点

vivado

チュートリアル通りにブロック配置、配線を行う。

・VTC、VPG解像度の変更 800x600→1280x720
・その他 FCLK1周波数 40MHzから74.25MHzに変更する(実際は76.923となった)

vitis

helloworld.c
vpg初期化に加えて、vtc初期化を追加した

helloworld.c

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xv_tpg.h"
#include "xvtc.h"

XV_tpg tpg_inst;
XVtc VtcInst;
int Status;

int main()
{
    init_platform();

    print("Hello World\n\r");

    /* TPG Initialization */
    Status = XV_tpg_Initialize(&tpg_inst, XPAR_V_TPG_0_DEVICE_ID);
    if(Status != XST_SUCCESS)
    {
        xil_printf("TPG configuration failed\r\n");
        return(XST_FAILURE);
    }

    // Set Resolution to 1280x720
    XV_tpg_Set_height(&tpg_inst, 720);
    XV_tpg_Set_width(&tpg_inst, 1280);

    // Set Color Space to RGB
    XV_tpg_Set_colorFormat(&tpg_inst, 0x0);

    // Set pattern to color bar
    XV_tpg_Set_bckgndId(&tpg_inst, XTPG_BKGND_COLOR_BARS);

    // Start the TPG
    XV_tpg_EnableAutoRestart(&tpg_inst);
    XV_tpg_Start(&tpg_inst);
    xil_printf("TPG started!\r\n");

    /* VTC Initialization */
    XVtc_Config *VtcCfg;
    VtcCfg = XVtc_LookupConfig(XPAR_VTC_0_DEVICE_ID);
    if (NULL == VtcCfg) {
        xil_printf("VTC LookupConfig failed\r\n");
        return(XST_FAILURE);
    }

    Status = XVtc_CfgInitialize(&VtcInst, VtcCfg, VtcCfg->BaseAddress);
    if (Status != XST_SUCCESS) {
        xil_printf("VTC CfgInitialize failed\r\n");
        return(XST_FAILURE);
    }

    XVtc_Timing Timing;

    // Configure timing parameters for 1280x720 resolution
    Timing.HActiveVideo = 1280;  // Horizontal Active Video Size
    Timing.HFrontPorch = 110;    // Horizontal Front Porch
    Timing.HSyncWidth = 40;      // Horizontal Sync Width
    Timing.HBackPorch = 220;     // Horizontal Back Porch
    Timing.HSyncPolarity = 1;    // Horizontal Sync Polarity

    Timing.VActiveVideo = 720;   // Vertical Active Video Size
    Timing.VFrontPorch = 5;      // Vertical Front Porch
    Timing.VSyncWidth = 5;       // Vertical Sync Width
    Timing.VBackPorch = 20;      // Vertical Back Porch
    Timing.VSyncPolarity = 1;    // Vertical Sync Polarity

    XVtc_SetGeneratorTiming(&VtcInst, &Timing);
    XVtc_EnableGenerator(&VtcInst);
    xil_printf("VTC started!\r\n");

    /* End of TPG and VTC code */

    cleanup_platform();
    return 0;
}

最後に

何度もVivadoでbitstream、Vitisでコンパイルを繰り返しました。。。
FPGA敷居が高いです。

参考

vtc.writeが参考になりました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?