异步串行传输范文

2024-09-06

异步串行传输范文(精选7篇)

异步串行传输 第1篇

关键词:异步串行传输,可编程门阵列,低压差分信号

引言

异步串行通信方式在现代通信领域中应用广泛, 然而通用异步传输方式受其接口芯片与接口电平标准的影响, 传输速率不能满足高速系统的要求。在可编程门阵列技术 (FPGA) 与片上系统技术 (SOC) 等主流设计技术日趋成熟的背景下, 研究应用FPGA芯片开发异步传输系统硬件电路模块, 采用FPGA芯片支持的低压差分信号 (LVDS) 作为传输电平标准, 实现结构完整、集成度高的设计需求, 同时确保低功耗、低串扰、低误码率的串行传输。设计过程中严格按照FPGA开发流程, 对硬件逻辑电路进行综合、布线、时序优化, 提高系统工作频率, 完善系统时序性能。

1 异步串行传输模块的设计方案

从功能上划分, 异步串行传输系统主要包括:PCI总线接口模块, 异步串行通信收发模块、FIFO模块、寄存器配置与FIFO操作模块等。异步串行传输各模块如图1所示。

2 异步串行传输系统模块设计

2.1 PCI总线接口模块

使用VHDL硬件描述语言设计33M/32bits PCI总线从方式控制模块, 符合PCI2.3规范, 支持首部类型0方式的配置读/写交易、单数据周期的I/O读/写交易。按照自顶向下的设计方法, 将PCI总线控制模块划分为总线命令译码模块、配置空间操作模块、奇偶校验生成模块与目标状态机模块。

对其工作过程进行分析:上电复位后, 在总线传输的第一个时钟周期锁存总线数据, 总线命令译码模块根据C/BE信号量解析总线交易类型;总线进入配置交易, 则进行0类配置操作, 配置空间操作模块根据数据总线上指示的配置空间寄存器访问地址, 对设备寄存器、状态命令寄存器、类别版本寄存器、基地址寄存器以及中断寄存器分别进行相应的配置操作;目标状态机模块完成总线交易过程, 总线译码模块生成判别结果, 之后状态机处于等待状态, 经过三个过渡周期之后, 状态机进入读/写状态完成总线数据交易, 在读交易结束之后置奇偶校验位有效, 触发奇偶校验模块对地址/数据总线与命令/字节使能总线进行奇校验, 数据交易结束之后如果frame信号仍有效, 则出现总线交易错误进入停止状态, 如没有出现该类错误则驱动devsel信号为高电平, 完成总线交易。

2.2 异步串行收发模块

异步串行发送模块主要包括分频电路, 移位寄存器与状态机。在系统复位以后状态机处于开始状态, 从FIFO模块读取一帧数据到移位寄存器中, 初始化奇校验位为零, 分频电路对系统时钟8分频作为发送时钟, 发送数据帧的起始位;此后状态机依次进入数据态, 校验态以及停止态, 分别发送数据位, 校验位及停止位;最后返回开始态, 置thrempty信号有效, 表示可以发送下一帧数据。

异步串行接收模块由起始位检测电路、采样计数器、移位寄存器与状态机组成。状态机控制整个接收过程, 当系统复位或接收线处于空闲时, 状态机进入闲置状态;起始位检测电路开始采样接收线上出现的低电平跳变, 起始位至少应该保持接收波特率时钟周期的50%以上, 即在第一次检测到低电平开始, 采样计数器计数4次, 在起始位周期的1/2处判断其电平的极性, 是高电平则认为该次跳变是噪声, 清零计数器, 重新开始检测;是低电平认为检测到一帧数据的起始位置, 测试中, 接收连续数据帧时由于状态机延时而不能正确检测到起始位导致接收错误, 因此在数据帧之间加入4个空闲周期;检测到起始位之后状态机进入移位状态, 在该状态中对串行数据流按照LSB方式进行串并转换, 并产生奇校验结果, 判断完整接收一帧数据后, 状态机进入校验态, 将校验结果与校验位比较, 判断是否产生校验错误;最后状态机进入停止态, 无论停止位之后有无空闲位, 停止态仅进行一次操作, 然后状态机返回到空闲状态, 将rhrready信号置为有效, 允许FIFO模块读取移位寄存器中的数据帧。

2.3 寄存器配置模块

内部寄存器包括:帧格式寄存器, 传输线路寄存器, 中断始能寄存器以及FIFO控制寄存器。中断始能寄存器根据rhrready、thrempty、FIFO空标志等信号产生收发中断, FIFO控制寄存器处理FIFO始能、FIFO清零以及确定FIFO的读写模式, 为提高FIFO模块的传输效率, 设计中允许异步收发模块按块读写FIFO, 在单字节模式下只要收发移位寄存器准备就绪, 就可以操作FIFO模块, 此刻FIFO中至少存储一帧以上数据;块模式规定只有FIFO中存储指定量的数据帧时, 才允许操作FIFO模块。

3 时序仿真与验证

模块设计与仿真验证使用Altera公司提供的集成开发工具Quartus II 6.0完成, FPGA芯片选用Altera公司生产的Cyclone系列EP1C12Q240C8, 时序仿真如图2所示。

4 硬件测试验证

硬件测试使用成都爱达公司改进型S1300开发板, 在原板的基础上增加2.5V稳压电路与100Ω配备电阻使其符合LVDS电平标准。测试软件使用Driverstudio3.1开发基于Windows XP系统的PCI驱动程序, 并编写基于MFC的通信测试程序, 经过软硬间联合调试可以实现2米之内传输速率为500Kbps的异步串行通信。

参考文献

[1]边计年, 薛宏熙.用VHDL设计电子技术[M].北京:清华大学出版社, 2001.

[2]李贵山, 陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学, 2003.

基于FPGA实现异步串行通信 第2篇

