APP下载

基于FPGA和SD卡的VGA图片显示与切换装置

2022-04-22郭靖丰

电子测试 2022年7期
关键词:状态机扇区框图

郭靖丰

(南京信息工程大学电子与信息工程学院,江苏南京,210044 )

0 引言

随着时代的进步,电子产品的小型化、便携化、智能化成为了发展趋势,传统的VGA图片显示都是读出保存在开发板的ROM资源中的图片数据进行显示,但当图片分辨率较大时,ROM资源就会不足,就需要以牺牲图片清晰度为代价来显示图片,并且ROM是直接焊接在开发板上的,不便于携带。结合以上背景,本文以FPGA为主机,SD卡为从机,利用SD卡小体积、大容量,高速度的优点来存储图片则解决了ROM资源不足的缺陷,提高了图片的显示速度和清晰度。

1 图片格式处理

由于VGA显示格式是16位RGB565格式,为了使FPGA能直接读取存放在SD卡中的图片数据,选用BIN的图片格式,使图片以二进制的方式存放在SD卡中。并用WinHex查询SD卡中BIN文件的扇区地址,方便后续FPGA的读取。

2 系统描述

本装置采用FPGA作为主机,SD卡作为从机实现主从机之间的数据通信,并将图片显示在VGA显示器上,首先PLL时钟控制模块产生各模块所需要的工作时钟,用户可以通过按键选择要显示的图片,不同的按键值传给SD卡读取图片控制模块后,SD卡读取图片控制模块将不同的扇区地址传给SD卡控制模块,SD卡控制模块根据地址读出图片数据后传给SDRAM控制模块进行缓存,最终把图片数据传给VGA显示驱动模块进行显示。系统结构框图如图1所示。

图1 系统结构框图

3 硬件实现

3.1 FPGA

本装置采用ALTERA 公司的 Cyclone IV 系列 FPGA,芯片型号为 EP4CE10F17C8,拥有丰富的逻辑单元和嵌入式资源,结合高速时钟晶振,给该芯片提供50MHz的时钟,为实现高速的运算奠定了基础。

3.2 SD卡

SD卡采用目前市面上使用最广泛的基于SD2.0协议规范的SDHC卡,SD卡工作模式有SDIO模式和SPI模式两种,本装置选择使用信号线较少的SPI模式。SPI模式下共用到CS、CLK、MISO、MOSI四根信号线。在SPI模式下采用1位数据位宽,理论上可以达到50Mbps的传输速率,具有存储容量大,读写速度快的优点。

SD卡在正常读写操作之前,必须先对SD卡进行初始化,即写入命令CMD0。在对SD卡进行读写操作时同样需要发送写命令(CMD24)和读命令(CMD17)。

用WinHex查询的SD卡中图片BIN文件的扇区起始地址方便后续程序使用。

图2 SD卡与MAXQ2000接口图

3.3 SDRAM

SDRAM芯片采用型号为W9825G6DH-6,该芯片内部划分了4个L-Bank,总存储空间为256Mbit=32MB,最高工作频率可达166MHz,具有存储空间大,读写速度快的优点。芯片原理图如图3所示,在芯片时钟的驱动下,可以将SDRAM看做一张表格,只要确定了行和列,就能找到对应的数据。由于SDRAM利用了电容的充放电特性以及保持电荷能力,所以W9825G6DH-6的初始化和读写操作都较为复杂,包括一系激活、预充电、刷新、寻址等操作。

图3 SDRAM与FPGA连接原理图

图4 W9825G6DH-6原理图

4 软件实现

4.1 PLL时钟控制模块

调用quartus软件下的PLL IP核分别输出各模块的工作时钟并传给相应模块。由于SD卡对数据的发送是在时钟的下升沿进行,但FPGA在编程中通常使用时钟的上升沿,所以用PLL锁相环技术产生与Clk_sd_ctrl频率相同,但相位相差180°的时钟信号Clk_sd_ctrl_180,与Clk_sd_ctrl一起传入SD卡控制模块。PLL时钟控制模块框图如图5所示。

图5 PLL时钟控制模块框图

4.2 按键控制模块

根据不同的按键信息产生不同的按键标志信号(Key_flag)并传给SD卡读取图片控制模块,来决定读取SD卡中的哪张图片。

4.3 SD卡读取图片控制模块

先根据图片的分辨率和一次读操作能读取的字节数计算出完全读取一张图片所需要进行的读操作次数,再利用always语句块延时打拍获取传来的读忙信号(Rd_busy)下降沿,然后根据不同的按键标志信号从不同的扇区起始地址开始读数据,并将读出的图片数据送到SDRAM进行缓存。SD卡读取图片控制模块框图如图6所示。

图6 SD卡读取图片控制模块框图

4.4 SD卡控制模块

4.4.1 SD卡初始化

SD卡初始化流程在Verilog设计中采用状态机的方法实现,共分为8个状态。不同于以往的状态机,因为SD卡上电后只需要初始化一次,所以进入Finish状态后不需要再回到Idel状态。SD卡初始化状态机如图7所示。

图7 SD卡初始化状态机

4.4.2 SD卡读操作

利用always语句块对传来的Rd_start信号进行打拍延时操作来获取Rd_start信号的上升沿作为开始读信号。SD卡读操作同样可以使用状态机来实现,共分为5个状态。SD卡读操作状态机如图8所示。

图8 SD卡读操作状态机

4.4.3 SD卡控制模块顶层

由于在初始化和读操作中都用到了SPI通信的主机数据输出线(mosi),且初始化和读操作中该线传输内容不一致,所以在顶层程序设计中用always语句块进行判断,当未初始化完成主机数据输出线采用初始化模块中的输出,当初始化完成时并且处于读数据状态时主机数据输出线采用读操作模块中的输出。SD卡控制模块框图如图9所示。

图9 SD卡控制模块框图

4.4 VGA显示器驱动模块

在像素时钟(Vga_clk)的驱动下根据VGA时序参数输出行长同步信号和RGB信号给VGA显示器,输出像素点数据输入请求信号(data_req)传给SDRAM控制模块作为读使能。VGA显示器驱动模块框图如图10所示。

图10 VGA显示器驱动模块框图

4.5 SDRAM控制模块

SDRAM上电后需要一个初始化过程,并根据不同的初始化状态发送不同的指令,初始化完成后进入工作状态,要处理写使能和读使能,SDRAM的写操作和读操作同样需要伴随着不同指令的发送,并且SDRAM在工作过程中需要不断的刷新操作,且刷新时间是固定的,所以用一个计数器来产生刷新命令。SDRAM控制模块框图如图11所示。FPGA程序流程图如图12所示。

图11 SDRAM控制模块框图

图12 FPGA程序流程图

5 结语

基于FPGA和SD卡的VGA图片显示与切换装置,结合SDRAM的存储特性,可以完美的在显示器上显示图片并根据用户需求切换,有效的解决ROM资源不足的问题,提高了图片的显示速度与清晰度,同时,SD卡作为可插拔器件,有效解决了ROM不便于携带的问题,符合当今电子产品的发展趋势。

猜你喜欢

状态机扇区框图
分阶段调整增加扇区通行能力策略
FPGA状态机综合可靠性探究 ①
捷豹I-PACE纯电动汽车高压蓄电池充电系统(三)
基于有限状态机的交会对接飞行任务规划方法
空中交通管制扇区复杂网络建模与特性分析
空域扇区网络级联失效抗毁性及优化策略
基于Spring StateMachine的有限状态机应用研究
电路图2017年凯迪拉克XT5
U盘故障排除经验谈
算法框图的补全