工控系统平台串行通信接口的设计与实现_一度空虚_新浪博客

梁 婕 高德远 张盛兵 段 然 时间:2009年12月07日

文章出处:

 

摘   要: 提出了一种基于状态机且内部带有16字节缓冲FIFO的异步串行通信接口的设计思路和实现方法。
关键词: 工业控制系统  异步串行通信接口  状态机

  近几年来工控机产业的飞速发展,使工控产品的应用范围由原工业自动化行业的运用,迅速地转向制造业自动化。相对于商用PC而言,工控机具有抗恶劣环境、结构扩充性能好、电压适用范围宽等优点,可充分满足企业运行的特殊需求,其发展已进入到嵌入式智能平台(Embedded Intelligent Platform)阶段。
由于串行通信结构简单、可靠性强、实现及使用成本低、通信标准统一,且信道成本低,使其在测控系统和工程中应用十分广泛。因此,在工业控制中,串行接口是常用的计算机与外部串行设备之间的{sx}数据传输通道。许多设备和计算机都可以通过串行接口对外设进行控制和检测。因此,串行接口通信日益成为计算机和外设进行通信、获取由外设采集到的监测数据的一种非常重要的手段。
  本文介绍了一种基于工业控制系统平台的全双工、内部带有16字节缓冲FIFO的异步串行通信接口(Universal Asynchronous Receiver/Transmitter)的设计思路和实现方法。该方法具有可编程的串行接口特性和完整的状态信息报告功能、独立的中断优先级控制能力,以及自动奇偶校验、溢出和数据帧出错等检测标志。
工控系统平台结构
  为了满足市场对工业型计算机的要求,除了VME总线工控机外,产生了一系列基于PC、与ISA/PCI总线标准兼容的嵌入式工控机,其中比较有代表性的是Compact PCI/PXI总线、AT96总线、STD总线、STD32总线、PC/104和PC/104-Plus总线嵌入式工业控制机。
  由于软件的兼容性这一重要原因,目前的工业控制机已经由过去的专用封闭式架构变为PC技术的开放式架构。由桌面PC技术衍生的ISA总线加固型计算机在工业上得到了相当广泛的应用。本设计所基于的工控系统平台即采用ISA总线协议,以高性能的32位微处理器作为核心处理器,其结构如图1所示。

  本系统可分为系统控制器和外设控制器二大部分。系统控制器包括控制主存的DRAM控制器、完成总线仲裁的总线控制器、实现与ISA总线协议相关操作的ISA控制器,以及可编程中断控制器、定时器、键盘控制器、实时时钟RTC和DMA控制器。外设控制器则由硬盘控制器、软盘控制器(包括软盘驱动器)、串行通信接口和并行通信接口组成。此外,再加上BIOS ROM就构成了一个完整的工业控制系统。其中,串行通信接口直接连接在ISA总线上,系统利用该接口输入由采集卡采集的数据以及输出远程控制信息。更为重要的是,由于本工控系统不包含显卡,因而必须利用串行接口来进行整个系统的调试。由此可见,串行接口的设计是整个系统至关重要的一部分。
异步串行通信接口的设计
  根据工控系统要求,设计中将UART分为如下几个子模块[1][2]:传输速率控制电路即波特率发生器、读/写控制逻辑、接收控制电路、发送控制电路、MODEM控制逻辑、中断控制逻辑、线路控制逻辑。UART结构原理如图2所示,各子模块功能如下。

  (1)读/写控制逻辑:对片选、读写等信号进行译码,以访问内部寄存器。
  (2)波特率发生器:对输入的基准时钟分频,以产生所需要的波特率,并将符合要求的发送时钟送给发送器。同时还送出分频后的时钟,以作为接收时钟。
  (3)发送控制逻辑:把写入发送保持寄存器的数据进行格式化并送到移位寄存器,然后按选定的时钟频率进行串行输出。
  (4)接收控制逻辑:采样串行数据输入信号,按格式化对数据进行校验后,转换成并行数据送往CPU。
  (5)线路控制逻辑:用来寄存发送字符的编程格式、间断点设置等参数,并记录接收和发送时的状态信息。
  (6)MODEM控制逻辑:为MODEM提供控制信号,记录MODEM、数据装置输入给UART的状态信息及变化信息。
  (7)中断控制逻辑:实现中断优先权管理,允许在符合条件时发出中断请求,或禁止在符合条件时发中断请求。
  UART是可编程的异步串行通信接口,共有11个内部寄存器,用户可通过对这些寄存器编程,实现所需的通信。各寄存器的读写端口地址分配如表1所示。表中DLAB是线路控制寄存器的D7位,对于COM1,BA为3F8H;对于COM2,BA为2F8H。

  下面就其中一些模块作简要介绍。