1 UART通信原理

串行通信分为两种类型:同步通信方式和异步通信方式。UART即通用异步串行通信收发器。UART的一帧数据由起始位、数据位、奇偶校验位和停止位组成。数据在传输过程中是通过一个字符接一个字符进行传输来实现通信的。每一帧的信息在传送前传输线处于高电平状态。在传送一个字符信息的时候,每一个字符的接收是靠起始位来同步的,字符的前面是一位起始位,首先发送起始位为低电平,一般用下降沿通知收方传输开始,然后发送起始位之后的数据位,数据位的传送先低位后高位,字符本身由5~8位数据位组成。

数据位后面是奇偶校验位,奇偶校验位后的是停止位,标志着一帧字符结束。停止位后为高电平,为空闲位,并为下一个字符的开始传送做准备。在发送、接收数据时,数据的帧与帧之间如果有间隙,就要在停止位之后附加空闲位,停止位后面是不定长度的空闲位。停止位和空闲位都规定高电平,这样可以保证起始位开始处有一个下降沿。如图1所示。

1.1 系统设计与硬件实现

异步通信允许在串行链路上进行全双工的通信。本文把异步通信电路作为一个整体来实现,数据接收经过MAX232进行电平转换后经FPGA串口模块的RXD端输入,由FPGA进行串/并转换后,8位有效数据进入总线,再进入处理芯片。数据发送经数据处理后经由总线进入FPGA串口模块,8位有效数据在FPGA中进行并行转换为串行数据后由TXD端输出到MAX232的12管脚,在MAX232种经过电平转换后由TXD端输出,系统基本结构框图如图2所示。

帧格式采用1位开始位,8位数据位,1位停止位,波特率为115 200,根据采用的帧格式,需要发送的数据为10位(1位开始位、8位数据位、1位停止位),在发送完这10位后,就应该停止发送,并使发送端电平处于逻辑1,然后等候下次的发送。

1.2 FPGA波特率发生器模块

