苏杭 发表于 2015-4-4 10:27:12

请问NIOS如何模拟FSMC驱动TFT显示屏

现在驱动TFT的方式是IO模拟,但是速度很慢。800*480的屏每秒大概只能刷3帧
想用驱动SRAM的方式驱动TFT,将地址线作为RS,发现地址线不能一直保持,请问各位有没有什么好的办法
module FSMC_LCD
(
input         csi_clk,
input         csi_reset_n,
//
input                        avs_address,
input         avs_write_n,
input         avs_writedata,
input         avs_read_n,
output         avs_readdata,
//                        
inout         coe_LCD_DQ,      // LCD Data bus 16 Bits
output                        coe_LCD_ADDR,    // LCD Address bus 1 Bits
output          coe_LCD_CE_N,    // LCD Chip chipselect
output          coe_LCD_OE_N,    // LCD Output chipselect
output          coe_LCD_WE_N   // LCD Write chipselect
);

assign coe_LCD_DQ   = coe_LCD_WE_N ? 'hz : avs_writedata;
assign avs_readdata = coe_LCD_DQ;
assign coe_LCD_ADDR = avs_address;
assign coe_LCD_WE_N = avs_write_n;
assign coe_LCD_OE_N = avs_read_n;
assign coe_LCD_CE_N = avs_read_n & avs_write_n;

maxwelllls 发表于 2015-4-4 14:15:47

用Verilog写一个咯

aammoo 发表于 2015-4-4 14:25:09

用SRAM的ip核配置一下就可以了,把屏当内存操作,速度非常快。要注意频率不能配置的过高,否则LCD吃不消。

苏杭 发表于 2015-4-5 15:31:00

直接用AVALON总线操作(像我之前写的那样)时序会乱掉,现在还没找到合适的SRAM驱动程序。
后来用状态机按照LCD时序自己写了个,终于把屏驱动起来了,大概每秒7帧,还是有点慢额。
理论上屏幕最快刷新率为13帧,刷新速度达不到估计是数据先从SDRAM中读取,之后经过CPU处理传送给LCD接口造成的延时。
现在正在想能不能用DMA实现

lanliang714 发表于 2015-4-5 18:19:40

楼主这是当单片机玩了啊

gwnpeter 发表于 2015-4-6 01:36:22

nios 不是有 AVALON 转 3态总线的 ip吗

dellric 发表于 2015-4-6 11:03:57

试试DMA来传输!怎么可能才这点点速度?800X480= 384000 PIXELS384000X2 = 768000 BYTES (16位色)! 如果NIOSII 运行在50MHz,5CLK 一个像素,也可以达到13帧啊。

alphalovelife 发表于 2015-4-8 14:18:25

使用Generic Tri-state controller 做一个异步接口的时序挂在总线上就OK
页: [1]
查看完整版本: 请问NIOS如何模拟FSMC驱动TFT显示屏