CN113194101A - 一种实现任意小位宽数据转大位宽数据的方法 - Google Patents
一种实现任意小位宽数据转大位宽数据的方法 Download PDFInfo
- Publication number
- CN113194101A CN113194101A CN202110505800.9A CN202110505800A CN113194101A CN 113194101 A CN113194101 A CN 113194101A CN 202110505800 A CN202110505800 A CN 202110505800A CN 113194101 A CN113194101 A CN 113194101A
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- width data
- buf
- small
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种实现任意小位宽数据转大位宽数据的方法。将原始的小位宽数据data_i进行整数倍拼接,得到待处理的小位宽数据data_t;假设data_t的位数为a,大位宽数据data_o位数为b,设a与b的最大公约数为c,令a/c=ac,b/c=bc;设计一个计数器cnt_n,计数周期为bc;设计一个数据缓存data_buf,用于移位存储data_t;data_buf每个时钟周期左移(b‑a)*cnt_n个比特,得到data_buf_shift;则,data_o为从data_buf_shift的最高比特位开始截取b个比特,标记data_o有效的valid_o为cnt_n<ac的期间。
Description
本发明涉及协议解析技术领域,尤其涉及一种实现任意小位宽数据转大位宽数据的方法,主要用于协议解析需要将小位宽数据转大位宽数据的应用。
背景技术
在对协议进行解析时,经常会碰到将某种特定的小位宽数据转换为某种特定的大位宽数据以便后续按照大位宽数据进行处理。例如,在解析OTN中的40GE时,有两个地方都涉及了小位宽转大位宽的应用,一个是,ODU3占据OTU4的31个时隙,故ODU3的数据位宽为248b,而40GE映射到ODU3中时是以256b为单位进行的,故需要将248b的小位宽转换为256b的大位宽;另一个是,在完成ODU3的解映射后,需要定界1027b块的边界,因为40GE是以1027b块结构承载在ODU3中的,故需要将256b的小位宽转换为1027b的大位宽。一种可能的方法是,经过复杂的数据拼接实现小位宽的数据转换为大位宽的数据。例如上述256b的小位宽转换为1027b的大位宽时,可以先将256b的小位宽整数拼接成1024b的小位宽,从而将问题转化为1024b转1027b的问题,每次拼接需要多3个比特,当拼接到第341次时,此时1024b余数为1,需要下一个数的1024b以及再下一个数的1024b即需要三个数据才能拼接出1027b,这样复杂的拼接方式需要判断多种情况,处理起来非常复杂。
发明内容
鉴于上述技术存在的问题,本发明提供一种实现任意小位宽数据转大位宽数据的方法。本发明的目的就是要解决上述技术中存在的处理非常复杂的问题。
本发明采取的技术方案是:一种实现任意小位宽数据转大位宽数据的方法,该方法基于FPGA的硬件平台上实现,步骤如下:
(1)假设原始小位宽数据data_i的位数为a’,大位宽数据data_o的位数为b,floor[b/a’]=n,那么首先将原始的小位宽数据data_i进行整数n的拼接,得到拼接后的待处理的小位宽数据data_t,其位数为a=a’*n,其中floor[]表示取小于等于结果的最大正整数,/表示除法,*表示乘法,=表示等于;
(2)设a与b的最大公约数为c,令a/c=ac,b/c=bc,那么a*bc=b*ac,其含义是说,bc个时钟周期的小位宽数据刚好可以转换成ac个时钟周期的大位宽数据,这也是本发明设计的基本思路;
(3)设计一个计数器cnt_n,计数周期为bc,即cnt_n计数值达到bc-1时归0;
(4)设计一个数据缓存data_buf,用于移位存储小位宽数据data_t,即data_buf <= {data_buf,data_t};其中<=表示赋值,{}表示位拼接;data_buf的位数计算方法是,假设floor[a/(b-a)]=x,ceil[bc/x]=m,那么data_buf的位数为m*a,其中ceil[]表示取大于等于结果的最小正整数;上述计算的含义是,b-a表示大位宽数据与小位宽数据的位数差,a/(b-a)表示一个小位宽数据中包含多少个位数差,bc/x表示在bc个时钟周期内需要多少个小位宽的数据,此即data_buf的位数;
(5)数据缓存data_buf每个时钟周期左移(b-a)*cnt_n个比特,得到data_buf_shift,即通过移位的方式实现复杂的数据拼接;
(6)则,转换后的大位宽数据data_o为从data_buf_shift的最高比特位开始截取b个比特,标记转换后大位宽数据有效的valid_o为cnt_n<ac的期间,即将转换后的有效区间限制在小于ac的时钟周期内。
本发明所产生的有益效果是:极大的简化了处理小位宽数据转大位宽数据问题的复杂度,本发明通过移位缓存的方法避免了复杂的数据拼接且处理方法统一,无需像背景技术中提及的需要将前后几个数据按既定位宽进行拼接,本发明提供的方法在协议解析技术领域有广泛的应用价值。
附图说明
图1为本发明实现任意小位宽数据转大位宽数据伪代码示意图。
具体实施方式
以下结合附图以及具体的实施例对本发明做进一步说明:
图1为本发明实现任意小位宽数据转大位宽数据伪代码示意图,图中虚线下方即为转换后的结果,data_i为原始小位宽数据,data_t为经整数倍拼接后的小位宽数据,data_buf为对data_t的移位缓存,b为大位宽数据data_o的位数,a为经整数倍拼接后的小位宽数据data_t的位数;设a与b的最大公约数为c,令a/c=ac,b/c=bc,那么a*bc=b*ac,其含义是说,bc个时钟周期的小位宽数据刚好可以转换成ac个时钟周期的大位宽数据,这也是本发明设计的基本思路;计数器cnt_n,计数周期为bc,即cnt_n计数值达到bc-1时归0;<<表示左移移位;转换后的大位宽数据data_o为从data_buf左移移位后得到data_buf_shift的最高比特位开始截取b个比特,即图1中的data_o <= data_buf_shift[最高比特位:最高比特位-b+1],而标记转换后大位宽数据有效的valid_o为cnt_n<ac的期间,即将转换后的有效区间限制在小于ac的时钟周期内。
下面以具体的实施例,并结合图1进一步阐述本发明提出的方法。这里仍以背景技术中提及的256b转1027b为实施例(注:b表示bit的含义),原始小位宽数据data_i的位数a’=256,转换后的大位宽数据data_o位数b=1027,floor[b/a’]=4,即首先需要将原始小位宽数据进行4倍的整数拼接,得到经整数倍拼接后的小位宽数据data_t,其位数a=a’*4=1024,故问题转化为1024b转1027b的问题。a与b的最大公约数为c=1,故ac=1024,bc=1027,x=floor[a/(b-a)]=floor[1024/(1027-1024)]=341,m=ceil[bc/x]=ceil[1027/341]=4,故用于移位缓存data_t的data_buf数据位宽为m*a=4*1024=4096;计数器cnt_n的计数周期为bc=1027,也就是说经过1027个时钟周期可以将1027个1024b的小位宽数据转换为1024个1027b的大位宽数据,此即valid_o的含义,即图1中有效的数据标记周期为cnt_n<(ac=1024);本发明通过移位的方法完成小位宽数据转大位宽数据,cnt_n=0时,data_buf中的值为{data_t_0,data_t_1,data_t_2,data_t_3},此时data_buf左移0比特,即data_buf_shift为data_buf<<0,这时取data_buf_shift的高1027比特亦即取data_buf的高1027比特做为data_o,由于data_t_0只有1024比特,故需要向data_t_1借3个比特,cnt_n=1时,data_buf中的值为{data_t_1,data_t_2,data_t_3,data_t_4},由于data_t_1之前被借掉3个比特,故此时data_buf左移3比特,即data_buf_shift为data_buf<<3,这时取data_buf_shift的高1027比特对应着取data_t_1的低1021比特并向data_t_2借6个比特做为data_o,这样在cnt_n=2时,data_buf的值为{data_t_2,data_t_3,data_t_4,data_t_5},同样,由于data_t_2之前被借掉6个比特,故首先将data_buf左移6个比特,即data_buf_shift为data_buf<<6,此即图1中<<(b-a)*cnt_n的含义,然后再取data_buf_shift的高1027比特做为data_o,依此类推,通过在不同的计数值移位不同的比特数来完成复杂的数据拼接。需要说明的是,在上面的描述中data_t_0~data_t_5表示不同时钟周期data_t的数据。
从上述实现小位宽数据转大位宽数据的方法可以看出,本发明的主要思想是,通过移位的方法实现复杂的数据拼接,移位缓存的位宽要足够大,这样才能将有效的时钟周期限制在前面连续的周期内,不会造成在中间移位的过程中出现数据中断的情况。总之,通过本发明提供的方法,可很好的解决小位宽数据转大位宽数据处理数据拼接复杂的问题,为协议解析技术,尤其是协议解析中的小位宽数据转大位宽数据的应用,提供有益参考。
Claims (1)
1.一种实现任意小位宽数据转大位宽数据的方法,该方法基于FPGA的硬件平台上实现,其特征在于,步骤如下:
(1)假设原始小位宽数据data_i的位数为a’,大位宽数据data_o的位数为b,floor[b/a’]=n,那么首先将原始的小位宽数据data_i进行整数n的拼接,得到拼接后的待处理的小位宽数据data_t,其位数为a=a’*n,其中floor[]表示取小于等于结果的最大正整数,/表示除法,*表示乘法,=表示等于;
(2)设a与b的最大公约数为c,令a/c=ac,b/c=bc,那么a*bc=b*ac,其含义是说,bc个时钟周期的小位宽数据刚好可以转换成ac个时钟周期的大位宽数据,这也是本发明设计的基本思路;
(3)设计一个计数器cnt_n,计数周期为bc,即cnt_n计数值达到bc-1时归0;
(4)设计一个数据缓存data_buf,用于移位存储小位宽数据data_t,即data_buf <={data_buf,data_t};其中<=表示赋值,{}表示位拼接;data_buf的位数计算方法是,假设floor[a/(b-a)]=x,ceil[bc/x]=m,那么data_buf的位数为m*a,其中ceil[]表示取大于等于结果的最小正整数;上述计算的含义是,b-a表示大位宽数据与小位宽数据的位数差,a/(b-a)表示一个小位宽数据中包含多少个位数差,bc/x表示在bc个时钟周期内需要多少个小位宽的数据,此即data_buf的位数;
(5)数据缓存data_buf每个时钟周期左移(b-a)*cnt_n个比特,得到data_buf_shift,即通过移位的方式实现复杂的数据拼接;
(6)则,转换后的大位宽数据data_o为从data_buf_shift的最高比特位开始截取b个比特,标记转换后大位宽数据有效的valid_o为cnt_n<ac的期间,即将转换后的有效区间限制在小于ac的时钟周期内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505800.9A CN113194101A (zh) | 2021-05-10 | 2021-05-10 | 一种实现任意小位宽数据转大位宽数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505800.9A CN113194101A (zh) | 2021-05-10 | 2021-05-10 | 一种实现任意小位宽数据转大位宽数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113194101A true CN113194101A (zh) | 2021-07-30 |
Family
ID=76988744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110505800.9A Withdrawn CN113194101A (zh) | 2021-05-10 | 2021-05-10 | 一种实现任意小位宽数据转大位宽数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113194101A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115051954A (zh) * | 2022-08-17 | 2022-09-13 | 北京左江科技股份有限公司 | 一种基于FPGA BlockRam的大容量以太网报文统计限速结构 |
-
2021
- 2021-05-10 CN CN202110505800.9A patent/CN113194101A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115051954A (zh) * | 2022-08-17 | 2022-09-13 | 北京左江科技股份有限公司 | 一种基于FPGA BlockRam的大容量以太网报文统计限速结构 |
CN115051954B (zh) * | 2022-08-17 | 2022-11-11 | 北京左江科技股份有限公司 | 一种基于FPGA BlockRam的大容量以太网报文统计限速装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8989222B1 (en) | Justification insertion and removal in generic mapping procedure in an optical transport network | |
CN100388630C (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
US6237014B1 (en) | Correlator method and apparatus | |
CN1208298A (zh) | 用于离散时间取样系统的滤波器的方法和装置 | |
CN113194101A (zh) | 一种实现任意小位宽数据转大位宽数据的方法 | |
CN112487354B (zh) | 一种基于比较器和fpga的多通道高速实时互相关运算装置 | |
CN110620566A (zh) | 基于随机计算与余数系统相结合的fir滤波系统 | |
CN112821987A (zh) | 信道编码中的数据处理方法、计算机设备及存储介质 | |
EP0467524A2 (en) | Lookahead adder | |
US20170344341A1 (en) | Rate domain numerical processing circuit and method | |
US20200412479A1 (en) | Polar coding system and parallel computation method for polar coding system | |
KR100402799B1 (ko) | 오차를 최소화할 수 있는 제곱근기 | |
EP4318328A1 (en) | Quantum state information processing system, quantum measurement and control system and quantum computer | |
Booker et al. | Square-free values of reducible polynomials | |
CN105653238A (zh) | 一种计时方法及装置 | |
CN113031917B (zh) | 一种高速概率计算乘法器和计算方法 | |
CN115268839A (zh) | 一种以2为基的蒙哥马利模乘方法及装置 | |
US4837791A (en) | Counter | |
KR100298127B1 (ko) | 덧셈기만을 사용한 비트 분리 구조의 고속 병렬 디지털 필터 | |
KR100493074B1 (ko) | 비동기방식의 부호분할다중접속 이동통신시스템에서 코드생성장치 및 방법 | |
JPS58129653A (ja) | 乗算方式 | |
US9344118B2 (en) | Apparatus and method for generating interleaver index | |
US4875180A (en) | Multi-function scaler for normalization of numbers | |
JP2502263B2 (ja) | エラ―検出方式 | |
CN110598172B (zh) | 一种基于csa加法器的卷积运算方法和电路 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210730 |