马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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次。
|