串口通信,就是RS 232/RS 485通信,要求通信的双方波特率等通信格式一样才可以通信成功。在电子通信领域,波特率(Baud Rate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。它是对符号传输速率的一种度量,1 Baud即指每秒传输1个符号。在基于FPGA实现通用异步通信时,波特率发生器是一个必不可少的部分。波特率发生器实际上就是一个分频器,可以根据给定的系统时钟频率和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数从而产生所需的时钟频率。在设定发送和接收使用相同的波特率的情况下,UART只需要一个波特率发生器就可以了。

系统提供的时钟频率为10 MHz,数据信号的传输速率为115 200 Hz,波特率发生器产生的时钟对数据信号进行采样,设定对传输的数据信号进行3倍采样,则波特率发生器产生的频率为:

那么就可以根据给定的系统时钟和要求的波特率计算出分频因子:

对时钟进行28.94分频是很难实现的,因此取整数30作为分频因子。尽管这样会使得分频得到的时钟会比所需的345 600 Hz高3.5%,但这样微小的变化不会影响实际电路的工作。其仿真图如图3所示。

1.3 FPGA数据发送模块

发送过程就是把并行总线上的数据发送到串行总线上。数据发送的过程可以分为空闲状态、加载状态、发送状态和发送完成状态。空闲状态就是UART内核复位后的空闲状态,等待加载状态。UART进入空闲状态后,当检测到发送控制信号有效时,就进行加载状态并开始进行数据的加载。加载状态就是发送模块按照串行发送的顺序将要发送的这一帧数据加载到移位寄存器内,将移位寄存器和计数器都复位,使移位寄存器和计数器的工作时钟为系统时钟。当计数器达到了计数的上限时,它会产生一个指示信号通知UART内核进入发送状态。UART内核状态机进入发送状态的同时要改变相应信号,这时移位寄存器时钟必须为波特率时钟,最重要的是将输出信号送到RS 232的发送端口TXD上。在发送状态,也需要计数器的控制,当计数器达到了计数的上限时,它会产生一个信号通知UART内核进入发送完成状态。当UART内核状态机进入发送状态后,并产生发送完成中断信号。这样就可以把数据从串行端口上发送出去了。发送数据和接收数据的状态转换图如图4所示。

发送一帧数据的部分程序如下:

发送一帧数据的仿真结果如图5所示。

1.4 FPGA数据接收模块

数据的接收与数据的发送相比要复杂些。在数据的接收过程中,UART的接收模块首先要进行的是对起始位的检验。一般当接收的第一个是低电平,就标志着一个数据帧的开始,但是在一个数据帧中间也有可能包括—个低电平的位,系统有可能默认为这个低电平为起始位,这样就会产生一个“假的起始位”。所以,在数据接收的过程当中还要包括对数据起始位的判断。所以数据的接收过程可以分为空闲状态、起始位检测状态、数据位读取状态、读取停止状态、准备完成接收和停止位读取状态。在判断起始位低电平后,触发接收过程,进入数据位读取状态使串行总线的输入数据不断被读取并且保存在寄存器内,计数器也到达计数的上限时,接收完成之后并进入准备完成接收状态,UART控制器会在输出结果之前对已经接收的数据进行奇偶校验。然后进入停止位读取状态。在每一种状态,如果使能信号无效时都转回空闲状态。最后UART控制器准备下一次的数据接收并重置控制器内的信号检测器。

在接收数据过程中,会有一些其他原因使信号产生反转。为了消除毛刺,在接收数据时,采用3选2的方法消除误差。也就是这个字符的值是至少有两次采样的值相等的值。

采用3选2方法接收数据的程序如下:

接收一帧数据的仿真结果如图6所示。

在波特率为115 200情况下对UART进行仿真,结果如图7所示。通过仿真波形可以看出,设计结果正确地发送和接收一帧数据并产生相应的中断。

2 结论

本文介绍了一种基于FPGA实现异步串行通信功能,采用多模块的方法实现异步串行通信功能,可以方便用户根据需要进行裁减、便于理解和调试。本文运用Verilog语言进行设计异步串行并行收发器的IP核电路。

用FPGA实现UART功能,充分利用了FPGA的剩余资源,相对于专用UART芯片,减小系统PCB板的面积,降低系统的功耗,提高系统的稳定性。近年来在电子设计领域中,这种硬件软件化的方法已经成为一种流行趋势。该设计采用Xilinx公司的Spartan3E系列中器件XC3S100E。通过ISE软件进行时序仿真和硬件测试各项通信指标均满足要求,整个设计的正确性和完整性得到验证,各项功能均达到预期的要求。

摘要:为了适应全数字化自动控制更加广泛的应用,采用现场可编程门阵列(FPGA)对异步串行通信控制器(UART)进行多模块的系统设计的方法,使串口通信的集成度更高。对UART系统结构进行了模块化分解,可分为三个模块:FPGA波特率发生器控制模块、FPGA数据发送模块及数据接收模块。采用Verilog语言描述硬件功能,利用Xilinx公司的FPGA芯片,在Xilinx ISE Design Suite 13.4环境下进行设计、编译、综合、下载。采用第三方仿真工具ModelSim进行模拟仿真。

关键词:FPGA,UART,多模块,Verilog,Xilinx ISE

参考文献

[1]杜慧敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[M].西安:西安电子科技大学出版社,2006.

[2]何燕.51单片机与FPGA的UART通信模式研究[J].电脑知识与技术,2009(21):5873-5875.

[3]谢宏,葛棋棋.脑电信号无线采集系统设计[J].现代电子技术,2010,33(18):21-24.

[4]王伟.Verilog HDL程序设计与应用[M].北京:人民邮电出版社,2005.

[5]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

[6]曹会华,贺占庄.基于有限状态机实现全双工可编程UART[J].计算机技术与发展,2007,17(2):53-55.

[7]汪灏,郭二辉.通用异步串行收发器UART核在DSP芯片中的设计与实现[J].中国集成电路,2011,20(3):36-39.

[8]刘浩淼,卞树檀.基于CPLD的RS232串口通信实现[J].电子设计工程,2011(12):153-155.

[9]李洋洋,吴武臣.基于断言的验证方法在UART模块中的应用研究[J].微电子学与计算机,2012(1):151-153.

[10]张成立.基于FPGA的生命探测仪算法研究与系统设计[J].物联网技术,2012,2(3):46-50.

基于串行异步通信的网络化制造应用 第3篇

数控系统的网络化,主要指数控系统与外部的其它控制系统或上位计算机进行网络连接和网络控制。利用网络控制系统将计算机网络技术和自动化控制技术结合起来,从而实现网络控制。

网络化制造的基础是数控设备通讯,即首先实现数控机床设备与计算机等终端设备的连接与信息传输。数控通讯可以部分或全部实现以下功能:加工程序的输入输出、参数(系统及机床参数、PMC参数、误差补偿值等)的输入输出、在线监控和远程诊断、在线加工和DNC管理。

1 串行异步通信

串行通信是指通信的发送方和接受方之间数据信息的传输是在单根数据线上,每次以一个二进制的位最小单位进行传输。串行通信又可分为同步通信和异步通信。

异步通讯控制规程是最简单最常用的控制规程,其特点是使通信双方以一帧作为数据传输单位。每一帧从起始位开始,后跟数据位、奇偶位、停止位,数据帧的格式如图一所示。

1.1 RS-232C通信的电缆连接

数控通讯常用RS-232C接口,它是由美国电子工业协会推荐并经国际电报电话咨询委员会审定的用于异步通讯线路的一种通用接口,该接口又称之为串口、异步口或COM(通信)口。

在PC与CNC控制系统间的近距离通信中,可省略调制解调器(DCE),两个DTE直接连接,这种接法称“空MODEM”接法,也称双交叉环回接法。这种接法首先满足了通信的需要,同时简化了通信设备、降低了通信成本。实际运用中有软件握手连接和硬件握手连接两种,在PC与CNC控制器之间一般采用软件握手。

软件握手连接使通信双方完全不理会RS-232C标准所定的硬件握手信号,而是采用所谓的软件握手信号来指示通信,即双方通过相互传递XON/XOFF(ASCII码中的DC1/DC3)字符来进行握手,XOFF为阻止字符,当发送方接受到对方传来的XOFF字符后,发送方将停止发送,直到接收到对方传来的XON字符后,再继续发送。如图二所示是FANUC0I系统软件握手三线制接法。

1.2 通讯参数

完成电缆连接后,要想正确传送数控机床的数据和程序,实现机床的通讯,还必须设定数控系统的参数和传输软件的参数,而且两者通讯参数必须一致。如表一为FANUC系统通讯参数的设定。

2 数控机床联网方案

常用的联网方案有:中间客户机型、多串口设备服务器型、单串口设备服务器型。

我们选择采用单串口服务器型,这种设计方案的特点是:每台串口数控设备上都分别装有一台单串口设备服务器,实现任意设备与以太网直接相联,达到在以太网上的任意一台计算机都可以直接控制任意一台数控设备。单串口服务器型联网方案如图三所示。

其优点也较明显:可以做到任意一台计算机都可以直接控制任意一台数控设备,使得数控设备控制的灵活性大大提高;可靠性强,因为这种连接方式是典型的星型连接,即便单串口设备服务器发生故障,只会影响一台设备;不受RS232传输长度的限制。

3 网络化制造应用实例

笔者在江西旅游商贸职业学院数控中心进行了数控网络化制造实践,利用江西群星软件系统有限公司的远程联控工作平台RIC和平台上的DNC系统分别进行了远程手动传输加工和远程自动传输加工,全部顺利完成并达到预期效果。

3.1 远程手动传输加工

(1)用数据线将数控机床和通讯设备连接好后,设置机床端的通讯参数。

(2)远程登录RIC服务器,运行平台上的DNC Server V2.5,界面如图四所示。

(3)选择对应设备,设置通信参数(见图五)、远程控制(见图六)及目录等各项参数。

(4)手工进行机床端与电脑端的通讯操作

从DNC服务器软件传送程序到数控设备,DNC Server必须处于联机状态。首先在左边树状列表选择您要传送程序的设备,联机,然后在菜单中选择发送程序,发送对话框选中的文件。传送完毕后数控机床端选择Tape-Load(Data In)即可。

(5)数控机床端执行自动加工。

3.2 远程自动传输加工

在RIC-DNC Server的各项参数(如通信参数、远程控制参数和目录参数等)设置完毕的基础上,操作者可以直接在数控机床端进行传输或直接DNC加工。

(1)在机床上编辑一个呼叫程序,程序名为O0901(此为远程控制的呼叫指令,不能随意取),内容为:

O0901:特殊程序号/读程序

(O0001):请求读的程序在电脑上的文件名,扩展名TXT、NC可以省略

M30:程序结束

(2)将这个呼叫程序发送给电脑

具体操作:按将机床至于“EDIT”编辑状态,按下键进入编辑页面,输入程序号O0901,按下软键右扩展键,按软键“PUNCH”,按软键“EXEC”发送文件。

(3)接收程序或DNC加工

与发送操作相似,在机床上按下读取(READ),等待片刻,程序就已经保存到机床的内存里了。或将模式开关转换到DNC方式,按下启动(CYCLE START),直接开始加工。

4 结束语

利用数控机床的RS-232串行接口,可以实现计算机与数控机床之间数据的双向传输。本文研究了数控机床串行异步通信,在此基础上,构造数控机床远程联网,利用RIC远程虚拟联控技术平台及DNC系统,实现远程网络化制造。笔者所在单位正进行该项方案实施。

数控网络化技术发展很快,虽然目前在数控车间DNC系统中应用最为广泛的就是RS-232串行通讯,但是当DNC主机连接的CNC设备比较多时,就存在着连线多、通讯复杂、速度慢等问题,因此,新型网络通讯技术如以太网络、现场总线及无线网络的应用将会越来越广泛。

摘要:本文介绍了数控通讯与网络化制造的作用、相互之间的关系,详细说明了用RS-232接口完成数控通讯的原理与具体实施方法,并在此基础上介绍了作者进行网络化制造的联网方案和应用实例。

关键词:串口,数控通讯,网络化制造

参考文献

[1]周本华,杨华馥.数控机床联网DNC现实与展望[CP/OL].www.moldwide.com/Article_Show.asp?Article-ID=231.2006,7.

异步串行传输 第4篇

随着数字化技术的飞速发展, 通讯传输在油田自动化控制领域得到越来越广泛的应用。采用串行通讯方式具有使用线路少、成本低、简单易用的特点, 在远程传输时, 避免了多条线路特性的不一致而被广泛采用。现在各控制器、智能仪器仪表基本都支持串行通讯能力, 合理利用串行通讯功能将极大的降低自动化项目成本, 提高产品竞争力。

2、串行通讯及CAPE-1200油井测控终端串行通讯介绍

计算机通讯是不同的终端设备通过线路互相交换信息数据, 其主要目的在于将数据从某个终端传送到另一终端, 实现信息的交换。计算机通讯通常有并行和串行两种方式, 由于并行传输方式在信息传送的过程中容易衰减干扰, 并且物力链路成本很高, 而串行通讯的方式可以很好的解决这些问题, 所以在油田行业应用中一般使用串行通讯。

2.1 串行通讯的基本接口方式分为RS-232和RS-485两种标准

(1) RS-232接口。RS-232一般使用DB-9的9芯插头, 只需三条接口线即可实现通讯, 即“发送数据”、“接收数据”和“信号地”。在RS232的规范要求, 电压域值在+3V---+15V (一般使用+6V) 之间称为“0”或“ON”;电压在-3V----15V (一般使用-6V) 之间称为“1”或“OFF”;计算机上的RS-232“高电位”约9V, 而“低电位”则约-9V。RS-232为全双工工作模式, 信号是参考地线而得, 分别作为数据的传送和接收;实际应用中一般传输距离可以达到15米。只能实现一对一通讯。

(2) RS485接口。传输线路采用正负两根信号线。RS-485的电气特性:逻辑“1”以两线间的电压差为+ (2—6) V表示;逻辑“0”以两线间的电压差为- (2—6) V表示。RS485为半双工工作模式, 其信号是两条线路电压差, 是差动式输入方式, 抗共模干能力比较强, 即抗噪声干扰性比较好;实际应用中其传输距离可达1200米。具有多站能力, 即一对多的主从通讯。

2.2 CAPE-1200油井测控终端串行通讯功能

CAPE-1200控制器内有2个标准的通讯口, 一个RS232和一个RS485接口, 其中RS485口内接了电量变送器不能使用, 而RS232口主要用于和上位机参数配置、通讯控制等。CAPE-1200在软件指令上对通讯的支持也很便利, 主要通过MODBUS/RTU通讯方式。MODBUS协议是目前国际上已经公开的工业标准串行通迅协议。CAPE-1200控制器通讯符合MODBUS协议, MODBUS通讯方式的编程简单, 且也具有一定的编程灵活性。

3、WINDOWS串行通信编程概述及通讯案例

3.1 WINDOWS串行通信编程概述

Windows下通过串行通信编程实现和CAPE-1200通讯的方法有三种:I/O端口直接操作、调用系统API函数和设计专用的控件。在应用程序设计中一般采用后面的两种方法。

串行通信主要由数据的接收和发送两部分。程序设计时收发一般根据设备的主从特性采用主动发送和被动接收策略。主动发送方式比较容易实现。被动接收数据, 需要在数据到达后才能回应, 具体实现起来需要一定的方法和技巧, 不同的方法达到的目的和效率不同。编程实现数据接收, 一般有两种方法:事件驱动法 (异步通信) 和查询法 (同步通信) 。事件驱动方式, 即:每当有端口状态改变、数据到达或错误发生时触发定义的事件, 通知应用程序做出相应的处理, 这种方法程序响应及时, 可靠性高。采用查询方式, 通过不断地去查询是否有数据接收等事件的发生来实现, 这种方法比较繁琐, 在通信比较频繁的情况下, 会占用应用计算机大量时间造成用户界面假死现象。

3.2 使用异步串行通信和CAPE-1200油井测控终端通讯的案例

该案例使用RS-232串口通讯方式跟CAPE-1200实现通讯, 持续提取油井油压、悬点载荷、回压状态三个工作状态。因需要连续提取数据所以采用异步通讯方式, 开发语言使用C#。

案例使用PdaSerialPort自定义类实现异步收发串口通讯, 通讯协议使用标准MODBUS, 应用程序通过使用PdaSerialPort类向连接在计算机串口上的CAPE-1200油井测控终端发出指令;CAPE-1200收到指令后, 准备数据上传回复。PdaSerialPort类中使用一个线程控制指令的发送, 发送指令存放在发送指令队列中, PdaSerialPort类收到回复数据后通过事件委托通知主程序, 主程序根据返回的参数值刷新显示内容。下面给出了采集过程的主要代码, 因篇幅有限通信中未使用校验手段。

串口通讯类:

///当该类发生错误时的委托处理程序

public delegate void ErrorEventHandle (string errorMessage, string errorTile) ;

///收到串口数据委托处理程序, 用户可自行处理串口数据

主程序:略…

4、结语

该案例根据所通讯设备特性做适当修改, 可以和所有支持标准MODBUS/RTU协议的设备通讯。系统所用开发环境为Microsoft Visual Studio 2005, 开发语言C#, 运行平台WINDOWSXP, 测试设备CAPE-1200油井测试终端。文中的Modbus协议和寄存器地址表因篇幅所限不能完全介绍, 详细说明可以参考Modbus通讯协议和CAPE-1200油井测控终端手册。

案例运行结果:油压:1.0悬点载荷:48回压:1.1

摘要:本文根据串行通讯的基本原理, 以PC与中亚石油CAPE-1200油井测控终端为案例, 详细讨论PC的串行通迅功能及在项目中实际应用。主要介绍如何使用PC完善的通讯功能完成各种实际应用, 指出了各种方法的优势和不足, 阐述了如何扬长避短、综合应用各种方法编程实现可靠而高效的串行数据收发。

关键词:异步串行通讯,通讯协议,MODBUS协议

参考文献

[1]C#编程从入门到精通.电子工业出版社.

[2]Modbus通讯协议.

异步串行传输 第5篇

在利用单片机开发各种嵌入式应用系统时,异步串行通信是常用的一种通信模式,有的应用中还要求实现多路异步串行通信。人们平时所应用的各种厂商的单片机,绝大部分片上只提供一个UART(通用异步收发器)硬件模块,利用它可以方便地实现一路串行通讯。PIC系列单片机也不例外,在其丰富的一系列产品中,除高端系列(PIC 17/18)一些型号片上带有2路UART硬件模块外,其他大部分型号片上只有1路UART,一些低端廉价的PIC单片机甚至还不带硬件UART。为了提高系统的性价比,要求设计者用软件实现1路或多路异步串行通信。很多人对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是采用何种方式来实现可靠的UART功能。

1串行异步通信的基本协议

1.1起止式协议的原理

起止式异步协议是串行异步通信的基本协议,特点是逐个字符传输,并且传送单个字符总是以起始位开始,停止位结束,字符之间没有固定的时间间隔要求,它的数据格式是靠起始位和停止位来实现字符界定的,故称为起止式协议。

起止式协议的格式定义为:对于一个完整的字符信息,必须包括起始位、若干数据位、奇偶校验位和停止位;必须定义每位信息的时间宽度——每秒发送的信息位个数,即为波特率。单片机系统中常用的波特率为300 bit/s~19 200 bit/s。当波特率为1 200 bit/s时,每个信息位的时间宽度为1/1 200≈833(μs);无数据通信时,数据线空闲状态应该是高电平,起始位为低电平,数据位低位先发且后跟奇偶校验位(若有),停止位为高电平,如图1所示。

1.2起止式协议的优劣

起止式协议是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以该异步串行通信的可靠性高。但由于要在每个字符中加上起始位和停止位这样一些附加位,使得传输效率变低,只有约80%。因此,该通信协议一般用在数据速率较慢的场合(小于19.2 kbit/s)。在高速传送时,一般要采用同步协议。

按图1最基本的异步串行通信时序,软件实现UART在不同架构的单片机上有多种方法。其中数据接收是关键,因异步通信没有可参照的时钟信号,发送方随时都可能发送数据,任何时刻串行数据到来时,系统都应该及时准确地接收。比较而言,本机发送串行数据相对容易,只要对发送出去的电平做持续时间的定时即可。按不同的接收技巧并针对PIC单片机的特点,下面介绍一种常用且十分可靠的方法——三倍速采样法。

2三倍速采样法

2.1三倍速采样法的实现

三倍速采样法就是以3倍于波特率的频率对接收引脚Rx进行采样,保证检测到起始位,又可以调整采样的时间间隔;将有效数据位的采样点控制在码元的中间1/3处,最大限度地减少误码,提高接收的准确性。将图1的起始位和部分数据位放大,如图2所示,把每个信息位分成三等份,每等份的时间宽度设为ts,以便于分析。

以三倍频对信息位进行采样时,每个信息位都可能被采样到3次。当处于空闲状态并检测起始位时,最早检测到起始位低电平的时刻必将落在S0阴影区,虽然每次具体的采样点会在此S0阴影区随机变化。检测到起始位低电平后,间隔4ts时间,正好是第1位数据位的中间1/3处(图2中Ds阴影区)。此后的数据位、校验位和停止位的采样间隔都是3ts,所有采样点均落在码元的中间1/3处,采样数据最可靠。

PIC单片机采用此法实现软件UART时,硬件上只需要任意定义两个I/O引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可。软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2等),通过定时中断实现;在低档无中断的PIC单片机上可以控制每次主循环所耗的时间来实现。对于1 200 bit/s波特率,码元宽度为833 μs,采样时间间隔即为278 μs。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3给出了串行接收的参考状态机转移过程。

