您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 计算机与CPLD串口通信Communicationwit
计算机与CPLD串口通信吴海明,童怀(广东工业大学信息工程学院,广东广州510006)摘要:通过计算机的鼠标、键盘操作与具有通用异步收发(UART)装置功能的复杂可编程逻辑器件(CPLD)通信,使复杂可编程逻辑器件控制数码管显示数字.即以复杂可编程逻辑器件为接口以实现计算机控制外围设备工作,并总结利用计算机来控制电机工作是可行的.关键字:计算机;串口;通信;复杂可编程逻辑器件Communicationwithserialportbetweencomputer&CPLDWuHai-Ming,TongHuai(InstituteofInformationengineering,GuangdongUniversityofTechnology,Guangzhou,Guangdong,510006,China)Abstract:ComputeriscommunicatedwithComplicateProgrammableLogicDevice(CPLD)whichisinpossessionoffunctionofUniversalAsynchronousReceiveandTransmit(UART)bymouseandkeyboard.Segment-LEDthatissomeison/offshowsthenumbercontrolledbyCPLD.ItmeansCPLDisaninterfaceinordertocontroltheperipheralequipmentthroughcomputeroperation.Makeaconclusion,motorwhichiscontrolledbycomputerusingthismethodisfeasibleKeywords:computer;serialport;communication;CPLD1引言1.1上下位机定义上位机是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机[1]。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。1.2上位机软件介绍VisualBasic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序[2]。1.3下位机硬件介绍CPLD是ComplexPLD的简称,顾名思义,其是一种较PLD为复杂的逻辑元件。CPLD是一种整合性较高的逻辑元件。由于具有高整合性的特点,故其有性能提升,可靠度增加,PCB面积减少及成本下降等优点。CPLD元件,基本上是由许多个逻辑方块(LogicBlocks)所组合而成的。而各个逻辑方块均相似于一个简单的PLD元件(如22V10)。逻辑方块间的相互关系则由可变成的连线架构,将整个逻辑电路合成而成。常见的CPLD元件有Altera公司的Max5000及Max7000系列。Cypress的Max340及Flash370系列等,一般来说,CPLD元件的逻辑门数约在1000~7000门之间。1.4两者间通信串口叫做串行接口,现在的电脑一般有两个串行口:COM1和COM2。你到计算机后面能看到9针D形接口就是了,有时我们也称它为RS-232接口。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。1.4.1上位机部分计算机串口的数据收发只需要RS-232的两条线:RXD和TXD就可以实现上下位机的通信。当上位机要发送数据时,object.Output=value。而上位机接收数据时,inbyte()=object.Input。其中inbyte()是定义为一个未知大小Byte类型,来存放接收到的以二进制方式存储的数据。所以,object.InputMode=comInputModeBinary(=1)。1.4.2下位机部分若要下位机与上位机进行通信,那么下位机也应该与上位机一样具有收发这两条线RXD和TXD。值得注意的是:上位机的RXD与下位机的TXD连接,上位机的TXD与下位机的RXD连接,这样才达到两者间通信的可能。然而这样是不够的,下位机的主要芯片CPLD必须具备通用异步收发器(UniversalAsynchronousReceiverTransmitter,UART)功能,按照收发的协议,例如:上下位机的波特率,校验位,数据位,停止位的数目要一致。UART是一种应用广泛的短距离串行传输接口。常常用于短距离、低速、低成本的通信中。8250、8251、NS16450等芯片都是常见的UART器件。基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。TXD是UART的发送端,为输出;RXD是UART的接收端,为输入。2通信的实现2.1上位机软件功能该软件的名字为test_UART,它具有收发数据的功能。与串口精灵相似,是串口精灵的简单版。其中:数据发送框里有一个组合框,可以选择0-9其中的一个数字,每个数字都代表不同的以十六进制的数据信息,然后点击“发送”按钮,数据就会通过串口发送到CPLD上,CPLD接收数据后通过数码管把它显示出来。另外,当CPLD有数据发送时,Test_UART会自动接收数据,在数据接收栏显示。数据发送:选择“0”时:发送3FH。选择“1”时:发送06H。选择“2”时:发送5BH。选择“3”时:发送4FH。选择“4”时:发送66H。选择“5”时:发送6DH。选择“6”时:发送7DH。选择“7”时:发送07H。选择“8”时:发送7FH。选择“9”时:发送6FH。其他情况发送00H。Mcom.Output=[value]’例如IFCombo1.Text=”0”ThenMcom.Output=&H3F数据接收代码如下Diminbyte()asByteinbyte()=Mcom.InputFori=LBound(inbyte())toUBound(inbyte())Text1.Text=Text1.Text+Hex(inbyte(i))+””Next2.2下位机设计与功能整个硬件系统主要有CPLD芯片:XC95108-84-15C;12个按钮(4*3矩形键盘);1个LED数码管,如图1所示:图1系统结构2.2.1顶层模块其中,CPLD的顶层模块由波特率发生器、UART接收器、UART发送器、键盘输入器构成。UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。UART接收器接收RXD串行信号,并将其转化为并行数据。波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步[3]。键盘输入器是向计算机发送信息,其中*代表发送数据,#代表不发送数据。2.2.2波特率发生器波特率发生器实际上就是一个分频器。可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数[4]。波特率分频因子可以根据不同的应用需要更改。例如给定的晶振为10MHz,要求通信波特率为9600B/S,所以分频系数约为1000。2.2.3UART接收器状态机一共有4个状态:start(等待开始位)、rec_bit(按位接收数据)、rec_over(接收完毕)、serial2parallel(串转并)。Start状态:当UART接收器复位后,接收状态机将处于这一个状态。在此状态,状态机一直在等待RXD的电平跳转,这意味着新的一帧UART数据帧的开始[5],状态机将转入rec_bit状态。rec_bit状态:UART接收器内有一个接收缓冲区rbuf(7downto0)。在这状态下,rbuf(i)=rxd,i=i+1(移位)。当i=8时,状态机将转入rec_over状态。rec_over状态:rbuf已接收PC发来的数据,Rx_over=1,Rx_complete=0,状态机将转入serial2parallel状态。Serial2parallel状态:Rx_over=0,Rx_complete=1,实现串行接收,并行发送的功能。把rbuf的8位数据并行输出,结果在数码管显示。2.2.4UART发送器状态机一共有4个状态:start(开始发送位)、serial2parallel(并转串)、trans_bit(按位发送数据)、trans_complete(发送完毕)。Start状态:当UART接收器复位后,接收状态机将处于这一个状态。在此状态,状态机一直在等待tx_control的电平为高电平状态机将转入trans_bit状态。Parallel2serial状态:当tx_control=1,开始发送数据,UART的发送缓冲器tbuf(7downto0)进入并转串的过程,并行输入,串行输出。通过TXD输出,把信息发送到PC机串口RXD上。Trans_bit状态:在这状态下,txd=tbuf(i),i=i+1(移位)。当i=8时,状态机将转入trans_complete状态。Trans_complete状态:这状态告诉UART发送一个字节数据完毕,准备下一个字节的数据,状态回到start,如果tx_control为1则继续发送,否则停止发送。3程序仿真3.1UART发送器仿真假设要发送数据A9H(tx_buf=”10101001”),由低位到高位10010101发送,仿真波形图如图2所示,tx相应地发送数据10010101。同样,发送FFH数据,tx相应地发送数据11111111。图2发送器仿真图3.2UART接收器仿真假设在软件Test_uart里选择“2”发送,对应发送5BH(01011011),由低位到高位发送顺序:11011010。仿真波形图如图3所示,若干时间段后,seg_D从00变成5B。而信号seg_D连接数码管,此时数码管显示“2”。图3接收器仿真图4小结设计完成后经编译仿真正确后,下载到CPLD板XC95128SLC84-15或FPGA板EPF10K10LC84-3。外接RS-232电平转换芯片MC1488,试验验证效果良好。在其它程序设计过程中该程序可以作为一个模块直接使用。另外,这原理可以运用在计算机控制直流电机,步进电机工作模式,例如正转,反转,加速,减速。参考文献:[1]单片机通信技术与工程实践求是科技编著人民邮电出版社[2]VisualBasic串口通信技术与典型实例李长林编著清华大学出版社[3]VHDL数字控制系统设计范例林明权编著电子工业出版社[4]VHDL教程Jayaram.Bhasker著刘雷波孟一聪译机械工业出版社[5]FPGA系统设计与实践黄智伟主编王彦副主编电子工业出版社作者介绍:吴海明(1981-),男,广东顺德人,硕士研究生,主要研究方向:电机与控制。童怀(1967-),男,博士后,教授,主要从事步进电机、开关磁阻电机的优化设计及其控制系统的研究。
本文标题:计算机与CPLD串口通信Communicationwit
链接地址:https://www.777doc.com/doc-51325 .html