基于FPGA的串口传图SDRAM缓存VGA显示
简介
在DE2开发板上,使用串口接收PC上的Qt程序发送的640*480彩色图片,以RGB565格式存入SDRAM,通过VGA显示在屏幕上。
开发板:DE2
开发工具:Quartus II 13.0 + Modelsim 10.5 SE
全局时钟:50M
VGA时钟:25M
SDRAM时钟:100M
总体结构
上图是系统的总体结构,省略了PLL模块,实际上两个fifo都在SDRAM控制器内部。
一共5个模块:PLL、串口接收、数据合并、SDRAM控制器、VGA控制器
模块介绍
PLL模块负责生成三路时钟:
- 25M时钟:VGA使用
- 100M时钟:SDRAM控制器使用
- 100M(-90degree)时钟:SDRAM芯片使用
串口接收模块
波特率:115200
数据位:8
校验:无
停止位:1
串口模块负责接收PC发送的数据。
串口模块还是用之前的,不做修改。接口如下:
module uart_rx(input clk,input rst_n,// uart rxinput rx,// output data & validoutput reg valid,output reg [7:0] data
);
数据合并模块
由于使用RGB565格式存储彩色图片,所以要把串口接收到的单字节数据合并为16bit位宽的RGB565格式数据。接口如下:
module data_merge(input clk,input rst_n,// input data & validinput iValid,input [7:0] iData,// output data & validoutput reg oValid,output reg [15:0] oData
);
sdram控制器模块
SDRAM控制器模块负责存储图片,该SDRAM控制器是crazybingo大佬写的,不过其本质上是根据友晶提供的SDRAM控制器改良的,咱要站在巨人的肩膀上前行。接口如下:
module Sdram_Control_2Port(// HOST Sideinput REF_CLK; //sdram control clockinput OUT_CLK; //sdram output clockinput RESET_N; //System Reset// FIFO Write Side 1input [`DSIZE-1:0] WR_DATA; //Data inputinput WR; //Write Requestinput [`ASIZE-1:0] WR_MIN_ADDR; //Write start addressinput [`ASIZE-1:0] WR_MAX_ADDR; //Write max addressinput [8:0] WR_LENGTH; //Write lengthinput WR_LOAD; //Write register load & fifo clearinput WR_CLK; //Write fifo clock// FIFO Read Side 1output [`DSIZE-1:0] RD_DATA; //Data outputinput RD; //Read Requestinput [`ASIZE-1:0] RD_MIN_ADDR; //Read start addressinput [`ASIZE-1:0] RD_MAX_ADDR; //Read max addressinput [8:0] RD_LENGTH; //Read lengthinput RD_LOAD; //Read register load & fifo clearinput RD_CLK; //Read fifo clock//STATUS Sideoutput busy;// SDRAM Sideoutput [`ROWSIZE-1:0] SA; //SDRAM address outputoutput [1:0] BA; //SDRAM bank addressoutput CS_N; //SDRAM Chip Selectsoutput CKE; //SDRAM clock enableoutput RAS_N; //SDRAM Row address Strobeoutput CAS_N; //SDRAM Column address Strobeoutput WE_N; //SDRAM write enableinout [`DSIZE-1:0] DQ; //SDRAM data busoutput [`DSIZE/8-1:0] DQM; //SDRAM data mask linesoutput SDR_CLK; //SDRAM clock
);
VGA控制器模块
VGA控制器负责产生VGA时序,驱动显示屏。
使用友晶资料盘里面的VGA控制器。接口如下:
module VGA_Ctrl (// Host Sideinput [7:0] iRed;input [7:0] iGreen;input [7:0] iBlue;output [20:0] oAddress;output [10:0] oCurrent_X;output [10:0] oCurrent_Y;output oRequest;// VGA Sideoutput [7:0] oVGA_R;output [7:0] oVGA_G;output [7:0] oVGA_B;output reg oVGA_HS;output reg oVGA_VS;output oVGA_SYNC;output oVGA_BLANK;output oVGA_CLOCK;// Control Signalinput iCLK;input iRST_N;
);
顶层模块例化上面这些模块即可。
Qt上位机程序
自己用Qt写了一个串口传图程序,可以读取640*480分辨率的彩色图片,将RGB888格式的图片转RGB565,再通过串口发送,如图:
效果演示
链接:https://www.bilibili.com/video/BV1YY4y147KC
fpga串口传图
基于FPGA的串口传图SDRAM缓存VGA显示相关推荐
- 基于FPGA的串口传图SRAM缓存VGA显示
简介 在DE2开发板上使用串口接收PC发送的640*480分辨率灰度图,存入SRAM,通过VGA进行显示. 开发板:DE2 型号:EP2C35F672C6 开发工具:Quartus II 13.0 + ...
- 基于 DDR3 的串口传图帧缓存系统设计实现(整体设计)
文章目录 前言 一.串口传图顶层系统设计框图 二.各模块说明 三.系统工程及 IP 创建 四.uart_ddr3_tft模块 五.uart_ddr3_tft模块仿真文件 六.传图展示 前言 结合串口接 ...
- UART串口传图LCD显示----图像处理
UART串口传图LCD显示----图像处理 设计介绍 首先需要准备一个txt文本,里面存储一个16进制200* 200的图片数据,通过串口调试助手使用串口传输一个200* 200图片,然后通过开发板上 ...
- 基于 DDR3 的串口传图帧缓存系统设计实现(fifo2mig_axi )
文章目录 前言 一.接口转换模块设计 二.fifo2mig_axi 模块 二.接口转换模块仿真 四.fifo2mig_axi_tb 五.仿真展示 前言 结合串口接收模块和 tft 显示屏控制模块,设计 ...
- 基于FPGA的视频图像直方图均衡 图像处理 图像增强 VGA对比度增强CLAHE
基于FPGA的视频图像直方图均衡 图像处理 图像增强 VGA对比度增强CLAHE 本设计是基于FPGA的视频图像直方图均衡,实现的效果是可以实时地将摄像头采集的图像进行直方图均衡,具体过程是FPGA控 ...
- 基于FPGA的数字钟——(三)时钟显示模块(数码管)
基于FPGA的数字钟--(三)数码管显示模块 一.硬件原理 本设计中使用 6 个共阳数码管,可以显示 6 个数字(包含小数点) .电路用 PNP管来反向驱动并且控制列扫描信号来选择哪个数码管.而且所有 ...
- FPGA基础设计(一):VGA显示方法(文字、图形、波形)
概述 VGA是一种学习FPGA最常见的基础实验.虽然现在的显示屏大多已经采用DVI和HDMI方案,但其实VGA在另一个地方还有应用,那就是大屏的LCD.目前4.3寸以上的TFT基本都是VGA接口, ...
- FPGA 20个例程篇:15.VGA显示八种颜色的彩条
第六章 图像显示处理,经典再现 15.VGA显示八种颜色的彩条 图像和视频处理可以说是FPGA中又一个经典地应用,使用FPGA做图像处理最核心的优势就在于:FPGA能进行实时流水线运算,从而达到更高的 ...
- SDRAM学习(五)——串口传图
一.串口传图设计图 这一部分在之前写的SDRAM控制顶层模块的基础上加了pll时钟,之前写的tft4.3寸显示屏控制模块,串口接收数据模块和比特计数器. pll时钟:之前在初始化部分提到过,此处有四路 ...
最新文章
- Genome Biology | 基于RNA-seq的孟德尔疾病变异分析
- 前端代码标准最佳实践:CSS篇
- java 反射 慢在那里_Java 反射到底慢在哪?
- 洛谷3317 SDOI2014重建(高斯消元+期望)
- 绍中考能不能用计算机了,全国计算机二级考什么内容
- android 直播 app下载地址,蓝泡泡直播
- Oracle数据库基础入门《一》Oracle服务器的构成
- [SCOI2015]小凸玩矩阵 (匈牙利+二分)
- Maven的maven-install-plugin插件详解
- C++ 使用模板Template
- java beetl 视频_04.Beetl常用内置函数以及安全输出---《Beetl视频课程》
- tensorflow2.1学习--tf.keras学习之tf.keras.models.Sequential
- FactoryBean在XML中的依赖注入方法
- ncm转换mp3文件时遇到问题:未找到文件
- 计算机电磁泄露案例,电磁泄漏
- 华为手机刷机后显示无服务器,华为手机刷机后,无法开机怎么办?
- 本地KMS虚拟服务器,搭建kms本地服务器
- VS2010 中文版MSDN下载
- 计算机图形学——简单图形绘制
- linux 解压 7z 分卷压缩文件,linux分卷压缩与解压缩
热门文章
- 移动端开发基本知识之touch.js,FastClick.js源码分析
- 大学物理实验——拉伸法测杨氏模量
- html设置请求方式为put,GET POST PUT等请求方式的区别
- python黑科技自动p图_不会PS也不用愁——自动P图黑科技盘点
- 143 auth模块
- ALS3-P系列限位开关
- java webservice 高并发_浅谈WEB中的高并发
- c语言中专业英文词汇,c语言需要掌握的专业英语词汇
- 内存(Memory)
- airflow error Flask-Appbuilder setp command