当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于ARM嵌入式系统的PC/104总线设计

当前已经进入嵌入式系统全面应用时代,基于ARM处理器和嵌入式Linux的嵌入式系统以其设计灵活、软硬件可裁剪、性能优越、成本低等特点和优势,倍受设计者和使用者青睐。

        其在低功耗、低成本应用领域确立了其市场领导地位;同时随着x86架构的不断成熟和x86处理器的应用范围越来越广,人们逐步开始认识到其本身架构的限制,在工业控制领域嵌入式ARM处理器将有望取代传统的X86处理器。
  

        PCI04总线是一种近年来在国际上广泛流行的专门为嵌入式系统而定义的工业控制总线,被IEEE协会定义为IEEE-P996,该系列产品已广泛应用于通信设备、车辆导航、工程控制等各种领域。由于PC或PC/AT的主板和扩展卡的尺寸及功耗标准都太大,。ISA总线不能满足嵌入式系统的发展的需要。PC/104作为从。ISA总线转变而来的接口总线,主要是为了适应嵌入式系统发展的需要,但是这种早期的总线结构是建立在Intel的x86架构之上的,在ARM体系结构下,还没有一个统一的标准可以提供对PC/104总线的支持,因为ARM在体系架构、总线时序、电气性能等方面和x86都有很大的区别。本文将提出一种在ARM处理器上支持PC/104总线的解决方案。

  l 系统总体设计

  系统的工作原理:PC/104总线上的1/O和Memory各16 MB空间用nGCS2和nGCS3选通,分别映射到的S3C24lO存储空间Bank2和Bank3的ROM/SRAM上。由于S3C24:10和CPLD在电平模式、制造工艺上都和PC/104总线标准有差异,故选用器件74LVHl62245做3.3~5 V电平转换器Buffer的方式来调整电气特性,进行TTL电平和LVTTL电平的转换,并增强驱动能力。PC/104总线上的8个中断请求信号IRQ[3:11]经bairer直接连接到S3C:2410的EINT[O:7];将S3C2410地址线SAddr[1:23]通过Buffer直接连接到Pc/104总线的Addr[1:19]和LAddr[17:23],.Addr0由控制器给出,当总线为8位数据传输时有效。由于复杂可编程器件CPLD的集成度高,与专用集成电路相比,具有设计灵活、开发周期短、设计制造成本低、大大节省了硬件资源优点,可选用他来做PC/104总线的控制器,主要是完成S3C2410读写时序向PC/104总线读写时序的转换,对输入控制信号译码,提供PC/104总线和S3C2410处理器的控制信号,同时产生PC/104所需要的时钟信号。S3C2410数据总线D[O:15]经CPLD输出到Buffer(Buffer上的数据传输方向由控制信号Data dir控制),连接到PC/104的数据总线上。因此总线控制设计的关键是保证控制器CPLD的时序的正确。其原理框图如图1所示。

2 PC/104总线控制器的实现

  2.1 PC/104总线简介

  PC/104模块具有独特的堆叠式总线扩展方式、体积小、功耗低、可靠性高等特点,由J1/P1,64针单列双排插针或插孔,和J2/P2,40针单列双排插针或插孔组成,总共104根总线信号,PCI04因此得名;标准模块的机械尺寸是3.6X3.8 in,即96X90 lnln。当总线工作在16位的数据模式下,儿/P1和J2/P2引脚的信号都应有效,在8位数据模式下,只有J1/P1引脚信号有效,J2/P2上的信号无效。104个引脚的组成:20根地址线;7根锁存地址线;16根数据线;11个中断请求;32根控制线;14跟地和电源线;2个key;1个8 MHz的BCLK和1个14 MHz的OSC;总线的工作电压为5 V。PC/104总线的I/O读写时序如图2所示。