接收端空闲状态为高电平,当收到低电平确认为起始位后,间隔4ts采样第1个数据位,然后每间隔3ts采样其它数据位,最后接收高电平确认停止位,数据接收完后回到空闲状态。如果起始位或停止位确认不对,程序均转入帧错误执行,回到空闲状态重新接收。

2.2三倍速采样法实际应用

文中对中档单片机PIC12F675进行了软件异步串行通信设计,在程序设计中,关键部分是TMR0的中断服务。当通信波特率为1 200 bit/s时,TMR0采用278 μs左右中断一次,TMR0的中断响应就为软件UART接收和发送通信过程的实现。通过MPLAB高效的代码编译后,约有150条单字指令代码,整个中断服务平均用约35个指令周期,实现一路软件UART在4 MHz工作频率下占用MCU约12%的运行带宽,通信过程比较可靠。理论上,只要保证MCU留有足够的运行带宽给其他任务,在此中断服务程序内把接收和发送的代码再复制1份或多份(数据结构独立),即可实现多路软件UART。当然,如果每路的波特率不同,采样频率必须是最高波特率的3倍,不同波特率的采样点间隔要独立调整。

该方法还在实际产品设计中都得到了很好的验证,最典型的是红外线自动抄表系统。该系统采用38 kHz红外调制,波特率为1 200 bit/s的半双工串行异步通信。用软件实现此UART,并利用PIC单片机CCP模块的PWM输出38 kHz载波,在单片机外只须一个一体化红外接收头和一个红外发射二极管,即可完成所有设计要求,最大程度地减化了硬件设计,降低了成本,提高了系统的可靠性和性价比。

