首页> 中国专利> 一种使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法

一种使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法

摘要

本发明涉及一种使用FPGA实现LPC-USB双向通信的装置及数据转换方法,该装置包括LPC总线、USB总线、现场可编程逻辑器件和USB模块,该现场可编程逻辑器件完成由LPC总线到USB总线的LPC数据到USB数据的协议转换和传送,以及完成由USB总线到LPC总线的USB数据到LPC数据的协议转换和传送。利用FPGA实现LPC总线与USB总线的全双工通信,来满足一些特殊应用场合,两台或多台计算机近距离通信问题,而不需要通过借助其他媒介来实现。该装置采用FPGA和USB控制芯片方案,在FPGA内部设立两个FIFO,替代外挂FIFO,而达到了高集成,因此把板卡面积做到最小,同时功耗做到最低,成本做到最少。另外,利用FIFO具有占用端口少的特性,使其在PC中只需占用不到2个字节的地址空间,从而大大节省地址空间。同时,利用了FPGA并行高速的特性,使本方案可满足高速全双工通信。

著录项

  • 公开/公告号CN101655825A

    专利类型发明专利

  • 公开/公告日2010-02-24

    原文格式PDF

  • 申请/专利权人 研祥智能科技股份有限公司;

    申请/专利号CN200810142483.3

  • 发明设计人 王玉章;曾崇;王从毫;杨明舟;

    申请日2008-08-19

  • 分类号G06F13/38(20060101);G06F13/42(20060101);

  • 代理机构44217 深圳市顺天达专利商标代理有限公司;

  • 代理人高占元

  • 地址 518057 广东省深圳市南山区高新中四道31号研祥科技大厦

  • 入库时间 2023-12-17 23:31:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-04

    专利权的转移 IPC(主分类):G06F13/38 专利号:ZL2008101424833 登记生效日:20230725 变更事项:专利权人 变更前权利人:研祥智能科技股份有限公司 变更后权利人:深圳市九牛一毛智能物联科技有限公司 变更事项:地址 变更前权利人:518057 广东省深圳市南山区高新中四道31号研祥科技大厦 变更后权利人:518000 广东省深圳市南山区粤海街道麻岭社区高新中四道31号研祥科技大厦20楼B2

    专利申请权、专利权的转移

  • 2012-06-20

    专利实施许可合同备案的生效 IPC(主分类):G06F13/38 合同备案号:2012610000049 让与人:研祥智能科技股份有限公司 受让人:西安研祥智能科技有限公司 发明名称:一种使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法 公开日:20100224 授权公告日:20110119 许可种类:独占许可 备案日期:20120425 申请日:20080819

    专利实施许可合同备案的生效、变更及注销

  • 2011-01-19

    授权

    授权

  • 2010-04-28

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20080819

    实质审查的生效

  • 2010-02-24

    公开

    公开

说明书

技术领域

本发明涉及双向通信的装置,更具体地说,涉及一种使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法。

背景技术

低管脚数(Low Pin Count,LPC)总线是英特尔(Intel)公司定义的一个数据地址命令多路复用总线,工作在33MHz(兆赫)。在计算机领域,LPC总线已经逐渐取代了工业标准结构(Industry Standard Architecture,ISA)、X-bus(X总线)等而成为新的接口。

LPC总线具有串并的特性,既有串行总线的一些特性,又同时具有并行总线的一些特性。在通信过程中,具有传统串行通信协议中的帧信号、同步信号、应答信号,但在整个通信过程中又是以4位的并行数据传输。

然而,目前仍然有很多外围设备只提供其他类型的总线接口,如USB接口等。由于这些总线的工作频率,数据地址总线宽度以及读写时序等等与LPC总线不同,需要一定的操作才能实现它们之间的通信。他们之间的通信,需要对LPC总线的协议进行解析,进行协议的转换。

在工控领域,目前很多工控机主板已经能够提供多个USB接口,但不能实现与LPC总线的直接通信。业界致力于开发出转接卡以期能够方便的实现LPC总线与USB之间的通信。

可实现LPC-USB之间通信的技术方案有:

