【转】觉得好
异步FIFO及verilog原码_1 异步FIFO及verilog原码 这几天看了Clifford E
Cummings的两篇大作《Simulation and Synthesis Techniques for Asynchronous FIFO Design》and 《Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons》颇有感想,真可谓经典之作,不可错过
1.什么是 FIFO
FIFO 是英文 First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址
2.什么情况下用 FIFO
FIFO 一般用于不同时钟域之间的数据传输,比如 FIFO 的一端是 AD 数据采集,另一端是计算机的PCI 总线,假设其 AD 采集的速率为 16 位 100K SPS,那么每秒的数据量为100K×16bit=1
6Mbps,而 PCI 总线的速度为 33MHz,总线宽度 32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用 FIFO 来作为数据缓冲
另外对于不同宽度的数据接口也可以用 FIFO,例如单片机位 8 位数据输出,而 DSP 可能是16 位数据输入,在单片机与 DSP 连接时就可以使用 FIFO 来达到数据匹配的目的
3.FIFO 的一些重要参数 FIFO 的宽度:也就是英文资料里常看到的THE WIDTH,它只的是FIFO 一次读写操作的数据位,就像MC