CN109669664A - 异步fifo读写两端数据数量的实现方法 - Google Patents

异步fifo读写两端数据数量的实现方法 Download PDF

Info

Publication number
CN109669664A
CN109669664A CN201910198468.9A CN201910198468A CN109669664A CN 109669664 A CN109669664 A CN 109669664A CN 201910198468 A CN201910198468 A CN 201910198468A CN 109669664 A CN109669664 A CN 109669664A
Authority
CN
China
Prior art keywords
gray code
write
reading
gray
pointer
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
Application number
CN201910198468.9A
Other languages
English (en)
Inventor
孙后所
李成
郭小清
黄晓林
俞坤治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Core Vision Microelectronics Technology Co Ltd
Original Assignee
Nanjing Core Vision Microelectronics Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Core Vision Microelectronics Technology Co Ltd filed Critical Nanjing Core Vision Microelectronics Technology Co Ltd
Priority to CN201910198468.9A priority Critical patent/CN109669664A/zh
Publication of CN109669664A publication Critical patent/CN109669664A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Abstract

本发明公开了一种异步FIFO读写两端数据数量的实现方法,将读、写指针从二进制转成格雷码,再从格雷码转成二进制,经计算得到了读、写两端数据数量。该设计的优点是,读、写两端都知道异步FIFO中有多少数据,方便设计出不同的读出写入策略,利用格雷码跨时钟域的优点,也能提高系统的频率。

Description

异步FIFO读写两端数据数量的实现方法
技术领域
本发明涉及一种异步FIFO读写两端数据数量的实现方法,属于集成电路设计技术领域。
背景技术
在集成电路数字前端设计中,很多设计采用Synopsys公司的designware设计软件的异步FIFO有诸多不便,只有单一复位,不能暂停,没有源代码可以改进,不能知道FIFO中数据数量,只能设置全满almost full和全空almost empty的参数,对于复杂场景下跨时钟域的设计力不从心,该设计克服了以上不便,为复杂设计带来更多传输策略。
发明内容
本发明的目的:在集成电路数字前端设计中,跨时钟域数据传输始终是个麻烦的问题,怎样高效安全把数据传输过去,异步FIFO是首选,但是面对不同场景下的designware,异步FIFO不能面面俱到。假设对面是DRAM,希望数据是连续的突发burst(这样效率高),如果知道异步FIFO中有多少数据,采用突发长度burst lenth是4、8或者16就能很好的做到高效设计;假设DRAM被高优先级通道占用,次优先级可以暂停;假设某一帧图像被抛弃了,FIFO中的数据也要被清洗,该设计可以局部复位,当然也带全局复位。
为实现上述目的,本发明采用的技术方案:
1)每写入一个数据进RAM单元,写指针加1,同时把写指针由二进制转换成格雷码,形成写格雷码指针;
2)从 RAM单元每读出一个数据出来,读指针加1,同时把读指针由二进制转换成格雷码,形成读格雷码指针;
3)写格雷码指针、读格雷码指针都要打2拍后(只有多位宽格雷码的数据才可以跨时钟域打2拍就能避免跨时域时钟CDC(clock domain crossing导致数据传输错误的问题),与相对应的读格雷码指针、写格雷码指针进行比较得出RAM单元的空满标志;
满的条件是:在格雷码下比较,读出侧读格雷码指针的高两位取反和低位拼接后等于写入侧写格雷码指针时,则置RAM为满标志。
空的条件是:在格雷码下比较,写入侧的写格雷码指针等于读出侧的读格雷码指针时,则置RAM为空标志。
4)再把读格雷码指针与写格雷码指针分别转化成读格雷码指针二进制值、写格雷码指针二进制值,并保存进入对方的时钟域,两个时钟域中的读、写二进制指针进行计算就可以计算出写入侧的数据数量和读出侧的数据数量。
读出侧数据数量的计算式为:
r_entry = gry2bin(wr_ptr_gray_sync2r)-gry2bin(rd_ptr_gray_ns);
r_entry:读出侧数据数量;
gry2bin( ):格雷码转二进制的函数;
wr_ptr_gray_sync2r :写入侧的写格雷码指针打2拍同步到读出侧的值;
rd_ptr_gray_ns:读出侧的读格雷码指针;
写入侧数据数量的计算式为:
w_entry = gry2bin(wr_ptr_gray_ns)- gry2bin(rd_ptr_gray_sync2w);
w_entry:写入侧数据数量;
wr_ptr_gray_ns :写入侧的写格雷码指针;
rd_ptr_gray_sync2w :读出侧的读格雷码指针打2拍同步到写入侧的值。
格雷码转二进制后才能计算数据数量。
所述RAM单元为FIFO中的RAM单元。
本技术方案中有两个技巧:
1)空、满标志的是用二进制转格雷码后进行比较得到的;
2)两个端口读、写的数据数量是再把格雷码转二进制计算得到的。
本发明所达到的 有益效果:
绝大多数异步FIFO的设计不会输出数据数量信号,因为这个数据存在不同时钟域,输出很容易超前或者落后指示。
本设计采用二进制到格雷码的转换bin2gray和格雷码到二进制的转换gray2bin的方法,寄存器搭建RAM,比较部分采用二进制转格雷码后比较,数据数量统计部分再把格雷码转二进制后计算。利用格雷码跨时钟域的优点,也能提高系统的频率。
该设计的优点是,读写两端都知道异步FIFO中有多少数据,方便设计出不同的读出写入策略。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明的异步FIFO读写两端数据数量的实现方法,具体包括以下步骤:
1)每写入一个数据进FIFO中的RAM单元,写指针加1,同时把写指针由二进制转换成格雷码,作为写格雷码指针;
2)从 RAM单元每读出一个数据出来,读指针加1,同时把读指针由二进制转换成格雷码,作为读格雷码指针;
3)写格雷码指针、读格雷码指针都要打2拍后(只有多位宽格雷码的数据才可以跨时钟域打2拍就能避免跨时域时钟CDC(clock domain crossing)导致数据传输错误的问题),与相对应的读格雷码指针、写格雷码指针进行比较得出RAM的空满标志;
4)再把读格雷码指针与写格雷码指针分别转化成读格雷码指针二进制值、写格雷码指针二进制值,并保存进入对方的时钟域,两个时钟域中的读、写格雷码指针二进制值进行计算就可以计算出写入侧的数据数量和读出侧的数据数量。
读出侧数据数量的计算式为:
r_entry = gry2bin(wr_ptr_gray_sync2r)-gry2bin(rd_ptr_gray_ns);
r_entry:读出侧数据数量;
gry2bin( ):格雷码转二进制的函数;
wr_ptr_gray_sync2r :写入侧的写格雷码指针打2拍同步到读出侧的值;
rd_ptr_gray_ns:读出侧的读格雷码指针;
写入侧数据数量的计算式为:
w_entry = gry2bin(wr_ptr_gray_ns)- gry2bin(rd_ptr_gray_sync2w);
w_entry:写入侧数据数量;
wr_ptr_gray_ns :写入侧的写格雷码指针;
rd_ptr_gray_sync2w :读出侧的读格雷码指针打2拍同步到写入侧的值。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (6)