1、用CPLD或FPGA,搭配外置的双口RAM+USB芯片进行全双工通信;其缺点:独立的双口RAM,价钱不菲;操作双口RAM,容易出现竞争的问题,也就是同一时候,RAM两边同时对同一地址进行写操作,数据将会丢失;RAM的地址空间必须全部映射到计算机的编址空间,RAM的容量越大,占用的地址空间也越大;RAM的数据搬移,需要软件做复杂的空间管理,要实现对不同地址的数据有不同的操作,技术实现复杂。

2、单独使用CPLD或FPGA,搭配外置的2个FIFO芯片+USB芯片进行全双工通信;其缺点:同时需要用2颗FIFO芯片,价格不菲;需要用FPGA或CPLD,编写FIFO的接口程序与FIFO进行数据通信;需要用到4颗IC,增加了板卡面积,同时也增加了功耗。

3、FPGA内嵌处理器,如(NIOS II,Microblaze),外挂单口RAM+USB芯片,进行通信;其缺点:首先内嵌处理器,需要较大容量的FPGA,成本不好掌握;因为是内嵌处理器,所以在单个时间里,只能够对一个端口进行操作,所以只能是半双工模式;因为数据传输速率高达10MB/S,如果用内嵌处理器,就必须外挂高速缓冲模块,而性能不高的软处理器,将会是数据通道的瓶颈所在。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法。

本发明解决其技术问题所采用的技术方案是:构造一种使用FPGA实现LPC-USB双向通信的装置,包括LPC总线、USB总线、现场可编程逻辑器件和USB模块;所述现场可编程逻辑器件控制完成由LPC总线到USB总线的LPC数据到USB数据的协议转换和传送,以及完成由USB总线到LPC总线的USB数据到LPC数据的协议转换和传送;所述USB模块用于实现所述现场可编程逻辑器件与USB总线的数据交换;

所述现场可编程逻辑器件包括:LPC-USB协议转换模块、USB-LPC协议转换模块,第一缓冲区、以及第二缓冲区;

其中,LPC-USB协议转换模块用于接收LPC总线发送的LPC数据,并将其进行协议转换后发送到第一缓冲区;

第一缓冲区用于由LPC数据到USB数据协议转换及传送过程中数据的缓存,并起到了一个良好的时钟域隔离作用;

第二缓冲区用于接收USB模块发送的USB数据,并用于由USB数据到LPC数据协议转换及传送过程中数据的缓存,并起到了一个良好的时钟域隔离作用;

USB-LPC协议转换模块用于接收第二缓冲区输出的USB数据,并将其进行协议转换后发送LPC总线。

在本发明所述的使用FPGA实现LPC-USB双向通信的装置中,所述第一缓冲区和第二缓冲区均是可进行16K byte数据读写的FIFO缓冲区。

在本发明所述的使用FPGA实现LPC-USB双向通信的装置中,所述第一缓冲区的写使能信号与所述LPC总线的控制端相连、读使能信号与所述USB模块的控制端相连、时钟信号分别与所述LPC总线和USB模块的控制端相连。

在本发明所述的使用FPGA实现LPC-USB双向通信的装置中,所述第二缓冲区的读使能信号与所述LPC总线的控制端相连、写使能信号与所述USB模块的控制端相连、时钟信号分别与所述LPC总线和USB模块的控制端相连。

在本发明所述的使用FPGA实现LPC-USB双向通信的装置中,所述现场可编程逻辑器件还包括:时钟控制管理模块,其包括输入端、第一输出端和第二输出端,其中,输入端与外部全局时钟管脚相连,第一输出端的输出与输入端的时钟同相位,第二输出端的输出与输入端的时钟反相位。

根据本发明的另一个方面,提供一种针对使用FPGA实现LPC-USB双向通信的装置的LPC-USB数据转换方法,其包括以下步骤:

S11、设置当前状态为开始状态;

S12、当所述LPC总线的高三位为011且帧信号为1时,设置当前状态为地址状态;

S13、接收32位地址,设置当前状态为数据状态;

