一种基于HDLC协议高性能高速同步422仿真器板卡的制作方法

文档序号:24872612发布日期:2021-04-30 12:45阅读:396来源:国知局
一种基于HDLC协议高性能高速同步422仿真器板卡的制作方法

本发明涉及仿真器的技术领域,特别是涉及一种基于hdlc协议高性能高速同步422仿真器板卡。



背景技术:

当前,hdlc的asic芯片有motorola公司的mc92460、st公司的mk5025、zarlink公司的mt8952b等。这些集成电路使用简易,功能针对性强,性能可靠,适合应用于特定用途的大批量产品中。但由于hdlc标准的文本较多,asic芯片出于专用性的目的难以通用于不同版本,缺乏应用灵活性。例如ccitt、ansi、iso/iec等都有各种版本的hdlc标准,有的芯片公司还有自己的标准,对hdlc的crc(cyclicalredundancycheck,循环冗余码校验)序列生成多项式等有不同的规定。况且,专用于hdlc的asic芯片其片内数据存储器容量有限,通常只有不多字节的fifo(先进先出存储器)可用。对于某些应用来说,当需要扩大数据缓存的容量时,只能对asic芯片再外接存储器或其它电路,asic的简单易用性就被抵销掉了。hdlc的软件编程方法功能灵活,通过修改程序就可以适用于不同的hdlc应用。但程序运行占用处理器资源多,执行速度慢,对信号的时延和同步性不易预测。对于多路信号的hdlc应用,处理器的资源占用率与处理路数成正比,所以软件hdlc一般只能用于个别路数的低速信号处理。

fpga(fieldprogrammablegatearray,现场可编程门阵列)采用硬件技术处理信号,又可以通过软件反复编程使用,能够兼顾速度和灵活性,并能并行处理多路信号,实时性能能够预测和仿真。fpga芯片虽成本略微高于asic芯片,但具有货源畅通、可多次编程使用等优点。目前fpga单片所含的逻辑门和片上存储器的容量越做越大,百万门级的可编程逻辑芯片已成为寻常产品。在中小批量通信产品的设计生产中,用fpga实现hdlc功能是一种值得采用的方法。正是有鉴于此,innocor、xilinx等公司推出了能在fpga中实现hdlc功能的ipcore(intellectualpropertycore,知识产权核),但这些ipcore需要付费购买许可(license)才能使用,且在应用中受到各种限制。



技术实现要素:

为解决上述技术问题,本发明提供一种基于hdlc协议高性能高速同步422仿真器板卡。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,由hdlc协议模块、uart协议模块、收发接口电路、pxi桥接总线模块、hdlc功能模块和crc校验模块组成;

hdlc协议模块:

发送模块:产生本路hdlc数据发送时钟;锁存写入的发送数据并按指定时序启动发送;在发送数据段前加上"7e"起始标志;对发送数据逐位做crc计算并将计算结果附在发送数据之后;对包括crc计算值在内的数据进行"插零"操作并附上"7e"结束标志把结果输出;

接收模块:产生与本路hdlc接收数据时钟同步的fpga工作时钟;在接收的数据流中检测有无"7e"标志;当检测到数据流中有"1f"信号时,对数据进行"删零"操作;对经"删零"后的数据进行crc校验;把接收到的数据存入fpga内部ram中;当接收到结束标志后,检查crc校验值是否正确;

采集模块:对总线上的数据进行实时采集,并将数据锁存到fpga内部ram中,由上位机进行读取;

uart协议模块:

uart数据流的一个字符中的每一位意义如下:

■起始位:先发出一个逻辑“0”的信号,表示传输字符的开始;

■数据位:紧跟起始位之后,数据位的个数可以是4、5、6、7、8等,构成一个字符,通常采用ascii码,从最低位开始传送,靠时钟来定位;

■奇偶校验位:数据位加上这一位后(跟在数据位尾部),使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性;

停止位:它是一个字符数据的结束标志,可以是1位、1.5位、2位的高电平(逻辑“1”),空闲位:处于逻辑“1”状态,表示当前线路上没有数据的传送,波特率:是衡量数据传输速率的指针,表示为每秒钟传送的二进制位数(bit数);

收发接口电路:

由两个高速半双工收发器isl3259e组成;

pxi桥接总线模块:

采用pxi9054芯片;

hdlc功能模块:

hdlc规定采用“零比特填充法”使一帧中两个字段之间不会出现6个连续1;

crc校验模块:

由16个带使能端的d触发器组成,按照x16+x12+x5+1的生成多项式进行16位crc计算。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述“hdlc规定采用“零比特填充法”使一帧中两个字段之间不会出现6个连续1”具体做法如下:发送数据时,先进行帧数据扫描,只要发现有连续的5个1,则立即插入一个0,以此保证数据中不会出现连续6个1;接收数据时,先找到3e字段以确定帧的边界,接着对其后的比特流进行扫描,每发现5个连续1就将其后的0删除,以此保证所传比特流中不出现帧标志,直到帧尾标志出现,从而实现hdlc在链路层的“透明传输”,保证发送端可以发送任意组合的比特流信息,而接收端都能准确无误地接收到。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述板卡结构尺寸符合pxi板卡规范,占用一个pxi机箱槽位。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述crc校验模块:

a.如果要改变crc的位数,改变d触发器的数量;

b.如果要改变crc生成多项式,将多项式中非零系数项对应的d触发器的输出与d1信号"异或"后送至下一个d触发器的输入;

c.通过给d触发器的prn端或clrn端置"0",改变crc计算的初始值。

与现有技术相比本发明的有益效果为:由本发明所述的板卡制取的同步422仿真器采用fpga实现hdlc协议和uart协议,具有8通道422总线收发功能,每通道可工作在同步422模块或异步422模式下,每通道可独立配置成发送通道或接收通道;所有通道皆具备总线数据采集功能,同步422仿真器采用pxi总线接口,实现高速数据传输;同步422仿真器同时预留有一路rs232调试接口,调试接口可输出各通道的数据收发状态,可以作为判断故障的依据。

附图说明

图1是hdlc协议模块结构示意图;

图2是uart协议模块结构示意图;

图3是收发接口结构示意图;

图4是hdlc模块总体框图;

图5是发送控制状态机;

图6是接收控制状态机;

图7是fpga实现crc原理图;

图8是windriver开发框架图;

图9是pxi板卡驱动执行流程图;

图10是demo软件流程图;

图11是同步422仿真器原理图;

图12是fpga核心模块采用fpga实现hdlc协议和uart协议图;

图13是fpga配置模块图;

图14是pxi桥接总线模块图;

图15是采集模块图;

图16是发送模块和接收模块图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,由hdlc协议模块、uart协议模块、收发接口电路、pxi桥接总线模块、hdlc功能模块和crc校验模块组成,如图12-图16所示;

hdlc协议模块,如图1所示:

发送模块:产生本路hdlc数据发送时钟;锁存写入的发送数据并按指定时序启动发送;在发送数据段前加上"7e"起始标志;对发送数据逐位做crc计算并将计算结果附在发送数据之后;对包括crc计算值在内的数据进行"插零"操作并附上"7e"结束标志把结果输出;

接收模块:产生与本路hdlc接收数据时钟同步的fpga工作时钟;在接收的数据流中检测有无"7e"标志;当检测到数据流中有"1f"信号时,对数据进行"删零"操作;对经"删零"后的数据进行crc校验;把接收到的数据存入fpga内部ram中;当接收到结束标志后,检查crc校验值是否正确;

采集模块:对总线上的数据进行实时采集,并将数据锁存到fpga内部ram中,由上位机进行读取;

uart协议模块,如图2所示:

uart(universalasynchronousreceiver/transmitter)即通用异步收发传输器,工作于数据链路层(协议层之一),包含了rs-232、rs-422、rs-485串口通信和红外(irda)等等,uart协议作为一种低速通信协议,广泛应用于通信领域等各种场合,uart基本可分为并口通信及串口通信两种,异步串口通信协议,工作原理是将传输数据的每个字符以串行方式一位接一位的传输;

uart数据流的一个字符中的每一位意义如下:

■起始位:先发出一个逻辑“0”的信号,表示传输字符的开始;

■数据位:紧跟起始位之后,数据位的个数可以是4、5、6、7、8等,构成一个字符,通常采用ascii码,从最低位开始传送,靠时钟来定位;

