芯路恒电子技术论坛

 找回密码
 立即注册

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

热搜: 合集
查看: 173|回复: 1

【zynq课程笔记】【AC880】【裸机】【第21课 】【基于VDMA的RGB TFT显示】

[复制链接]

该用户从未签到

108

主题

52

回帖

1972

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1972
发表于 2026-2-10 10:28:45 | 显示全部楼层 |阅读模式
ZYNQ核配置流程
1、根据开发板上内存容量配置好DDR3型号,选择MT41K256M16(单片512MB),后缀任意,位宽根据硬件结构选择16bit(1片)或32bit(2片)
2、配置好MIO的电压,将Bank1的切换为1.8V
3、如需要将程序固化到QSPI,请打开QSPI控制器,管脚选择MIO1~MIO6
4、如需将程序固化到SD卡,请打开SD0控制器,管脚选择MIO40-MIO45
5、如需使用串口打印调试信息,请使能UART1,管脚选择MIO48和MIO49
6、如需通过PS给PL提供时钟,配置PL Fabric Clocks中的时钟频率和个数
7、如需通过AXI-Lite读写FPGA侧的逻辑,使能PS-PL Configuration中的GP Master AXI Interface
8、如需使用FPGA获取PS侧存储器中的内容,使能PS-PL Configuration中的HP Slave AXI Interface
9、更多内容,根据自己需求配置



本系统用到2路时钟,一路给AXI总线使用,用来完成各个外设的寄存器读写,以及VDMA读取PS的DDR3使用。另一路给显示时序生成器和同步器使用,并输出给TFT显示屏作为像素时钟。

RGB TFT管脚信息约束内容
  1. <blockquote>
复制代码


RGB888转RGB565代码

  1. module rgb888to565(
  2.         input [23:0]rgb888_data,
  3.         output [15:0]rgb565_data
  4. );
  5.         wire [4:0]r_data;
  6.         wire [5:0]g_data;
  7.         wire [4:0]b_data;

  8.         assign r_data = rgb888_data[23:19];
  9.         assign g_data = rgb888_data[15:10];
  10.         assign b_data = rgb888_data[ 7:3];

  11.         assign rgb565_data = {r_data,g_data,b_data};

  12. endmodule
复制代码



SDK中软件C代码

  1. #include "xparameters.h"
  2. #include "xaxivdma.h"
  3. #include "xvtc.h"
  4. #include "xil_cache.h"
  5. #include "pic0.h"

  6. int run_triple_frame_buffer(XAxiVdma* InstancePtr, int DeviceId, int hsize,
  7.                 int vsize, int buf_base_addr, int number_frame_count,
  8.                 int enable_frm_cnt_intr);

  9. unsigned int srcBuffer = (XPAR_PS7_DDR_0_S_AXI_BASEADDR + 0x1000000);

  10. void Vtc_Init(XVtc *Vtc_Inst)
  11. {
  12.         XVtc_Config *vtcConfig;
  13.         vtcConfig = XVtc_LookupConfig(XPAR_VTC_0_DEVICE_ID);
  14.         XVtc_CfgInitialize(Vtc_Inst, vtcConfig, vtcConfig->BaseAddress);
  15. }

  16. //显示图片
  17. void Pic_Display(uint8_t *frame,const uint8_t *Pic)
  18. {
  19.         uint16_t width,height;
  20.         uint16_t x_pos, y_pos;
  21.         uint16_t x_max, y_max;
  22.         uint32_t stride_mm = 0;
  23.         uint32_t stride_pic = 8;
  24.         uint16_t Cnt = 0;

  25.         width = (Pic[2]<<8) + Pic[3];//读取图片宽度
  26.         height = (Pic[4]<<8) + Pic[5];//读取图片高度

  27.         if(width < 800)
  28.                 x_max = width;
  29.         else
  30.                 x_max = 800;

  31.         if(height < 480)
  32.                 y_max = height;
  33.         else
  34.                 y_max = 480;

  35.         for(y_pos=0;y_pos<y_max;y_pos++)
  36.         {
  37.                 for(x_pos=0;x_pos<x_max;x_pos++)
  38.                 {
  39.                         frame[stride_mm + Cnt] =  Pic[stride_pic + Cnt];
  40.                         frame[stride_mm + Cnt + 1] = Pic[stride_pic + Cnt + 1];
  41.                         frame[stride_mm + Cnt + 2] = Pic[stride_pic + Cnt + 2];
  42.                         Cnt+=3;
  43.                 }
  44.                 stride_mm += 800*3;
  45.                 stride_pic += width*3;
  46.                 Cnt = 0;
  47.         }

  48.         //刷新Cache,更新图像
  49.         Xil_DCacheFlush();
  50. }

  51. int main(void)
  52. {
  53.         XAxiVdma Vdma_Inst;
  54.         XVtc Vtc_Inst;

  55.         //清空Buffer
  56.         memset((uint8_t*)srcBuffer,0x00,800*480*3);

  57.         run_triple_frame_buffer(&Vdma_Inst, 0, 800, 480,srcBuffer, 0, 0);

  58.         Vtc_Init(&Vtc_Inst);

  59.         XVtc_EnableGenerator(&Vtc_Inst);

  60.         Pic_Display((uint8_t*)srcBuffer,gImage_pic0);

  61.         return 0;
  62. }

复制代码


图片数据文件: pic0.rar (845.25 KB, 下载次数: 34)
回复

使用道具 举报

该用户从未签到

108

主题

52

回帖

1972

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1972
 楼主| 发表于 2026-2-10 10:32:11 | 显示全部楼层

随堂源码工程
VDMA_RGBTFT.rar (9.95 MB, 下载次数: 46)


pg044_v_axis_vid_out.pdf (1.07 MB, 下载次数: 39)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2026-2-25 08:33 , Processed in 0.052564 second(s), 37 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表