原创 ARM920T的SMC接口研究与PC/104总线仿真

2010-6-24 14:08 1870 21 21 分类: 消费电子

摘要:通过分析920T核ARM 处理器的高速片上系统总线AHB时序及其静态存储控制器SMC接口模型,研究IBM PC/AT和IEEE PC/104总线规范,提出一种在ARM 平台上实现兼容PC/104总线的方案.深入探讨两种平台体系在存储器结构、指令系统及总线时序等方面的巨大差异,给出了克服这些差异并实现总线功能兼容的方法.该兼容总线解决了在ARM 平台上无法使用标准PC/104模板的难题,采用该方案有利于在嵌入式系统的设计中兼取ARM 处理器和PC/AT体系的优势.         

0 引 言

     PC/104 是一种专门为嵌入式应用而定义的工业控制总线规范.以IBM PC/AT总线规范为基础的个人计算机及其外围设备在应用上取得了巨大的成就,IEEE一996称之为ISA(工业标准架构:Industry Standard Architecture)总线.PC/104是ISA标准的延伸,定义在IEEE-P996.1中,称为兼容PC嵌入式模块标准.PC/104实质上是一种紧凑型的ISA,其信号定义和Pc/AT基本一致,但电气和机械规范却完全不同,是一种优化、小型、堆叠式结构的嵌入式总线系统.PC/104总线来自于实践发展的需要,同时得益于PC技术的迅速发展,由于其开发环境友好、兼容芯片丰富、标准支持广泛等优势,受到了众多从事嵌入式产品生产商和系统集成商的欢迎,尽管现在ISA设备已不常见,但PC/104在嵌入式系统领域却仍是通行的标准.

ARM是当前嵌入式系统应用中的热门技术.由于ARM处理器的卓越性能、较低的价格以及业内半导体厂商的广泛支持,在嵌入式环境中有广泛的应用.ARM 公司创造了CHIPLESS模式,该公司通过将高效的ARM 内核授权给半导体公司,由半导体公司根据实际的应用情况加上各种外围的功能电路来构成一块完整的芯片,这种模式使半导体厂商得以有能力生产功能强大的各种专用处理器芯片.AR M在设计上基于SoC思想,优先考虑对每一个具体应用使用最大可能集成周边设备的单一芯片,但在板极扩展方面仍然缺乏能被广泛接受的新工业标准.

1 PC/AT模型和PC/104总线

1.1 总线信号

   PC/104_4 ]是一种16位总线,但可向前兼容8位XT模式,典型总线时钟为8 MHz,4个时钟脉冲可完成一次完整的总线访问,必要时可插入一个额外的等待周期以适应低速外设.在嵌入式系统开发中常用以下信号.

1.1.1 地址和数据信号线

  BALE总线地址锁存使能信号线,由平台CPU驱动.当ISA扩展卡或DMA控制器占用总线时,它也被置为逻辑1.

SA~19:O>:低2O根地址信号线,由当前总线的拥用者驱动.

LAd 23:17> :锁存地址信号线,用来访问16MB的存储器地址空间.由当前总线拥有者或DMA控制器驱动.

SD<15:0> :数据信号线.

1.1.2 总线周期控制信号线

MEMR#:存储器读信号线.

MEMW #:存储器写信号线.

IOR#:I/O I/O读信号线.

IOW #:I/O I/O写信号线.

1.1.3 中断和DMA(Direct Memory Access)信号线

IRQx:中断请求信号线.

DRQx:DMA请求信号线.

DACKx#:DMA应答信号线.

1.2 地址空间

    PC/AT系统使用不同的指令访问存储器空间和IO端I:1空间,访问存储器空间时PC/104总线驱动MEMR#和MEMW#信号,访问存储器空间时PC/104总线驱动IOR#和IOW #信号.两个空间使用同一套地址线,但是由于端口空间只有64K有效,所以进行IO 端口访问时地址线上只有SA<15:O>是有效的.

    PC/AT系统有专门的端口访问指令用于实现端口访问,Linux用户程序只需以root权限调用ioperm()指定需操作的端口地址范围,之后即可自由访问这些端口.由于用于访问端口的一组宏实际上直接对应CPU的端口访问指令,所以存取效率很高.

1.3 PC/104总线周期

PC/104总线周期分为CPU驱动和DMA控制器驱动两大类,在嵌入式应用中较常用的是CPU驱动的IO读/IO写周期.

 

 

图1中采用8 MHz时钟的标准PC/104总线£Rd大于300 ns,tAF应大于250 ns,tRDpw约为500 ns。

2 EP9315(ARM920T)体系