1.一种异步FIFO读写两端数据数量的实现方法,其特征在于,包括以下步骤:
1)每写入一个数据进RAM单元,写指针加1,同时把写指针由二进制转换成格雷码,形成写格雷码指针;
2)从 RAM单元每读出一个数据,读指针加1,同时把读指针由二进制转换成格雷码,形成读格雷码指针;
3)写格雷码指针、读格雷码指针均打2拍后与相对应的读格雷码指针、写格雷码指针进行比较得出RAM单元的空满标志;
4)再把读格雷码指针与写格雷码指针分别转化成读格雷码指针二进制值、写格雷码指针二进制值,并保存进入对方的时钟域,两个时钟域中的读格雷码指针二进制值、写格雷码指针二进制值进行计算得出写入侧的数据数量和读出侧的数据数量。
2.根据权利要求1所述的异步FIFO读写两端数据数量的实现方法,其特征在于,步骤3)中,当读出侧读格雷码指针的高两位取反和低位拼接后等于写入侧写格雷码指针时,则置RAM为满标志。
3.根据权利要求1所述的异步FIFO读写两端数据数量的实现方法,其特征在于,步骤3)中,当写入侧的写格雷码指针等于读出侧的读格雷码指针时,则置RAM为空标志。
4.根据权利要求1所述的异步FIFO读写两端数据数量的实现方法,其特征在于,步骤4)中,读出侧数据数量的计算式为:
r_entry = gry2bin(wr_ptr_gray_sync2r)-gry2bin(rd_ptr_gray_ns);
式中,
r_entry:读出侧数据数量;
gry2bin( ):格雷码转二进制的函数;
wr_ptr_gray_sync2r :写入侧的写格雷码指针打2拍同步到读出侧的值;
rd_ptr_gray_ns:读出侧的读格雷码指针。
5.根据权利要求1所述的异步FIFO读写两端数据数量的实现方法,其特征在于,步骤4)中,写入侧数据数量的计算式为:
w_entry = gry2bin(wr_ptr_gray_ns)- gry2bin(rd_ptr_gray_sync2w);
式中,
w_entry:写入侧数据数量;
gry2bin( ):格雷码转二进制的函数;
wr_ptr_gray_ns :写入侧的写格雷码指针;
rd_ptr_gray_sync2w :读出侧的读格雷码指针打2拍同步到写入侧的值。
6.根据权利要求1所述的异步FIFO读写两端数据数量的实现方法,其特征在于,所述RAM单元为FIFO中的RAM单元。
CN201910198468.9A 2019-03-15 2019-03-15 异步fifo读写两端数据数量的实现方法 Pending CN109669664A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910198468.9A CN109669664A (zh) 2019-03-15 2019-03-15 异步fifo读写两端数据数量的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910198468.9A CN109669664A (zh) 2019-03-15 2019-03-15 异步fifo读写两端数据数量的实现方法

