【摘要】 LON总线是一种应用日益广泛的现场总线。为了使工业计算机系统方便地接入LON网络,文章介绍了采用双口RAM作为数据通信桥梁的PC104系统LON总线接口电路的设计,并给出了详细的硬件电路和软件设计流程。
【关键词】 PC104 LonWorks技术 双口RAM FT3150
一、 引 言
LON(LOCal Operational Netwok)总线是由美国Echelon公司于1991年推出的局部操作网络,是一种基于嵌入式神经元(Neuron)芯片的现场总线。Echelon公司推出了一系列软硬件工具作为对LON总线设计和开发的支持。目前,LON总线被广泛应用在楼宇自动化、家庭自动化、保安系统、办公设备、运输设备、工业过程控制等行业。
PC104系统作为一种工业计算机系统目前在工业控制、铁路运输等领域应用越来越广泛。由于PC104规范采用总线插接结构,使得PC104系统具有结构紧凑、应用灵活、整机功耗低等优点。本文设计的接口电路利用双口RAM存储器作为桥梁,实现PC104系统主处理器与神经元芯片之间的数据交换,使PC104系统具有LON总线连接能力。
二、 LON总线的特点
LON总线的特点在于它为用户提供了针对实际工程应用的通信芯片-神经元(Neuron)芯片。它通过内部集成的3个8位CPU,处理完整的LonWorks通信协议,从而确保在网络节点之间可以使用可靠的通信标准进行数据通讯。Neuron芯片带有强大的I/O功能。它通过11支可编程的I/O引脚,为用户提供了数字量I/O、串口通讯、并行通讯等34种I/O功能,与实际应用结合地十分紧密。为了方便用户开发,LonWorks提供了Neuron C开发语言及相应的开发工具,并提出了网络变量的全新概念。网络变量以隐式报文的形式自动在网络中传递信息、更新数据,用户无需为数据通信增加任何额外工作。
三、 接口硬件设计
本文设计的接口其硬件电路主要由PC104总线插槽、双口RAM、FT3150芯片及外围电路、扩展存储器、CPLD逻辑译码电路组成,硬件结构如图1所示。
图1 硬件结构图
1 FT3150及外围电路
本文采用的是Echelon公司最新推出的FT3150神经元芯片,它内部集成了Neuron 3150处理器内核和自由拓扑双绞线收发器,减小了接口电路的功耗,符合PC104 规范对接口板低功耗的要求。同时本文使用了与之配套的Echelon公司的FT-X1通信变压器,它对电磁干扰和高频共膜噪声具有较强的抗干扰能力。
图2 FT3150结构图
图2给出了FT3150 芯片的内部结构图。FT3150芯片主要由Neurron芯片核心和一个自由拓扑收发器组成。Neuron芯片内部包含处理七层LonTalk协议的3个8位处理器,芯片内部集成了2KB RAM以及0.5KB EEPROM存储器。芯片的I/O功能模块提供了11支I/O引脚,根据实际需要对11支引脚进行编程,可以形成多达34种I/O功能,包括并行I/O、串行I/O、定时/计数器等等。通过对外引出地址及数据总线,芯片可以方便地扩充数据程序存储器。
FT3150芯片服务引脚主要用于节点配置、安装与维护。它被设计为输入输出复用引脚。当其作为输出引脚驱动LED时,不同的LED状态指示了不同的节点工作状态,如表1所示。当其作为输入时,Neuron芯片会自动在网络上发送含有Neuron芯片ID值信息的网络管理消息,用于网络配置。
表1 节点状态
2 扩展存储器
FT3150芯片的存储空间最多可以扩展到64K,而且片中只集成了极少的程序和数据存储器,分布在地址高段,其他必需的存储空间需要用户扩展。本文为芯片扩展了32K FLASH存储器作为FT3150芯片的固件和程序存储器,地址为0x0000-0x7FFF;16K RAM作为数据存储器,地址为0x8000-0xBFFF;4K双口RAM作为与PC104系统进行数据交换的数据存储器,地址为0xC000-0xCFFF。
3 双口RAM
双口RAM是一种比较特殊的RAM存储器,它具有两套完全相同的独立的地址、数据和控制信号。这些信号允许两套系统同时访问存储器的数据,即在两套系统间形成了共用存储区,两套系统可以通过这个共用存储区进行数据交换。双口RAM的内部逻辑结构如图3所示。
图3 双口RAM内部逻辑结构图
由于对存储器操作的快速性,利用双口RAM进行数据交换成为一种高效、普遍的数据交换方式,在高速数据采集等很多场合都有其广泛应用。但是,正是由于两套系统同时对存储器进行访问,就存在着对存储器读写冲突的问题。即当双方恰好同一时间对同一存储器地址进行写或一读一写操作时,操作数据会发生错误。
双口RAM本身提供了几种解决冲突问题的方法:中断(INT)、忙(BUSY)、令牌(SEM)以及软件编程。 本文采用了8K的IDT7005双口RAM芯片,采用硬件忙信号解决操作冲突问题。当访问冲突发生事时,芯片会根据地址及片选信号判断,在信号较慢一方产生(BUSY)信号,通知较慢方做出相应处理。本文将两路忙信号(BUSYL、BUSYR)接入CPLD实现与逻辑BUSY=BUSYL AND BUSYR,得到的输出信号BUSY与PC104总线的IOCHRDY信号相连。PC104总线的IOCHRDY是慢速设备等待信号,当信号有效时,PC104总线会自动延时地址信号、控制信号以及数据信号,直到慢速设备准备好。当双口RAM访问产生冲突,处理速度较快的PC104总线进行等待,直到Neuron芯片访问完成后再进行操作。
4 复位电路
为了保证接口电路正常运行,本文使用了专用的复位芯片MAX809,芯片的功能主要是当电源电压低落至一门槛电压甚至更低时,复位信号输出RESET有效,使芯片复位。另一方面,作为PC104系统的组成部分,当PC104系统复位引脚RESETDRV有效时,也同时引起Neuron芯片复位。
5 CPLD逻辑控制
接口电路使用了ALTERA的CPLD芯片EPM7064,通过VHDL语言编程实现对所有存储器操作的片选信号和读写控制信号的产生、复位信号与双口RAM忙信号的逻辑处理。
6 PC104总线
本文采用的PC104系统CPU板为SuperDX(盛博科技)。PC104系统为总线插接结构,本文按照PC104规范对板卡机械、电气要求制作了电路,通过PC104总线插槽实现了与系统的总线连接。
四、 软件设计
Echelon公司为了方便用户对Neuron芯片的使用,专门为其开发了Neuron C语言。它是从ANSI C中派生出来的,并对ANSI C 进行了增删。熟悉C语言的编程人员能够轻松地掌握Neuron C语言并应用其进行开发。为了与Neuron芯片的开发相配合,Neuron C语言也有其自身的特点:
1 网络变量
这是Neuron C语言提出,专门应用于LonWorks网络信息传输的变量形式,节点可使用网络变量通过隐式报文与其他节点进行通信。网络变量分为输入网络变量和输出网络变量,输出网络变量负责将变量数据报文发送到LonWorks网络上,与之相对应的输入网络变量在接收到报文后自动将数据更新。对用户来讲数据刷新完全是透明的。
用户除了可以自行定义网络变量外,还定义了标准网络变量类型(SNVT)。根据具体应用的不同,标准网络变量有255种。
2 定时器
Neuron C语言为用户提供了软件计时器对象,它使编程人员能够任意时刻激活所要完成任务。定时器分为两种:毫秒计时器和秒计时器,提供的定时器时间间隔分别为是1~64000毫秒和1~65535秒。在一个程序中可以定义最多15个定时器对象。
3 调度程序
Neuron芯片的任务调度是由事件驱动的,当一个给定的条件判断为"TRUE"时,与条件有关的代码体(任务)即执行,符合逻辑思考的一般习惯。编程人员可以定义任务作为某类事件发生的结果,如当某一输入引脚的状态发生变化,则将相关的输入变化值赋给输出网络变量;或者当计时器溢出,将输出网络变量刷新,实现对输出网络变量的定时刷新。
本文的Neuron C程序流程如图4所示。由于Neuron C语言的程序结构为事件触发,调度程序顺序检查事件触发条件是否满足,如果满足则执行相应处理程序。使用软件计时器进行数据定时刷新,当计时器溢出时,首先处理网络输入数据,读取相应的输入网络变量。由于采用双口RAM在PC104主处理器与FT3150芯片之间进行数据交换,只需要将网络的更新数据存入相应的双口RAM存储区。对于PC104系统的输出数据,FT3150芯片读取相应的存储区,获得输出数据,将数据赋值给输出网络变量,FT3150芯片会自动更新网络中的信息。为了保证数据刷新成功,程序要对输出网络变量更新是否成功进行检查,发送失败则进行重发。
图4 Neuron C 程序流程图
五、 实验结果
本文关键字:接口 接口电路,单元电路 - 接口电路
上一篇:PCI协议接口的设计及验证