System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及异步信号处理,尤其涉及一种任意深度且带余量控制的异步fifo电路及数据处理方法。
技术介绍
1、在现代集成电路芯片中,异步信号的跨时钟域处理较为普遍与常见。对于多bit信号跨时钟域的处理,通常使用的是异步先进先出(fifo)的方法,这也是能够比较稳定地处理多bit信号跨时钟域的一种方式。这些异步fifo用于数据缓冲、流水线阶段之间的数据传输以及其他需要解决时钟域不同步问题的应用。
2、传统的异步fifo需要将读写指针同步到不同时钟域中,通常使用格雷码来表示指针状态,以避免中间态的问题。然而,传统方法中的异步fifo深度通常需要是2的幂次方,这可能导致芯片资源浪费。例如,如果我们需要一个深度为101的fifo,传统方法将要求我们使用128的深度,这意味着有27个空闲位置被浪费。
3、如说明书附图2所示,传统的异步fifo电路结构框图,主要由如下几个部分组成:写模块,读模块以及双端口ram。读写处于两个不同的时钟域,实现了跨时钟域的数据传输。写模块工作在写时钟域主要处理fifo内部的写指针,写地址的格雷码转换;读模块工作在读时钟域,主要处理读指针以及读地址的格雷码转换。此外还有两个同步模块,主要作用是将读写时钟域的指针同步到写读时钟域。写指针同步模块sync_w2r工作在读时钟域,读指针同步模块sync_r2w工作在写时钟域,用来判断fifo的空满状态。
4、在异步fifo中指针使用的是格雷码计数,二进制计数器在跨时钟域同步的时候,每一位都可能发生变化,发生错误的概率会极大地增加。例
5、写模块主要作用是向fifo存储器写入数据,并且更新写指针wptr,每次完成存储器的写操作时候,写指针同步递增,当wptr到达最大值的时候,写指针绕回到初始值。同样的,读模块主要作用是从存储器中读出数据,每次完成数据的读操作时,读指针rptr同步递增,当rptr到达最大值的时候,读指针绕回到初始值。
6、fifo遵循一个原则是:满不能写,空不能读。所以判断fifo的空满是一个很重要的部分。fifo的空满判断就是通过读写指针(wptr和rptr)进行判断的,当读写指针相等的时候,fifo为空,当读写指针相差fifo的深度的时候,fifo为满,传统的异步fifo深度只能是2的幂次方,在实际使用过程中,可能会造成比较大的面积浪费,比如需要一个深度为600的fifo,那么在使用传统的异步fifo时,存储器的深度需要,实际使用过程中则会多出424深度的浪费,对于传输能力并没有任何提升,浪费了芯片面积。此外,传统的异步fifo并没有对读写余量进行分析,当传输大量连续的数据的时候,无法判断数据是否能够完整写入,可能会造成数据的错误与紊乱。
技术实现思路
1、鉴于目前传统异步fifo电路的深度容易浪费,且没有对读写余量进行分析,容易造成数据错误与紊乱,本专利技术专利提供一种任意深度且带余量控制的异步fifo电路,使用指针同步模块对读指针、写指针进行同步,通过容量模块判断系统容量的空满,并计算余量。
2、为达到上述目的,本专利技术的实施例采用如下技术方案:
3、一种任意深度且带余量控制的异步fifo电路,所述任意深度且带余量控制的异步fifo电路包括:
4、写模块,用于地址和数据的写入,并生成写指针;
5、读模块,用于地址和数据的读取,并生成读指针;
6、存储器,用于地址和数据的存储;
7、指针同步模块,用于写指针和读指针的同步;
8、容量模块,用于判断异步fifo电路容量的空满,并计算余量。
9、依照本专利技术的一个方面,所述写模块包括:
10、写地址计数器,在将写地址和写数据写入存储器后,写地址计数器递增;
11、写格雷码译码器,用于将写地址计数器转换为写指针;
12、写格雷码反向译码器,用于将写指针转换为二进制。
13、依照本专利技术的一个方面,所述读模块包括:
14、读地址计数器,在从存储器读取读地址和读数据后,读地址计数器递增;
15、读格雷码译码器,用于将读地址计数器转换为读指针;
16、读格雷码反向译码器,用于将读指针转换为二进制。
17、依照本专利技术的一个方面,所述存储器包括写入端和输出端,所述任意深度且带余量控制的异步fifo电路还包括:
18、写时钟域,定义为同一个时钟信号内向存储器内写入地址和数据的域,至少包含写模块和存储器的写入端;
19、读时钟域,定义为同一个时钟信号内读取存储器中地址和数据的域,至少包含读模块和存储器的输出端。
20、依照本专利技术的一个方面,所述异步fifo电路中的写时钟域与读时钟域异步通信,所述指针同步模块用于将写指针同步到读时钟域内,将读指针同步到写时钟域内。
21、依照本专利技术的一个方面,所述指针同步模块包括:
22、写指针同步模块,用于将写指针同步到读时钟域,并生成写同步指针;
23、读指针同步模块,用于将读指针同步到写时钟域,并生成读同步指针。
24、依照本专利技术的一个方面,所述容量模块包括:
25、满判断及写余量计算模块,用于判断所述异步fifo电路是否写满,并计算写余量;
26、空判断及读余量计算模块,用于判断所述异步fifo电路是否为空,并计算读余量。
27、依照本专利技术的一个方面,所述任意深度且带余量控制的异步fifo电路还包括复位电路,用于所述写模块和所述读模块的复位。
28、依照本专利技术的一个方面,所述任意深度且带余量控制的异步fifo电路还包括深度差值,所述深度差值为异步fifo电路深度与理论深度的差值,所述写指针和所述读指针的初始值为深度差值的绝对值。
29、一种任意深度且带余量控制的异步fifo电路数据处理方法,包括以下步骤:
30、写入地址和数据,生成写指针,读取地址和数据,生成读指针;
31、将写指针同步到读时钟域,生成写同步指针,将读指针同步到写时钟域,生成读同步指针;
32、根据写指针、写同步指针判断异步fifo电路是否已满,计算并输出写余量,根据读指针、读同步指针判断异步fifo电路是否为空,计算并输出读余量;
33、在异步fifo电路满时,停止写入地址和数据,在异步fifo电路空时,停止读取地址和数据。
34、本专利技术实施的优点:本专利技术所本文档来自技高网...
【技术保护点】
1.一种任意深度且带余量控制的异步FIFO电路,其特征在于,所述任意深度且带余量控制的异步FIFO电路包括:
2.根据权利要求1所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述写模块包括:
3.根据权利要求1所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述读模块包括:
4.根据权利要求1所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述存储器包括写入端和输出端,所述任意深度且带余量控制的异步FIFO电路还包括:
5.根据权利要求4所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述异步FIFO电路中的写时钟域与读时钟域异步通信,所述指针同步模块用于将写指针同步到读时钟域内,将读指针同步到写时钟域内。
6.根据权利要求5所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述指针同步模块包括:
7.根据权利要求4所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述容量模块包括:
8.根据权利要求1所述的任意深度且带余量控制的异步FIF
9.根据权利要求1所述的任意深度且带余量控制的异步FIFO电路,其特征在于,所述任意深度且带余量控制的异步FIFO电路还包括深度差值,所述深度差值为异步FIFO电路深度与理论深度的差值,所述写指针和所述读指针的初始值为深度差值的绝对值。
10.一种任意深度且带余量控制的异步FIFO电路数据处理方法,其特征在于,所述数据处理方法包括以下步骤:
...【技术特征摘要】
1.一种任意深度且带余量控制的异步fifo电路,其特征在于,所述任意深度且带余量控制的异步fifo电路包括:
2.根据权利要求1所述的任意深度且带余量控制的异步fifo电路,其特征在于,所述写模块包括:
3.根据权利要求1所述的任意深度且带余量控制的异步fifo电路,其特征在于,所述读模块包括:
4.根据权利要求1所述的任意深度且带余量控制的异步fifo电路,其特征在于,所述存储器包括写入端和输出端,所述任意深度且带余量控制的异步fifo电路还包括:
5.根据权利要求4所述的任意深度且带余量控制的异步fifo电路,其特征在于,所述异步fifo电路中的写时钟域与读时钟域异步通信,所述指针同步模块用于将写指针同步到读时钟域内,将读指针同步到写时钟域内。
6.根据权利要求5所...
【专利技术属性】
技术研发人员:范涛,
申请(专利权)人:上海盈方微电子有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。