首页 >> 大全

基于FPGA的串口传图SDRAM缓存VGA显示

2023-06-24 大全 57 作者:考证青年

简介

在DE2开发板上,使用串口接收PC上的Qt程序发送的640*480彩色图片,以格式存入SDRAM,通过VGA显示在屏幕上。

开发板:DE2

开发工具: II 13.0 + 10.5 SE

全局时钟:50M

VGA时钟:25M

SDRAM时钟:100M

总体结构

上图是系统的总体结构,省略了PLL模块,实际上两个fifo都在SDRAM控制器内部。

一共5个模块:PLL、串口接收、数据合并、SDRAM控制器、VGA控制器

模块介绍

PLL模块负责生成三路时钟:

串口接收模块

波特率:

数据位:8

校验:无

停止位:1

串口模块负责接收PC发送的数据。

串口模块还是用之前的,不做修改。接口如下:

module uart_rx(input               clk,input               rst_n,// uart rxinput               rx,// output data & validoutput reg          valid,output reg [7:0]    data
);

数据合并模块

由于使用格式存储彩色图片,所以要把串口接收到的单字节数据合并为16bit位宽的格式数据。接口如下:

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控制器是大佬写的,不过其本质上是根据友晶提供的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分辨率的彩色图片,将格式的图片转,再通过串口发送,如图:

效果演示

fpga串口传图

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了