嵌入式硬件知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AMBA简介
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。
数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。
在基于I P复用的SoC设计中,片上总线设计是最关键的问题。
为此,业界出现了很多片上总线标准。
其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。
AMBA规范主要包括了AHB(Advanced High perfor mance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
S3C2410开发板和S3C2440开发板的区别
1、S3C2410开发板和S3C2440开发板两者都是ARM920T内核,芯片资源上相差不大(2440还是多了camara接口);
2、S3C2440的主频超过S3C2410两倍,而且一般是工业级,但功耗也比S3C2410高些,所以S3C2440的定位更多是对温度和速度要求高,而功耗相对不敏感的领域;
3、2410开发板的资料一大把,网络上随处可见,如果是学习嵌入式系统开发的话应该是首选;2440就差很多,即使三星自己也把网站上本该公开的资料关掉了,至于为什么,说法有很多种;
4、如果您做手持型设备,对处理速度要求不是很高的情况下可以选用S3C2410开发板(事实上它的速度也相当不错了),这样成本和功耗都会低一些。
5、另外在速度上面的测试结果是这样的:2440确实在运行一些应用时要快很多,但并没有想象中那样好,因为两倍的速度只是内核速度的提升,而外部总线速度和2410基本是一样的;
2440 2410 S3C2440 S3C2410 2440开发板2410开发板
S3C2440A微处理器是一款由Samsung半导体公司推出的高性能、低功耗、高集成度微处理器。
除继承了S3C2410A的所有特性外,较S3C2410A发展了以下优势:
具有工业级温度范围;
主频高达400MHz;
具有数字摄像头接口;
更低的内核电压,支持低电压存储器
支持更多分辨率液晶屏;
支持大页(2048字节)Nandflash;
具有AC'97编解码器接口;
具有更多可用的I/O口;
UART口输入输出各具有64字节FIFO;
无需外围电路的触摸屏接口。
DM9000A是中国台湾DAVICOM公司推出的一款高速以太网接口芯片,其基本特征是:集成10/100M物理层接口;内部带有16K字节SRAM用作接收发送的FIFO缓存;支持8/16bit 两种主机工作模式;通过HP认证的AUTO-Mdix(支持直接互连自动翻转)功能;支持TCP/IP 加速(IPV4 check sum offload)减轻CPU负担,提高整机效能;10ns I/O读写时间。
DM9000A 以太网控制器遵循IEEE颁布的802.3以太网传输协议。
该电路还集成了EEPROM接口,自举时通过EEPROM接口输入到芯片中,从而实现自动初始化。
硬件接口设计
DM9000A可以很方便的与目前主流的嵌入式CPU以8位或16位的总线方式连接,本文设计的系统CPU为AT91RM9200,它是一个采用ARM核的32位微处理器。
二者的接口设计如图1。
图1 DM9000A与AT91RM9200硬件连接
系统上电时,AT91RM9200通过总线配置DM9000A内部网络控制寄存器(NCR)、中断寄存器(ISR)等,完成DM9000A的初始化。
随后,DM9000A进入数据收发等待状态。
当AT91RM9200向以太网发送数据时,先将数据打包成UDP或IP数据包,并通过16 bit 总线发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,使能发送。
当DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误或存在CRC校验错误,则将该帧数据丢弃。
否则将数据帧缓存到内部RAM,并通过中断标志位通知AT91RM9200,由AT91RM9200对DM9000A接收到的数据进行处理。
在DM9000A中只有INDEX端口与DATA端口两个寄存器可以直接被CPU直接访问,其它所有内部控制和状态寄存器都是通过这两个端口寄存器间接访问的。
网络控制器CMD 引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX端口寄存器;当CMD=1时,访问的是DATA端口寄存器。
设计中将CMD引脚与处理器的地址线A2相连,则DM9000A的2个外部接口端口地址分别为:
INDEX端口地址=IOaddress+0x00
DATA端口地址=IOaddress+0x04
实际中INDEX端口寄存器保存的是访问DATA端口寄存器的内部寄存器的地址,因此对DM9000A控制或状态寄存器访问的命令顺序是:
1)写要访问寄存器的地址到INDEX端口;
2)通过DA TA端口来读/写数据。
动态SDRAM
SDRAM是目前中等复杂度以上的嵌入式系统普遍采用的RAM。
DRAM与SRAM的最大区别是DRAM只采用1个晶体管加一个电容的结构来保存1位数据,而SRAM则需要4-6个晶体管才能保存一位数据。
但是DRAM由于靠电容的充放电来实现0和1的状态变化,因此经常需要对电容状态进行刷新,不仅要周期性地刷新(约几十毫秒一次),在每次读取操作后也一样要刷新。
SDRAM的存储单元按行、列来组织,寻址时也就根据行地址和列地址综合来找到存储单元的。
行地址和列地址的具体范围需依赖datasheet具体分析。
SDRAM芯片的引脚主要有:行地址锁存控制脚RAS,列地址锁存控制脚CAS,时钟输入脚CLK,其他的地址总线、数据总线、CE、WE等与SRAM是一致的。
CLK是SDRAM芯片的主时钟输入,所有控制信号都必须与该脚的上升沿同步(Synchronous),这也是SDRAM名字中S的意思。
对于SDRAM片子,CLK的频率有个极
限,要看datasheet的说明,100MHz,133MHz,或者是166MHz。
我们PC电脑用的SDRAM 内存条不也有PC100,PC133的说法吗,正是此意。
SDRAM读取的过程一般如下:
1. CPU把行地址传送到DRAM的地址引脚上。
2. 激活RAS引脚,地址引脚上的行地址就打入DRAM芯片的锁存器了
3. WE脚不使能,确定目前是处于读操作
4. 同第1、2步把列地址打入到列地址锁存器
5. 使能OE脚(一般就是CAS脚),此时数据就从数据总线上出现
6. 人为置RAS和CAS同时失效,表示当前读取周期结束。
写过程类似,具体的时序,很多资料会有,一般如果CPU有SDRAM控制器,那就无须管上述过程。
但如果用FPGA来实现该时序,就还是需要了解。
以三星256Mbit SDRAM K4S561632为例,其引脚如附图1所示:
DQM脚还分为LDQM脚和UDQM脚,也即前面第一章提到的,方便那些字节寻址的CPU (如2410,2440)控制读写存储器的高字节和低字节(MASK),关于这个内容,第三章有个详细的例子。
CLK、CS、CKE(Clock Enable)、A0-A12、RAS/CAS、WE、D0-Dn等引脚无需再解释。
BA0 和BA1 是bank选择地址,这两根地址线可以译码出4种情况,也即这片SDRAM 芯片内部的存储单元划分为4个BANK。
对于带有SDRAM控制器的CPU如2440,它的数据手册会详细介绍如何跟不同BANK组织方式的SDRAM连线的了,以2440为例,截下其datasheet对应的说明如附图2:
可见把2440的24和25号地址线连接到BA1和BA0即可。
S3C2410 CPU默认的工作主频为12MHz,使用PLL电路可以产生更高的主频供CPU 及外围器件使用。
S3C2410有两个PLL(锁相环):MPLL和UPLL,UPLL专用与USB设备。
MPLL用于CPU及其他外围器件。
通过MPLL会产生三个部分的时钟频率:FCLK、HCLK、PLCK。
FCLK用于CPU核,HCLK 用于AHB总线的设备(比如SDRAM),PCLK用于APB总线的设备(比如UART)。
从时钟结构图中可以查看到使用不同时钟频率的硬件。