3结束语

综上所述,三倍速采样法最大的好处是软硬件配置灵活、经济可靠,接收发送的引脚可以任意定义,采样定时可以用不同的定时器实现,利用同一个定时采样可以方便地实现多路软件UART,无需复杂的外围电路,即可实现可靠的串行异步通信。但也有些不足,不管有无数据通信,始终占用MCU运行带宽,串行通信的波特率不能太高,4 MHz频率工作的PIC单片机一般只能实现2 400 bit/s的全双工通信。为此,可以通过提高MCU的振荡频率来实现高波特率通信,比如PIC单片机工作在20 MHz时,就可实现9 600 bit/s;而且其通信可靠性可通过在采样时刻多次采样、多种校验等方法得到进一步提高。

参考文献

[1]张明峰.PIC单片机软件异步串行口实现技巧[J].单片机与嵌入式系统应用,2003(4):74-76.

[2]Microchip.PICmicro PIC16F629/675单片机数据手册[M].Microchip公司,2004.

[3]微芯科技股份有限公司.PIC单片机宏汇编与集成开发环境[M].石朝林,译.北京:清华大学出版社,2002.

[4]王有绪,许杰,李拉成.PIC系列单片机接口技术及应用系统设计[M].北京:北京航天航空大学出版社,2003.

