一种利用双沿采样处理控制信号的非同步先入先出控制器 【技术领域】
本发明属于一种先入先出(FIFO)控制器,尤其涉及一种利用双沿采样处理控制信号的非同步先入先出(FIFO)控制器。
技术背景
现有的先入先出(FIFO)控制器由于锁存寄存器(flip-flop)不是在上升沿采样,就是在下降沿采样,所以用时钟双沿采样相当于用两个不同的时钟采样数据。由于不是用同一个时钟信号采样数据,无法直接根据外来的信号将数据放入FIFO控制器,需要另外进行一级缓存,再利用一至少是外界时钟信号的时钟采样缓存中的数据。但这样处理首先需要一个额外两倍于外界时钟的内部时钟信号,其次由于该时钟信号与输入的双倍数据率(DDR)时钟毫无关系,要考虑过采样以及建立时间(setup time)和保持时间(hold time)是否满足,复杂且不易控制,而且对时钟脉冲相位差和占空比要求较高。
【发明内容】
为了解决通过内部时钟采样外部数据有可能产生与建立时间或保持时间相关的问题,也使得电路内部在工作频率相对采样数据较低时无需额外生成一时钟采样数据,本发明的目的在于,直接利用界面时钟与数据之间的关系安全稳定地采样数据,而且整个装置只需一个工作频率,结构更加简单。
为了实现上述目的,本发明采用以下技术方案,一种利用双沿采样处理控制信号的非同步先入先出控制器,其特征在于,包括:
上升沿处理模块,直接用双倍数据率(DDR)时钟信号上升沿作为锁存时间,对输入的第一外部控制信号和数据进行锁存,然后与下降沿处理模块输出的第二外部控制信号和数据一起经过逻辑运算,输出第三控制信号和数据;
下降沿处理模块,直接以双倍数据率(DDR)时钟信号下降沿作为锁存时间,锁存所述第一外部控制信号和数据,然后与上升沿处理模块输出地第四外部控制信号和数据一起经过逻辑运算,输出第五控制信号和数据;
综合处理模块,选取双倍数据率(DDR)时钟信号的一个沿作为锁存时间,同时对所述第三控制信号和数据以及所述第五控制信号和数据进行采样,根据存储器的协议得到输出第六控制信号和数据;
存储器,用来存储所述第六控制信号和数据。
【附图说明】
下面结合附图对本发明的结构进行详细说明,熟悉本技术领域的一般技术人员可以从描述中了解本发明的特征和优点。
图1是本发明控制器的系统结构框图;
图2是存储器控制信号协议图;
图3表示上升沿处理模块、下降沿处理模块和综合处理模块的事例波形图;
图4是存储器中信号的事例波形图。
【具体实施方式】
请参见图1,所示为一种利用双沿采样处理控制信号的非同步FIFO控制器的结构框图,由上升沿处理模块1、下降沿处理模块2、综合处理模块3和存储器4部分组成。
其中,上升沿和下降沿处理模块1和2分别直接以DDR时钟信号上升、下降沿作为锁存时间,对接收到的外部控制信号和数据A进行锁存,然后上升沿处理模块1将该锁存信号与下降沿处理模块2锁存的外部控制信号和数据及其处理后得到的地址进行处理得到上升沿处理模块1的输出信号C,对下降沿处理模块2整个过程也类似,下降沿处理模块2将其锁存的信号与上升沿处理模块1锁存的外部控制信号和数据及其处理后得到的地址进行处理得到下降沿处理模块1的输出信号E。两个模块输出的信号C、E输入综合处理模块3中,该综合处理模块3根据存储器4具体所采用的协议对模块1和2进行采样并处理,将结果信号输入到存储器4中进行存储。
下面对图2、3、4中用到的符号给予说明。其中:输入信号:clock表示DDR时钟,上升沿和下降沿均可采样数据;Valid表示当前沿数据是否有效;Data为8bit宽度的传输数据。
请参见图2所示存储器4的控制信号协议图,在上升沿处理模块1中,d0表示在时钟上升沿采样到的数据;valid0表示在时钟上升沿采样到的有效信号;wrt_addr0表示下一个d0写入存储器4的地址。在时钟的上升沿,如果valid0信号有效,表明该沿数据需写入存储器4,那么下一个数据存入的地址应该是前一个数据存入地址的下一个单元。由于时钟的上升沿和下降沿均可写入数据,所以前一个数据写入的地址并非wrt_addr0现在所表示的地址,而是wrt_addr1所表示的地址。因此,此时置入wrt_addr0的值为wrt_addr1加1。如果valid0信号无效,表明该沿无数据写入存储器4,则直接将wrt_addr1的值置入wrt_addr0即可。
在下降沿处理模块2中,d1表示在时钟下降沿采样到的数据;valid1表示在时钟下降沿采样到的有效信号;wrt_addr1表示下一个d1写入存储器4的地址,其原理与上述的wrt_addr0相同,在下降沿时若valid1有效,则置入wrt_addr1的值为wrt_addr0加1;反之,置入wrt_addr1的值。
综合处理模块3中,选取上升沿作为综合处理模块3的采样沿,根据上升沿处理模块输出的信号valid0,wrt_addr0和下降沿处理模块2输出的信号valid1,wrt_addr1得出存储器4所需的控制信号。并锁存数据d0和d1得到存储器4的输入数据。
下面描述综合处理模块3是如何综合上升沿处理模块1和下降沿处理模块2的信号,产生上述静态存储器的控制信号和数据的。
在时钟的上升沿,首先判断信号valid0和valid1,判断要写入几个数据;其次判断写入的位置,决定写入的数据。具体做法如下:
1.如果信号valid0和valid1都为1,那么两块静态存储器都要被写入数据,所以信号cen_odd,cen_even,wen_odd,wen_even都将置0,同时判断wrt_addr0的第0位,如果是1,表示为奇地址,aa_odd取wrt_addr0的前三位,da_odd取d0的值,而aa_even则取wrt_addr1的前三位,da_even取d1的值;否则,若wrt_addr0的第0位是0,表示是偶地址,则aa_odd取wrt_addr1的前三位,da_odd取d1的值,而aa_even则取wrt_addr0的前三位,da_even取d0的值。如图中S0所标示的区域。
2.如果信号valid0为1,而valid1为0,那么判断wrt_addr0的第0位,如果是1,表示为奇地址,cen_odd,wen_odd置0,aa_odd取wrt_addr0的前三位,da_odd取d0的置,而cen_even,wen_even置1,aa_even和da_even保持原值;如图中S1,S2所标示区域。
3.如果信号valid1为1,而valid0为0,判断方法同上,只是要根据wrt_addr1的地址来判断,而非wrt_addr0,同时有效数据为d1;如图S3所标示区域。
4.如果信号valid0和valid1都是0,那么表示没有数据要写入静态存储器。所以所有控制信号cen_odd,cen_even,wen_odd,wen_even都将置1,aa_odd,aa_even,da_odd,da_even保持原值。
存储器4采用了两片UMC的深度为16,宽度为8的高速双端同步静态存储器,一块存储第奇数个数据,命名为sram_odd;另一片存储第偶数个数据,命名为sram_even。数据d0或d1写入哪一片静态存储器取决于地址,如果地址为奇数,则存入sram_odd,否则存入sram_even。其信号波形图见图4所示,每片静态存储器有时钟信号CLKA,CLKB,选信号CENA,CENB,写允许信号WENA,WENB,输入数据DA,DB,以及输出QA,QB。在该例中,仅采用PORT A作为写入口。所以综合处理模块3必须提供信号CLKA,CENA,WENA以及数据DA。其信号之间的关系为:在时钟信号CLKA、CLKB的上升沿,当选信号CENA、WENA同时为低时,将数据DA写入地址AA。
前面提供了对较佳实施例的描述,以使本领域内的任何技术人员可使用或利用本发明。对这些实施例的各种修改对本领域内的技术人员是显而易见的,可把这里所述的总的原理应用到其他实施例而不使用创造性。因而,本发明将不限于这里所示的实施例,而应依据符合这里所揭示的原理和新特征的最宽范围。