本发明涉及计算机总线技术领域,尤其涉及一种基于usb接口的便携式gjb289a总线通讯设备。
背景技术:
mil-std-1553b(简称1553b)是由美国制定的军用数据总线标准,广泛的应用于航空、航天、船舶等军事领域,我国参考1553b制定了gjb289a标准。在相关系统开发调试、维护过程中,需要使用计算机与gjb289a总线设备进行通信但需要进行接口转换,通常接口转换采用的方式有gjb289a-pci、gjb289a-vxi和gjb289a-isa通讯接口板等,采用这些方式的gjb289a总线接口转换设备存在体积偏大、成本高昂、使用不方便的缺点,特别是在户外作业过程时,使用携带很不方便。而usb接口是当前各类电脑上最广泛使用的接口,具备热拔插、体积小、高速率、携带方便等特点。因此,开发一种基于usb接口的便携式gjb289a总线通讯设备具备广阔的市场应用前景。
技术实现要素:
本发明所解决的技术问题在于提供一种基于usb接口的便携式gjb289a总线通讯设备,以解决上述背景技术中的问题。
本发明所解决的技术问题采用以下技术方案来实现:
一种基于usb接口的便携式gjb289a总线通讯设备,包括usb总线、usb收发器、usb连接器、电源模块、fpga控制器、gjb289a信号收发器、程序存储器及gjb289a总线,其中,usb连接器分别与usb总线、usb收发器及电源模块连接,usb收发器、电源模块分别与fpga控制器连接,fpga控制器内设置有usb协议控制模块、gjb289a总线协议处理模块、通讯控制处理模块、数据缓存模块、ram片上存储器、usb接口及gjb289a总线接口,且usb接口一端与usb收发器连接,usb接口另一端与usb协议控制模块连接,数据缓存模块分别与usb协议控制模块、gjb289a总线协议处理模块及ram片上存储器连接,通讯控制处理模块分别与usb协议控制模块、gjb289a总线协议处理模块及数据缓存模块连接,gjb289a总线接口一端与gjb289a总线协议处理模块连接,gjb289a总线接口另一端与gjb289a信号收发器连接,gjb289a信号收发器与gjb289a总线连接,程序存储器与fpga控制器连接。
在本发明中,所述gjb289a总线协议处理模块上设置有两个gjb289a总线接口。
在本发明中,所述gjb289a信号收发器通过变压器与gjb289a总线连接,且变压器为2个。
在本发明中,所述变压器为耦合变压器。
在本发明中,所述usb协议控制模块中usb控制器采用cortex-a9处理器,包括两个usb2.0外设资源,最高可实现480mb/s的传速率,usb控制器包括与控制寄存器连接的dma引擎、缓冲区、高速协议引擎、寄存器接口及收发器接口,收发器接口与外部收发器phy连接,寄存器接口与apb连接,dma引擎上设置有用于与ahb连接的dma接口,且dma引擎与缓冲区连接,缓冲区与高速协议引擎连接,高速协议引擎与收发器接口连接;设备系统通过aph接口访问控制寄存器、配置操作模式;dam引擎实现设备系统与usb的数据交互,数据放在缓冲区中;通过协议引擎模块解析所有usb令牌,产生响应包,收发器接口实现与外部usb收发器的物理连接。
在本发明中,所述gjb289a总线协议模块包括时钟模块、发送缓冲单元、gjb289a控制和状态寄存器、接收缓冲单元、用于进行串行数据输出的tx模块、收发控制单元及用于进行串行数据输入的rx模块,fpga控制器ps端与gjb289a控制和状态寄存器连接,发送缓冲单元与tx模块连接,接收缓冲单元与rx模块连接,tx模块、rx模块分别与收发控制单元连接,收发控制单元与gjb289a控制和状态寄存器连接。
在本发明中,所述gjb289a总线使用曼切斯特ii编码,由时钟模块提供2mhz时钟的曼切斯特码和24mhz的编码器时钟。
有益效果:本发明能够实现gjb289a总线接口与usb通用串行总线接口通信转换,可广泛用于各类基于gjb289a总线的系统开发、测试、数据监控、加载等活动中,以替代传统的通讯接口板,极大节约硬件成本,有利于便携设备实现小型化;通用性usb接口,极大地方便各类用户的不同工作需求,特别是帮助优化室外作业设备,有效降低劳动强度。
附图说明
图1为本发明的较佳实施例的框架示意图。
图2为本发明的较佳实施例中的usb控制器otg接口内部结构示意图。
图3为本发明的较佳实施例中的gjb289a总线协议处理模块框架示意图。
图4为本发明的较佳实施例中的fpga控制器驱动程序应用流程示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
参见图1的一种基于usb接口的便携式gjb289a总线通讯设备,包括usb总线、usb收发器、usb连接器、电源模块、fpga控制器、usb接口、usb协议控制模块、数据缓存模块、ram片上存储器、gjb289a总线协议处理模块、通讯控制处理模块、gjb289a总线接口a、gjb289a总线接口b、gjb289a信号收发器、耦合变压器、程序存储器、a通道、b通道及gjb289a总线,其中,usb连接器分别与usb总线、usb收发器及电源模块连接,usb收发器、电源模块分别与fpga控制器连接,fpga控制器内设置有usb协议控制模块、gjb289a总线协议处理模块、通讯控制处理模块、数据缓存模块、ram片上存储器、用于与usb收发器连接的usb接口、用于与gjb289a信号收发器连接的gjb289a总线接口a和gjb289a总线接口b,且usb接口与usb协议控制模块连接,数据缓存模块分别与usb协议控制模块、gjb289a总线协议处理模块及ram片上存储器连接,通讯控制处理模块分别与usb协议控制模块、gjb289a总线协议处理模块及数据缓存模块连接,gjb289a总线接口a和gjb289a总线接口b分别与gjb289a总线协议处理模块连接,耦合变压器一端通过gjb289a信号收发器与gjb289a总线接口a和gjb289a总线接口b连接,耦合变压器另一端通过a通道、b通道与gjb289a总线连接,程序存储器与fpga控制器连接;
ram片上存储器作为数据缓存以实现不同通讯协议之间的数据传输,便携设备采用usb收发器与usb总线连接,再通过gjb289a信号收发器和耦合变压器将信号连接至gjb289a总线上;
便携式设备供电直接从usb总线获取,并经电源模块转换获得所需3.3v,1.8v稳定输出,采用zynq-7000系列fpga为控制器,其内部集成有双核armcortex-a9多核处理器;fpga控制器片上256k大小ram作为数据缓冲器,片外采用xcf32p作为配置程序存储器,cortex-a9处理器含有丰富的外设模块资源,如usb控制器otg实现对usb总线协议控制模块的处理,静态存储器控制器smc可用于实现对ram片上存储器的操作;
zynq-7000系列fpga采用xilinxvivado2017.04集成环境进行开发,gjb289a总线接口直接采用芯片pl(programmablelogic可编程逻辑)端应用verilog语言进行开发,生成一个独立的ip核单元,以实现gjb289a总线协议处理模块,两种不同总线之间的通讯处理控制模块和数据缓存模块设计在ps(processingsystem)端应用sdk开发环境进行设计;
gjb289a信号收发器与耦合变压器采用低功耗器件,如hi1575型总线收发器,pm-db2725型耦合变压器;gjb289a总线接口设计a、b两组端口,分别为三抓、四爪模式,以适应不同工作环境电气接口需求。
在本实施例中,usb协议控制模块中usb控制器采用cortex-a9处理器,包括两个usb2.0外设资源,最高可实现480mb/s的传速率,usb控制器otg接口的内部结构如图2所示,usb协议控制模块包括usb控制器,usb控制器包括与控制寄存器连接的dma引擎、缓冲区、高速协议引擎、寄存器接口及收发器接口,收发器接口与外部收发器phy连接,寄存器接口与apb(片上外设总线)连接,dma引擎上设置有用于与ahb(高性能总线)连接的dma接口,且dma引擎与缓冲区连接,缓冲区与高速协议引擎连接,高速协议引擎与收发器接口连接;设备系统通过aph接口访问控制寄存器、配置操作模式;dam引擎实现设备系统与usb的数据交互,数据放在缓冲区中;通过协议引擎模块解析所有usb令牌,产生响应包,收发器接口实现与外部usb收发器的物理连接。
在本实施例中,gjb289a总线协议模块采用verilog语言在pl端实现,封装成ip核直接调用,结构如图3所示,包括时钟模块、发送缓冲单元、gjb289a控制和状态寄存器、接收缓冲单元、tx模块、收发控制单元及rx模块,fpga控制器ps端与gjb289a控制和状态寄存器连接,并通过发送缓冲单元与接收缓冲单元进行数据发送与接收,且发送缓冲单元与tx模块连接,tx模块通过a通道和b通道进行串行数据输出,rx模块通过a通道和b通道进行串行数据输入,tx模块、rx模块分别与收发控制单元连接,收发控制单元与gjb289a控制和状态寄存器连接;
gjb289a总线使用曼切斯特ii编码,为实现1mb/s的传输速率,由时钟模块提供2mhz时钟的曼切斯特码和24mhz的编码器时钟;
tx模块包括并串转换、曼切斯特ii编码和发送数据,实现在收发控制单元控制下将命令字、数据字、状态字进行编码发送出去功能;
rx模块包括曼切斯特ii解码、串并转换和奇偶校验等,将接受到数据和结果信息返回收发控制单元,结果放到寄存器中,数据进入接收数据缓存区;
寄存器模块用于存放中断信息、状态信息、故障信息、控制寄存器等;
收发控制单元实现对整个协议的逻辑、控制处理,包括接受状态机、发送状态机,提取寄存器模块响应不同命令,控制tx/rx模块执行不同操作;
接受缓存单元/发送缓冲单元用于存储收发过程中缓存的数据。
在本实施例中,fpga控制器驱动开发建立gjb289a总线驱动库,在移植至相应的计算机应用程序中,应用者直接调用相应库函数即可实现对gjb289a总线的操作,gjb289a总线驱动库的库函数如下:
a)gjb289a初始化:
unsignedshortapi_gjb289a_init(unsignedintvectorword)
初始化函数中包括对与该设备对应的gjb289a总线端设备的设置,即包括对总线控制器(bc)、远程终端(rt)或者总线监控器(mt)模式的选择,rt地址设置;
b)gjb289a读操作:
unsignedshortapi_gjb289a_recv(unsignedshortadd,unsignedshortlength,unsignedshort*recv_data)
c)gjb289a写操作:
unsignedshortapi_gjb289a_send(unsignedshortadd,unsignedshortlength,unsignedshort*send_data)
usb驱动采用windows驱动程序模型(wdm)在drivestudio下开发驱动程序,调用writefile和readfile这两个函数即可实现对usb总线端口的读写操作;
pc端应用程序调用设备驱动实现过程如图4所示,首先,初始化usb设备及gjb289a总线端设备,设置gjb289a总线端设备的工作模式(bc,rt或者mt)、rt地址,判断该usb设备是否连接成功;为保证实时性,采用中断方式接收1553b总线端发送过来的数据,gjb289a总线端设备收到中断请求,读取中断寄存器,进入中断服务函数,调用读函数readfile对usb端口进行读操作,读函数readfile函数内封装有gjb289a总线接口的读取操作函数api_gjb289a_recv,而后将读取的usb数据变成gjb289a格式数据输出;
若判断需进行数据发送操作,gjb289a总线端设备直接调用写函数writefile对usb端口进行写操作,写函数writefile内封装有gjb289a总线接口的发送操作函数api_gjb289a_send,而后将gjb289a格式数据转换为usb格式数据发送至便携式gjb289a总线通讯设备上,经过便携式gjb289a总线通讯设备通信转换后送至gjb289a总线上,即可完成usb数据与gjb289a总线数据转换。