S14、接收8位数据,设置当前状态为TAR1状态;

S15、当所述LPC总线为1111且帧信号为1时,判断所述32位地址的低20位是否为0XD0000,如果是,设置当前状态为SYNC状态,否则,进入步骤S1;

S16、将所述8位数据发送到第一缓冲区;

S17、结束LPC-USB数据转换。

在本发明所述的LPC-USB数据转换方法中,在步骤S11和S12之间还包括:设置所述LPC总线为高阻态,第一缓冲区的写使能信号置0;

在本发明所述的LPC-USB数据转换方法中,在步骤S13中,在每个LPC_CLK时钟周期接收4位地址,经过8个LPC_CLK时钟周期,接收所述32位地址。

在本发明所述的LPC-USB数据转换方法中,在步骤S14中,在每个LPC_CLK时钟周期接收4位数据,经过2个LPC_CLK时钟周期,接收所述8位数据。

在本发明所述的LPC-USB数据转换方法中,在步骤S16中,在发送所述8位数据之前,还包括设置第一缓冲区的写使能信号为1,并设置所述LPC总线为0000。

根据本发明的又一个方面,提供一种针对使用FPGA实现LPC-USB双向通信的装置的USB-LPC数据转换方法,其包括以下步骤:

S21、设置当前状态为开始状态;

S22、当所述LPC总线的高三位为010且帧信号为1时,设置当前状态为地址状态;

S23、接收32位地址,设置当前状态为TAR1状态;

S24、当所述LPC总线为1111且帧信号为1时,判断所述32位地址的低20位是否为0XD0001或0XD0002,如果是,设置当前状态为SYNC状态,并设置所述LPC总线为0101,否则,进入步骤S21;

S25、判断所述32位地址的低20位是否为0XD0001,如果是,进入步骤S26;否则,进入步骤S27;

S26、将所述第二缓冲区输出的数据发送到8位的数据寄存器中;

S27、设置当前状态为数据状态、设置所述LPC总线为0000、以及设置所述第二缓冲区的读使能信号为0;

S28、判断所述32位地址的低20位是否为0XD0001,如果是,进入步骤S29;否则,进入步骤S210;

S29、将存储在所述8位的数据寄存器中的数据发送到所述USB-LPC协议转换模块;

S210、在第1个LPC_CLK时钟周期,所述LPC总线的高2位置11,将所述第二缓冲区的空标志信号赋值给所述LPC总线的第1位,将所述第一缓冲区的满标志信号赋值给所述LPC总线的第0位,在第2个LPC_CLK时钟周期,设置所述LPC总线为1111;

S211、结束USB-LPC数据转换。

在本发明所述的USB-LPC数据转换方法中,在所述步骤S21和S22之间还包括:设置所述LPC总线为高阻态,第二缓冲区的读使能信号置0。

在本发明所述的USB-LPC数据转换方法中,在步骤S23中,在每个LPC_CLK时钟周期接收4位地址,经过8个LPC_CLK时钟周期,接收所述32位地址。

在本发明所述的USB-LPC数据转换方法中,在步骤S29中,在第1个LPC_CLK时钟周期,将存储在所述8位的数据寄存器中的数据的低4位发送给所述USB-LPC协议转换模块,在第2个LPC_CLK时钟周期,将存储在所述8位的数据寄存器中的数据的高4位发送给所述USB-LPC协议转换模块

实施本发明的使用FPGA实现LPC-USB双向通信的装置及LPC-USB和USB-LPC数据转换方法,具有以下有益效果:利用FPGA实现LPC总线与USB总线的全双工通信,来满足一些特殊应用场合,两台或多台计算机近距离通信问题,而不需要通过借助其他媒介来实现。该装置通过FPGA和USB控制芯片方案,在FPGA内部设立两个FIFO,替代外挂FIFO,而达到了高集成,因此把板卡面积做到最小,同时功耗做到最低,成本做到最少。另外,利用FIFO具有占用端口少的特性,使其在PC中只需占用不到2个字节的地址空间,从而大大节省地址空间。同时,利用了FPGA并行高速的特性,使本方案可满足高速全双工通信。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明使用FPGA实现LPC-USB双向通信的装置的系统框图;

