首页>>科技 >>内容

基于EP9315和MAX2,EPM240实现输入输出模块的设计

发布时间:2023-07-23 16:28:07编辑:温柔的背包来源:

很多朋友对基于EP9315和MAX2,EPM240实现输入输出模块的设计不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

基于EP9315和MAX2,EPM240实现输入输出模块的设计

嵌入式叶丁控制系统的突出特点是抗干扰,在高低温和高电磁辐射环境下可靠稳定。与PLC系统相比。其明显的优点是处理速度快,工业以太网建立方便,编程方便,通用性好,价格仅为PLC的几分之一,具有很好的发展前景。本文主要讨论了基于EP9315和MAX2_EPM240的嵌入式输入输出系统的设计。1、系统组成

整个嵌入式I/O系统分为三个部分:嵌入式系统、应用模块(I/O模块)和转换模块。整体结构如图1所示。图1系统结构框图1.1嵌入式系统本次设计选用了Cirrus Logic的高性能ARM9嵌入式微处理器EP9315。拥有ARM920T内核的所有优秀性能。丰富的集成外设接口包括以太网MAC、串口、2.0全速主机USB、专用SDRAM通道的LCD接口、触摸屏接口等等。

Cirrus logic为用户提供了基于该处理器的全功能开发板。使用Windows CE。NET嵌入式操作系统,系统开发效率高,运行稳定,为工业控制提供了可靠的系统平台。基于定制的WinCE操作系统,实现了工业控制中应用模块的专用驱动,提高了嵌入式系统的通用性。

本文描述的系统应用了开发板丰富的集成外设接口。通过串口下载eboot通过以太网下载操作系统内核和应用程序,实现以太网通信;主机USB连接鼠标,方便用户操作;液晶屏实现显示,触摸屏界面实现面板触摸操作。1.2转换模块的设计

转换模块用来引出开发板上需要的信号线,主要包括数据线、地址线和一些I/O控制信号(如nWR、nRD、NCS3、nWAIT等。).电平转换驱动芯片74LVXC4245主要用于转换模块,其功能包括:(1)改善信号质量;(2)抗干扰;(3)实现电平转换;(4)提高EP9315引脚的驱动能力。1.3基于CPLD的输入输出模块的设计1.3.1输入输出模块的设计思想

在工业应用领域,输入/输出模块通常包括数字输入模块、数字输出模块、数字输入/输出模块、模拟输入模块、模拟输出模块、模拟输入/输出模块等。考虑到不同应用系统的复杂性,对输入输出端口的要求是不同的。为了根据实际需要灵活添加不同类型的输入输出模块,设计中采用了以下思路:

ARM9的数据总线、地址总线和控制总线同时连接到多个插槽,每个插槽都有一个固定的地址,称为插槽地址。各种模块可以插入任何插槽。

基于CPLD开发设计各种输入输出模块,实现对外部系统的检测和控制。然而,对于不同的输入输出应用系统,其输入信号和输出信号具有不同的特性,表现出复杂性。设计时必须考虑到上述复杂性,并根据实际情况对相应的输入输出信号进行调理。

为了保证I/O模块与ARM9主控制器连接的稳定性和快速性,采用了总线方式的扩展:在ARM9的BANK3空间悬挂CPLD,连接11条地址线、16条数据线和相应的控制线(包括nRD、nWR、nCS3、nWAIT)。各种输入/输出模块的总体设计框图如图2所示。

图2 I/O模块框图信号层次电路的主要功能是:实现各种输入信号的调理,满足CPLD输入引脚的电气要求;实现CPLD输出信号的调理,满足应用系统的电气要求。CPLD总线功能:通过各种总线建立CPLD与ARM9-19之间的信号连接,实现CPLD与ARM9之间的通信。

由于各种模块可以插入任意插槽,为了实现不同种类模块的自动识别,通过硬件设计语言给每种模块赋予一个ID码。ARM可以通过“读取ID码地址”来读取ID码,然后就可以判断是哪种模块。然后可以根据模块类型进行相应的操作。1.3.2端口数据的CPLD选择。

Altera的MAXII器件采用了全新的CPLD结构,比之前的MAX器件具有更高的性价比、更低的功耗和更大的容量,是复杂控制应用的理想解决方案。考虑到输入输出模块的功能相对简单,不需要大量复杂的操作,本系统选择了容量相对较小的EPM240进行设计。1 . 3 . 3 CPLD的软件设计

