基于RS485总线的PC机与FPGA通信系统设计探索

2014-04-29 03:59王明新
中国新技术新产品 2014年4期
关键词:字节寄存器中断

王明新

(国家新闻出版广电总局二0二二台,新疆 喀什 844000)

随着可编程逻辑器件技术的大力推广,FPGA系统的实时控制变得格外重要,研究PC机与FPGA之间的通信系统已成为重要课题。通过高级数据链路控制协议使RS485总线作为FPGA信息系统与PC之间的连接,实现信息传输,是极为实用且常用的方案。FPGA是一种可进行反复编程的门阵列系统,通过硬件处理技术迅速而灵活地完成设定的工作,同时经过多路性处理对信息实时预测仿真,是一类非常实用的嵌入式系统,是专业集成电路领域中独具代表性的半定制电路,它不仅能够有效解决传统定制电路存在的缺陷,同时也规避了原始编程器件电路数有限的问题。在RS485总线的连接下PC机能控制FPGA信息系统的运行,对实现系统的通信可控性有很大的作用。以下首先概述了基于RS485总线控制的FPGA的信息系统结构,然后介绍了信息系统结构中重要的模块设计方案,最后提出了实现RS485总线与FPGA通信系统间的连接的途径。

一、RS485总线控制的FPGA的信息系统结构

RS485总线的控制芯片由A通道、B通道、中断控制单元、储存器管理单元、工作状态寄存器、ISA总线接口电路以及片内端口RAM等七个部分组成。其中,A通道与B通道从材料及构成上均完全相同,都主要包括负责发送和接受数据的两个模块部分,能够有效保证全双工通讯的稳定有效性。存储器中包含一个通道管理单元,能够保证两通道有序共享双端口RAM而不至于产生数据交叉,发生冲突。在完成发送或接受任务时,A通道和B通道均可中断,中断控制单元在这时起到了管理四个中断源的作用,中断控制单元按照中断情况发生的先后顺序在中断状态寄存器中记录两通道发送和接收任务的完成情况,同时提出中断申请。而FPGA接口内的RAM模块可以使系统的发送通道、接收通道以及CPU之间的共享端实现双端口RAM。地址译码、读写控制及命令译码等逻辑线路组成的ISA总线接口电路在节省地址空间的情况下,采用CPU操作将地址指向命令模式寄存器中,最后向状态寄存器传输信息。这个系统的运转大大简化了系统的规模以及系统接口关系,使印刷线路板空间得到大幅节省,有效降低了系统价格。

系统中采用RS485总线型网络电路是因其串行总线标准适宜差分平衡的方式完成信号传输,能够很好地抵抗外界干扰,并同时允许一对双绞线上的发送器启动两个甚至两个以上负载设备,适合数据传输之用。相较RS232总线来说,RS485总线有其显著的优势,其通信距离相对来说比较远,一般可以达到几百、几千米以上,同时能够实现多点通信,在同一范围内能够构建小型化的局域网,具备较强的实践应用价值。且其信号抗干扰能力同样优于传统的RS232总线,传输稳定性极强,因此,在信息系统设计中一般采用RS485现场总线,但需要注意的是,为尽最大限度保障网络系统传输的稳定性,需在RS485网络传输线的初始端和末尾端应该各接一个一百二十欧的匹配电阻。

二、控制系统中主要模块设计

(一)命令、状态寄存器

RS485是一类标准化总线控制器,在对通信要求较高的传输设计中,一般采用串行总线标准,选用平衡发送及差分接收的方式,有其较强的灵敏度与抗干扰能力,内部常置多达26个命令模块,每个命令均利用FO地址模块与,每个地址中的数据均记录了工作模式及工作方式的相关信息。控制器之所以采用四位地址线,也正是为了减少内部空间占用,这四位地址线分别为A3-A0。在有效控制了FO端口地址的前提下,进行写操作时,CPU向U0地址中写入的数据是具有一定指向性,直接指向命令及模式寄存器,进行读操作时,数据则指向状态寄存器。当需要写入十二或十六位寄存器时,因其数据总线为八位,所以要将数据连续两次写入同一端口,并按照高位字节先写低位字节后写的标准进行。

(二)接收、发送数据通道

