OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10851|回复: 9

[ALTERA] 开拓者FPGA驱动VGA显示写SDRAM突发字节长度设置问题

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
发表于 2019-1-10 15:55:11 | 显示全部楼层 |阅读模式
5金钱
例程上面的配置是可以的,配置如下:写SDRAM起始地址:0,结束地址:VGA分辨率。读SDRAM起始地址:0,结束地址:VGA分辨率。读写SDRAM突发长度512字节。页突发,突发读、突发写。
在这种配置下,例如我将VGA屏幕填充为白色等颜色,是可以的。因为分辨率和突发长度是匹配的。例如:1024 * 768 / 512 = 1536。

现在我想实现这样的效果:在X,Y坐标写入1字节数据,然后再向X1,Y1坐标再写入1字节数据。类似与这种效果。具体就是实现手动绘图的效果。
我的配置是:写SDRAM起始地址:手动设置,结束地址:在起始地址的基础上+1。读SDRAM起始地址:0,结束地址:VGA分辨率。读突发长度:512字节。写突发长度:1字节。
实验的效果是:无法驱动VGA显示。将写突发长度改为512字节,则有显示,但是显示不对。

我的分析是:写配置是页突发,如果设置的突发长度是512字节,写入的数据量没有达到512字节,会出错。但是SDRAM有:页突发读写中止命令。
按照我认为,页突发,突发长度设置为1字节,我每次指定X,Y地址,写入1字节,写完后发送读写中止命令。然后再指定地址,再写入1字节,再发读写中止命令。这样操作的流程有问题嘛?
因为如果不设置页突发,采用单字节写方式,如果需要大量写入数据的时候,就会很占用资源。使用页突发模式,根据所需要写入的数据量,发送读写中止命令,这样灵活操作会更好。

现在设置突发长度为1字节,VGA显示屏不显示。原因是啥呢?例程里面,我看到了:读写中止命令:
                        `W_WRITE: begin //写操作指令
                                sdram_cmd_r <= `CMD_WRITE;
                                sdram_ba    <= sys_addr[21:20];
                                sdram_addr  <= {4'b0000,sys_addr[7:0]};
                            end     
                        `W_WD: begin    //突发传输终止指令
                                if(`end_wrburst)
                                    sdram_cmd_r <= `CMD_B_STOP;
                                else begin
                                    sdram_cmd_r <= `CMD_NOP;
                                    sdram_ba    <= 2'b11;
                                    sdram_addr  <= 12'hfff;
                                end
                            end

其中`define     end_wrburst     cnt_clk == sdram_wr_burst-1     //写突发终止
其中sdram_wr_burst是写突发长度,可以设置1-512。我设置的是1。

程序流程是:判断cnt_clk计数器的值,突发写传输完成,则发送:突发传输中止命令。但是我觉得这个end_wrburst值设置的是不是有点问题。当sdram_wr_burst为1,则cnt_clk等于0的时候,条件成立。进入W_WD命令的时候会将cnt_clk清0。

有小伙伴驱动过VGA嘛,能否给予一点思路,谢谢了!




最佳答案

查看完整内容[请看2#楼]

例程是按照整页512的突发长度的时序,不能改突发长度的,另外最大地址也必须是512的整数倍。我试过最大地址改了514等等不是512的整数倍,读写就出错了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2020-9-2
在线时间
21 小时
发表于 2019-1-10 15:55:12 | 显示全部楼层
不要的逝去 发表于 2019-11-4 16:44
亲,这个问题你解决了吗?我也是根据开拓者的例程来改突发数据的长度,发现总是不成功,不知道是哪里时序没 ...

例程是按照整页512的突发长度的时序,不能改突发长度的,另外最大地址也必须是512的整数倍。我试过最大地址改了514等等不是512的整数倍,读写就出错了
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
 楼主| 发表于 2019-1-10 18:40:23 | 显示全部楼层
绘图分为:点、线。X轴直线,Y轴直线。对于显示图片、视频,页突发模式,512字节的突发长度可以使用,因为图像数据是一个整体。
对于绘图GUI界面来说,以目前的GUI驱动,是以X,Y轴的坐标为原点,进行绘图。这种需要指定地址的操作,并不能发挥出页突发模式的优势。
突发读/单次写可以适应。但是问题在于,单次写占用大量的内存资源,导致内存资源利用率低。
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
 楼主| 发表于 2019-1-10 18:53:53 | 显示全部楼层
写突发长度2字节,SDRAM工作频率130MHz,VGA显示1024*768分辨率的图像。VGA写入数据频率在10MHz左右。经测试15MHz时,屏幕闪烁,说明写SDRAM操作占用时间太长,导致读SDRAM操作不够60Hz。
将SDRAM工作频率提升到166MHz。对于1024*768分辨率的VGA显示,突发读/单次写模式,数据写入频率怕也不会超过20MHz。换算成帧率也就是10帧左右。对于突发读/突发写,512字节的突发长度来说,写60帧,读60帧是完全没问题的。毕竟1:512,操作延时等待开销太大的了。
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
 楼主| 发表于 2019-1-10 18:54:53 | 显示全部楼层
不过大家有实际测试过,突发读/单次写的速度嘛?和 突发读/突发写 512长度 相比较,差距有多大呢?
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
 楼主| 发表于 2019-1-11 09:40:12 | 显示全部楼层
顶一个
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2019-1-11 19:51:08 来自手机 | 显示全部楼层
这个没实测过,单次写每次都要重新行寻址和列寻址,挺耗时间的
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-6-21
在线时间
19 小时
发表于 2019-11-4 16:44:53 | 显示全部楼层
亲,这个问题你解决了吗?我也是根据开拓者的例程来改突发数据的长度,发现总是不成功,不知道是哪里时序没搞对
回复

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2020-9-2
在线时间
21 小时
发表于 2020-9-11 18:09:39 | 显示全部楼层
我把程序移植到我自己的板子上,我得我SDRAM整页突发长度是256,但是我改成256后就没显示了,好郁闷,好难排查啊
回复

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2020-9-2
在线时间
21 小时
发表于 2022-4-1 19:03:51 | 显示全部楼层
兄弟  解决了吗?解决的话分享一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 00:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表