2.1 数据接收单元
  数据接收单元如图3所示。接收数据的过程如下:当编程初始化后即进入允许接收和准备好接收数据状态,监视串行数据输入线SIN。在无字符传送时,SIN线上为高电平,即处于Mark状态;当在接收时钟的上升沿采样,SIN线上出现低电平时,就认为数据接收单元是起始位,于是启动一个内部计数器。由于接收时钟频率为16倍的波特率,当计数器计到8(对SIN连续采样8次,即到1个数据位宽度的一半)时,若发现SIN这时已变为高电平,则刚才的低电平可能是一个噪声干扰,而不是真正的起始位,或者接收器是在发送方发送1个字符的中间被允许接收。在这二种情况下接收器并不开始接收数据,而是继续寻找新的起始位,直到连续采样到8个低电平,才认为是正确的起始位。此后每隔1位(16个脉冲),即在对应的每个数据位中间的1个接收时钟的上升沿处采样SIN线,并把采样到的信息以移位方式送入移位寄存器。在串行输入的数据流中,字符的低位在前,高位在后。接收到1帧数据位后,接收控制电路根据初始化编程选定的数据格式,把串行数据转化成并行数据,并进行奇偶校验、对停止位的检查等,且自动删除起始位、奇偶校验位和停止位。然后移位寄存器内的数据以并行方式送到接收数据缓冲寄存器或接收FIFO中保存。同时将线路状态寄存器LSR的Data Ready位置1,供CPU查询用,且将管脚RXRDY_n置为有效的低电平。若允许发中断,此时还会发出中断请求信号,请求CPU读取接收到的数据。

  接收数据过程由一个3位状态机来实现。其状态有Idle(空闲)、Start(接收起始位)、Shift(接收数据位)、Parity(接收奇偶校验位)以及Stop(接收停止位)。每一个状态表明了当前正在接收的数据属于哪一种字符,并且根据当前接收字符的状态,驱动其他部件进行合适的操作。接收状态机状态转换如图4所示。

2.2 数据发送单元
  数据发送单元如图5所示。对于由CPU送来的待发送的并行数据先写入发送保持寄存器或发送FIFO,按照编程规定的格式,在发送时钟的控制下,经发送移位寄存器变成串行数据流,然后从串行输出SOUT管脚发送出去。在串行输出的数据流中,字符的低位在前,高位在后。发送时自动加上起始位,并根据编程规定的校验要求,加上1个校验位以及加上编程规定的停止位。当没有数据发送时,SOUT保持高电平。由于在前一个数据帧发送过程中发送保持寄存器或发送FIFO被写入数据,所以只要发送保持寄存器或发送FIFO不为空,则发送保持寄存器或发送FIFO中的数据将自动并行地送入发送移位寄存器,在发送完1个数据帧后立即发送下一帧。

  发送数据过程由一个3位状态机控制,通过状态的转换来实现起始位、数据位、奇偶校验位以及停止位的发送。其状态有Idle(空闲)、Start(发送起始位)、Shift(发送数据位状态)、Parity(发送奇偶校验位)以及Stop_1bit(发送1位停止位)、Stop_halfbit(发送半个停止位)、Stop_2bit(发送第2个停止位)。发送状态机状态转换如图6所示。

2.3 线路控制逻辑
  线路控制逻辑以线路控制寄存器和线路状态寄存器为核心,用于寄存发送字符的编程格式、间断点设置等参数,并记录接收和发送时的状态信息。接收发送状态标志如表2所示。


  接收控制电路在接收串行数据的同时对接收数据的正确性和接收过程进行监视。若发现接收过程出现如表2所示的状态,则将相应的状态信息送往线路状态寄存器LSR。而发送时,UART也是通过LSR的D5和D6位指明发送保持寄存器和发送移位寄存器的状态[1]。
仿真与验证
  本设计采用Altera公司的集成开发软件QuartusⅡ3.0,并用该公司的Cyclone系列芯片进行FPGA验证(因Cyclone系列芯片是一种低成本、高密度的FPGA芯片系列,所以是{sx}的中规模器件产品)。Cyclone系列芯片采用0.13?滋m工艺制造,1.5V核心电压供电,功耗低,{zg}集成有20 060个逻辑部件和高达288Kb的RAM,支持多种I/O标准以及支持多个IP核,包括Altera MegaCore功能和Altera Megafuncitons Partners Program(AMPP)宏功能[4]。通过QuartusⅡ3.0综合、布局布线后,可以达到180MHz以上的时钟频率,xx可满足系统时序的要求。本设计下载到FPGA中进行仿真验证后,可以很好地实现串行接口收发控制功能。
参考文献
  National Semiconductor Corp.PC16550D Universal Asynchronous Receiver/Transmitter with FIFOs.1995
  Texas Instruments.TL16C550C,TL16C550CI Asynchronous Communications Element With Autoflow Control. 1998
  EXAR.ST16C550 UART with 16-Byte FIFO′s.2000
  Gilluwe F V著,精英科技译.PC技术内幕:I/O、CPU和固定内存区程序员指南.北京:中国电力出版社,2001

已投稿到:
郑重声明:资讯 【工控系统平台串行通信接口的设计与实现_一度空虚_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——