本文首发于个人博客
1.设计目标
设计一个参数可配置的异步FIFO,要求:
- FIFO深度从4开始在2的幂次方连续可配(4、8、16、…)
- 读写时钟域相位差、频率差任意(同步器参数可配)
2.参数列表
名称 | 默认值 | 说明 |
---|---|---|
DEPTH_LOG | 4 | FIFO容量为 2 D E P T H _ L O G 2^{DEPTH\_LOG} 2DEPTH_LOG |
DATA_WIDTH | 8 | 数据位宽 |
3.端口
3.1.端口列表
3.1.1.系统端口
名称 | 类型 | 位宽 | 说明 |
---|---|---|---|
read_clk | input | 1 | 读时钟域时钟 |
write_clk | input | 1 | 写时钟域时钟 |
rst_n | input | 1 | 系统复位端口,低有效 |
3.1.2.读端口
名称 | 类型 | 位宽 | 说明 |
---|---|---|---|
read_req | input | 1 | 读完成信号 |
read_valid | output | 1 | 读数据有效信号 |
read_data | output | DEPTH_LOG | 读数据 |
fifo_empty | output | 1 | FIFO空信号 |
3.1.3.写端口
名称 | 类型 | 位宽 | 说明 |
---|---|---|---|
write_req | input | 1 | 写请求信号 |
write_data | input | DEPTH_LOG | 写数据 |
fifo_full | output |