异步fifo_同步FIFO设计实现
在学习跨时钟域处理的时候,有一种方法是用异步FIFO来处理跨时钟域处理的。那么在这之前先看看同步FIFO实现。
所谓同步FIFO,就是读写时钟是同一个时钟频率。本次实现是通过计数器的形式来实现满空标志。具体实现如下:
module fifo_sync(input clk ,input rst_n ,input [7:0] datain , //输入数据input wr , //写请求input rd , //读请求output reg [7:0] dataout , //输出数据output empt , //空标志output full // 满标志
);//定义寄存器
reg [3:0] cnt; //计数器用于计算FIFO中存放了多少数据,方便提供满空标志
reg [3:0] wr_ptr, rd_ptr; //读写指针
reg [7:0] fifo_mem [15:0]; //定义16个8位的寄存器用于存放数据,FIFO管道//定义状态
parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;//用一段式状态机简单实现FIFO
always @(posedge clk or negedge rst_n) beginif(!rst_n) begincnt <= 0;wr_ptr <= 0;rd_ptr <= 0;dataout <= 0;endelse begincase ({rd,wr})S0 : begin //空闲cnt <= cnt;wr_ptr <= wr_ptr;rd_ptr <= rd_ptr;dataout <= 0;endS1 : begin //写FIOFif(!full) beginfifo_mem[wr_ptr] <= datain;wr_ptr <= wr_ptr + 1'b1;rd_ptr <= rd_ptr;cnt <= cnt + 1'b1;dataout <= 0;endend S2 : begin //读FIFOif(!empt) begindataout <= fifo_mem[rd_ptr];rd_ptr <= rd_ptr + 1'b1;wr_ptr <= wr_ptr;cnt <= cnt - 1'b1;end end S3 : begin //同时读写FIFOif(!full) beginfifo_mem[wr_ptr] <= datain;wr_ptr <= wr_ptr + 1'b1;end if(!empt) begindataout <= fifo_mem[rd_ptr];rd_ptr <= rd_ptr + 1'b1;end end default : ;endcaseend
end //满空标志信号产生
assign full = (cnt == 4'd15);
assign empt = (cnt == 4'd0 );endmodule
简单的测试:
`timescale 1ns/1ns
module fifo_sync_tb();reg clk;
reg rst_n;
reg [7:0] datain;
reg wr, rd;wire [7:0] dataout;
wire empt;
wire full;initial begin
clk = 1'b1;
rst_n = 1'b0;
datain = 0;
wr = 1'b0;
rd = 1'b0;
#50
rst_n = 1'b1;
#40
wr = 1'b1;
#20
rd = 1'b1;
#20
rd = 1'b0;
#170
wr = 1'b0;
#200
rd = 1'b1;
#40
rd = 1'b0;
#500
$stop;
end always #5 clk = ~clk;always @(posedge clk) begindatain <= datain + 1'b1;
end fifo_sync fifo(.clk (clk ),.rst_n (rst_n ),.datain (datain ), //输入数据.wr (wr ), //写请求.rd (rd ), //读请求.dataout (dataout ), //输出数据.empt (empt ), //空标志.full (full ) // 满标志
);endmodule
异步fifo_同步FIFO设计实现相关推荐
- 硬件架构的艺术:同步FIFO设计
目录 1. 概述 2. 同步FIFO设计 2.1 同步FIFO结构 2.2 同步FIFO空满信号产生 2.2.1 时序逻辑产生空满 2.2.1.1 fifo满信号产生 2.2.1.2 fifo空信号产 ...
- 同步FIFO设计verilog设计及仿真
同步FIFO设计 1.功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作由时钟的上升沿触 ...
- 任意深度同步FIFO设计总结(非2次幂)
同步FIFO属于是最基本的模块之一了,但是对于任意深度(非2次幂与2次幂均可以)的同步FIFO可能有些难度,但是只要了解格雷码的性质就能解决.接下来将介绍整个设计的思考流程,不单单是给出解决方法. 对 ...
- 同步fifo的串并_同步FIFO设计Spec(示例代码)
为什么要写Spec文档: 记得刚进公司实习的时候,导师安排我写一个SM4算法AHB接口模块,要求写代码前 写出详细的设计文档,详细到什么程度呢,看着文档就能把代码写好,作为一个只 在学校写过数字钟的小 ...
- fifo的rdata_同步FIFO设计
本文从微信公众号--数字IC小站,转载,欢迎关注,微信公众号更新更多更快带选通信号的同步FIFO(重发)mp.weixin.qq.com 我们常见的同步FIFO一般都是固定位宽输入,固定位宽输出 ...
- 基于 FPGA 的高级数字电路设计(7)单口 RAM、同步 FIFO、异步 FIFO 设计
一.单口 RAM 设计 module BRAM_PORTA( input clka, input ena, input wea, input [3:0] addra, input [15:0] din ...
- FPGA基础知识极简教程(3)从FIFO设计讲起之同步FIFO篇
博文目录 写在前面 正文 FPGA/ASIC中的FIFO 同步FIFO的设计 参考资料 交个朋友 写在前面 个人博客首页 注:学习交流使用! 正文 FPGA/ASIC中的FIFO FIFO缓冲区如何用 ...
- 可能是最简单的同步fifo 的设计
文章目录 可能是最简单的同步fifo 设计 什么是FIFO FIFO的分类 设计FIFO的关键 FIFO空满判断方法 本次同步FIFO设计的基本参数 具体代码实现过程 可能是最简单的同步fifo 设计 ...
- 01 【Verilog实战】同步FIFO的设计(附源码RTL/TB)
虚拟机:VMware -14.0.0.24051 环 境:ubuntu 18.04.1 脚 本:makefile(点击查看) 应用工具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习 ...
最新文章
- 面试鹅厂,我三面被虐的体无完肤。。。
- python yaml
- [转] python中的高效迭代器函数
- tableview cell自适应撑高
- (转)UIWebView的基本用法,适合新手
- easyui三级联动 html,jQuery使用EasyUi实现三级联动下拉框效果实例分享
- win10安装马上6的问题
- 手机通讯录整理excel2csv2vcf
- 《RSSHub Radar》可以帮助你快速发现和订阅当前网站RSS的浏览器扩展
- QEMU同步脏页原理
- pycharm电脑上怎么下载-Pycharm下载和安装图文教程[超详细]
- 成为UiBot Store推广员,解锁全新赚钱方式
- fatal: unable to access github.com schannel failed to receive handshake, SSL/TLS connection failed
- 双通道中频信号数字下变频及相位差估计(FPGA)
- idea构建post请求_在IDEA中快速测试API接口
- 自我管理-管理者的职责
- c语言编译器运行窗口,Gcc编译器下载C语言编译器窗口(带有安装教程)v1
- (DeepID)Deep Learning Face Representation from Predicting 10,000 Classes
- matlab入门总结,MATLAB基础公式小结(一)
- django社区物品转让平台 计算机专业毕业设计源码40507
热门文章
- Linux 12.10 ISO下载地址
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
- 【AutoML白皮书】:感知、认知、决策算法布局提升企业决策水平.pdf(附下载链接)...
- 【报告分享】全面解码美妆消费者心智-阿里妈妈.pdf(附下载链接)
- 炸裂!微信支付的架构太牛了!(微信跨平台开发框架)
- 【报告分享】2020美妆行业短视频营销报告.pdf(附下载链接)
- php远程服务器配置,php远程服务器上的配置肿么弄??
- linux 连接两个异构网,用cheops-ng管理Linux异构网络(图)
- python return的理解_python 浅析对return的理解
- cs231n作业1——knn