RS485总线控制器中,全双工通道共有两条,且其基本材料、结构等均完全相同,这两条通道编号分别为A和B,其基本结构均包括一个发送模块以及一个接受模块,模块的工作是同时并行进行的,这能够保证数据传输的速率及精度。

接收模块的工作依次为7EH识别、零码剔除、并串转换、地址识别、CRC校验及无效帧检测。CPU发出接受命令后,立即传输到总线的接收模块,首先由标志字节识别模块对所接受的字节进行识别检测工作,如果在检测过程中发现7EH标志,即允许接收,与此同时,零码剔除模块等准备进入工作状态。所接收的数据流在零码剔除模块的删除零位处理之后,传输到数据位移寄存器中,数据位移寄存器中的串并转换系统对接收到的数据进行串并转换工作,然后传输到CRC位移寄存器中完成CRC校验,校验完毕后,会形成遗传整型字节,被传输至数据缓冲区,接下来,地址识别模块将对这些数据进行识别。地址识别模块根据接收数据的地址字段与本站设置值相比较,如果地址信息不符合要求,所接收数据的允许接收标志将被清除,同时完成接收模块的复位,并执行下一轮搜索,如果地址信息符合标准,那么数据经过处理后将存入双端口RAM中。

发送模块的工作顺序有所差别,首先开始工作的是时钟生成子模块,随后寄存器接受数据及CRC信息,进行相关处理,在这之后还会进行零码插入、控制信息生成、时钟信息传输、并串转换等一系列工作。波特率寄存器的设置情况能够影响时钟生成模块分频工作时钟,产生的本路根据高级数据链路控制协议完成数据发送时钟。控制模块会在初始化后标志字节7EH,并锁入数据缓存器中。在接收到CPU发出的“发送”命令时,数据缓存器中的数据将被写入到数据位移寄存器中,同时申请存储器管理单位提供的数据并启动发送过程。与此同时,计数有序进行,保证数据不会出现移位,其工作原理主要是:CRC移位寄存器对发送的数据进行逐位的核对、计算,并将结果存储在字节计数器中,当所存储的数值达到设定值后,停止其他数据生成,将CRC计算结果附加载发送的数据信号末位,同步进行传输。最后,控制模块还会在数据缓存器之中添加一个帧同步标志字节,并根据中断允许设置决定是否发出中断请求,完成一帧数据的发送。

(三)双端口RAM和相应的存储器管理方式

系统中的数据,无论是即将要发送的部分,还是已经被接受的部分,会被暂时存放在双端口RAM中,此RAM是RS485总线和FPGA交换数据的唯一桥梁,由上面的分析不难看出,A、B两个通道会共享这个桥梁,但按照系统要求,两通道所占用的空间大小显然会有所区别,这是由发送数据或接受数据的起始地址和数据长度来决定。如果A通道和B通道同时使用存储器进行存取数据工作很容易发生对RS485总线的回路竞争,要避免这种情况就要使用DMA控制器,进行RAM空间管理。存储器管理单元能够记住当前每个通道存取数据时使用的RAM地址,对两通道对片内存储器的存取请求进行循环查询,合理调节数据。

在复位发生后,双端口RAM会出现一段空闲时间,如果通道中有存储器发出请求,那么片内的RAM控制器会进入下一个状态,RAM地址在这一过程中,被准确传递至总线,随机进行数据的读与写操作。接收到复位申请信号,地址计数器又会归零。A通道和B通道可能在这一瞬间均处于全双工状态,波特率为10M,那么在一个字节的传输时间段内,A通道和B通道将各自访问存储器一次,共为四次。控制器对RAM的数据的存取时间在一定范围内,每存取一个字节需要经过四个状态,那么所花费的时间则为十分钟,如果控制器的工作始终保持在四十兆赫,那么时间为0.1微秒,满足我们的需求。

(四)中断控制单元

数据传输通道在完成数据传输任务后都会产生中断申请,这可能先后产生4个中断请求,于是,中断控制单元就会对中断源进行管理工作。中断控制单元判断中断是否合理,主要是根据通道的状态和工作模式来进行的,如果通道内的任务处于完成状态且控制单元允许中断发生,那么中断申请和通道状态将会被锁存,中断状态寄存器中会产生相应的请求,这个请求中对通道和中断类型及中断状态都有相对应的描述。若两通道中同时产生中断请求,A通道的中断请求将先于B通道锁存,中断状态储存器在CPU读取操作后会与相应通道的状态储存器同时自动复位,在中断存储器的中断请求得到响应后,中断状态会被锁存,另一通道的中断请求会同这一过程一样完成。

