纯PL 实现独立显存VGA驱动并显示画面
学习
内容
本课程
在 上一 集 的课程基础上 通过 增加 BRAM 实现画面 的存储和 VGA 显
示 。 由于 BRAM 资源 有限,所以 设计 分辨率为 640480。 本课主要是 在第 24《 VGA接口 分析 及 控制逻辑实现 》基础上完成 。
实现步骤首先
介绍 本次课程 提供的代 码
相比第24课代码 主要 增加 了 图片 存储文件和 VGA 驱动 中的存储驱动 部分 。下面 按照 本次 课程实现 的目标进行修改和介绍。
Step1 修改 VGA 时序 驱动, 使得 像素时钟 为 25M,分辨率 为 640480。
参数列表
(1) 修改 时序驱动模块 代码部分体现在 my_vga_syn.v中 。
由于选择 640*480 分辨率 60HZ 即上表第一行, 定义 横向和 纵向 参数 。
(2) 修改 时钟 模块 设置
计算像素频率 横向 参数之和) 纵向 参数之 和 ))每秒 舒心频率
600+16+96+48 480+11+2+31))60 25M
由于系统时钟采用外部晶振输入的 100 MHz 上一课中的分辨率较 高 为
1024768,像素时钟为 65M 所 以 640480 分辨率 应 将时钟 模块输出频率修改
为上述计算得到的 25MHz。双击 时钟模块,设置如下
Step2 增加能够 实现图片缓存的双时钟双端口 RAM。 代码 可见 vga_dpram.v代码
代码内部自己 定义了 一个 256K 一个 64K 的存储块 在模块 vga_dpram 中
通过 对 读写地址 rd_addr[18] , wr_addr[18] 的判断实现两个存储 块 的拼接。
Step3 使用 BMP2Data.exe 将 BMP 图片 转 换 成 代码 能够识别的形式 并且进行调用。
在verilog 文件 中的调用可见 vga_dpram.v文件中模块 generic_dpram_64Kx12 和 模块 generic_dpram_256Kx12 的 最后 部分 ,如下
Step4 修改 VGA驱动 文件 vga_drv.v 主要 将 上 文 中修改的 时序和 存储驱动部分加入 进去 如下
Step5 编译文件, 生成 bitstream 进行 下载测试。
至此本节 课程实现,可通道 VGA 显示屏 查看工程效果。