CN111209233A - 一种离散接口发送数据方法 - Google Patents
一种离散接口发送数据方法 Download PDFInfo
- Publication number
- CN111209233A CN111209233A CN201911381148.3A CN201911381148A CN111209233A CN 111209233 A CN111209233 A CN 111209233A CN 201911381148 A CN201911381148 A CN 201911381148A CN 111209233 A CN111209233 A CN 111209233A
- Authority
- CN
- China
- Prior art keywords
- data
- sending
- fifo
- software
- register
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种离散接口发送数据方法,包括软件端,其发送步骤如下:第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半;通过设计了软件端和逻辑端,来对离散接口发送数据的速度和效率进行提升,并通过对数据的帧数和帧宽进行限定,使数据的发送得以正确发送,接着通过对寄存器进行清空、轮询和发送,可发送完整的帧数据,且可以对数据进行记录和存储,并对FIFO中的数据进行读出、清空、发送和标记,增强数据发送的有序性,并对数据的长度进行限定,以确保FIFO机制得以正常有序的进行。
Description
技术领域
本发明涉及编程技术领域,具体为一种离散接口发送数据方法。
背景技术
FPGA,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机的顺序操作有很大区别,其中在对离散接口进行数据发送时,现有技术为单一的发送端,其数据的发送速度和发送效率较差,为此,我们提出了一种离散接口发送数据方法,以解决上述内容存在的问题。
发明内容
(一)解决的技术问题
本发明的目的在于提供一种离散接口发送数据方法,以解决上述背景技术中提出的现有的离散接口发送数据方法在使用过程中数据的发送速度和效率较差,且未采用FIFO机制导致数据无法按照先进先出进行发送的问题。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
优选的,所述第一步中,软件发送数据的参数帧长度默认小于4096。
优选的,所述第二步中,FIFO深度默认为1024个。
优选的,所述第四步中,该段地址空间就映射到底层的发送FIFO。
优选的,所述第五步中,FPGA自动生成完成标记,关闭写启动。
优选的,所述第六步中,半满无效中的半满标记位为低电平。
优选的,所述第七步中,完成标记为高电平。
一种离散接口发送数据方法,其特征在于:还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
有益效果
与现有技术相比,本发明提供了一种离散接口发送数据方法,具备以下有益效果:
通过设计了软件端和逻辑端,来对离散接口发送数据的速度和效率进行提升,并通过对数据的帧数和帧宽进行限定,使数据的发送得以正确发送,接着通过对寄存器进行清空、轮询和发送,可发送完整的帧数据,且可以对数据进行记录和存储,并对FIFO中的数据进行读出、清空、发送和标记,增强数据发送的有序性,并对数据的长度进行限定,以确保FIFO机制得以正常有序的进行。
具体实施方式
下面将结合本发明中的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
一种离散接口发送数据方法,还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
实施例一:
一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;软件发送数据的参数帧长度默认小于4096,便于数据能够完整发送;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
一种离散接口发送数据方法,还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
实施例二:
一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;软件发送数据的参数帧长度默认小于4096,便于数据能够完整发送;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;FIFO深度默认为1024个,使FIFO机制可以有效进行运行,并防止数据长度过长;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
一种离散接口发送数据方法,还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
实施例三:
一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;软件发送数据的参数帧长度默认小于4096,便于数据能够完整发送;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;FIFO深度默认为1024个,使FIFO机制可以有效进行运行,并防止数据长度过长;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;该段地址空间就映射到底层的发送FIFO,使帧长度可以被正常的写入,并按照FIFO机制进行运行;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
一种离散接口发送数据方法,还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
实施例四:
一种离散接口发送数据方法,包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;软件发送数据的参数帧长度默认小于4096,便于数据能够完整发送;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;FIFO深度默认为1024个,使FIFO机制可以有效进行运行,并防止数据长度过长;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;该段地址空间就映射到底层的发送FIFO,使帧长度可以被正常的写入,并按照FIFO机制进行运行;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;FPGA自动生成完成标记,关闭写启动;防止数据进行自动续写;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;半满无效中的半满标记位为低电平;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;完成标记为高电平;
第八步,结束。
一种离散接口发送数据方法,还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (8)
1.一种离散接口发送数据方法,其特征在于:包括软件端,其发送步骤如下:
第一步,软件发送数据的参数包括发送数据的首地址和帧长度,帧数据位宽是16bits;
第二步,软件通过IFC接口发送,由于底层硬件发送FIFO大小有限,所以将上层数据切段发送,段大小是FIFO深度的一半,为512个;
第三步,写FIFO清空寄存器,写帧长度寄存器,写启动发送寄存器;
第四步,根据帧长度,将帧分段处理,帧长度不足512时,按实际长度发送,按照事先分配的地址空间,将数据写入;
第五步,软件一边写数据,FPGA一边对外发送数据,直到最后一个数据写完;
第六步,软件写一段数据前,轮询状态寄存器,查询半满标记,直到半满无效,才将该段数据发出;
第七步,软件发送完整帧数据后,轮询状态寄存器,查询完成标记,直到完成,才退出发送函数;
第八步,结束。
2.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第一步中,软件发送数据的参数帧长度默认小于4096。
3.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第二步中,FIFO深度默认为1024个。
4.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第四步中,该段地址空间就映射到底层的发送FIFO。
5.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第五步中,FPGA自动生成完成标记,关闭写启动。
6.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第六步中,半满无效中的半满标记位为低电平。
7.根据权利要求1所述的一种离散接口发送数据方法,其特征在于:所述第七步中,完成标记为高电平。
8.一种离散接口发送数据方法,其特征在于:还包括逻辑端,其发送步骤为:
第一步,逻辑端根据启动发送标记,并锁存此时帧长度寄存器值,并将上一次的完成标记位清零;
第二步,将发送FIFO中的数据读出,并完成并串转换,按照协议要求将数据发出;
第三步,发送数据大小达到帧长度之后,停止读取发送FIFO数据,更新状态寄存器的完成标记,并将启动发送标记清零;
第四步,控制寄存器:写FIFO清空/发送启动、帧长度寄存器;
第五步,状态寄存器:写完成(写1清零)、FIFO半满标记;
第六步,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911381148.3A CN111209233A (zh) | 2019-12-27 | 2019-12-27 | 一种离散接口发送数据方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911381148.3A CN111209233A (zh) | 2019-12-27 | 2019-12-27 | 一种离散接口发送数据方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111209233A true CN111209233A (zh) | 2020-05-29 |
Family
ID=70786996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911381148.3A Pending CN111209233A (zh) | 2019-12-27 | 2019-12-27 | 一种离散接口发送数据方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209233A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130249719A1 (en) * | 2012-03-23 | 2013-09-26 | Ivan R. Ryan | Scheme for balancing skew between lanes of high-speed serial digital interface |
CN103869182A (zh) * | 2013-12-20 | 2014-06-18 | 国家电网公司 | 基于精确离散时间控制的合并单元暂态测试系统 |
CN105741237A (zh) * | 2016-01-26 | 2016-07-06 | 南京铁道职业技术学院 | 一种基于fpga图像翻转的硬件实现方法 |
CN107077445A (zh) * | 2014-09-15 | 2017-08-18 | 赛灵思公司 | 发送器的通道到通道的偏斜校正 |
-
2019
- 2019-12-27 CN CN201911381148.3A patent/CN111209233A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130249719A1 (en) * | 2012-03-23 | 2013-09-26 | Ivan R. Ryan | Scheme for balancing skew between lanes of high-speed serial digital interface |
CN103869182A (zh) * | 2013-12-20 | 2014-06-18 | 国家电网公司 | 基于精确离散时间控制的合并单元暂态测试系统 |
CN107077445A (zh) * | 2014-09-15 | 2017-08-18 | 赛灵思公司 | 发送器的通道到通道的偏斜校正 |
CN105741237A (zh) * | 2016-01-26 | 2016-07-06 | 南京铁道职业技术学院 | 一种基于fpga图像翻转的硬件实现方法 |
Non-Patent Citations (1)
Title |
---|
王晓丽: "遥测数据高精度采集存储装置关键技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2001090899A3 (en) | System and method for memory management using fixed-size blocks | |
CN101707565A (zh) | 零拷贝网络报文发送、接收方法和装置 | |
CN111209233A (zh) | 一种离散接口发送数据方法 | |
CN103577119B (zh) | 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 | |
CN111078597A (zh) | 一种中断消息生成装置、方法以及端设备 | |
CN204206157U (zh) | Lpc总线与lbe总线间的转换结构 | |
CN107766021B (zh) | 图像处理方法、设备、显示系统及存储介质 | |
CN101802801A (zh) | 用于数据、地址和控制操作的增强型单节点协议 | |
CN100472493C (zh) | 一种异步先入先出方法、系统及发送装置 | |
US20140347931A1 (en) | Writing into an eeprom on an i2c bus | |
TW425511B (en) | Apparatus and method for interfacing protocol application data frame operation requests with a data frame input/output device | |
CN108228520B (zh) | 一种面向bmc的i2c控制器的快速传输方法 | |
CN204480240U (zh) | 基于主机与dsp的双向数据交换系统 | |
CN112817526B (zh) | 一种数据存储方法、装置及介质 | |
US9202568B2 (en) | Mechanism for writing into an EEPROM on an I2C bus | |
CN113535437A (zh) | 一种机器人的模块数据交互方法、电子设备及存储介质 | |
CN205389207U (zh) | 一种以太网接口 | |
CN205545323U (zh) | 一种用于工业以太网的数据通道系统 | |
CN101866634B (zh) | 显示码流的显示系统和控制方法 | |
JP2006011926A (ja) | シリアルデータ転送システム、シリアルデータ転送装置、シリアルデータ転送方法及び画像形成装置 | |
CN103957166A (zh) | 终端接入数量控制方法和系统 | |
CN202870811U (zh) | 具有usb接口的串行设备 | |
CN104267925B (zh) | 弹性先进先出存储器及存储方法 | |
CN104016102A (zh) | 整箱烟叶烟碱化学值无差错传递方法 | |
CN109408444A (zh) | 一种适用于mems传感器信号处理的专用串行接口 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200529 |