FPGA学习-FIFO(嵌入式块rom应用,配置IP核FIFO仿真,了解FIFO时序)

本文介绍了FIFO(先进先出)的概念,它是一种数据结构,类似于队列,常用于数据缓存和高速数据交互。文章通过一个简单的Verilog测试程序展示了如何配置和测试FIFOIP核,包括写操作和读操作的波形图,帮助读者深入理解FIFO的工作原理。
摘要由CSDN通过智能技术生成

什么是FIFO:

FIFO(first in first out 先进先出),与C语言中数据结构的队列很相似。FIFO是对存储数据具有先进先出的特性的一个存储器!常被用于数据缓存、高速异步数据交互。

分类:

FIFO模拟图:

配置FIFOIP核:

testbench测试程序:

`timescale 1ns/1ns
`define clock_period 20
module fifo_tb;

	reg	  clock;
	reg	[15:0]  data;
	reg	  rdreq;
	reg	  sclr;
	reg	  wrreq;
	wire	  almost_empty;
	wire	  almost_full;
	wire	  empty;
	wire	  full;
	wire	[15:0]  q;
	wire	[8:0]  usedw;

	integer i;
	
	fifo fifo(
		.clock(clock),
		.data(data),
		.rdreq(rdreq),
		.sclr(sclr),
		.wrreq(wrreq),
		.almost_empty(almost_empty),
		.almost_full(almost_full),
		.empty(empty),
		.full(full),
		.q(q),
		.usedw(usedw)
	);

	initial clock=1;
	always #(`clock_period/2) clock=~clock;
	initial begin
		data=0;
		rdreq=0;
		wrreq=0;
		sclr=0;
		#(`clock_period*20+1);
		for(i=0;i<=255;i=i+1) begin
			wrreq=1;
			data=i;
			#(`clock_period);
		end
		wrreq=0;
		#(`clock_period*20);
		
		for(i=0;i<=255;i=i+1) begin
			rdreq=1;
			#(`clock_period);
		end
		rdreq=0;
		#(`clock_period*20);
		$stop;
	end
	
endmodule

        很简单的一个程序,就是把FIFOIP核的模块例化到testbench中,然后初始化激励,然后写操作与读操作用两个for循环循环+i。

波形图:

写操作 

读操作

最后。混合双时钟FIFO,testbench就是生成两个不同的时钟激励即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值