■奇偶校验位:数据位加上这一位后(跟在数据位尾部),使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性;

停止位:它是一个字符数据的结束标志,可以是1位、1.5位、2位的高电平(逻辑“1”),空闲位:处于逻辑“1”状态,表示当前线路上没有数据的传送,波特率:是衡量数据传输速率的指针,表示为每秒钟传送的二进制位数(bit数);

收发接口电路,如图3所示:

收发接口中ro具有两个功能,一是作为总线接收接口,二是作为数据采集输入;时钟信号具有双向切换能力,可适应内部时钟和外部时钟两种工作方式;

由两个高速半双工收发器isl3259e组成;isl3259e性能如下:

■iec61000esdprotectiononrs-485i/opins:±15kv

■class3hbmesdlevelonallotherpins:>9kv

■largedifferentialvout:2.8vinto54ω

■betternoiseimmunity,ordriveupto6terminations

■veryhighdatarate:upto100mbps

■11/13ns(max)tx/rxpropagationdelays;1.5ns(max)skew

■1/5unitloadallowsupto160devicesonthebus

■fullfail-safe(open,shorted,terminated/undriven)receiver

■highrxioltodriveopto-couplersforisolatedapplications

■hotplug-txandrxoutputsremainthree-stateduringpower-up

■lowquiescentsupplycurrent:4ma

■lowcurrentshutdownmode:1μa

■-7vto+12vcommonmodeinputvoltagerange

■three-staterxandtxoutputs

■operatesfromasingle+5vsupply

currentlimitingandthermalshutdownfordriveroverloadprotection;

pxi桥接总线模块:

采用pxi9054芯片;pxi9054是由美国plx公司生产的先进的pxii/o加速器,采用了先进的plx数据流水线结构技术,是32位、33mhz的pxi总线主i/o加速器;符合pxi本地总线规范2.2版,突发传输速率达到132mb/s,本地总线支持复用/非复用的32位地址/数据;有m、c、j三种模式;针对不同的处理器及局总线特性可选,尽量减少中间逻辑;具有可选的串行e2prom接口,本地总线时钟可和pxi时钟异步;pc9054内部有6种可编程的fifo,以实现零等待突发传输及本地总线和pxi总线之间的异步操作;支持主模式、从模式、dma传输方式,因其强大的功能可应用于适配卡和嵌入式系统中;

hdlc功能模块,如图4所示:

hdlc规定采用“零比特填充法”使一帧中两个字段之间不会出现6个连续1;

crc校验模块,其电路图如图7所示:

由16个带使能端的d触发器组成,按照x16+x12+x5+1的生成多项式进行16位crc计算。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述“hdlc规定采用“零比特填充法”使一帧中两个字段之间不会出现6个连续1”具体做法如下:发送数据时,先进行帧数据扫描,只要发现有连续的5个1,则立即插入一个0,以此保证数据中不会出现连续6个1;接收数据时,先找到3e字段以确定帧的边界,接着对其后的比特流进行扫描,每发现5个连续1就将其后的0删除,以此保证所传比特流中不出现帧标志,直到帧尾标志出现,从而实现hdlc在链路层的“透明传输”,保证发送端可以发送任意组合的比特流信息,而接收端都能准确无误地接收到;

发送控制状态机和接收控制状态机分别如图5、图6所示;发送数据时,发送状态机首先判断写fifo是否有数据,若有数据,则插入帧头,依次读取fifo数据,完成插“0”操作和插帧尾操作,并按照从低到高的顺序发送数据,直至写fifo为空;接收数据时,首先搜索帧头,为了防止接收到连续两个标志字而把后一个标志字误认为是数据,设置搜索数据状态(data_find),若不是标志字,则作为数据进行去“0”操作,完成串并转换和帧尾检测,并将接收到的数据以32bit为单位,逐次写入读fifo中;当一帧传输结束,采用中断信号通知上位机及时读取数据;一旦检测到丢弃序列(0x7f),则结束对此帧数据的处理,并清空读fifo里的数据,同时上报pc机错误信息,请求发送方重新发送数据。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述板卡结构尺寸符合pxi板卡规范,占用一个pxi机箱槽位。