三、实现RS485总线与FPGA通信系统间的连接

用标准硬件描述语言在电阻晶体管逻辑电路下,采用自上而下的方法设计,能够保证其运行状态。在基于RS485的PC机与FPGA通信系统的设计中,通过仿真和优化后发现其资源利用率达到百分之八十。而联机通信测试其中断模式和查询模式可以证实并不会出现数据错误。人为造成的异常情况发生时,通信控制器会正常报告出错误状态。

在实际测试中,我们主要应用VHDL语言进行编程,采用的主要软件系统为ISE6.0,其自带软件模拟RAM模块,安装于PC段,用于进行控制信息发送。采用的目标FPGA件为Virtex XCV50。实测显示,联机状态下,无论是中断还是查询,5万次通讯测试下,帧准确、系统稳定率为100%,为了更进一步证实其稳定性,我们还进行了强电干扰实验,以手电钻置于RS485总线附近,再行5万次通讯测试,出现且仅出现1次通讯测试,完全能满足目前苛刻环境的要求,由此可见,基于RS485总线的PC机与FPGA通信系统有其较强的抗干扰优势、通讯稳定性极强,能够打破通讯环境的限制,同时实用性较强,传输所消耗的功率相对较小,系统芯片的稳定性十分强,能够持续运作,具有极高的实用价值。

结语

在电阻晶体管逻辑电路下,用标准硬件描述语言设计的高级数据链路控制协议为RS485总线与FPGA通信系统的功能性连接提供了有效的控制。在这个接口电路中存在独立的双工通道,有四千字节的双接口RAM,通过查询和中断这两种方式有效控制数据的流动,且该系统能够自动识别7EH标志,并根据系统预先设定值识别地址位数,同时还能自动插入或删除零码。另外,在数据溢出或发生其他异常时,系统能自动终止并检测错误,在控制端口以FO方式与CPU相接,内部的双端口RAM通过MEM方式与CPU相接,系统内部设置有的波特率发生器并能决定数据传输的速率。

在基于RS485总线的PC机与FPGA通信系统的设计中,接口芯片能够稳定在四十兆赫的状态下工作,而其中各通道的波特率最高能够达到十兆赫,其操作过程简单,所消耗的功率较小且可靠性很高,具有很高的使用价值。

[1]何青,胡汉春,代刚,等.基于RS-485总线的PC机与单片机串行通讯仿真系统的设计[J].机电产品开发与创新,2011(01).

[2]胡中功,黄波,江维.基于RS485总线的PC与单片机多机通信系统设计[J].自动化与仪器仪表,2012(01).

[3]王飞,吴茂.基于RS485的PC与智能仪表通信系统设计[J].微计算机信息,2009(32).

[4]彭宏伟,边志远,李翠霞.基于RS-485总线的PC机与单片机串行通信系统的设计与实现[J].大地测量与地球动力学,2009(S1).

[5]耿昕.基于FPGA的通信信号处理的设计与实现[D].南京理工大学,2013.

[6]杨阳.VHF频段高速通信系统设计及接收机FPGA实现[D].北京邮电大学,2013.

[7]孟绍良,张海柱,刘述防,等.基于FPGA的直序扩频通信系统设计[J].哈尔滨理工大学学报,2012(06).

[8]梁仕文,邓洪波,梁志明,等.基于FPGA的通信原理实验平台研制与应用[J].实验室科学,2013(03).

[9]徐运武,周泽湘.基于FPGA LPM多功能信号发生器设计[J].电子设计工程,2011(15).

猜你喜欢
字节寄存器中断
No.8 字节跳动将推出独立出口电商APP
Lite寄存器模型的设计与实现
No.10 “字节跳动手机”要来了?
简谈MC7字节码
跟踪导练(二)(5)
千里移防,卫勤保障不中断
分簇结构向量寄存器分配策略研究*
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析
高速数模转换器AD9779/AD9788的应用