图2是图1所示的装置实现LPC-USB数据转换方法的流程图;

图3是图2的状态机的状态转移图;

图4是图1所示的装置实现USB-LPC数据转换方法的流程图;

图5是图4的状态机的状态转移图;

图6是图1所示的第一缓冲区和第二缓冲区的配置图;

图7是图1所示的USB模块的系统框图;

图8是图1所示的FPGA和USB模块的接口连接示意图。

具体实施方式

对于本发明的使用FPGA实现LPC-USB双向通信的装置一特定应用,主要是在设备A和设备B之间进行数据交换,其中设备A通过LPC总线进行数据的收发,设备B通过USB总线进行数据的收发。如图1所示,在本发明使用FPGA实现LPC-USB双向通信的装置这一实施例中,包括LPC总线、USB总线、现场可编程逻辑器件和USB模块;该现场可编程逻辑器件控制完成由LPC总线到USB总线的LPC数据到USB数据的协议转换和传送,以及完成由USB总线到LPC总线的USB数据到LPC数据的协议转换和传送;USB模块用于实现现场可编程逻辑器件和USB总线的数据交换;对于该现场可编程逻辑器件包括:LPC-USB协议转换模块、USB-LPC协议转换模块,第一缓冲区(FIFO1)、以及第二缓冲区(FIFO2);其中,LPC-USB协议转换模块用于接收LPC总线发送的LPC数据,并将其进行协议转换后发送到第一缓冲区;第一缓冲区用于由LPC数据到USB数据协议转换及传送过程中数据的缓存,并起到了一个良好的时钟域隔离作用;第二缓冲区用于接收USB模块发送的USB数据,并用于由USB数据到LPC数据协议转换及传送过程中数据的缓存,并起到了一个良好的时钟域隔离作用;USB-LPC协议转换模块用于接收第二缓冲区输出的USB数据,并将其进行协议转换后发送LPC总线。如图6所示,第一缓冲区和第二缓冲区均是可进行16K数据读写的FIFO缓冲区。另外,该现场可编程逻辑器件还包括CLKV模块(时钟控制管理模块),该CLKV模块主要实现对时钟的控制管理。把外部通过全局时钟管脚送入到FPGA的时钟,分两路输出,一路与输入的时钟同相位,一路与输入的时钟反相位,作为FPGA程序设计的参考时钟。在具体设计中,本发明申请的装置是通过运用顶层软件也称TOP模块,以定义整个程序的输入输出接口,并把外部接口的输入输出与各个实现具体功能的分模块组合连接起来,以实现它们之间的逻辑关系,并同时实现了与USB模块的交互。

在具体工作中,设备A把数据通过LPC总线传送到FPGA,并同时产生校验码,经过FPGA的处理,协议转换,把数据送给USB模块,通过USB模块的处理,把数据送给USB接口,此时设备B读取数据,并检验其正确性,以确定是否需要启动重传机制,这个过程实现LPC总线数据到USB的通信。相反方向,设备B把数据通过USB接口送给USB模块,经过USB模块的处理,进行分组传输,传送到FPGA并生成校验码,经过FPGA模块的处理,协议转换,把数据送给LPC总线,设备A读取数据,并检验其正确性,以确定是否需要启动重传机制,这个过程实现USB数据到LPC总线的通信。从而实现了LPC总线与USB之间的全双工通信。

当系统上电后,如果需要LPC总线发送数据到USB,则设备A通过LPC总线发送数据到FPGA,同时产生校验码,经过FPGA的处理,进行协议转换,把数据发送到USB模块,经过USB模块的处理,设备B通过USB接口读出数据,并检验其正确性,以确定是否需要启动重传机制;如果需要USB发送数据到LPC总线,设备B通过USB接口,把数据送给USB模块,同时产生校验码,经过USB模块的处理之后,发送数据到FPGA,经过FPGA模块的处理,进行协议转换,把数据发送到LPC总线,再由设备A读出数据,并检验其正确性,以确定是否需要启动重传机制。LPC总线与USB可以同时收发数据,以实现它们之间的全双工通信。整个数据交换过程是一帧一帧的发送数据,接收数据也是一帧一帧的接收;每一帧数据中同时包含有该帧的一些信息,包括校验和纠错方面的信息;在读取数据之后同时也读取到了校验方面的信息,如果发现该帧中某个或者某些数据有错,则发出一信息,启动重传机制,让发送方重新发送该帧数据,直到传输正确为止。