本发明的一种基于hdlc协议高性能高速同步422仿真器板卡,所述crc校验模块:

d.如果要改变crc的位数,改变d触发器的数量;

e.如果要改变crc生成多项式,将多项式中非零系数项对应的d触发器的输出与d1信号"异或"后送至下一个d触发器的输入;

f.通过给d触发器的prn端或clrn端置"0",改变crc计算的初始值。

上述板卡由以下驱动软件进行驱动执行:

驱动软件:使用winddriver来开发winxp及win7的驱动程序:

windriver的体系架构分为两种模式:用户模式和核心模式。对硬件进行操作时,开发者调用用户模式的库函数,用户模式的库函数再调用核心模式完成对硬件的最终访问;其与硬件模板、用户驱动程序、用户应用程序之间的关系即体系结构如图8所示;

在本发明中使用windriver开发基于pxi9054的同步422板卡驱动程序,当插卡设计好插入pxi插槽或上电后,pxi总线配置机构会自动根据pxi设备即该卡的要求实现配置;

总线支持内存读写,i/o端口读写、中断机制和dma功能,在该卡的驱动程序中,需要处理pxi设备的内存、端口的读写、中断处理和dma数据传输,实现pxi设备的功能,因此,该卡的功能驱动程序是标准的wdm设备驱动程序,开发的执行流程如图9所示;

wdopen():打开面向windriver内核模式的句柄。该句柄将被所有的windriverapis所用,因而也将第一个被调用。

wdversion():获取当前windriver内核模式运行的版本信息。

wdpxiscancards():检测插在pxi总线上符合输入标准(制造商id或板卡id)的pxi设备,返回所检测到的设备的编号和所在位置(包括总线号、插槽号和相应的功能号)。

wdpxigetcardinfo():获取pxi设备的资源信息(包括存储区范围、i/o空间范围、中断号等)。

wdpxiconfigdump():向/从所选的pxi卡的pxi配置空间进行读/写。

wdcardregister():负责选定设备,并对该设备的项目注册和资源分配:映射设备的物理空间,使之能够被核心模式的进程和用户模式的应用程序所访问;检测i/o和内存资源是否注册过;将有关中断请求号和中断类型(边缘触发或电平触发)存储到windriver自定义的数据结构中。

驱动程序接口函数按ansicc标准编写,以动态链接库dll形式提供给用户:

适用编程开发工具:

visualc++;

visualbasic;

c++builder;

labview;

cvi;

板卡的驱动函数库设计需要频繁地对物理地址进行读写操作,如果板卡的使用者对板卡的硬件组成及工作原理不是非常熟悉,则难以熟练地使用该板卡;在现在使用广泛的操作系统windowsxp/windows7下,用户没有直接操作物理地址的权限,如果要直接操作系统的物理地址,则有可能造成系统的崩溃;因此,将板卡工作中的每个独立过程以函数的形式封装成一个函数库,将接口函数(api)提供给用户可以减少用户开发应用程序的周期,提高程序的可靠性,还能让不了解板卡硬件组成原理的用户更方便的使用该板卡;

驱动函数功能:

a)设备打开(hdlc_open)

函数原型:dllbool__stdcallhdlc_open(handle*phsync422,bytecardid);

函数功能:找板卡、分配板卡资源

参数说明:phsync422:板卡的句柄

cardid:板卡编号

返回值:可找到板卡且板止资源分配成功,返回值为真;否则为假。

b)设备关闭(hdlc_close)

函数原型:dllbool__stdcallhdlc_close(handle*phsync422);

函数功能:关闭板卡,释放板卡资源

参数说明:phsync422:板卡的句柄

返回值:若板卡关闭成功,返回值为真;否则为假。

c)通道同步/异步配置函数(hdlc_setsync)

函数原型:dllbool__stdcallhdlc_setsync(handle*phsync422,bytech,bytesync,byteisinteral);

函数功能:配置板卡同步/异步模式,以及内部同步时钟/外部同部时钟

参数说明:phsync422:板卡的句柄

ch:目标通道号

sync:等于1时同步,等于0时异步

isinteral:等于1为内部时钟,等于0为外部时钟

返回值:板卡配置成功,返回值为真,否则为假。

d)通道发送/接收配置函数(hdlc_chconfig)

函数原型:dllbool__stdcallhdlc_chconfig(handle*phsync422,bytech,byteisrcv);

函数功能:配置板卡通道收发

参数说明:phsync422:板卡的句柄

ch:目标通道号

isrcv:等于1为接收,等于0为发送

返回值:板卡通道配置成功,返回值为真,否则为假。

e)接口速率配置函数(hdlc_baudrateconfig)

函数原型:dllbool__stdcallhdlc_baudrateconfig(handle*phsync422,bytechwordbaudrate);

函数功能:配置板卡波特率

参数说明:phsync422:板卡的句柄

ch:目标通道号,等于-1时设置所有通道

baudrate:设置波特率

返回值:板卡配置成功,返回值为真,否则为假;

f)发送数据函数(hdlc_send)

函数原型:dllword__stdcallhdlc_send(handle*phsync422,bytech,byte*data,wordlength);

函数功能:数据发送

参数说明:phsync422:板卡的句柄

ch:目标通道号

data:发送数据指针

length:发送数据长度

返回值:为实际发送的数据长度。

g)接收数据函数hdlc_receive

函数原型:dllword__stdcallhdlc_receive(handle*phsync422,bytech,byte*data,wordlength);

函数功能:数据接收

参数说明:phsync422:板卡的句柄

ch:目标通道号

data:接收数据指针

length:接收数据长度

返回值:为实际接收的数据长度。

串口调试软件:

具备全功能的通道调试工具;

串口调试软件功能如下:

1)接收从串口进来的数据并在窗口显示.显示流畅,可以保持接收大量数据不死机.

2)所接收到的数据数据显示方式可以选择为字符方式或者hex方式

3)中文显示无乱码,且不影响速度

4)串口波特率可以选择为110bps-10mbps.

5)可以即时显示存在的串口号,串口号也会在列表中出现.

6)可以选择“5、6、7、8”四种数据长度.

7)可以选择为“1、1.5、2”三种停止位.(1.5停止位需要硬件支持)

8)可以自由选择校验方式.

9)可以自由选择流控方式.(某些计算机不能选择硬流控)

10)串口设置和字符串操作等设置在程序关闭时自动保存,打开时自动载入.

11)可以在接收窗口按键即发送该键值.

12)可以在字符串输入框输入您想发送的字符串,并发送.

13)可以在字符串输入框输入您想发送的hex数据串,数据的值从00到ff,没有任何限制.

14)可以定时重复发送数据,并可以设置发送时间间隔.

15)可以在发送字符串时选择发送新行,即自动加上回车换行.

16)可以显示当前串口的cts、dsr、rlsl(cd)信号线的状态.

17)可以自由控制当前串口的dtr、rts信号线的输出状态.

18)可以打开一个文本文件或者一个二进制文件预览其内容,查看方式可以是文本或者hex方式.

19)可以打开一个文本文件或者一个二进制文件并以当前波特率发送到串口.

20)可以保存串口接收到的内容到文件,文件名取自当前时间,保存在当前目录.

21)可以即时显示发送的字节数和接收到的字节数,按清除窗口将会清零.

22)带有功能强大的扩展功能:多条字符串发送预先定义,并自动保存.

23)可以定义最多32条预备发送的字符串,每条字符串可以定义为hex数据串或者字符串方式.在每一条数据的左边打勾就表示这是一条hex数据串.

24)点击字符串右边的标号即可以发送这条定义好的字符串.

25)可以设置为循环发送你定义过的多条字符串,并且可以设置发送时间间隔.

26)可以同时打开多次软件,进行不同的串口的调试.

27)发送字符串时选择'发送新行',可以加发回车换行.

demo软件流程图,如图10所示。

如图11所示,由上述板卡制取的同步422仿真器采用fpga实现hdlc协议和uart协议,具有8通道422总线收发功能,每通道可工作在同步422模块或异步422模式下,每通道可独立配置成发送通道或接收通道;所有通道皆具备总线数据采集功能,同步422仿真器采用pxi总线接口,实现高速数据传输;同步422仿真器同时预留有一路rs232调试接口,调试接口可输出各通道的数据收发状态,可以作为判断故障的依据。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1