Publications (1)

Publication Number Publication Date
CN109669664A true CN109669664A (zh) 2019-04-23

Family

ID=66151473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910198468.9A Pending CN109669664A (zh) 2019-03-15 2019-03-15 异步fifo读写两端数据数量的实现方法

Country Status (1)

Country Link
CN (1) CN109669664A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324562A (zh) * 2020-02-16 2020-06-23 苏州浪潮智能科技有限公司 一种ahb总线跨时钟域的系统及工作方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183303A (zh) * 2007-11-28 2008-05-21 北京中星微电子有限公司 Fifo控制电路及控制方法
CN102375720A (zh) * 2010-08-20 2012-03-14 瑞萨电子(中国)有限公司 异步先入先出存储器fifo的读写控制处理方法、电路及系统
US9660799B1 (en) * 2015-11-24 2017-05-23 Intel Corporation Changing the clock frequency of a computing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183303A (zh) * 2007-11-28 2008-05-21 北京中星微电子有限公司 Fifo控制电路及控制方法
CN102375720A (zh) * 2010-08-20 2012-03-14 瑞萨电子(中国)有限公司 异步先入先出存储器fifo的读写控制处理方法、电路及系统
US9660799B1 (en) * 2015-11-24 2017-05-23 Intel Corporation Changing the clock frequency of a computing device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324562A (zh) * 2020-02-16 2020-06-23 苏州浪潮智能科技有限公司 一种ahb总线跨时钟域的系统及工作方法
CN111324562B (zh) * 2020-02-16 2021-08-06 苏州浪潮智能科技有限公司 一种ahb总线跨时钟域的系统及工作方法

Similar Documents

Publication Publication Date Title
TW563029B (en) Flexible interrupt controller that includes an interrupt force register
JP2927108B2 (ja) インサーキットエミュレータ
KR100979825B1 (ko) 직접 메모리 액세스(dma) 전송 버퍼 프로세서
TW200801932A (en) Error correction device and method thereof
WO1999041670A1 (en) System for dynamically changing draining priority of a receive fifo
CN109669664A (zh) 异步fifo读写两端数据数量的实现方法
RU2012102988A (ru) Способ обнаружения попытки атаки, носитель записи и процессор безопасности для этого способа
AU2017377949B2 (en) Clock gating enable generation
WO2006060648A3 (en) Interrupt notification block
US6859904B2 (en) Apparatus and method to facilitate self-correcting memory
JPS607812B2 (ja) デ−タバツフアリング装置
US20220269642A1 (en) Method and apparatus for eliminating glitch, and state machine
CN116188203B (zh) 一种用户水管漏水检测方法、装置、电子设备和存储介质
CN108334337A (zh) 含自动管理功能的低延迟指令调度器及过滤猜测访问方法
CN109599135A (zh) Gpu帧缓冲区的tlm模型、存储方法、存储系统和存储介质
KR20120032104A (ko) 언더-런 보상 회로, 언더-런 보상 방법, 및 상기 언더-런 보상회로를 포함하는 장치들
KR100322547B1 (ko) 디에스피프로그램다운로드방법및그장치
SU1658162A2 (ru) Устройство дл сопр жени источника информации с процессором
CN117972532A (zh) 一种垃圾检测区域推荐方法、电子设备和存储介质
JPS5593596A (en) Memory unit
JP4361664B2 (ja) 通信記録出力装置
US20100115480A1 (en) Logic circuit design verification apparatus, logic circuit design verification method , and medium storing logic circuit design verification program
Qi et al. Inundation extent mapping for Poyang Lake with digital elevation models
Blackman New estimates of annual sea level maxima in the Bristol Channel
SU1383327A1 (ru) Устройство дл задержки цифровой информации

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

Application publication date: 20190423

RJ01 Rejection of invention patent application after publication