具体实施中,FPGA芯片采用XILINX公司的SPARTAN3A系列的芯片,具体型号为XC3S200A-4FT256C,开发平台为ISE9.2。其主要有三组信号:LPC总线与FPGA通信所需信号,USB模块与FPGA通信所需信号,共享数据线;具体的接口信号定义,如下表1:

  信号名  方向  描述  LPC_FRAME_IO  IN  LPC的FRAME脚位  LPC_RST_N_IO  IN  LPC复位信号  LPC_CLK_IO  IN  LPC时钟信号  LPC_LAD_IO  INOUT  LPC数据和地址共享总线  USB_CLK  IN  USB时钟信号  F_FLAGA  IN  USB写标志信号  F_FLAGB  IN  USB读标志信号  F_SLOE  OUT  F_SLRD  OUT  F_SLWR  OUT  UD_D  INOUT  共享数据线

表1

对于LPC-USB协议转换模块,其主要根据LPC规范,LPC总线写数据过来,在FPGA内部,通过协议转换,把识别到的数据送入FPGA内部的第一缓冲区。LPC总线传输数据时有多种模式,该模块设计主要利用Memory Target写模式传输数据。LPC总线在传输数据时有多种不同的状态,该模块主要用状态机来实现不同状态的转换,以实现把终端计算机通过LPC总线发送的数据经过协议转换后写入FIFO1。

如图2和3所示,当上电复位后,状态机进入开始状态,即当前状态为开始状态;

当每一个LPC_CLK时钟上升沿来临时,开始对当前状态的判断;

当当前状态为开始状态时,首先使LPC总线的数据线置于高阻状态,第一缓冲区的写使能信号置0,当判断到LPC总线的数据线为0000且帧信号为0时,状态机转移到DIR状态,即当前状态改变到DIR状态,否则让当前状态处于开始状态;

当当前状态为DIR状态时,首先使LPC总线的数据线置于高阻状态,第一缓冲区的写使能信号置0,当判断到LPC总线的数据线信号为011且帧信号为1时,状态机转移到地址状态,即当前状态改变到地址状态,否则让其当前状态处于开始状态;

当当前状态为地址状态时,首先使LPC总线的数据线置于高阻状态,第一缓冲区的写使能信号置0,每个LPC_CLK时钟周期传送4位地址,经过8个LPC_CLK时钟周期,把32位的地址通过LPC总线的数据线传送过来,其中高12位忽略不用,低20位有效,之后状态机转移到数据状态,即当前状态改变到数据状态,否则让其当前状态处于地址状态;

当当前状态为数据状态时,首先使LPC总线的数据线置于高阻状态,第一缓冲区的写使能信号置0,每个LPC_CLK时钟周期传送4位数据,经过2个LPC_CLK时钟周期,把8位的数据通过LPC总线的数据线传送过来,之后状态机转移到TAR1状态,即当前状态改变到TAR1状态;

当当前状态为TAR1状态时,第一缓冲区的写使能信号置0,当判断到LPC总线的数据线为1111且帧信号为1时,等待4个LPC_CLK时钟周期,当第5个LPC_CLK时钟周期时,开始对地址状态传送来的20位地址进行判断,当为0XD0000时,状态机转移到SYNC状态,即当前状态改变到SYNC状态,否则让其当前状态处于开始状态;

当当前状态为SYNC状态时,把数据状态时传送过来的8位数据写入FIFO1的数据输入端,把第一缓冲区的写使能信号置1,LPC总线的数据线置0000,之后状态机转移到TAR2状态,即当前状态改变到TAR2状态;