2.2 ARM$3C2410处理器简介

  S3C2410是韩国三星电子公司的一款基入ARM920T内核的16/32位RISC嵌入式处理器,主要面向手持设备及高性价比、低功耗的应用,最高工作频率为203 MI-Iz。ARM920T核由ARM920TDMI、存储管理单元(MMU)和高速缓存3部分组成。其中MMU可以管理虚拟内存,高速缓存由独立的16 kB地址和16 kB数据高速Cache组成,他支持嵌入式Linux,Windows ce等嵌入式操作系统。S3C2410将系统的存储空间分成8组(Bank),每组的大小为128 M,共1 G。Bank0~Bank5的开始地址固定,用于ROM/SREM。Bank7的开始地址是Bank6的结束地址,灵活可变,其主要用于ROM/SRAM/SDRAM。S3C2410采用nGCS[7:0]8个通用的片选信号来选则这些组。读写时序图如图3所示。

2.3 PC/104总线控制器的设计

  本设计采用。Xilinx公司XC95144XL的CPLD,共144个引脚,其中可编程的引脚数117个,满足PC/104总线控制器上输入输出控制信号数目的要求;器件正常工作电压3.3 V,I/O端口的负载电流可达24 mA,延迟时间tpD=5 ns,工作频率f=178 MHz,可与S3C2410的AHB总线的时钟频率HCLK匹配。VHDL是电子设计的主流硬件描述语言,具有很强的电路描述和建模的能力,从而大大简化了硬件设计的任务,提高了设计的效率和可靠性,并在语言的易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。Max+PlusⅡ界面友好,使用便捷。因此选择用VHDL语言编写有限状态机来实现PC/104总线控制器,通过Max+P1usⅡ开发工具进行逻辑波形验证。

  2.3.1 控制器内部状态图

  在PC/104总线的设计中,设计的重点是总线控制器的实现,能否完成PC/104总线驱动,关键在于控制器能否正常运行。PC/104总线控制器的工作流程:控制器等待选通信号有效,如果nGCS有效则锁存地址并保持ARM总线状态,然后进行读写操作判断,最后把数据和相应得控制信号加在PC/104总线上,完成操作后释放ARM总线。其状态转换图如图4所示。

2.3.2 I/o空间读写逻辑仿真波形

  本设计的有限状态机采用VHDL语言设计,主要完成PC/104总线控制器的状态图转换,从逻辑仿真波形上看:ARM读操作时,n0E信号有效(低电平),从总线上读人数据,同时使总线控制信号有效;写操作时,nWE信号有效(低电平),把数据直接写到总线上,同时也使总线控制信号有效,图5的仿真波形基本符合本设计的S3C24lO和PC/104总线读写时序要求。

  3嵌入式Linux下的驱动程序开发

  为了在Linux 2.6操作系统下实现本文所述的功能,必须为总线控制器提供一个驱动程序。在Linux中,所有的硬件设备都像常规文件一样看待,他们可以使用和操作文件相同的,标准的系统调用进行打开、关闭和读写。用户程序通过相应的系统调用来访问硬件设备,设备驱动程序的作用正是为这些系统调用提供接口。为了能对PC/104总线上的地址空间进行随机、连续访问,把PC/104总线设计成块设备。

设备驱动程序本质上说就是一组相关函数的集合。在驱动程序模块化编程中,首先需要调用入口函数im-modLde()完成设备驱动程序的初始化工作:利用函数

在系统中注册和PC/104相关的几个中断,关联中断服务例程,并设置中断等级;利用函数setexternal irq(int irq,int edge,int pulIup)设置中断的触发模式,和是否利用处理器的内部上拉;其中最重要的一个工作就是向内核注册设备,调用函数

注册成功后,该设备获得系统分配的主设备号、自定义的次设备号,并建立起与文件系统的关联;在本应用中只需要定义write()、read()两个文件操作,因此文件系统接口可定义为:

最后驱动程序卸载时调用出口函数Clearnup rood-ule(),通过函数

放相应的资源。

  4 结 语

  本文重点描述对PC/104控制器的设计,从满足系统的时序要求出发,采用CPLD器件和VHDL语言完成对PC/104总线上信号的驱动,同时在嵌入式Linux环境下编写驱动程序,提供了一套完整的基于ARM嵌入式系统上实现PC/104总线的方案,该方案将在实践应用中进一步验证和完善。本文成功地把工业控制计算机技术中的嵌入式PC/104总线结构在S3C2410处理器上实现,该系统具有体积小、功耗低,克服了传统PC机的缺点;采用CPLD通过VHDL语言实现PC/104总线控制器,缩短开发的成本和周期,提高了开发的灵活性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