异步串行传输 第6篇

串行通信实际上就是两台电子设备之间一位一位地发送和接收数据,它分为同步通信和异步通信两类。异步串行通信无需数据时钟、帧同步时钟等时钟信号,数据的发送和接收是自同步的,完全依靠收发双方约定的传输波特率和数据线自身的电平变化来正确地收发数据位流,而且又因为它连线简单,可以直接与PC机等带异步串口的设备相连,同时它又采用RS 232电平,传输的距离要比同步通信的长。正因为有上述的优点,异步串行通信被广泛应用在要进行远距离遥测遥控的航天电子工程中。

但是,一般的处理器芯片都带有同步串行接口,只有少数的处理器,如TMS320F2XX、TMS320F24XX带有速度相对较低的异步串口。为了实现那些没有带有异步串行接口的处理器能够与其他设备进行异步串行通信,可以采用复杂可编程逻辑器件CPLD技术,并结合异步串行通信的协议,对异步串行通信接口电路进行设计与实现,该方法开发周期短,并且CPLD的时序严格,速度较快,可编程性好,还可以用于完成电子系统的其他逻辑功能的设计,如实现系统的译码和专门的缓冲电路。这样一块电路板上的外围元器件数量就大大减少,系统的灵活性更好,调试也变得简单的多了,同时,系统的功能模块完成后可以先通过计算机进行仿真,再实际投入使用,降低了使用风险性。

2 异步串行通信的原理

异步串行通信方式是把一个字符看作一个独立的信息单元,并且字符出现在数据流中的相对时间是任意的,而每一个字符中的各位是以固定的时间传送。因此这种方式在同一字符内部是同步的,而字符间是异步的。

