在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2979|回复: 4

[原创] FPGA驱动SD DDR HDMI

[复制链接]
发表于 2016-12-5 16:05:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 yangtuzi2016 于 2016-12-5 16:08 编辑

vivado2015.1 开发板AC701;

一、准备8张1920*1080的bmp(24位)图,通过PC存入SD卡;

二、通过WinHex软件和计算确定每张图的起始结束地址;

一张1080p 24位图共有数据(1920*1080*3+54=6220854byte),SD卡每次读出512字节(SD卡用简单的SPI模式、读时序用Single Block Read Operation模式),读完一张图需要发送12151次(6220854/512=12150.105),

所以最后一次读的有些空数据。

('d0~'d12150对应'h0~'h5eec(每次加'h2))

每幅图片的起始结束地址分别为:

1.'h00040000~'h0062ec00;

2.'h00630000~'h00c1ec00;

3.'h00c20000~'h0120ec00;

4.'h01210000~'h017fec00;

5.'h01800000~'h01deec00;

6.'h01df0000~'h023dec00;

7.'h023e0000~'h029cec00;

8.'h029d0000~'h02fbec00;

三、SD卡

1、主时钟30M,进行4分频;

2、初始状态:对各种寄存器复位;

3、SD初始化:上电等待74个时钟、发送CMD0(收到响应'h01)、发送CMD1(收到响应'h00,若没有收到'h00,则继续发送CMD1,连续发送200次);若CMD0收到响应'h01,CMD1收到响应'h00,则说明SD初始化成功。

4、初始化成功后,可以开始读写数据。(写数据用做SD卡调试,在实际显示图片时,只用读就可以了),SD卡与DDR之间用fifo连接,当判断FIFO中少于一定数据时,则从SD卡读数据写入FIFO。

5、读数据:发送读命令、等待命令响应、等待数据包头、接收数据。

四、SD---->DDR FIFO

写数据宽度8、写深度1024、写时钟30M;

读数据宽度64,读深度128、读时钟DDR控制器产生的100M;

五、DDR控制器(IP)

1、开发板上用1GB DDR3 memory SODIMM,共有8颗128MB的芯片

     单颗容量计算:行地址线复用14根,列地址线复位10根,8个BANK,8根数据线,容量为2的14次方*2的10次方*8*8=1Gbit=128MB,8颗共为1GB

2、FPGA与DDR接口处设置为400M(双沿相当于800M),控制线8颗共用,数据线共为64根;

3、控制器输入时钟200M,单端双端都可;

4、控制器产生的用户时钟100M,用户侧位宽512,FPGA与DDR接口处位宽64,时钟800M(100*512=800*64,总流量一致)

六、DDR接口(读写ARBIT)

1、用DDR用户侧的复位信号判断DDR是否可以开始工作(是否初始化完成,是否读写准备就绪);

2、判断FIFO(SD---->DDR)中是否有一定量的数据,进入写状态、发送写命令、写数据,将数据写入DDR;如果8幅图片都已经导入DDR,则可以不用再进行写操作;

3、从DDR读数据给FIFO(DDR---->HDMI)。

七、DDR---->HDMI FIFO

1、写位宽256,写深度64,写时钟100M;

2、读位宽32,读深度512,读时钟150M;

3、当DDR开始工作,并且FIFO中少于一定的数据,则从DDR中读出数据写入FIFO。这里注意:(1)因为DDR读出数据有延迟,要保证不把FIFO写溢出(2)要满足HDMI的输出要求,不能让HDMI空读FIFO

4、添加复位信号,保证FIFO能长时间正常工作。在帧间隔中间,让FIFO复位足够时间,让(1)DDR读取当前帧的地址复位;(2)复位期间不再向DDR发送读命令;(3)FIFO复位(各指针复位)

八、HDMI输出

1、IIC配置ADV7511芯片(要先配置IIC BUS SWITCH芯片)

2、ADV7511配置信息:

     addr          value

   'h41   -->  'h10(all circuit powered up)

     'h15   -->  'h00(低4bit,输出数据模式为24 bit RGB 4:4:4,独立的同步信号)

     'h16   -->  'h30(输出数据位宽为8bit)

     'h17   -->  'h02(输出比例16:9=1920:1080)

     'h98   -->  'h03(固定值)

     'h9a   -->  'he0(固定值)

     'h9c   -->  'h30(固定值)

     'h9d   -->  'h61(输入时钟不分频,其它位固定值)

     'ha2   -->  'ha4(固定值)

     'ha3   -->  'ha4(固定值)

     'he0   -->  'hd0(固定值)

     'hf9    -->  'h00

     'haf    -->  'h04(Disenable HDCP Frame Encryption, DVI模式)

3、IIC读用来调试,在正常使用时不用读;

4、用两个计数器产生同步信号,共1125行,在1112行时产生一行时间的复位信号,复位FIFO(DDR-->HDMI)和DDR读取当前帧地址;

    在1120行读取54字节的BMP文件头信息,读13次,每次读4个字节,读取52字节,还有2个字节跟有效数据一起读出;

5、从FIFO中一次读出4个字节,HDMI一次送出3个字节(RGB),所以HDMI每发送4次只需要从FIFO读取3次。


7.jpg 8.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 1.jpg
发表于 2016-12-6 11:32:28 | 显示全部楼层
lz土豪啊,1w多的板子
发表于 2016-12-6 19:05:05 | 显示全部楼层
回复 2# yongbinguo


   层主请教下,vivado是只能7系列以上用的不?
  V6可以用这个软件不?
 楼主| 发表于 2016-12-7 09:44:43 | 显示全部楼层
回复 3# fkl523

我用的vivado2015.1 不支持V6
发表于 2016-12-7 18:03:27 | 显示全部楼层
回复 4# yangtuzi2016

好的,图片显示很漂亮!

之前调过特权的用sdram的那个例程,800*600,效果没你这个好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-19 02:35 , Processed in 0.028923 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表