Board logo

标题: STM32 在16位数据宽度下的地址问题(2) [打印本页]

作者: yuyang911220    时间: 2015-1-24 16:53     标题: STM32 在16位数据宽度下的地址问题(2)

由于CPU与FPGA通信的需要,以及对8080总线的熟悉,首选采用了STM32的FSMC总线,作为片间通信接口。FSMC能达到16MHz的写入速度,理论上能写20fps的1024*768的图片哈哈。(当然实际上是不可能的,就算是DMA传输,数据源也跟不上,实际上刷模拟的图片每秒10fps,刷的很high)当然这不是本篇的要点,这里主要研究STM32的FSMC接口,将速度提升到极限。
        1. FSMC协议分析        如下为ILI9325的8080接口的协议
       
        CS(片选信号):低电平片选有效,高电平失能(默认为高:失能)
        RS(数据寄存器):低电平写寄存器,高电平写数据(默认为高:写数据)FSMC默认为低。。。。
        RD(读信号) :低电平有效,上升沿写入数据,高电平失能(默认为高,失能)
        WR(写信号) :低电平有效,上升沿写入数据,高电平失能(默认为高,失能)
        FSMC写SRAM模式如下:
        (1)读操作
       
        (2)写操作
       
       
       
       
        HCLK为系统时钟72MHz
       
        综上,分析出FSMC与8080接口协议异同点
        (1)同:CS,RS,RD有效电平都一样,单个字节的写入与读取时序完全一样
        (2)异:
        A:8080 默认RS为高,而FSMC默认RS为低
        B:8080接口协议能保持CS,RS等有效,连续写数据,而FSMC以此只能输出一个数据。
        C:8080协议没有地址线,而FSMC还有地址线,这使得数据输出不连续。
        2. FSMC时序研究        下图为FSMC写命令与数据的时序图,从中根据上图可以分析出FSMC可以实现16M的数据写入。FSMC的信号线翻转非常快,这使得IC或者FPGA时序设计上得非常严谨。FSMC最大实现了72MHz(66.7到100MHz之间,实际为72MHz,HCLK)的翻转速度,这要求外部器件支持那么高的速率。
       
       
        寄存器配置(寄存器+数据)
       
        连续数据写入(0xBB:写数据开始),命令后,RS默认拉低(FSMC和标准不一样的地方)
       
        数据建立很快
       
        写数据,然后默认RS拉低
       
       
        整体的时序可模拟为:
        task task_writecmd;
        input [15:0] cmd;
        begin
        mcu_cs = 0;
        mcu_rs = 0;
        mcu_data = cmd;
        #20;
        mcu_we = 0;
        #20;
        mcu_we = 1;
        #15;
        mcu_rs = 1;
        mcu_cs = 1;
        #20;
        end
        endtask
        task task_writedata;
        input [15:0] data;
        begin
        mcu_cs = 0;
        mcu_rs = 1;
        mcu_data = data;
        #20;
        mcu_we = 0;
        #20;
        mcu_we = 1;
        #15;
        mcu_rs = 1;
        mcu_cs = 1;
        #20;
        end
        endtask




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0