异步通信的主要特点是字符帧的传输格式,这样就使得发送方可以在字符之间可根据实际的需要插入不同的时间间隔,即每一个字符的发送是随机的。异步串行通信是以数据帧的格式传送的,1个字符开始传输前,输出线必须在逻辑上处于‘1’状态,这称为标识态。传输一开始,输出线由标识态变为‘0’状态,从而作为起始位。起始位后面为5~8个信息位,信息位由低到高排列,即第1位为字符的最低位,在同一传输系统中,信息位的数目是固定的。信息位后面为校验位,校验位可以按奇校验设置,也可以按偶校验设置,不过,校验位也可以不设置。最后的数位为‘1’,它作为停止位,停止位可为1位、1.5位或者2位。如果传输完1个字符以后,立即传输下一个字符,那么,后一个字符的起始位便紧挨着前一个字符的停止位了,否则,输出线又会立即进入标识态,即逻辑上处于‘1’。图1是两个字节0XA0和0X67被传输的帧的格式。

在通信中发送方和接收方之间允许没有共同的时钟,所以在异步通信中,收发双方取得同步的方法是采用在字符格式中设置起始位和停止位的办法。每一个字符传输前,信号线上始终为高电平,一旦开始传送就要先传送一个低电平的起始位,这样接收方就开始接收数据,从而与发送方保持同步(格式上的同步)。通信双方可按使用需要随时改变通信协议,即改变数据位、奇偶校验位和停止位长度和数据传输率。

3 异步串行通讯控制器的结构设计

异步串行通讯控制器的内部结构可分为控制逻辑电路和寄存器组两大部分。在控制逻辑电路中,包括波特率控制电路、读写控制逻辑电路、发送控制电路、接收控制电路、调制解调器控制逻辑电路、中断控制逻辑电路和内部总线控制逻辑电路。寄存器组分为模式寄存器、控制寄存器和状态寄存器。结构框图如图2所示。

该异步串行通讯控制器提供的模式寄存器和控制寄存器,用来设定奇偶校验、传输速率、握手机制以及中断。在这个设计中,提供了3种奇偶校验选择:不采用、奇校验或偶校验。传输速率的设定是通过向模式寄存器中设置特定的数值,来选择波特率因子,再结合外部连入的时钟信号就可以得出传输的波特率了。它们之间的关系是:时钟频率=波特率因子×波特率。

3.1 发送数据模块

串行异步通信的发送器的实现要比接收器简单很多。没有数据要发送时,发送数据寄存器为空,发送器处于空闲状态;当检测到发送数据寄存器满信号后,发送器开始发送起始位,同时8个数据位被并行装入发送移位寄存器,停止位紧接着数据位指示数据帧结束。只有发送数据寄存器为空时,待发送的数据才能被装入,在设计中用一个TxE信号来告诉CPU此时控制器的发送寄存器为空。程序中使用计数器来保证发送数据时时钟的正确。这里使用一个状态机描述发送过程,图3是发送器状态机状态转换示意图。

3.2 接收数据模块

串行数据帧与接收时钟是异步的,所以接收器功能实现中的关键是接收器时钟与每个接收字符的同步。一个有效的方法是接收器采用高速率时钟对串行数据进行采样,通常采样频率是位时钟频率的整数倍,也就是选择比较高的波特率因子。理论上倍数越高接收数据各位的分辨率越高,实际中一般最大选择16倍。

接收器应该尽可能地在靠近每个数据位周期的中心处进行采样。如果接收器能很好地预测起始位的开始,那么它可在起始位的下降沿到来之后,等待半个位周期再采样数据位。此后,接收器每等待一个位周期采样一个数据位,直至收到最后一位为止。

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

4 基于CPLD的实现和仿真

可编程逻辑器件(PLD)是在20世纪80年代迅速发展起来的一种新型集成电路,随着大规模集成电路的进一步发展,出现了PAL和GAL逻辑器件,而复杂可编程逻辑器件CPLD 是在此逻辑器件基础上发展起来的,它是由大量逻辑宏单元构成的。通过配置,可以将这些逻辑宏单元形成不同的硬件结构,从而构成不同的电子系统,完成不同的功能。正是CPLD的这种硬件重构的灵活性,使得设计者能够将用硬件描述语言(如VHDL或者Verilog HDL)描述的电路在CPLD中实现。这样一来,同一块CPLD能实现许多完全不同的电路结构和功能。同时也大大简化了系统的调试,从而能极大地缩短系统的研发周期。

于是我们在验证这一环节中,采用Xilinx公司的XC9500系列的XC95108 CPLD来验证该方案的合理性。在用VHDL语言实现图2的功能时,采用自顶向下的设计方法,先设计一个TOP顶层模块,它里面包括了接口控制电路模块,调制解调模块,发送模块和接收模块。其中接口控制电路模块包含了图2中的波特率控制逻辑电路,数据总线缓冲器和读写控制逻辑电路。设计实现中比较复杂的部分就是接口控制电路的实现。在接口控制电路模块中,设计了接收缓冲寄存器(RBR),发送保持寄存器(THR),中断使能寄存器(IER),中断标识寄存器(IIR),模式选择控制寄存器(LCR),调制解调控制寄存器(MCR),接收发送状态寄存器(LSR),调制解调状态寄存器(MSR),它们的存储器映射地址分别设置为000~110,因为该设计中把控制器设计为不能同时接收和发送,所以接收缓冲寄存器(RBR)和发送保持寄存器(THR)共用一个地址。其中,模式选择控制寄存器(LCR)用来设置,要发送数据的位数(从低到高发送),奇偶校验位的位数和停止位的位数。

采用Xilinx公司的ISE工具发送和对接收这两个关键模块分别进行仿真,发送模块的时序波形图如图5所示,接收数据模块的时序波形图如图6所示。

