1、基于 ARM 的嵌入式系统 CF 卡存储技术田晓明 陈怡伶 (陕西省计量科学研究院, 陕西 西安 710048)摘要:针对当前现有的 CF 卡接口电路存在接口复杂、稳定性不高、存储速度缓慢等缺点,通过深入研究 ARM 处理器 AT91RM9200 的外部总线接口(EBI)及 CF 卡、CPLD 的工作原理,设计了新的 CF 卡接口电路。新的 CF 卡接口电路中采用了 CPLD 来代替一般 CF 卡接口电路中的双向缓冲器、与非门等所有逻辑器件,通过现场对 CPLD 编程来实现不同的逻辑功能。实验表明:该电路更加简单、灵活、稳定、高速,对接口电路的设计有重要的参考价值。关键词:嵌入式系统;总线接口
2、技术;CF 卡存储技术; CPLD 编程;高速存储The Memory Technology of CF Card Based on ARM Embedded SystemTIAN Xiao-ming CHEN Yi-ling (Shanxi Institute of Metrology, Xian 710048,china)Abstract: In consideration of those disadvantages of the currently available CF card interface circuit , which are interface circuit com
3、plex , instability, low-speed storage and so on, one new interface circuit is designed through the deeply study of the ARM processors ,the external bus interface , the CF card and CPLD working principle. The new CF card interface circuit used the CPLD to replace all the logic devices of the general
4、CF card interface circuit, which include bi-direction buffers and nand gate, then it can through on-site programming of CPLD to implement different logic functions. The experimental results show that: the new interface circuit is more simple, flexible, stable and high-speed. It is of great value to
5、the design of interface circuit.Key words: Embedded system ;Bus interface technology ;The CF card storage technology ; CPLD Programming; High-speed storage;1 引言随着应用需求的不断提高,许多嵌入式系统在应用时都要求带有扩展的大容量存储器来存储数据。CF 卡(CompactFlsah Card)由于价格便宜、存储容量大、体积小、兼容性好等优点被广泛应用于嵌入式产品。然而现有的 CF 卡接口电路存在接口复杂,稳定性不高等缺点 1,不能满足客户
6、的需求。通过深入研究 ARM 处理器 AT91RM9200 的外部总线接口(EBI)、CF 卡和 CPLD 的工作原理,提出利用 CPLD 来改进 CF 卡接口电路以解决现有接口电路中存在的缺点。接口设计中用 CPLD 来实现一般 CF 卡接口电路中的双向缓冲器和与非门等一些逻辑器件的逻辑功能,使的接口电路变的更为简单、稳定、高速,而且可以通过对CPLD 现场编程来实现不同的功能。最后给出改进接口电路的相关讨论。2 器件简介作者简介:田晓明(1981-) ,男,陕西绥德人,硕士,专业方向为嵌入式系统应用,15191412199。2.1 外部总线接口系统采用了以 ARM920T 为内核的 AT9
7、1RM9200 作为微处理器,它是完全围绕 ARM920T Thumb处理器构建的系统 2。它有丰富的系统与应用外设及标准的接口,包括一个高速片上 SRAM工作区及一个低等待时间的外部总线接口(EBI)以完成应用所要求的片外存储区和内部存储器映射外设配置的无缝连接。外部总线接口结构如图 1。图 1 外部总线接口结构EBI 通过集成电路支持 CF 卡与 SmartMedia 协议,从而极大地降低了对外部组件的需求。此外,EBI 可处理多达 8 个外设的数据传输,每个外设分配 8 个在内置存储控制器中定义的地址空间。数据通过 16 位或 32 位数据总线进行传输,地址总线高达 26 位,8 个芯片
8、选择口(NCS7:0)和在不同外部存储控制器间复用的多个控制引脚进行。2.2 CF 卡CF 卡(Compact Flash Card)是采用 Flash Memory 技术的存储卡,具有体积小、价格低廉、兼容性强、存储量大等优点。CF 卡支持三种接口模式,分别是 PC Card Memory Mode、PC Card I/O Mode、True IDE Mode3。因为 True IDE Mode 不经常使用,故接口电路以 PC Card Memory Mode 和 PC Card I/O Mode 设计。2.3 CPLDCPLD(Complex Programmable Logic Devi
9、ce)是 Complex PLD 的简称,一种较 PLD 为复杂的逻辑元件 4。CPLD 是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。本文采用的 CPLD 是 Altera 公司的 MAX7000S 系列的 EPM7128SQL100-105。它有 84 个引脚,其中 5 根用于 ISP(IN System Programmable)下载,可方便的对其进行在系统编程。EPM7128SQL100-10 支持对电压工作,可以利
10、用 Altera 公司的第四代开发平台 quartus 方便地进行仿真、综合和下载。3 硬件接口电路设计A 2 5 / C F R N WD 1 5 : 0 N C S 4 / C F C SC P UC D ( P I O )A 1 0 : 0 A 2 2 / R E GN O E / C F O EN E W / C F W EN W R 1 / C F I O RN W R 3 / C F I O WN C S 5 / C F E 1N C S 6 / C F E 1N W A I TB F R D Y / S M O E/ O ED I R / O ED 1 5 : 0 _ C D 1
11、_ C D 2A 1 0 : 0 _ R E G_ O E_ W E_ I O R D_ I O W R_ C E 1_ C E 2_ W A I TR D Y / B S YC F 卡C P L DR E S E TR E S E T图 2 硬件接口电路硬件接口电路的电路图如图 2 所示。 在此电路中用 CPLD 来实现一般 CF 卡接口电路中的双向缓冲器和与非门等一些逻辑器件的逻辑功能,使的接口电路变的更为简单、稳定、高速,而且可以通过现场修改程序来实现不同的功能。CF 卡中的_CD1、_CD2 是 CF 卡是否安装的状态检测信号,在 CF 卡中接地。当 CF 卡没有安装时,电路中_CD1
12、、_CD2 由上拉电阻将其输出拉为高电平;当 CF 卡安装时,_CD1、_CD2 由 CF 卡接地输出为低电平,_CD1、_CD2 相当于 CF 卡的总开关。在实际接口电路中_CD1、_CD2 要接 10K 的上拉电阻。将片选任务寄存器的 CS4A 编程为 1 则可使能 EBI 的复用引脚NCS4/CFCS,NCS5/CFCE1,NCS6/CFCE2 为 CompactFlash 信号 CFCS,CFCE1,CFCE2,使能NOE/NRD/CFOE,NWR0/NEW/CFWE,NWR1/NBS1/CFIOR,NWR3/NBS3/CFIOW,A25/CFRNW 为CompactFlash 信号
13、CFOE,CFWE,CFIOR,CFIOW,CFRNW。这样就可以通过访问保留给 NCS4的地址空间来访问外部的 CF 卡。在 NCS4 的地址空间中用当前的传输地址来分辨 I/O 模式,通用存储模式还是标志存储模式。传输地址总线的 A23 用作 I/O 模式选择。本文 CF 卡用A22/REG 来分离通用存储模式还是标志存储模式。在 I/O 模式下 6,CompactFlash 的逻辑驱动 CFIOR 与 CFIOW 信号上 SMC 的读写信号,此时 CFOE 与 CFWE 信号失效。同样在通用存储模式和标志存储模式下驱动 CFOE 与 CFWE 信号上的 SMC,CFIOR 与 CFIOW
14、 信号失效。该逻辑如图 3 所示。A 2 3S M CN R D _ N O EN W R 0 _ N W E1111C F I O RC F I O WC F O EC F W EE x t e r n a l B u s I n t e r f a c eC o m p a c t F l a s h L o g i c图 3 CF 卡读写控制信号CFOE 与 CFWE 通过 CPLD 和 CF 卡的 OE 与 WE 连接起来,这是 CF 卡在 Memory Mode 的读写使能。CFIOE 与 CFIOW 通过是 I/O Mode 的使能。除了使能信号外其他的信号对 2 种模式都是相同的
15、。CFCE1 与 CFCE2 信号使能 CF 卡的数据总线由上或是由下访问,具体信息见表 1。只有当 NCS4 引脚上的 SMC 配置为驱动 8 位存储器时才可进行奇字节访问,NCS4 地址空间中的片选寄存器必须如表 1 所示进行设置以使能所需访问类型。表 1 自上与自下字节访问访问 CFCE1 CFCE2 A0 D15:8 D7:0 SMC_CSR41 0 0 不在意/高阻 偶字节 8 位或 16 位字节读/写访问1 0 1 不在意/高阻 奇字节 8 位奇字节读/写访问 0 1 X 奇字节 不在意/高阻 16 位半字读/写访问 0 0 X 奇字节 偶字节 16 位_CD1、_CD2 为低电平
16、时,CPU 的地址总线的低 11 位 A10:0于 CF 卡的地址总线A10:0连通,CPU 的数据总线的低 16 位 D15:0与 CF 卡的地址总线 D15:0连通。CPU的 A25/CFRNW 信号是数据流的方向的, NCS4/CFCS 信号是数据总线的传输使能。详细的请参阅表 2。表 2 数据流向A25/CFRNW NCS4/CFCS 数据传输方向逻辑真值 1 0 CPUCF逻辑真值 0 1 CFCPUCPU 是高速器件,CF 卡是低速器件,在 CPU 给 CF 卡传输数据的时候就会发生因为接收速度慢而丢失数据的情况。所以需要用_WAIT 信号来延迟 CPU 的发送,这样才能使 CPU
17、 的发送时序与 CF 卡的接受时序匹配,使得数据的传输正确无误。实际电路中 CF 卡的_WAIT信号通过 CPLD 来控制 CPU 的 NWAIT 信号,_WAIT 要接 10K 的上拉电阻。RDY/BSY 是 CF 卡的工作状态信号,当 RDY/BSY 为 1 时, CF 卡已经做好准备接收新的数据;当 RDY/BSY 为 0 时,CF 卡正在接受数据,这个信号也要接个 10K 上拉电阻。CF 卡的复位 RESET 信号也是由系统的复位 nRESET 信号在 CPLD 中反相后产生的,以保持和系统的复位信号同步。4 CPLD 程序开发CPLD 程序在 quartus 【7】 下用 Veril
18、og HDL 语言编写 8。程序经过编译后,下载到CPLD 中固化。连接电路板和 CF 卡,对 CF 卡进行数据的读写操作,测试结果表明数据传输正确无误,且传输速率更高。5 结束语本文重点研究了如何利用 CPLD 来连接基于 ARM 的嵌入式系统与 CF 卡。其中使用的CPLD 不但简化了接口电路,使其适合现场编程,同时改进的接口电路还适合产生各种复杂组合逻辑和时序逻辑。这种存储技术的正确性已在电路板上得到验证。它为基于 ARM 的嵌入式系统的 CF 卡存储提供了一种有效的解决方案。参考文献:1张大波. 嵌入式系统原理、设计与应用. M.北京:机械工业出版社.,2005.2ATMEL.基于 A
19、RM920T 的微处理器 AT91RM9200 Datasheet.3CF+ and CompactFlash specification Revision 1.4. 4吴继华,王城Alter FPGA/CPLD 设计M北京:人民邮电出版社,5ALTERA.MAX 7000 programmable logic Device Family Datasheet. September 2005,Ver.6.7.6周立功.ARM 嵌入式系统软件开发实例M北京:北京航天航空出版社, 7赵艳华.基于 Quartus 的 FPGA/CPLD 设计与应用.M.北京:电子工业出版社,2009.8夏宇闻. Verilog 数字系统设计教程. M.北京:北京航空航天大学出版社, 2007.作者: 田晓明(1981-) ,男,陕西绥德人,硕士研究生,专业方向嵌入式系统。陈怡伶(1984-)女,陕西宝鸡人,专业方向光信息科学与技术。工作单位: 陕西省计量科学研究院通讯地址: 西安市咸宁西路 30 号邮编: 710048联系电话: 15191412199e-mail: txm_