2.1 存储器结构和地址空间

     EP9315是Cirrus Logic公司生产的典型ARM 920 TDM I(Thumb,Debug,M ultiply,Em—bedded ICE macrocel1)32位哈佛结构处理器.EP9315有一个通用存储器访问接口,支持SDRAM,SRAM,ROM,及FLASH(包括N0R FLASH)等不同形式的存储器,各种存储器访问均共享数据总线DA[3l:O]和地址总线AD[Z5:o],使用统一的访问控制逻辑 。

    与X86模型不同,ARM 平台只实现一个物理地址空间,在Bo0T成功后只拥有一个唯一的虚地址空间,CPU不设立专门的外设I/O指令,访问外设I/O端口和内存单元使用相同的指令.

   引脚CSn[7:6]和CSn[3:O]用于存储器芯片的选通,除发生时间略有差异之外(图2),基本上可视为地址总线的高位线.

2.2 AHB总线时序和SRAM 接口

   AHB(Advanced High-Speed Bus)是EP93 1 5内部920T核与存储器、DMA,存储器等设备实现高速互联的系统总线.EP9315的AHB具有完善的多主控冲突仲裁能力,其典型工作频率可达100 MH。

静态存储控制器SMC(Static Memory Controller)与920T核心通过AHB互联,支持存储器的8/16/32位访问方式.SMC最多可提供8个组,每个组均可支持SRAM,ROM,FLASH EPROM 等存储器的访问,各组可以对数据总线宽度和速度等参数独立配置.图2描述了SRAM 读操作时序.

 

 

 

图中f删为CSn到RDn的延迟,最大值为3 ns;tDAs是RDn无效前的数据总线建立时间,最小值为12+tHcI tRDD 是RDn有效时间,典型值为t HcI K×(W ST1+ 2)。

HCLK是AHB总线的工作频率,该频率的高低直接影响系统全局性能,因此通常配置为上限100 MHz,此时相应周期£胁 为10 ns.WSTI用于控制sMc对SRAM/R0M 的访问速度,寄存器SMCBCR0—3, SMCBCR6-7 (地址0x80080000—0x8008001C)的第5-9位分别为相应各组的WST1.WST1的默认值为0xlF,即默认情况下SMC使用

最低的访问速度,显然fRDD 为330 ns,小于PC/104总线中的500 ns(图1).

3 PC/104总线实现

3.1 总线驱动

    在EP9315支持的各类总线接口逻辑中,SMC提供的SRAM/ROM 时序与PC/104总线最为接近.将外部设备所需的PC端口空间和存储器空间均映射至统一的虚拟空间中即可实现访问.

  注意到PC/104总线使用标准TTL逻辑电平,而EP9315的处理器是3.3 V器件,在极端负载情况下无法保证系统稳定工作.TI的双电源总线收发器1T45,2T45,16T245等可用于实现电平转换,图3是1T45的引脚逻辑图.

 

地址总线及访问控制信号均由CPU驱动,外部设备始终处于被动接收状态,正确设定数据流向即可.

数据总线信号是时分双向传输的,为遍免出现总线冲突,必须保证除非CPU 透过该收发器对外设进行读访问,否则收发器的CPU 侧应始终处于高阻状态.为此,16T245等具有输出使能端的器件只需使输出无效即可,而对于无使能端的收发器则应使CPU侧处于输入状态(高阻).

确认CPU 已向兼容PC/104总线发起读操作的有效方法是检查RDn的下降沿是否发生.一旦RDn下降,应立即将收发器置成从外设流向CPU方向,且输出使能有效,并至少保持至RDn上升沿之后,以保证可靠读取.

3.2 端口映射

    SMC的存储器分组片选信号CSn可作为高位地址线参加这址译码.任取CSi和CSj组用于兼容总线,即可分别实现O-0x3FFFFFF的独立存储器地址和IO端口地址.可用地址数量已经远超出XT系统中的1 M(存储器)和1 K(IO端口).

    在Linux系统中,io.h文件中声明了函数iore—map(),用于将兼容总线上外部资源的物理地址映射到核心虚地址空间中.iounmap()函数用于取消ioremap()所做的映射.上述操作都应在设备驱动程序中执行.在外部资源成功映射到核心虚地址后,使用指向核心虚地址的指针就可访问相应设备资源,但显然这种访问方式与在X86平台下差异较大.

    将兼容总线视为一个独立的字符设备,为其编写驱动程序,实现对指定偏移地址的读写函数,此处的偏移地址即对应PC/104总线中的物理地址 .

    对inb(),outb()等X86平台下的常见的底层端口操作函数,可用宏替换的方式转由驱动中的相应读写函数实现.

更多精彩源之:http://www.fly-sun.com.cn

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条