当当前状态为TAR2状态时,把第一缓冲区的写使能信号置0,LPC总线的数据线置1111,之后状态机转移到END状态,即当前状态改变到END状态;

当当前状态为END状态时,把第一缓冲区的写使能信号置0,LPC总线的数据线置高阻状态,之后状态机转移到开始状态,即当前状态改变到开始状态;

在其他状况时,状态机的当前状态保持为开始状态。

对于USB-LPC协议转换模块,该模块主要根据LPC总线规范,在FPGA内部,把第二缓冲区中的数据经过协议转换,LPC总线读取数据到终端计算机。LPC读取数据时有多种模式,该设计主要利用的是Memory Target读模式传输数据。LPC总线在传输数据时有多种不同的状态,该模块主要用状态机来实现不同状态的转换,以实现把第二缓冲区中的数据读取到终端计算机。

如图4和5所示,当上电复位后,状态机进入开始状态,即当前状态为开始状态;

当每一个LPC_CLK时钟上升沿来临时,开始对当前状态的判断;

当当前状态为开始状态时,首先使LPC总线的数据线置于高阻状态,第二缓冲区的读使能信号置0,当判断到LPC总线的数据线为0000且FRAME信号为0时,状态机转移到DIR状态,即当前状态改变到DIR状态,否则让当前状态处于开始状态;

当当前状态为DIR状态时,第二缓冲区的读使能信号置0,当判断到LPC总线的数据线线的高三位为010且帧信号为1时,状态机转移到地址状态,即当前状态改变到地址状态,否则让其当前状态处于开始状态;

当当前状态为地址状态时,首先使LPC总线的数据线线置于高阻状态,第二缓冲区的读使能信号置0,每个LPC_CLK时钟周期传送4位地址,经过8个LPC_CLK时钟周期,把32位的地址通过LPC总线的数据线传送,其中高12位忽略不用,低20位有效,之后状态机转移到TAR1状态,即当前状态改变到数据状态,否则让其当前状态处于地址状态;

当当前状态为TAR1状态时,第二缓冲区的读使能信号置0,当判断到LPC总线的双向数据线为1111且帧信号为1时,等待1个LPC_CLK时钟周期,当第2个LPC_CLK时钟周期时,开始对地址状态传送的20位地址进行判断,当为0XD0001或者为0XD0002时,状态机转移到SYNC状态并且把LPC总线的数据线置为0101,即当前状态改变到SYNC状态且把LPC总线的数据线置为0101,否则让其当前状态处于开始状态;

当当前状态为SYNC状态时,操作如下:当判断到地址状态传送的地址为0XD0001时,前2个LPC_CLK时钟周期,第二缓冲区的读使能信号置0,当前状态保持在SYNC状态,LPC总线的数据线置0101,当第3个LPC_CLK时钟周期时,第二缓冲区的读使能信号置1,状态机当前状态保持在SYNC状态,LPC总线的数据线置为0101,第4个LPC_CLK时钟周期时,把FIFO2的数据输出端输出的数据存储在8位的数据寄存器中,第二缓冲区的读使能信号置0,状态机转移到数据状态,即当前状态改变到数据状态,LPC总线的数据线置为0000;当判断到地址状态传送的地址为0XD0002时,首先第二缓冲区的读使能信号置0,前3个LPC_CLK时钟周期,当前状态保持为SYNC状态,LPC总线的数据线信号置为0101,第4个LPC_CLK时钟周期内,状态机转移到数据状态,即当前状态改变为数据状态,LPC总线的数据线置为0000;当判断到地址状态传送的地址为其他情况时,LPC总线的数据线置为高阻状态,第二缓冲区的读使能信号置0,状态机转移到开始状态,即当前状态改变为开始状态;

