如何优化仿真中异步FIFO的完整实现,确保满足时序约束?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2463个文字,预计阅读时间需要10分钟。
异步FIFO功能实现及时间约束1+引言+。FIFO是英文First In First Out的缩写,是一种先进先出的数据缓冲器。它与普通存储器的区别在于没有外部读写地址线,这样使用起来非常简单,但缺点是。
异步FIFO的功能实现及时序约束 1 引言FIFO是英文First In First Out的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据。
FIFO被广泛运用于跨时钟域的数据传输中,在实际使用时,我们往往直接调用XILINX的IP核,或者使用已经被验证过的FIFO而非自己实现。为何不建议大家自己写一个FIFO使用呢,我认为主要有以下几点。
1.经过功能仿真验证正确的一个FIFO,在更高的频率下,面临更严格的时序要求,能不能正常工作?
2.在读写时钟频率相差极大的情况下,FIFO能不能正常工作?
3.我们对FIFO下的时序约束是否合理?
以上几点都是不确定的,而使用官方提供的IP核可以尽可能避免因自己考虑不周导致的设计错误,因此不推荐使用自己写FIFO。在这里我想从自身的理解出发尝试解释如何更完整的实现一个FIFO,仅仅用于探讨,如有错误欢迎大家指正。而关于FIFO原理和实现的介绍已经有很多博客珠玉在前,在这里我们不做赘述。
2 实现 2.1 端口及参数的定义
关于FIFO功能的实现我们借鉴了前人博客异步FIFO原理与代码实现,第一部分是确定FIFO的参数和端口,在这里我们建立的是16x256的FIFO,因此地址位宽需要8位,为了判断空满指针则需要九位,同时我们例化了一个双口ram用于存储数据。
本文共计2463个文字,预计阅读时间需要10分钟。
异步FIFO功能实现及时间约束1+引言+。FIFO是英文First In First Out的缩写,是一种先进先出的数据缓冲器。它与普通存储器的区别在于没有外部读写地址线,这样使用起来非常简单,但缺点是。
异步FIFO的功能实现及时序约束 1 引言FIFO是英文First In First Out的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据。
FIFO被广泛运用于跨时钟域的数据传输中,在实际使用时,我们往往直接调用XILINX的IP核,或者使用已经被验证过的FIFO而非自己实现。为何不建议大家自己写一个FIFO使用呢,我认为主要有以下几点。
1.经过功能仿真验证正确的一个FIFO,在更高的频率下,面临更严格的时序要求,能不能正常工作?
2.在读写时钟频率相差极大的情况下,FIFO能不能正常工作?
3.我们对FIFO下的时序约束是否合理?
以上几点都是不确定的,而使用官方提供的IP核可以尽可能避免因自己考虑不周导致的设计错误,因此不推荐使用自己写FIFO。在这里我想从自身的理解出发尝试解释如何更完整的实现一个FIFO,仅仅用于探讨,如有错误欢迎大家指正。而关于FIFO原理和实现的介绍已经有很多博客珠玉在前,在这里我们不做赘述。
2 实现 2.1 端口及参数的定义
关于FIFO功能的实现我们借鉴了前人博客异步FIFO原理与代码实现,第一部分是确定FIFO的参数和端口,在这里我们建立的是16x256的FIFO,因此地址位宽需要8位,为了判断空满指针则需要九位,同时我们例化了一个双口ram用于存储数据。