为了通过ARM9的地址总线、数据总线和控制总线实现对I/O模块的读写控制,必须根据ARM9的读写时序图,用硬件语言对I/O模块的CPLD进行编程。输入模块的关键代码如下:assign data _ bus=(~(rdics))(address==baddr[10:5])(haddr[4:0]==5 ' b 00000))?16 ' b 0000000011011111:16 ' BZ;

assign data_bus=((~(RDICS))(address==baddr10:5)(baddr4:0==57b00100))?dc24v_in:16’bz;

程序中第一个assign语句功能:当地址总线的低五位为5‘b00000,即为“读模块ID码地址”,就向数据总线输出该模块的ID码。

第二个assign语句功能:当地址总线的低五位为5“b00100,即为“读模块数据地址”,就将模块输入端口数据读入数据总线。

输入模块Quatuttis II仿真结果如图3所示。从图中可以看出,当地址总线的低五位地址为5’b00100时,模块输入端口数据(de24v_in)被读入到数据总线(data_bus)。

图3输入模块仿真时序图

同理,可进行输池模块设计,关键代码如下:

always @ (posedge pro_clk) begin

if((-WRITS))(address==baddr 10:5)(bad4:0==5‘00010))begin

mem_data i =data_bus;

i=i+1;

if((mem data 0==mem_data1)(mem_data1==mem_data2)(mem_data2==

mem_data3)) begin

relay_reg=mem_data0;

end

end

end

assign relay=relay_reg;

assign led=~relay_reg;

assign data_bus=((~(RDICS))(address==baddr10:5)(baddr4:0==5’b00000))?16‘b0000000011011110:16’bz;

程序中alwavs语句功能:当地址总线的低五位为5‘b00010,即为“写模块数据地址”,就将数据总线数据写入到寄存器mem_data。为了增强抗干扰能力,程序中采取了连续读取四次数据总线数据并判断是否一致,若一致,才更新模块输出端口数据。

程序中第三个assign语句功能:当地址总线的低五位为5’b00000,即为“读模块ID码地址”,就向数据总线输出该模块的ID码。

输出模块Quarutu。II仿真结果如图4所示。从图中可以看出,当地址总线的低五位为5‘b00100时,数据总线(data_bus)被写入到模块输出端口(relay)。

图4输出模块仿真时序图

2、 系统软件设计

21驱动程序设计思想

输入输出模块驱动程序基于流接口驱动程序类型进行设计。驱动程序的设计一方面应根据实现功能考虑到物理地址的合理分配,另一方面应考虑到与应用程序的接口。下面就围绕这两个方面具体论述驱动程序的设计思想。

211物理地址的合理分配

对输入模块,包含有如下两种操作。(1)读lD码;(2)读取输入端口数据。对输出模块,包含有如下两种操作。(1)读ID码;(2)写数据至输出端口。

为了保证驱动程序的通用行,即是说,对插入某个插槽的模块,无论是是输入模块,还是输出模块,驱动程序结构是一样的。可对每个插槽分配三个物理地址,包括读取ID码地址(简称“ID地址”)、读取输人模块数据地址(简称“读地址”)、写数据至输出模块地址(简称“写地址”)。

应用程序通过“ID地址”读取的ID码数据判断模块的类型,进而通过“读地址”对输入模块进行读操作,或是通过“写地址”对输出模块进行写操作。对输入输出模块的读写操作包含字操作、字节操作、位操作三种方式,可在驱动程序中通过“与运算和移位运算”变换实现。对每一插槽,三个物理地址可如表1分配:

表1应用模块物理地址分配

在初始化函数(IO_Init)中,通过函数VirtualAlloc()和VirtualCopy()把EP9315针对输入输I叶J模块的物理地址和操作系统的虚拟空间联系起来,实现地址映射。

212输入输出模块读写操作实现

操作输入输出模块的应用程序流程可简述如下3:发送“读模块ID命令码”-》接收驱动程序返回数据(即模块ID码)-》根据模块ID码判断模块类型(输入模块还是输出模块)-》根据模块具备功能发相关命令码进行模块读操作或写操作(包括字操作、字节操作和位操作三种情况)。

驱动程序设计思路如下:在写函数(IO_WRITE)中实现功能为:接受命令码,并将命令码存入某指定变量一判断命令码是否是写命令码一若是就执行写操作(包括字操作、字节操作和位操作三种情况)。在读函数(IO_READ)中实现功能为:判断命令码是否是读命令码一若是就执行读操作并返回读取的数据(包括字操作、字节操作和位操作三种情况)。

213输入输出模块读写脉宽的调整

EP9315在WinCE操作系统下主频达到200MHz,总线频率为100MHz,外设时钟为50MHz,因而,EP9315发出的读写及使能信号脉宽不足50ns。可以通过改变EP9315的BANK3上的读写时序使其能和CPLD交互。具体可通过设置应用模块地址空间存储空问读写特性寄存器SMCBCR3中等待时间位WST1和WST2实现。

若SMCBCR3的代码设置为:SMCBCR3=2000ffef实现功能为:设置nCS3数据宽度为32bits,读写脉宽为320ns。这种设置使得CPLD拥有较低的总线频率,满足对CPLD的读写时序要求。

3 、小结

本文作者创新点是基于MAX2_EPM240进行了输入输出模块的硬件软件设计,在Windows CEnet操作系统下,实现了EP9315嵌入式系统对输入输出模块的控制,且可根据实际需要,灵活选用各类模块。该系统功耗低、稳定性好,适合工业控制中的运用。

以上知识分享希望能够帮助到大家!