本文经过Avalon-MM Master Templates实现读取ddr2中的图像数据(800*480*16bit),而后经过TFT 5.0寸LCD显示出来。本文旨在阐述清楚思路以及记录本身在实现过程当中的一些经验。数组
须要知识:NIOS + Verilog + 工具[Qsys]。缓存
一.效果展现:工具
二.结构说明:ui
经过master_read 链接到ddr2,直接读取ddr2的数据。NIOS中负责写数据到DDR2,NIOS和MASTER_READ共享内存,关于mater_read的配置请参考以前的调试记录。咱们的思路是在NIOS中用C直接操做内存,而后经过master_read读取数据送给TFT(此部分verilog实现),屏幕刷新率60hz。spa
三.图像转换说明调试
因为在NIOS是经过直接操做内存显示图片的,所以须要将图片转化为数组,具体以下:blog
1.打开uc_gui自带的工具,打开图片,(注意图像的分辨率,要提早改好)图片
2.保存图片内存
3.点击保存后出现以下框,存储的应该注意的地方状况红色框,交换红色和蓝色,(注:我用的是屏幕参数是RGB565,800*480 LCD,根据本身屏幕修改便可)。开发
四.部分调试波形记录
我在调试过中发现一个很奇怪的问题:以下
如上图的紫色框,笔者发现:使第一个数据输出0x1234,可是实际抓到的0x1234总共持续了4个clk,前面三个clk的数据应该是丢弃的,所以,笔者使用计数器在每次读数据前先读三次(修bug),而后图像就能够正常显示了。
五.总结
本文展现了一个经过NIOS实现数据流处理的例子,须要的能够参考。这样的好处,成功绕过操做DDR2/3等缓存器件,减少开发难度,减少开发周期,缺点是牺牲了一点点的速度优点,毕竟verilog是纯硬件再跑。。。欢迎你们一块儿交流,Q群:912014800。