在发送模块的仿真测试程序中,让CPU的数据总线连续发送55H,AAH,5AH,A5H,并在控制器的模式控制寄存器中设置发送的数据位5位,1个奇偶校验位(偶校验),1个停止位。在TxRDYn信号变低的时候,开始发送一帧新的数据。根据图5中数据输出信号Sout上信号变化的情况可以验证该模块设计是正确的。

在接收模块仿真波形图中,Sin信号是负责接收串行数据的信号线,RBR是该控制器内部的缓冲寄存器,负责存储经过串并转换后的数据,RxRDYn是控制器的外部信号,用来告诉CPU,控制器已经转换完一帧数据,CPU可以把数据从缓冲寄存器中取出。中断信号INTR会在数据传输完后,产生一个正脉冲。在测试接收数据模块的文件中,使产生一个连续的AAH和56H的串行数据,在图6中可以看到在Sin信号每接收完一个数据帧后,数据便存入RBR寄存器,RBR寄存器的数据位AAH和56H,并且在AAH传完后,RxRDYn立即变为低电平。

5 结 语

本文在对异步串行通信协议进行分析的基础上,根据实际工程的需要,对异步串行通信控制器进行了详细设计,并结合CPLD器件,采用VHDL语言,对设计方案进行了实现和验证,通过最后时序仿真的波形图得出了设计方案的正确,而且加载了该设计程序的CPLD在实际工程中能够很好地与处理器进行连接来收发数据,从而为那些没有串行异步接口的处理器提供一个比较理想的设计方案。

参考文献

[1][美]Mark Balch.完整的数字设计[M].李兆麟,译.北京:清华大学出版社,2006.

[2]戴梅萼,史嘉权.微型计算机技术及应用[M].3版.北京:清华大学出版社,2004.

[3]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2000.

[4]Xilinx公司.XC9500′s user′s guide[Z].

[5]胡安,肖飞.TMS320C32扩展异步串口的方法[J].现代电子技术,2004,27(5):70-73.

[6]宋万杰.CPLD技术及其应用[M].西安:西安电子科技大学出版社,2001.

[7]曹国清.数字电路与逻辑设计[M].徐州:中国矿业大学出版社,2003.

[8]苏涛,何家辉,吕林夏.实时信号处理系统设计[M].西安:西安电子科技大学出版社,2006.

[9]李伯成.基于MCS-51单片机的嵌入式系统设计[M].西安:西安电子科技大学出版社,2005.

[10]吉雷.Protel99电子电路设计[M].成都:电子科技大学出版社,2000.

串行数据传输发展新方向 第7篇

一、串口服务器技术分析

1.1串口服务器的工作原理

串口服务器的工作原理是处理来自串口设备的串口数据流, 进行格式转换, 使之成为可以在以太网中传播的数据帧;对来自以太网的数据帧进行判断, 转换成串行数据送达相应的串口设备。串口服务器主要解决了串口数据与IP数据因速率不同而存在的速率匹配的技术难题。

1.2串口服务器工作方式

1.2.1服务器方式

在该工作方式下, 串口服务器作为TCP服务器端, 串口服务器在指定的TCP端口上监听程序的连接请求。

1.2.2客户端方式

在该工作方式下, 串口服务器作为TCP客户端, 串口服务器主动向程序请求连接。

1.3串口服务器通讯模式

1.3.1点对点通讯模式

该模式下, 串口服务器成对使用, 一台作为服务器端, 一台作为客户端, 两者之间建立双向透明传输连接。

1.3.2使用虚拟串口通讯模式

该模式下, 一个或者多个串口服务器与一台电脑建立连接, 由电脑上的虚拟串口软件管理下面的串口服务器, 实现数据传输。

二、串口服务器在民航通信设备上的应用

自动转报设备是民航生产中重要的通信设备, 航班起飞、降落、货物等数据都通过自动转报设备进行传输。自动转报设备用户分为同步、异步两种。本文是异步用户通信。它又分为MODEM和电缆直连两种通信方式。

2.1MODEM通信方式

工作在铜线上的一对MODEM设备提供了一条标准的串行传输通道。这种通信方式常用于民航机场内用户电报终端与自动转报设备的连接。

2.2电缆直连通信方式

电缆直连方式是用户设备在外地或距离机场较远的市区, 但中间的传输设备距离自动转报设备距离很短 (15米内) 。例如朝阳机场自动转报设备通过租用中国联通E1电路与沈阳自动转报设备互连。而中国联通传输设备与沈阳自动转报设备同在一个机房内。

2.3应用串口服务器对MODEM通信方式的改造

铜线使用越来越少, 光缆的铺设已到了用户桌面。如沈阳桃仙机场T3航站楼已实现光纤覆盖。在传输介质换代推动下, 对传统的MODEM通信方式进行改造, 使用串口服务器替代MODEM设备, 是一种有益的尝试。

在自动转报端和用户端各安装一台串口服务器, 串口服务器的网口通过光电转换设备连接光缆, 串口服务器的串口连接用户设备, 串口服务器配置为点对点通讯模式。经过实践, 证明这种连接比MODEM方式更稳定, 并避免了铜线性能下降带来的维护压力。改造后的连接如图1:

2.4应用串口服务器对电缆直连通信方式的改造

自动转报设备仅能提供64K以下速率的串行接口, 而当前电信运营商对外只提供速率为2M的SDH电路接口。这种接口速率不匹配的问题是民航通信中经常遇到的问题。朝阳机场转报设备与沈阳机场转报设备互连中就出现了这种难题, 最终采用串口服务器解决了这个通信难题。连接如图2:

参考文献

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【异步串行传输】相关文章:

串行通讯05-20

串行设计07-11

串行优化算法07-19

串行通信协议08-13

高速串行通道08-24

串行通信网络06-01

RS485串行通讯06-02

单片机串行通讯09-14

串行通信的工作方式07-24

I2C串行总线05-06

上一篇:企业升级能力下一篇:本质与现状