FPGA FIFO IP核(2)- 配置与调用

前言

上上期介绍了FIFO IP核理论方面的一些内容,接下来开始进行FIFO IP核的配置和使用部分。

FIFO IP核再理解

  • 关键点
    先进先出:数据按顺序写入FIFO,先被写入的数据在读取的时候先被读出。
    FIFO存储器没有地址线。
    FIFO主要作为缓存,应用与同步时钟系统和异步时钟系统。

配置 同步FIFO IP 核

新建文件夹

在这里插入图片描述
在prj文件夹中另建一个ipcore文件夹
在这里插入图片描述

新建fifo工程(略)

配置FIFO IP核

在这里插入图片描述在这里插入图片描述
这里将配置的FIFO IP核命名为scfifo_256x8,即256个深度8位宽的同步FIFO IP核
在这里插入图片描述
在这里插入图片描述

  • full:写满标志位
    表示FIFO已经存储满,此时通过该信号控制写请求信号,禁止再往FIFO写入数据,防止数据溢出丢失。当写入数据量达到最大空间时,时钟上升沿写入最后一个数据,同时full拉高。读取数据时随时钟上升沿触发同时拉低。
  • empty:读空标志位
    选中表示FIFO已经没有数据,此时通过该信号控制读请求信号,禁止FIFO继续再读出数据,否则读出的都是无效数据。与full相反,写入数据同时拉低,读到最后一个数据时拉高。
  • usedw:
    显示当前FIFO中已存数据个数,与写入数据的个数是同步的。写第一个数据时置1,为空或满时为0。
    在这里插入图片描述
    选择普通FIFO模式,即当前读请求有效的下一拍数据才出来,下面一个先出数据模式,读请求来到之前第一个数据就已经先出来了,使得当前的读请求有效时立刻输出数据。不同于上面的。
    在这里插入图片描述
    设置FIFO速度,是否禁用保护电路,是否使用逻辑单元实现FIFO存储器。选择NO使用更少的资源。(默认)
    在这里插入图片描述
    显示Altera仿真库
    在这里插入图片描述
    输出inst.v文件
    加粗样式

调用FIFO IP核

  • 输入信号:
    系统时钟
    256个8bit数据(0~255)
    伴随输入数据有效的标志信号
    写请求信号
  • 输出信号
    读取的数据
    FIFO空标志信号
    FIFO满标志信号
    指示FIFO中存在数据个数的信号
  • 调用代码
module fifo(
	input	wire			clk			,	//系统时钟信号
	input	wire	[7:0]	pi_data		,	//8 bit数据
	input	wire			pi_flag		,	//伴随输入数据有效的标志信号,写请求信号
	input	wire			rdreq		, 	//读请求信号

	output	wire	[7:0]	po_data		,	//读取的数据
	output	wire			empty		,	//空标志信号,高电平有效
	output	wire			full		,	//满标志信号,高电平有效
	output	wire	[7:0]	usedw			//指示FIFO中存在数据个数的信号		
);
scfifo_256x8	scfifo_256x8_inst(
	.clock	(clk	),
	.data	(pi_data),
	.wrreq	(pi_flag),
	.rdreq	(rdreq	),

	.empty	(empty	),
	.full	(full	),
	.q		(po_data),
	.usedw	(usedw	)
);

endmodule
  • RTL综合视图
    在这里插入图片描述

小结

至此一个同步时钟FIFO IP核的配置和顶层调用模块代码编写,以及代码综合后得出的RTL视图已经全部完成,接下来就是进行仿真工作,见下期。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在异步FIFO IP核调用中,首先需要进行FIFO IP核的参数配置。然后,编写顶层模块的FIFO调用代码。这个代码示例如下: module fifo ( input wire sys_clk, input wire sys_clk2, input wire [7:0 pi_data, input wire rd_req, input wire wr_req, output wire empty, output wire full, output wire [7:0 po_data, output wire [7:0 usedw ); dcfifo_8x256 dcfifo_8x256_inst ( .clock1 (sys_clk), .clock2 (sys_clk2), .data (pi_data), .rdreq (rd_req), .wrreq (wr_req), .empty (empty), .full (full), .q (po_data), .usedw (usedw) ); endmodule 在这个顶层模块的FIFO调用代码中,我们使用了异步FIFO IP核,其中包括两个时钟信号:sys_clk和sys_clk2。同时,还有输入信号,如写请求信号(wr_req)、读请求信号(rd_req)和输入数据信号(pi_data),以及输出信号,如空状态信号(empty)、满状态信号(full)、输出数据信号(po_data)和已使用字节信号(usedw)。通过这个FIFO调用代码,可以实现对异步FIFO IP核调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [FIFO IP 核的调用](https://blog.csdn.net/ziyouruf/article/details/123862569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [FPGAFIFO IP核配置调用](https://blog.csdn.net/m0_72885897/article/details/128649678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值