嵌入式硬件DDR开发板上的F103芯片:从入门到精通的指南

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        带不带ddr,是板子是否是高速板的一个重要指标。在pcb上面,一般消费级的应用,高速总线不多,特别是嵌入式产品上面。常见的高速总线就是ddr、mipi csi、mipi dsi、pcie、hdmi等等。其中用的最多的就是ddr。今天就来聊一下带ddr的开发板。

1、支持ddr ctrl的soc

        目前ddr一般就是指的ddr存储。这种存储有一个鲜明的特点,里面的数据需要定时刷新,不然容易丢数据。目前的soc,有的是可以内置ddr,有的则需要外挂ddr。内置ddr的soc,一般是内置ddr1、ddr2、ddr3,其中大小以32M、64M和128M为主,少部分内置256M。

        外挂ddr则不受限制,理论上取决于soc的最大支持大小。但是由于布线的关系,一般嵌入式外挂的ddr也不会很多,1~2片岁最为常见的方式。目前外挂ddr用的比较多的就是ddr3、ddr4。在电脑设备上,一般是ddr5用的比较多。

2、ddr总线构成

        ddr总线一般有三部分组成,一部分是地址总线,一部分是数据总线,还有一部分就是控制总线。不管是ddr1,还是最新的ddr5,都是遵循着这三个部分。就嵌入式而言,我们一般都是画成这样,

3、带ddr的电路原理图

        目前网上关于soc和ddr的原理图不是很多,一般大家获取的方式,都是通过代理商,直接从soc原厂那里获取原理图。剩下来为数不多的途径,就是找一些开源电路,或者通过电商商家那里获取。当然,还是可以通过一些开源电路网站,下载带ddr的电路,查看别人的soc、ddr layout方式,

https://oshwhub.com/search?wd=linux

        如下面图所示,这就是一个常见的ddr原理图,不过只有一片ddr,也是非常建议大家入门的ddr电路使用方式。

        图中左侧是soc中的ddr controller部分,右侧是ddr芯片。两者可以按照地址、数据、控制这三部分进行连接。剩下来的就是电源和地,这样就比较好理解了。注意,地址、控制总线一般是一一对应的,但是数据总线有的时候为了layout方便,不一定是一一对应的。

4、ddr的layout和使用方法

        ddr的难点不在于原理图,而在于layout。本身由于ddr总线传输速率比较快,所以一方面要考虑板层结构、考虑到阻抗匹配,通常就是线宽、线距、参考面;还要考虑高密度布局以及同一类总线的等长处理;再加上大部分带ddr的soc、ddr本身都是bga布局,layout还是有难度的。如果自己不是天天做这方面的工作,做起来还是有一点吃力的。大体上就是从这开始layout处理,

        针对这种情况,一般就是要么自己画带内置ddr的原理图,自己layout,因为基本上给个电源就行;要么直接购买核心板;或者是自己设计外置ddr的原理图,请人或者请别的公司协助layout,这三种方式都是可以的。

5、常见ddr布局

        内置ddr的soc自不必多说,如果是外置ddr,一般又分成单片和多片ddr的情况。单片ddr,就是直接地址、数据、控制总线连接。如果是多片,一般是按照数据位分开连接。比如说,0~15连接第一片ddr,16~31连接第二片ddr这样,片选的时候通常是一起选上的。当然前提条件是,soc支持32位data输入。

        转换成3d效果,就是这样的,

6、ddr初始化和测试

        ddr的初始化一般是在uboot第一部分内部完成的。uboot启动通常有两部分,第一部分从flash/emmc加载到soc的内部sram,然后执行uboot的第一部分。在执行第一部分的时候就可以初始化好ddr controller。初始化好了之后,ddr就可以使用了,比如把第二部分uboot加载到ddr,然后跳转到ddr执行。所谓的初始化,很多时候就是一堆寄存器的配置,有兴趣的同学可以找找这方面的资料看看。

        测试的话,就是常见的读和写,uboot上面有对应的memory read、memory write、memory modify和memory modify指令。

7、向soc厂家寻求帮助

        大部分ddr的controller资料,ddr芯片厂商都是愿意给的,反正谁控制它都无所谓。但是soc的ddr controller部分,绝大部分厂家都不给开发资料,但是给原理图和layout、系统image。也就是说,我们拿到布局、layout之后,自己烧入厂家给的image,可以保证系统肯定起得来。但是想自己发挥一下,或者自己魔改一下ddr、驱动,一般是不ok的。比如这里厂家原理图中的ddr addr推荐布线,基本上看不懂。可以看出来的是两片ddr,data和ctrl也分得清楚,但是addr为什么这么布置,很难弄懂,估计和内部寄存器、驱动有关。要是遇到这种情况,就只能向原厂寻求帮助了。

8、总结

        对于ddr,大家没有必要神话它,就是原理图中多一页controller和ddr即可。需要用的时候,简单的内置ddr soc可以自己画,或者直接买核心板。如果是需要大容量的ddr,那么可以自己出原理图,请别人layout。我们自己还是应该把重心放到系统和软件上面来,毕竟专业的人做专业的事情,这样的效率才是最高的。如果是想自己降成本,试一试layout,建议优先参考厂家给出的layout示例文件,把多余的元器件去掉,这样也会有很大的成功率。

        实在处理不好ddr的关系,可以一片ddr、8层板,总能解决问题的。等到比较熟悉了之后,就可以一次布局多片ddr,降低板层,做进一步的cost down处理。

作者:嵌入式-老费

物联沃分享整理
物联沃-IOTWORD物联网 » 嵌入式硬件DDR开发板上的F103芯片:从入门到精通的指南

发表回复