CN109815181B - 一种基于axi协议接口的任意位宽转换方法及装置 - Google Patents
一种基于axi协议接口的任意位宽转换方法及装置 Download PDFInfo
- Publication number
- CN109815181B CN109815181B CN201910067608.9A CN201910067608A CN109815181B CN 109815181 B CN109815181 B CN 109815181B CN 201910067608 A CN201910067608 A CN 201910067608A CN 109815181 B CN109815181 B CN 109815181B
- Authority
- CN
- China
- Prior art keywords
- bit width
- output
- common multiple
- input
- buffer area
- 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
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明属于数字电路设计领域,具体涉及一种基于AXI协议接口的任意位宽转换方法及装置,包括:判断步骤:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2倍,并根据判断结果选择执行:选择一、输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2倍时,采用移位寄存器方式进行位宽转换;选择二、输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2倍时,采用最小公倍数方式进行位宽转换。本发明只需要修改参数即可完全兼容任意位宽的输入输出场景,兼容性强,合理使用逻辑资源,大大减少工作量。
Description
技术领域
本发明属于数字电路设计领域,适用于FPGA,Asic等应用场景。可以根据参数设置完成高效,灵活,无带宽损耗的数据流任意位宽转换。可以运用到带有AXI_STREAM接口的FPGA或者Asic设计场景中,具体涉及一种基于AXI协议接口的任意位宽转换方法。
背景技术
在FPGA或者Asic开发过程中,经常需要使用AXI_STREAM作为主要的数据流传输接口,但是由于数据流的前级和后级位宽不同,所以导致经常需要设计一个固定位宽转换模块,并且需要花时间验证接口的稳定性。因此需要一个通用模块满足这一场景,达到一劳永逸的效果。
传统方式如图1所示,传统方式中,不同的数据流输入和输出位宽,都需要设计不同的conv模块,设计完此模块还要对此模块进行较为详细的验证,才能进行使用,采用传统方式进行数据流传输时,需要重复设计,重复验证,花费大量时间,可能会耗费不合理的逻辑资源。
发明内容
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种基于AXI协议接口的任意位宽转换方法,其特征在于,包括:
判断步骤:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2~3倍,并根据判断结果选择执行:
选择一、输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2~3倍时,采用移位寄存器方式进行位宽转换;
选择一、输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2~3倍时,采用最小公倍数方式进行位宽转换。
这里所述的如AXI协议接口包括诸多种类,如axi-stream、axi-lite、axi-mem等AXI协议接口均适用于本案的方法和装置。
在上述的一种基于AXI协议接口的任意位宽转换方法,所述最小公倍数方式进行位宽转换的具体方法是:定义输入位宽为M,输出位宽为N,且M和N的最小公倍数是P,建立一个P个单位的缓冲区域,当缓冲区域的数据量大于N,开启一次输出,当缓冲区域剩余空间小于M,关闭输入。
在上述的一种基于AXI协议接口的任意位宽转换方法,所述缓冲区域为一个FIFO结构,先进先出。
在上述的一种基于AXI协议接口的任意位宽转换方法,所述移位寄存器方式进行位宽转换的具体方法是:定义输入位宽为M,输出位宽为N,则建立一个M+N-1个单位的缓冲区域,当输出N位数据后如果还有数据剩余,会将剩余数据进行移位,移位到缓冲区的最前端,等待下一次缓冲区数据量达到M后输出。
在上述的一种基于AXI协议接口的任意位宽转换方法,所述缓冲区域为一个FIFO结构,先进先出。
一种基于AXI协议接口的任意位宽转换模块,其特征在于,包括:
判断单元:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2~3倍,并根据判断结果选择对应单元执行:
移位寄存器转换单元:输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2~3倍时,移位寄存器转换单元采用移位寄存器方式进行位宽转换;
最小公倍数转换单元:输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2~3倍时,最小公倍数转换单元采用最小公倍数方式进行位宽转换。
在上述的一种基于AXI协议接口的任意位宽转换模块,定义输入位宽为M,输出位宽为N,且M和N的最小公倍数是P,所述最小公倍数转换单元中包括一个缓冲区域,缓冲区域包括P个单位,当缓冲区域的数据量大于N,开启一次输出,当缓冲区域剩余空间小于M,关闭输入。
在上述的一种基于AXI协议接口的任意位宽转换模块,所述缓冲区域为一个FIFO结构,先进先出。
在上述的一种基于AXI协议接口的任意位宽转换模块,定义输入位宽为M,输出位宽为N,则建立一个M+N-1个单位的缓冲区域,当输出N位数据后如果还有数据剩余,会将剩余数据进行移位,移位到缓冲区的最前端,等待下一次缓冲区数据量达到M后输出。
在上述的一种基于AXI协议接口的任意位宽转换模块,所述缓冲区域为一个FIFO结构,先进先出。
因此,本发明具有如下优点:本发明只需要修改参数即可完全兼容任意位宽的输入输出场景,逻辑简单,兼容性强,稳定性高,配合计算输入输出位宽的最小公倍数合理使用逻辑资源,减少逻辑资源占用。可以广泛运用于高速数据流传输方案中,例如视频图像采集,输出等。大大减少fpga/asic开发者的开发验证时间,提高工作效率。。
附图说明
附图1a是传统方式的数据流传输原理图(前级位宽小于后级位宽)。
附图1b是传统方式的数据流传输原理图(前级位宽大于后级位宽)。
附图2a是本发明的数据流传输原理图(前级位宽小于后级位宽)。
附图2b是本发明的数据流传输原理图(前级位宽大于后级位宽)。
附图3是本发明涉及的最小公倍数方式的数据流传输原理图(实施例1)。
附图4是本发明涉及的移位寄存器方式的数据流传输原理图(实施例1)。
附图5是本发明涉及的最小公倍数方式的数据流传输原理图(实施例2)。
附图6是本发明涉及的移位寄存器方式的数据流传输原理图(实施例2)。
附图7是本发明涉及的实际应用场景的数据流传输原理图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
首先进行判断,当最小公倍数大于输入位宽加输出位宽的2~3倍时不采用最小公倍数方案以节省资源,否则采用最小公倍数方案进行数据流传输,在本实施例中,采取判断条件是:最小公倍数是否大于输入位宽加输出位宽的2倍。
方案一:最小公倍数方式
实例1.如图3所示以输入位宽为3,输出位宽为4为例.
图3中D0.0,D0.1,D0.2为第一拍输入,D0.0,D0.1,D0.2,D1.0为第一拍输出。
输入位宽与输出位宽的最小公倍数为12,因此建立12个单位的缓冲区域,缓冲区域类似一个FIFO结构,先进先出。当缓冲区域的数据量大于4(输出位宽),即可开启一次输出,即m_axis_tvalid置1,待m_axis_tready同为1后,数据量减少4,内置指针增加4,开启下一次输出判断。当缓冲区域剩余空间大于等于3(输入位宽),即可开启一次输入,即s_axis_tready置1,待s_axis_tvalid同为1后当前缓冲区剩余空间减3,内置指针增加3,开启下一次输入判断。
实例2.如图4所示以输入位宽为6,输出位宽为3为例.
图4中D0.0,D0.1,D0.2,D0.3,D0.4,D0.5为第一拍输入,D0.0,D0.1,D0.2为第一拍输出。
输入位宽与输出位宽的最小公倍数为6,因此建立6个单位的缓冲区域,缓冲区域类似一个FIFO结构,先进先出。当缓冲区域的数据量大于3(输出位宽),即可开启一次输出,即m_axis_tvalid置1,待m_axis_tready同为1后,数据量减少3,内置指针增加3,开启下一次输出判断。当缓冲区域剩余空间大于等于6(输入位宽),即可开启一次输入,即s_axis_tready置1,待s_axis_tvalid同为1后当前缓冲区剩余空间减6,内置指针增加6,开启下一次输入判断。
采用本方案组合逻辑使用少,时序优良,但是在公倍数很大的情况下,寄存器资源占用过多。
方案二:移位寄存器方案
实例1.如图5所示还是以输入位宽为3,输出位宽为7为例:
最小公倍数为21,大于(3+7)*2因此采用此方案,定义一个输入位宽+输出位宽-1的缓冲区域,缓冲区域类似一个FIFO结构,先进先出。与方案一不同的是,当缓冲区域的数据量大于7(输出位宽),即可开启一次输出,即m_axis_tvalid置1,待m_axis_tready同为1后,数据量减少7,将剩余的数据移动到起始位置0,开启下一次输出判断。当缓冲区域剩余空间大于等于3(输入位宽),即可开启一次输入,即s_axis_tready置1,待s_axis_tvalid同为1后,根据输出剩余的数据设置起始位置2,循环往复开启下一次输入判断。
实例2.如图6所示还是以输入位宽为8,输出位宽为3为例:
最小公倍数为24,大于(3+8)*2因此采用此方案,定义一个输入位宽+输出位宽-1的缓冲区域,缓冲区域类似一个FIFO结构,先进先出。与方案一不同的是,当缓冲区域的数据量大于3(输出位宽),即可开启一次输出,即m_axis_tvalid置1,待m_axis_tready同为1后,数据量减少3,将剩余的数据移动到起始位置0,开启下一次输出判断。当缓冲区域剩余空间大于等于8(输入位宽),即可开启一次输入,即s_axis_tready置1,待s_axis_tvalid同为1后,根据输出剩余的数据设置起始位置5,循环往复开启下一次输入判断。
采用本方案寄存器资源占用较少,但是组合逻辑使用较多,时序较差。
如图7所示,为本发明的具体一个实际应用场景,在AOI取相场景中,从相机中读取的数据位宽为48bit,通过任意位宽转换模块转换为64bit后在ddr进行缓存,然后读取通过camera link接口发送到其他设备。
本发明还提供一个基于AXI协议接口的通用的width_conv模块,能够任意进行位宽转换,包括:
判断单元:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2倍,并根据判断结果选择对应单元执行:
移位寄存器转换单元:输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2倍时,移位寄存器转换单元采用移位寄存器方式进行位宽转换;
最小公倍数转换单元:输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2倍时,最小公倍数转换单元采用最小公倍数方式进行位宽转换。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (4)
1.一种基于AXI协议接口的任意位宽转换方法,其特征在于,包括:
判断步骤:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2~3倍,并根据判断结果选择执行:
选择一、输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2~3倍时,采用移位寄存器方式进行位宽转换;
选择二、输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2~3倍时,采用最小公倍数方式进行位宽转换;
所述移位寄存器方式进行位宽转换的具体方法是:定义输入位宽为M,输出位宽为N,则建立一个M+N-1个单位的缓冲区域,当输出N位数据后如果还有数据剩余,会将剩余数据进行移位,移位到缓冲区的最前端,等待下一次缓冲区数据量达到N后输出。
2.根据权利要求1所述的一种基于AXI协议接口的任意位宽转换方法,其特征在于,所述最小公倍数方式进行位宽转换的具体方法是:定义输入位宽为M,输出位宽为N,且M和N的最小公倍数是P,建立一个P个单位的缓冲区域,当缓冲区域的数据量大于N,开启一次输出,当缓冲区域剩余空间小于M,关闭输入。
3.根据权利要求2所述的一种基于AXI协议接口的任意位宽转换方法,其特征在于,所述缓冲区域为一个FIFO结构,先进先出。
4.一种采用权利要求1-3任一权利要求所述转换方法的基于AXI协议接口的任意位宽转换模块,其特征在于,包括:
判断单元:判断输入位宽与输出位宽的最小公倍数是否大于输入位宽加输出位宽的2~3倍,并根据判断结果选择对应单元执行:
移位寄存器转换单元:输入位宽与输出位宽的最小公倍数大于输入位宽加输出位宽的2~3倍时,移位寄存器转换单元采用移位寄存器方式进行位宽转换;
最小公倍数转换单元:输入位宽与输出位宽的最小公倍数小于或等于输入位宽加输出位宽的2~3倍时,最小公倍数转换单元采用最小公倍数方式进行位宽转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910067608.9A CN109815181B (zh) | 2019-01-24 | 2019-01-24 | 一种基于axi协议接口的任意位宽转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910067608.9A CN109815181B (zh) | 2019-01-24 | 2019-01-24 | 一种基于axi协议接口的任意位宽转换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109815181A CN109815181A (zh) | 2019-05-28 |
CN109815181B true CN109815181B (zh) | 2020-10-13 |
Family
ID=66604933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910067608.9A Active CN109815181B (zh) | 2019-01-24 | 2019-01-24 | 一种基于axi协议接口的任意位宽转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815181B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297618A (zh) * | 2019-06-18 | 2019-10-01 | 武汉精立电子技术有限公司 | 一种用于数据传输的接口互通方法及装置 |
CN113791994B (zh) * | 2021-11-17 | 2022-02-22 | 南京芯驰半导体科技有限公司 | 一种基于AXI协议wrap访问的DDR控制器及处理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101166151B (zh) * | 2007-09-20 | 2010-07-14 | 北大方正集团有限公司 | 跨时钟域不同位宽数据传递的方法及装置 |
CN101261575B (zh) * | 2008-02-26 | 2010-04-21 | 北京天碁科技有限公司 | 一种实现不等宽数据传输的异步先进先出存储器及方法 |
CN102654827B (zh) * | 2011-03-02 | 2014-05-28 | 安凯(广州)微电子技术有限公司 | 一种先进先出缓冲器及缓存数据的方法 |
JP6021600B2 (ja) * | 2012-11-16 | 2016-11-09 | キヤノン株式会社 | 画像処理装置および画像処理方法 |
CN103676742B (zh) * | 2013-12-16 | 2017-01-11 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga的数据重组方法 |
CN104734815B (zh) * | 2015-04-08 | 2018-01-23 | 烽火通信科技股份有限公司 | Otn系统中高吞吐量fec编码器的硬件实现方法及系统 |
CN106294234B (zh) * | 2016-08-01 | 2018-09-21 | 深圳云天励飞技术有限公司 | 一种数据传输方法及装置 |
-
2019
- 2019-01-24 CN CN201910067608.9A patent/CN109815181B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109815181A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918332B (zh) | Spi从设备及spi设备 | |
JP2009525625A (ja) | シリアル相互接続の多数レーン用の装置及びデスキュー | |
CN109815181B (zh) | 一种基于axi协议接口的任意位宽转换方法及装置 | |
CN111176725B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109788214B (zh) | 一种基于fpga的多路视频无缝切换系统和方法 | |
CN113132552B (zh) | 视频流处理方法及装置 | |
KR20200138275A (ko) | Mipi d-phy 발송 회로 및 기기 | |
US7480282B2 (en) | Methods and apparatus for controlling ethernet packet transfers between clock domains | |
CN109600532B (zh) | 无人机多路视频无缝切换系统和方法 | |
CN209982615U (zh) | 用于色彩空间4:4:4传输的设备 | |
WO2022266959A1 (zh) | 一种芯片测试电路和方法 | |
CN110636219B (zh) | 一种视频数据流的传输方法及装置 | |
CN101969552B (zh) | 一种视频数据并行处理系统及其方法 | |
Cao et al. | Working principle and application analysis of UART | |
JP2001024712A (ja) | 並列システムをデータ・ストローブ型の送受信器とインタフェース接続するための伝送システム、送信器、受信器、及びインタフェース装置 | |
CN112292848B (zh) | 视频源扩展方法、装置、系统及视频源扩展器 | |
CN114866733A (zh) | 一种低延迟视频处理方法、系统及装置 | |
CN105611211A (zh) | 视频格式切换器及显示装置 | |
US8166219B2 (en) | Method and apparatus for encoding/decoding bus signal | |
KR19990055984A (ko) | 직렬 데이터의 전송속도 변환 장치 | |
CN111104353B (zh) | 基于fpga的多功能航空总线接口卡 | |
CN112732604B (zh) | 一种lvds转usb3.0多功能适配器 | |
WO2023104210A1 (zh) | 数据传输芯片及电子设备 | |
Warrier et al. | FPGA implementation of SPI To I2C bridge | |
US20240168710A1 (en) | Method and apparatus for eliminating inter-link skew in high- speed serial data communications |
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 |