周一(Day5_Mon_Do)

先把Day4_Xia_Wu复制过来(D:\xinhuoliaoyuan2026.7\ZhiZuoBoXing7.21\Day4-Xia_Wu)

 基于那个代码,直接加入新发的这几个代码

D:\xinhuoliaoyuan2026.7\群教程\周末\新一组代码

image

 加入之后大概酱紫

他是在顶层下面有这么几个文件

image

 把这个顶层加入到block design里面(好像要打开design才能出现这个选项?)

image

 OK啊也是加进来了

image


 把VTC(Video Timing Controller)的数据改一下

这是改了行的active size,所以最后成果会缺一块不满屏

image 


 修改一下ZYNQ那个模块

不需要那么多时钟了,留一个200兆的就行

image

 修改之后接口前后对比

改了之后是少了一个接口的

image

image

 所以删掉跟这根线连着的端口

image

image

 

image

 然后接线

image


 由于之前是只读的,所以要把这个模块再设置一下,把“写”给解锁了

image

补充加入一个时钟的模块

image

 设置这个时钟,输入为50兆的晶振

image

 输出选两个,

一个是74.25兆的像素时钟,一个是给SCCB提供位频的时钟24兆

image

 同时去掉下面reset

image


  加上一个写模块

image

 改一下对应的配置(不知为啥我第一次是加入的3.0版本模块,再加一次就中了)

image


 这边 Ctrl+T 配上接口

image

 把这俩家伙给连上

image

 href 是反向,但是可以作为video开始工作的使能信号

同时数据也是直接连

image

 这个这样搓出来一个 logic 为 not 非逻辑

image

image

 这边再加一个逻辑为 or 的 logic

image

 or的输出是这样

image


 video In 模块的 aclk 也是直接对接(其实好像你随便找个 aclk 就能对接上)

image

 把这个复位接上

image

 这个连 pclk

image


 之前是对系统时钟的复位进行取反,

现在有个锁相环了,所以可以直接对锁相环的 clk 进行取反

把这三个拆了(话说怎么感觉我前面连得有问题)

image

 对锁相环的 clk 进行取反

同时得到一个低有效的 reset

image

高有效的端口连向刚才取消掉的端口 

image

 输出这样连

image

 这俩连向常数,使得一直有使能

image


 这边对于刚做出来的时钟,拉个端口

image

 24自然连顶层的24,同时这个50跟24的倍频相差不多,也一起连上

image

 上面的要去找VTC(Video Timing Controller)的时钟

同时连一下 video_out 的时钟

image


  这个状态下,RUN 一下

image

image

 这里就会多出来一个端口并连上

image

 这里可能需要检查一下,这俩端口是这样连的

image

把顶层的复位连一下就中了

image


 我这里漏了个

image


4e5ae5c1c6cc5f7e3a6cedbbfb2f2fd6

 

 最后结果大概这样(真能看清吗...)

 OK啊可以跑个调试了

这时候大概会弹出个有点问题,但是问题不大

image

 这俩接口是用来跑调试的,所以空着也没事

image


OK啊阶段性胜利

噢对了记得改 design 里面的端口名称,别留着 “_0”

image


 项目内容变了,代码也要改了就

#include <stdio.h>
#include "xil_io.h"
#include "xparameters.h"
#include "xil_types.h"
#include "xil_cache.h"

#define VDMA_BASEADDR   XPAR_AXI_VDMA_0_BASEADDR
#define VDMA_FRAME0     0x01000000  //视频帧缓冲区使用的内存起始地址

#define STRIDE          1024
#define HSIZE           1024
#define VSIZE           720

int main()
{
    // VDMA写通道配置
    Xil_Out32(VDMA_BASEADDR+0x30,   0x1);
    Xil_Out32(VDMA_BASEADDR+0xAC,   VDMA_FRAME0);
    Xil_Out32(VDMA_BASEADDR+0xA8,   STRIDE*2);
    Xil_Out32(VDMA_BASEADDR+0xA4,   HSIZE*2);
    Xil_Out32(VDMA_BASEADDR+0xA0,   VSIZE);

    Xil_Out32(VDMA_BASEADDR,        0x1); //开启VDMA
    Xil_Out32(VDMA_BASEADDR+0x5c,   VDMA_FRAME0); // 帧缓冲区基地址
    Xil_Out32(VDMA_BASEADDR+0x58,   STRIDE*2); // 步长(字节数,16位像素=2字节/像素)
    Xil_Out32(VDMA_BASEADDR+0x54,   HSIZE*2); // 水平尺寸(字节数)
    Xil_Out32(VDMA_BASEADDR+0x50,   VSIZE); // 垂直尺寸(行数)



    return 0;
}
代码

 由于是继承了上次的,所以可以直接这边用个 Update

把之前那个.xsa文件给选上,然后 Ctrl + B

image


屏幕不亮解决方式:

重新开一个vitis,跑一个左上角的Run Con,点左侧栏Debug那个选项,关掉上面两个√,Apply

 image

posted @ 2026-07-27 09:34  little_sheep_xiaoen  阅读(5)  评论(0)    收藏  举报