整体设计 基于 DDR3 的串口传图帧缓存系统设计实现( 五 )


五、模块仿真文件
`timescale 1ns / 1ns`define CLK_PERIOD 20module uart_ddr3_tft_tb();regclk50m;regreset_n;wire [15:0]TFT_rgb; //TFT数据输出wireTFT_hs;//TFT行同步信号wireTFT_vs;//TFT场同步信号wireTFT_clk; //TFT像素时钟wireTFT_de;//TFT数据使能wireTFT_pwm; //TFT背光控制wire [13:0]ddr3_addr;wire [2:0]ddr3_ba;wireddr3_cas_n;wire [0:0]ddr3_ck_n;wire [0:0]ddr3_ck_p;wire [0:0]ddr3_cke;wireddr3_ras_n;wireddr3_reset_n;wireddr3_we_n;wire [15:0]ddr3_dq;wire [1:0]ddr3_dqs_n;wire [1:0]ddr3_dqs_p;wire [0:0]ddr3_cs_n;wire [1:0]ddr3_dm;wire [0:0]ddr3_odt;initial clk50m = 1;always #(`CLK_PERIOD/2) clk50m = ~clk50m;initial beginreset_n = 1'b0;#201;reset_n = 1'b1;@(posedge uart_ddr3_tft.init_calib_complete)@(posedge TFT_vs);@(posedge TFT_vs);@(posedge TFT_vs);$stop;enduart_ddr3_tftuart_ddr3_tft(//System clock reset.clk50m(clk50m), //系统时钟输入,50M.reset_n(reset_n), //复位信号输入,低有效//led.led(), //指示灯//Uart interface.uart_rx(), //串口输入信号//TFT Interface.TFT_rgb(TFT_rgb), //TFT数据输出.TFT_hs(TFT_hs), //TFT行同步信号.TFT_vs(TFT_vs), //TFT场同步信号.TFT_clk(TFT_clk), //TFT像素时钟.TFT_de(TFT_de), //TFT数据使能.TFT_pwm(TFT_pwm), //TFT背光控制// Memory interface ports.ddr3_addr(ddr3_addr), // output [13:0]ddr3_addr.ddr3_ba(ddr3_ba), // output [2:0]ddr3_ba.ddr3_cas_n(ddr3_cas_n), // outputddr3_cas_n.ddr3_ck_n(ddr3_ck_n), // output [0:0]ddr3_ck_n.ddr3_ck_p(ddr3_ck_p), // output [0:0]ddr3_ck_p.ddr3_cke(ddr3_cke), // output [0:0]ddr3_cke.ddr3_ras_n(ddr3_ras_n), // outputddr3_ras_n.ddr3_reset_n(ddr3_reset_n), // outputddr3_reset_n.ddr3_we_n(ddr3_we_n), // outputddr3_we_n.ddr3_dq(ddr3_dq), // inout [15:0]ddr3_dq.ddr3_dqs_n(ddr3_dqs_n), // inout [1:0]ddr3_dqs_n.ddr3_dqs_p(ddr3_dqs_p), // inout [1:0]ddr3_dqs_p.ddr3_cs_n(ddr3_cs_n), // output [0:0]ddr3_cs_n.ddr3_dm(ddr3_dm), // output [1:0]ddr3_dm.ddr3_odt(ddr3_odt)// output [0:0]ddr3_odt);ddr3_model ddr3_model(.rst_n(ddr3_reset_n ),.ck(ddr3_ck_p),.ck_n(ddr3_ck_n),.cke(ddr3_cke),.cs_n(ddr3_cs_n),.ras_n(ddr3_ras_n),.cas_n(ddr3_cas_n),.we_n(ddr3_we_n),.dm_tdqs(ddr3_dm),.ba(ddr3_ba),.addr(ddr3_addr),.dq(ddr3_dq),.dqs(ddr3_dqs_p),.dqs_n(ddr3_dqs_n),.tdqs_n (),.odt(ddr3_odt));endmodule
六、传图展示
在顶层设计分析综合没有错误并且顶层仿真确认设计功能没有问题后,进行上板验证 。对工程的管脚和时钟进行约束后,生成 Bit 文件 。下载完成后,开发板上 LED0~LED2 会亮,TFT5.0 寸屏上显示花屏状态 。如下图所示 。
出现这种花屏是因为这个时候,DDR3 中并未写入数据,显示的数据是不可知的一些数据 。LED0 和 LED1 分别表示的是 DDR 控制器内时钟锁相环的信号和 DDR 初始化校准完成信号的状态,亮表示这个两个信号均变为高电平,说明 DDR 已经正常完成初始化和校准操作 。接下来通过串口传图工具向 FPGA 传输图片数据 。
这里提供的上位机要求图片为位深度为 24 或 16 的 bmp 格式图片,图片的宽度和高度需要为 (插 5 寸屏情况下)或 (插 4.3 寸屏情况下) 。关于图片的信息可通过右键图片查看其属性,在属性的详细信息窗口可以看到图片大小,位深度等信息 。
传图过程中,可以看到 TFT 屏上开始显示发送的图片 。图片传送完成后,TFT 屏显示效果如下 。
【附件:】链接:
【整体设计基于 DDR3 的串口传图帧缓存系统设计实现】提取码:wzxj