当当前状态为数据状态时,第二缓冲区的读使能信号置0,当判断到地址状态传送的地址为0XD0001时,在第1个LPC_CLK时钟周期,把在SYNC状态时存储在8位数据寄存器中的数据的低4位传送给LPC总线的双向数据线,同时当前状态保持为数据状态,在第2个LPC_CLK时钟周期,把在SYNC状态时存储在8位数据寄存器中的数据的高4位传送给LPC总线的数据线,状态机转移到TAR2状态,即当前状态改变为TAR2状态;当判断到地址状态传送的地址为0XD0002时,在第1个LPC_CLK时钟周期,LPC总线的数据线的高2位置11,把FIFO2的空标志信号赋值给双向数据线的第1位,把FIFO1的满标志信号赋值给LPC总线的数据线的第0位,同时当前状态保持为数据状态,在第2个LPC_CLK时钟周期,LPC总线的数据线置为1111,状态机转移到TAR2状态,即当前状态改变为TAR2状态;当判断到地址状态传送的地址为其他情况时,状态机转移到开始状态,即当前状态改变为开始状态;

当当前状态为TAR2状态时,第二缓冲区的读使能信号置0,LPC总线的双向数据线置为1111,状态机转移到END状态,即当前状态改变为END状态;

当当前状态为END状态时,把第二缓冲区的读使能信号置0,LPC总线的数据线置高阻状态,之后状态机转移到开始状态,即当前状态改变到开始状态;

在其他状况时,状态机的当前状态保持为开始状态。

在实施中,第一缓冲区、第二缓冲区、CLKV模块主要用利用Xilinx开发工具ISE9.2生成IP CORE,其中第一缓冲区和第二缓冲区为深度16K的FIFO,利用FPGA内部的时钟管理器DCM来实现CLKV模块。第一缓冲区主要实现LPC总线写数据、USB模块读数据的缓冲。LPC总线通过数据输入端送数据到第一缓冲区,USB模块通过数据输出端从第一缓冲区内读取数据,第一缓冲区的写使能信号和时钟信号与LPC总线控制端相连,第一缓冲区的读使能信号和时钟信号与USB模块控制端相连,在第一缓冲区满时送FULL标志到LPC总线,在第一缓冲区空时送EMPTY标志到USB模块,在第一缓冲区再有510个数据空时送PROG_EMPTY信号到USB模块。第二缓冲区主要实现LPC总线读数据、USB模块写数据的缓冲。USB模块通过数据输入端送数据到第二缓冲区,LPC总线通过数据输出端从第二缓冲区内读取数据,第二缓冲区的读使能信号和时钟信号与LPC总线控制端相连,第二缓冲区的写使能信号和时钟信号与USB控制端相连,在第二缓冲区满时送FULL标志到USB模块,在第二缓冲区空时送EMPTY标志到LPC总线。

如图7所示,USB模块使用Cypress 68013A作为USB转local bus的控制器,它内部集成了一颗增强型51内核,可以对USB通信中的相关寄存器做很多配置,同样也可以作为标准51调用。最左边是USB收发器,在收发器右边的是SIE(Serial Interface Engine),它也是USB的通信中,主要负责单元,它内部集成了USB打包、发包,以及收包,解包的硬件电路,并且留下了大量的寄存器,可让51内核配置。SIE右边,并且与其相连的是4KB可配置FIFO,数据从SIE中进入FIFO,在GPIF模块或51内核的控制下,以8bit/16bit的方式向外传输,也就是到达Local bus,然后进入FPGA。在USB传输协议中,我们的需求是:数据量要大并且数据传输可靠,采用bulk传输模式,它是支持错误重传机制的,在FIFO的配置上,我们采用了2个FIFO,一进出,各2Kbyte。

如图8所示为FPGA和USB模块的接口连接示意图,且具体接口定义,如下表2所示:

  信号名  位宽  方向  描述  RDY0  1  IN  FPGA发出的空标志位,表示读空  RDY1  1  IN  FPGA发出的满标志位,表示写满  CTL0  1  OUT  WEN#使能信号,控制FPGA中FIFO的写  CTL1  1  OUT  REN#使能信号,控制FPGA中FIFO的读  CTL2  1  OUT  OE#使能信号,选中FPGA中FIFO

  USB_CLK  1  OUT  USB给FPGA做接口同步的时钟,48MHz  Data  8  INOUT  双向数据

表2

本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号