CN118535515B - 一种usb通信方法及装置 - Google Patents
一种usb通信方法及装置 Download PDFInfo
- Publication number
- CN118535515B CN118535515B CN202410710130.8A CN202410710130A CN118535515B CN 118535515 B CN118535515 B CN 118535515B CN 202410710130 A CN202410710130 A CN 202410710130A CN 118535515 B CN118535515 B CN 118535515B
- Authority
- CN
- China
- Prior art keywords
- clock signal
- usb
- target
- chip
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
Abstract
本说明书公开了一种USB通信方法及装置。所述USB通信方法包括:FPGA芯片获取USB芯片发送的输入时钟信号、指示信号和方向信号,指示信号用于指示需要进行通信的目标数据,方向信号用于指示目标数据的数据传输方向;通过FPGA芯片中设置的多模式时钟管理器MMCM,对输入时钟信号进行锁存,得到全局时钟信号;基于全局时钟信号,对输入时钟信号进行锁存,得到锁存数据;根据锁存数据,对全局时钟信号进行补偿,得到目标时钟信号;根据目标时钟信号、指示信号以及方向信号与USB芯片进行USB通信。本方案基于FPGA和USB物理层芯片实现USB通信协议,降低了USB通信硬件的复杂度和生产成本。
Description
技术领域
本说明书涉及通信技术领域,尤其涉及一种USB通信方法及装置。
背景技术
通用串行总线(Universal Serial Bus,USB)作为一个外部总线标准,旨在规范电脑与外部设备的连接和通讯,具有即插即用、热插拔、高速数据传送等特点,并随着技术的发展不断更新标准版本,以满足日益增长的数据传输需求。
目前大多数USB通信协议的实现都是基于额外的中央处理器(CentralProcessing Unit,CPU),把协议层通过微处理器的固件形式提供给用户,用户只需要控制数据接口即可方便完成USB数据通信。
由于CPU的硬件特性,通常需要在硬件设备中对微处理器的外部电路进行设置才能实现USB通信,这种硬件电路的设置过程较为复杂,并且生产成本较高,使用灵活性也相对较低,难以满足用户需求。
因此,如何降低USB通信的硬件复杂度以及生产成本,是一个亟待解决的问题。
发明内容
本说明书提供一种USB通信方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种USB通信方法,通用串行总线USB芯片和现场可编程逻辑门阵列FPGA芯片部署在目标设备上,所述目标设备通过所述FPGA芯片和所述USB芯片与USB设备进行通信,包括:
所述FPGA芯片获取所述USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向;
通过所述FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号;
基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据;
根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号;
根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
可选地,所述USB芯片包括:通用串行总线物理层USB PHY芯片,所述USB PHY芯片通过ULPI接口与所述FPGA芯片连接,所述ULPI接口是所述USB PHY芯片对所述USB PHY芯片的USB标准接口进行转换后得到的。
可选地,所述ULPI接口的各个信号线之间的相对距离差小于预设距离差。
可选地,所述全局时钟信号到达所述FPGA芯片中各个位置的延迟之间的偏差小于预设偏差。
可选地,在根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号之前,所述方法还包括:
判断所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数是否大于预设锁存次数;
根据所述锁存数据,对所述全局时钟信号进行补偿,具体包括:
若所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数大于所述预设锁存次数,则根据所述锁存数据,对所述全局时钟信号进行补偿。
可选地,所述锁存数据中包含有若干个寄存器值;
根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号,具体包括:
若目标寄存器值在所述锁存数据中所占的比例小于第一预设占比,则对所述全局时钟信号进行反向调整。
可选地,根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号,具体包括:
若所述目标寄存器值在所述锁存数据中所占的比例大于第二预设占比,则对所述全局时钟信号进行正向调整,其中,所述第二预设占比大于所述第一预设占比。
可选地,根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号,具体包括:
若所述目标寄存器值在所述锁存数据中所占的比例大于所述第一预设占比,小于所述第二预设占比,则将所述全局时钟信号作为所述目标时钟信号。
本说明书提供了一种USB通信装置,包括:
获取模块,用于获取USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向;
第一锁存模块,用于通过FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号;
第二锁存模块,用于基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据;
补偿模块,用于根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号;
通信模块,用于根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述USB通信方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
从上述方法可以看出,在本说明书提供的USB通信方法中,可以基于FPGA芯片实现USB通信,相比于目前通过微处理器进行通信的方法,FPGA芯片的外部电路简单,并且整体成本较低,可以对协议层代码进行更改,降低USB通信的硬件复杂度以及生产成本。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中提供的一种USB通信方法的流程示意图;
图2为本说明书提供的一种USB通信的电路架构图;
图3为本说明书提供的一种相位补偿的整体架构示意图;
图4为本说明书中提供的一种相位补偿的信号示意图;
图5为本说明书中提供的了一种相位补偿的流程示意图;
图6为本说明书提供的一种USB通信装置的示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种USB通信方法的流程示意图,包括以下步骤:
S101:所述FPGA芯片获取所述USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向。
目前大多数USB通信协议的实现都是基于CPU处理器,一些厂商提供了整套的解决方案,把协议层通过微处理器的固件形式提供给用户,用户只需要控制数据接口即可方便完成USB数据通信。这种方案实现方法简单,但硬件电路较为复杂,大批量生产时成本较高,且用户无法修改协议层代码,使用灵活度较低。
基于此,本说明书提供了一种USB通信方法,基于现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)芯片,仅使用一片USB物理层芯片来实现USB数据通信。将复杂的协议层通过FPGA固件来实现,而不需要额外的微处理器(CPU)。该方案硬件电路极为简单,成本低且设计灵活度高。
其中,USB芯片和FPGA芯片部署在目标设备上,目标设备通过FPGA芯片和所述USB芯片与USB设备进行通信。
在本说明书中,USB芯片可以指通用串行总线物理层(USB Physical Layer,USBPHY)芯片,目标设备可以包括诸如通信机、计算机、数据采集器、图像采集器等输出设备,USB设备可以指与目标设备进行通信的输入设备,USB设备通过USB连接的方式与目标设备进行连接。为了便于理解,本说明书提供了一种USB通信的电路架构图,如图2所示。
图2为本说明书提供的一种USB通信的电路架构图。
其中,IBUF为FPGA芯片内部的输入缓冲器,OBUF为FPGA内部的输出缓冲器,IOBUF为FPGA内部的输入/输出缓冲器。TX FIFO是一个用于存储待发送数据的缓冲区。RX FIFO是一个用于存储接收到的数据的缓冲区。
USB芯片(USB PHY芯片)可以将USB标准接口(包括VBUS/ID/TX/RX/GND)转换为通用低引脚数接口(Universal Low Pincount Interface,ULPI)接口,其接口包括:ULPI_CLK60/RESET/STP/NXT/DIR/DAT[7:0],以便USB芯片与FPGA芯片之间进行数据传输。
在USB标准接口中,ID接口指的是用于扫描或读取身份证件或其他身份证明文件的设备或接口。TX代表Transmit(发送),TX接口是外接天线接口,意味着此处是信号发送的地方。RX代表Receiver(接收),是串行通信接收端口的缩写。它通常用于接收外部设备传输的数据,如从传感器读取数据等。GND是电线接地端的简写,代表地线或者0线。在电路图或电路板上,GND是公共端,对于电源来说,GND通常是负极。它确保电路中的电流能够回流到电源,形成完整的电路回路。
USB芯片通过ULPI接口与FPGA连接。USB PHY芯片向FPGA提供时钟信号(ULPI_CLK60)、指示信号(ULPI_NXT)、方向信号(ULPI_DIR)。其中,指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向,即目标数据是由USB芯片传输至FPGA芯片还是由FPGA芯片传输至USB芯片。
FPGA芯片向USB芯片提供复位信号(ULPI_RESET),向USB芯片提供停止信号(ULPI_STP)。USB芯片和FPGA芯片之间数据通过双向8位数据接口(ULPI_DAT[7:0])来传输目标数据,传输方向由ULPI_DIR决定。
在进行USB通信的过程中,FPGA芯片可以获取所述USB芯片发送的时钟信号,作为输入时钟信号,该时钟信号可以表示为ULPI_CLK60,与此同时,还会获取指示信号和方向信号。其中,FPGA芯片通过内部部署的USB core实现USB协议的协议层数据打包、解析、令环牌等功能,以及实现协议中的传输同步、令牌、握手和数据包的发送和接收、获取设备ID信息等功能。USB core接口为UTMI接口,还需要所述UTMI转ULPI模块来进行转换,用来与USBPHY芯片进行通信。
S102:通过所述FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号。
在本说明书中,FPGA与USB芯片之间通信的ULPI接口,需要完成数据的双向传输和多位并行数据与时钟的对齐。一个稳定高效的ULPI接口数据传输至为关键。
多位并行数据的对齐在FPGA中一般是利用开发工具对逻辑进行时序约束和位置约束来实现,其实现复杂度高且稳定性差,容易受到外界环境(如电压、温度等)影响。因此,本说明书利用FPGA芯片内部的混合模式时钟管理器(Mixed-Mode Clock Manager MMCM)IP核的相位调整功能,结合对关键寄存器的位置约束,实现ULPI时钟、数据和全局时钟的自动实时对齐。
具体的,FPGA芯片内部设置有MMCM和全局时钟缓冲器(Global Clock Buffer,BUFG),FPGA芯片接收到来自USB芯片的输入时钟信号ULPI_CLK60后,ULPI_CLK60会进入MMCM进行锁存,MMCM的输出经过BUFG到达FPGA芯片中的每一个位置,从而得到全局时钟信号(ULPI_CLK60_G)。
其中,ULPI_CLK60_G到达FPGA芯片中每一个位置的延迟之间的偏差小于预设延迟,换句话说,ULPI_CLK60_G作为全局时钟达到FPGA芯片中每一个位置的延迟几乎相同,这样可以保证其时序稳定性。上述预设延迟可以根据实际情况机芯设定,本说明书对此不做具体限定。
S103:基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据。
S104:根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号。
由于ULPI_CLK60_G与ULPI_CLK60因为走线延迟而存在相位差,且这个相位差每次固件编译、上电都会存在差异,而且也会随着FPGA芯片供电电压和工作温度的变化而变化,从而导致ULPI_CLK60_G与ULPI芯片输入输出信号(ULPI_DIR/STP/NXT/DAT[7:0])存在相位不确定性。如果延迟较大,则ULPI_CLK60_G则无法保证每次都能正确锁存ULPI信号,进而造成USB连接失败。
因此,需要对ULPI_CLK60_G进行相位补偿,以保证全局时钟信号与输入时钟信号的信号同步。为了便于理解,本说明书提供了一种相位补偿的整体架构示意图,如图3所示。
图3为本说明书提供的一种相位补偿的整体架构示意图。
其中,对于FPGA芯片的硬件电路,可以在电路设计的过程中使ULPI接口的各个信号线在电路板上的相对距离差小于预设距离差,该预设距离差可以为20mil,从而尽可能的降低因为走线原因导致的ULPI_CLK60_G与ULPI_CLK60之间的相位差。
另外,可以将ULPI输入输出信号(ULPI_DIR/STP/NXT/DAT[7:0])被ULPI_CLK60_G锁存的第一级锁存器放置在FPGA的IO bank(IOB)内。IOB与IO距离很近,保证其延迟较小。
FPGA芯片可以使用其中设置的MMCM IP core去锁定ULPI_CLK60,然后输出全局时钟ULPI_CLK60_G。且MMCM IP core使能输出时钟相位自动调整功能。MMCM输出相位自动调整功能接口信号包括psclk、psen、psincdec和psdone。其中,psclk为相位调整参考时钟;psen为相位调整使能,每置高一次进行一次相位调整;psincdec为相位调整方向指示信号,低电平为反向调整相位,高电平为正向调整相位;psdone为相位调整完成标志。
进一步的,FPGA可以使用ULPI_CLK60_G去锁存ULPI_CLK60,并获取锁存数据。该寄存器也存放在IOB中,保证ULPI_CLK60的延迟较小。
在本说明书中,锁存数据可以包括锁存次数以及ULPI_CLK60_G锁存ULPI_CLK60的锁存值,之后基于该锁存数据对ULPI_CLK60_G进行补偿,得到补偿后的目标时钟信号。为了便于理解,本说明书提供了一种相位补偿的信号示意图,如图4所示。
图4为本说明书中提供的一种相位补偿的信号示意图。
其中,可以预先设置一个预设锁存次数(如2000次),在对ULPI_CLK60_G进行相位补偿之前,可以先判断全局时钟信号对输入时钟信号进行锁存的锁存次数是否大于预设锁存次数,若是,则可以执行相位补偿。
具体的,若锁存值几乎全部为0,则证明ULPI_CLK60_G比ULPI_CLK60延后半个周期内,那么启动相位调整单元对ULPI_CLK60_G进行正向调整(psincdec=1,psen置高一个周期)。
如果锁存值几乎全部为1,则证明ULPI_CLK60_G比ULPI_CLK60超前半个周期内,那么启动相位调整单元对ULPI_CLK60_G进行反向调整(psincdec=0,psen置高一个周期)。
理论上,如果最终ULPI_CLK60与ULPI_CLK60_G相位同步,那么由于寄存器亚稳态的原因,锁存得到的寄存器值大概有50%的概率为‘0’或‘1’。因此,本发明设置置信区间为[800-1200],即当‘0’出现的次数少于800(<40%)时,则启动反向调整相位;反之,如果‘0’出现的次数大于1200(>60%)时,则启动正向调整相位;当‘0’出线的次数在置信区间内(>40%,<60%)时,则证明ULPI_CLK60和ULPI_CLK60_G相位基本一致,相位调整完毕;
为了便于理解,本说明书提供了一种相位补偿的流程示意图,如图5所示。
图5为本说明书中提供的了一种相位补偿的流程示意图。
其中,可以将寄存器值“0”作为目标寄存器值,若目标寄存器值在锁存数据中所占的比例小于第一预设占比,则对ULPI_CLK60_G进行反向调整。若目标寄存器值在锁存数据中所占的比例大于第二预设占比,则对ULPI_CLK60_G进行正向调整。而若目标寄存器值在锁存数据中所占的比例大于所述第一预设占比,小于所述第二预设占比,则说明ULPI_CLK60_G相位差较低,此时可以不对ULPI_CLK60_G进行调整并将其作为所述目标时钟信号。其中,上述第一预设占比可以设置为40%,第二预设占比可以设置为60%。
当然,也可以将寄存器值“1”作为目标寄存器值进行调整,调整方式与寄存器值“0”作为目标寄存器值时相同,但调整方向相反,本说明书对此不做过多赘述。
S105:根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
当完成对ULPI_CLK60_G的相位补偿后,可以得到目标时钟信号,此时完成相位调整,FPGA可以输出USB core复位信号,启动USB core进入同步状态,USB连接正式开始建立。
FPGA芯片在目标时钟信号下与USB芯片进行通信,基于指示信号确定需要进行通信的数据,基于方向信息确定数据的传输方向,从而实现目标设备和USB设备之间的数据传输。
在此过程中,FPGA仍然实时监控ULPI_CLK60_G和ULPI_CLK60的同步状态,根据锁存值随时进行同步调整,保证同步状态不受外界环境变化而受影响。
从上述方法可以看出,本方案仅使用一片USB物理层芯片来实现USB数据通信。将复杂的协议层通过FPGA固件来实现,而不需要额外的微处理器。该方案硬件电路极为简单,成本低且设计灵活度高。
并且,该方案不受外界条件(电压、温度等)变化影响,可以保证ULPI接口的稳定传输。
另外,本方案在Kintex-7系列FPGA和USB3320芯片上进行了测试,如果不采取本发明提出的相位自动补偿技术,USB连接有时候会建立失败。而采取了本发明提出的相位自动补偿技术,在超过48小时的反复固件编译、系统上下电和复位等操作下,USB连接能够保证全部建立成功。
以上为本说明书的一个或多个实施USB通信方法,基于同样的思路,本说明书还提供了相应的USB通信装置,如图6所示。
图6为本说明书提供的一种USB通信装置的示意图,包括:
获取模块601,用于获取USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向;
第一锁存模块602,用于通过FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号;
第二锁存模块603,用于基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据;
补偿模块604,用于根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号;
通信模块605,用于根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
可选地,所述USB芯片包括:通用串行总线物理层USB PHY芯片,所述USB PHY芯片通过ULPI接口与所述FPGA芯片连接,所述ULPI接口是所述USB PHY芯片对所述USB PHY芯片的USB标准接口进行转换后得到的。
可选地,所述ULPI接口的各个信号线之间的相对距离差小于预设距离差。
可选地,所述全局时钟信号到达所述FPGA芯片中各个位置的延迟之间的偏差小于预设偏差。
可选地,在根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号之前,所述补偿模块604还用于,判断所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数是否大于预设锁存次数;
所述补偿模块604具体用于,若所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数大于所述预设锁存次数,则根据所述锁存数据,对所述全局时钟信号进行补偿。
可选地,所述锁存数据中包含有若干个寄存器值;
所述补偿模块604具体用于,若目标寄存器值在所述锁存数据中所占的比例小于第一预设占比,则对所述全局时钟信号进行反向调整。
可选地,所述补偿模块604具体用于,若所述目标寄存器值在所述锁存数据中所占的比例大于第二预设占比,则对所述全局时钟信号进行正向调整,其中,所述第二预设占比大于所述第一预设占比。
可选地,所述补偿模块604具体用于,若所述目标寄存器值在所述锁存数据中所占的比例大于所述第一预设占比,小于所述第二预设占比,则将所述全局时钟信号作为所述目标时钟信号。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的一种USB通信方法。
对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware DescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced BooleanExpression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java HardwareDescription Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated CircuitHardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (7)
1.一种USB通信方法,其特征在于,通用串行总线USB芯片和现场可编程逻辑门阵列FPGA芯片部署在目标设备上,所述目标设备通过所述FPGA芯片和所述USB芯片与USB设备进行通信,包括:
所述FPGA芯片获取所述USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向;
通过所述FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号;
基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据;
根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号;其中,所述锁存数据中包含有若干个寄存器值;若目标寄存器值在所述锁存数据中所占的比例小于第一预设占比,则对所述全局时钟信号进行反向调整;若所述目标寄存器值在所述锁存数据中所占的比例大于第二预设占比,则对所述全局时钟信号进行正向调整,若所述目标寄存器值在所述锁存数据中所占的比例大于所述第一预设占比,小于所述第二预设占比,则将所述全局时钟信号作为所述目标时钟信号;其中,所述第二预设占比大于所述第一预设占比;
根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
2.如权利要求1所述的方法,其特征在于,所述USB芯片包括:通用串行总线物理层USBPHY芯片,所述USB PHY芯片通过ULPI接口与所述FPGA芯片连接,所述ULPI接口是所述USBPHY芯片对所述USB PHY芯片的USB标准接口进行转换后得到的。
3.如权利要求2所述的方法,其特征在于,所述ULPI接口的各个信号线之间的相对距离差小于预设距离差。
4.如权利要求1所述的方法,其特征在于,所述全局时钟信号到达所述FPGA芯片中各个位置的延迟之间的偏差小于预设偏差。
5.如权利要求1所述的方法,其特征在于,在根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号之前,所述方法还包括:
判断所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数是否大于预设锁存次数;
根据所述锁存数据,对所述全局时钟信号进行补偿,具体包括:
若所述全局时钟信号对所述输入时钟信号进行锁存的锁存次数大于所述预设锁存次数,则根据所述锁存数据,对所述全局时钟信号进行补偿。
6.一种USB通信装置,其特征在于,包括:
获取模块,用于获取USB芯片发送的输入时钟信号、指示信号和方向信号,所述指示信号用于指示需要进行通信的目标数据,所述方向信号用于指示所述目标数据的数据传输方向;
第一锁存模块,用于通过FPGA芯片中设置的多模式时钟管理器MMCM,对所述输入时钟信号进行锁存,得到全局时钟信号;
第二锁存模块,用于基于所述全局时钟信号,对所述输入时钟信号进行锁存,得到锁存数据;
补偿模块,用于根据所述锁存数据,对所述全局时钟信号进行补偿,得到目标时钟信号;其中,所述锁存数据中包含有若干个寄存器值;若目标寄存器值在所述锁存数据中所占的比例小于第一预设占比,则对所述全局时钟信号进行反向调整;若所述目标寄存器值在所述锁存数据中所占的比例大于第二预设占比,则对所述全局时钟信号进行正向调整,若所述目标寄存器值在所述锁存数据中所占的比例大于所述第一预设占比,小于所述第二预设占比,则将所述全局时钟信号作为所述目标时钟信号;其中,所述第二预设占比大于所述第一预设占比;
通信模块,用于根据所述目标时钟信号、所述指示信号以及所述方向信号与所述USB芯片进行USB通信。
7.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~5任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410710130.8A CN118535515B (zh) | 2024-06-03 | 2024-06-03 | 一种usb通信方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410710130.8A CN118535515B (zh) | 2024-06-03 | 2024-06-03 | 一种usb通信方法及装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN118535515A CN118535515A (zh) | 2024-08-23 |
| CN118535515B true CN118535515B (zh) | 2025-02-14 |
Family
ID=92393191
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410710130.8A Active CN118535515B (zh) | 2024-06-03 | 2024-06-03 | 一种usb通信方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN118535515B (zh) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112559429A (zh) * | 2020-12-23 | 2021-03-26 | 昆明理工大学 | 一种基于usb数据侦听系统及方法 |
| CN116301200A (zh) * | 2023-05-19 | 2023-06-23 | 上海思尔芯技术股份有限公司 | 一种全局时钟同步的优化方法、电子设备和存储介质 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7509439B2 (en) * | 2005-01-27 | 2009-03-24 | Standard Microsystems Corporation | Method for maintaining register integrity and receive packet protection during ULPI PHY to LINK bus transactions |
| JP4539747B2 (ja) * | 2008-03-31 | 2010-09-08 | ソニー株式会社 | レーザ駆動回路およびその記録補償方法、並びに光ディスク装置 |
| CN102394808B (zh) * | 2011-09-23 | 2014-12-31 | 烽火通信科技股份有限公司 | 以太网串行介质无关接口相位适配和帧对齐的方法及装置 |
| CN104750422B (zh) * | 2013-12-25 | 2018-02-23 | 深圳开立生物医疗科技股份有限公司 | 一种现场可编程逻辑阵列及串行数据接收转换方法 |
| CN103986460B (zh) * | 2014-05-28 | 2017-04-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种使用无锁定指示锁相环的SoC片内时钟生成电路 |
| US11474969B1 (en) * | 2021-05-12 | 2022-10-18 | Gowin Semiconductor Corporation | Methods and apparatus for providing a serializer and deserializer (SERDES) block facilitating high-speed data transmissions for a field-programmable gate array (FPGA) |
| CN117076364A (zh) * | 2023-08-31 | 2023-11-17 | 山东浪潮科学研究院有限公司 | 一种risc-v的usb控制系统、方法、设备及介质 |
-
2024
- 2024-06-03 CN CN202410710130.8A patent/CN118535515B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112559429A (zh) * | 2020-12-23 | 2021-03-26 | 昆明理工大学 | 一种基于usb数据侦听系统及方法 |
| CN116301200A (zh) * | 2023-05-19 | 2023-06-23 | 上海思尔芯技术股份有限公司 | 一种全局时钟同步的优化方法、电子设备和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN118535515A (zh) | 2024-08-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI778181B (zh) | 行動裝置及其介接方法 | |
| US9753486B2 (en) | Clock gating with an asynchronous wrapper cell | |
| KR102450296B1 (ko) | 동기식 및 비동기식 혼합 방식의 디지털 인터페이스를 포함하는 장치, 이를 포함하는 디지털 처리 시스템, 및 이들에 의해 수행되는 디지털 처리 방법 | |
| CN106487372B (zh) | 包括单线接口的装置和具有该装置的数据处理系统 | |
| JP3856696B2 (ja) | 2倍データ速度同期式動的ランダムアクセスメモリのための構成可能同期装置 | |
| US10572438B1 (en) | Dynamic optimal data sampling time on a multi-drop bus | |
| TW201706990A (zh) | 用於高速記憶體介面之低功率時脈 | |
| EP3273359B1 (en) | Configurable clock tree | |
| CN113906402A (zh) | 集成电路间(i2c)装置 | |
| US10915485B2 (en) | Circuit for asynchronous data transfer | |
| CN118535515B (zh) | 一种usb通信方法及装置 | |
| KR100963706B1 (ko) | 데이터 전송 방법, 데이터 전송 브리지 및 고속 데이터전송 장치 | |
| US20050146950A1 (en) | Method and circuit for elastic storing capable of adapting to high-speed data communications | |
| US8495409B2 (en) | Host controller, semiconductor device and method for setting sampling phase | |
| US9106575B2 (en) | Multiplexing multiple serial interfaces | |
| US20180287835A1 (en) | Radio frequency front-end slew and jitter consistency for voltages below 1.8 volts | |
| CN119558261B (zh) | 一种并行总线的偏斜校准方法、设备及介质 | |
| CN119336666B (zh) | 一种串行外设接口的主机接收器 | |
| KR100734521B1 (ko) | 시스템 온 칩을 위한 ip 모듈 | |
| CN114691421B (zh) | 解决通信接口暂态脉冲输出的电子装置及方法 | |
| CN214959850U (zh) | 基于fpga片上系统的mipi电路板 | |
| EP1324346A1 (en) | Memory device | |
| CN120104529A (zh) | 基于组件的可重构i2c总线读写控制电路、装置及方法 | |
| CN115373911A (zh) | 串行总线接口电路的逻辑系统、电路、芯片及视觉装置 | |
| CN113836849A (zh) | 固定延迟输出结果的rtl接口信号的监测方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |