Ip核调用——FIFO学习(一)

FIFO-first in first out,正面意思很好理解。这部分着重介绍同步FIFO,之后再介绍异步FIFO。

通过fifo的学习,同时为大家介绍quartus ii 中的ip核的调用。具体步骤如下:在MegaWizard Plug-in Manager中搜索fifo,即可进入fifo的io核编辑界面。

 

编辑界面如下:选择8bit数据位宽,fifo深度32字节(红色标注1、2表示),3表示用作同步fifo(单时钟)。

这一页按如下配置。

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IP(Intellectual Property)即知识产权。美国 Dataquest 咨询公司将半导体产业的 IP 定 义为“用于 ASIC 或 FPGA 中的预先设计好的电路功能模块”。简而言之,这里的 IP 即电 路功能模块。 IP 核在数字电路中常用于比较复杂的功能模块(如 FIFO、 RAM、 FIR 滤波 器、 SDRAM 控制器、 PCIE 接口等)设计成参数可修改的模块,让其他用户可以直接调用 这些模块。随着设计规模增大,复杂度提高,使用 IP 核可以提高开发效率,减少设计和调 试时间,加速开发进程,降低开发成本,是业界的发展趋势。利用 IP 核设计电子系统,引 用方便,修改基本元件的功能容易。具有复杂功能和商业价值的 IP 核一般具有知识产权, 尽管 IP 核的市场活动还不规范,但是仍有许多集成电路设计公司从事 IP 核的设计、开发 和营销工作。 IP 核有三种不同的存在形式: HDL 语言形式,网表形式、版图形式。分别对应我们常 说的三类 IP 内核:软核、固核和硬核。这种分类主要依据产品交付的方式,而这三种 IP 内核实现方法也各具特色。 PLL(Phase Locked Loop,即锁相环)是最常用的 IP 核之一,其性能强大,可以对输 入到 FPGA 的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望 时钟,实际上,即使不想改变输入到 FPGA 时钟的任何参数,也常常会使用 PLL,因为经 过 PLL 后的时钟在抖动(Jitter)方面的性能更好一些。 Altera 中的 PLL 是模拟锁相环,和 数字锁相环不同的是模拟锁相环的优点是输出的稳定度高、相位连续可调、延时连续可 调;缺点是当温度过高或者电磁辐射过强时会失锁(普通环境下不考虑该问题)。
在VHDL中调用FIFO IP核可以通过以下步骤完成: 1. 首先,在Vivado或Quartus等工具中创建一个新的工程。 2. 在工程中添加一个FIFO IP核。这通常可以通过右键单击设计文件树并选择"Add IP"或"Create IP"来完成。 3. 在IP目录中搜索并选择FIFO IP核,然后点击"Next"。 4. 在IP核的配置页面中,根据你的需求进行配置,比如设置FIFO的宽度、深度等参数。完成后点击"Next"。 5. 在接口配置页面中,选择你希望使用的接口类型。一般来说,FIFO IP核至少具有读取和写入接口。完成后点击"Next"。 6. 在总结页面上,检查你的配置是否正确。如果一切都符合预期,点击"Finish"完成IP核的添加。 7. 工具将自动生成与FIFO IP核相关的VHDL文件。你可以在设计文件树中找到这些文件。 在你的VHDL设计中,你可以通过实例化FIFO IP核并连接其接口来调用它。以下是一个简单的示例: ```vhdl library ieee; use ieee.std_logic_1164.all; entity MyDesign is port ( clk : in std_logic; reset : in std_logic; data_in : in std_logic_vector(7 downto 0); data_out : out std_logic_vector(7 downto 0); wr_en : in std_logic; rd_en : in std_logic ); end entity MyDesign; architecture rtl of MyDesign is component fifo_ip is port ( clk : in std_logic; reset : in std_logic; data_in : in std_logic_vector(7 downto 0); data_out : out std_logic_vector(7 downto 0); wr_en : in std_logic; rd_en : in std_logic ); end component fifo_ip; signal fifo_data_in : std_logic_vector(7 downto 0); signal fifo_data_out : std_logic_vector(7 downto 0); signal fifo_wr_en : std_logic; signal fifo_rd_en : std_logic; begin FIFO_IP_inst : fifo_ip port map ( clk => clk, reset => reset, data_in => fifo_data_in, data_out => fifo_data_out, wr_en => fifo_wr_en, rd_en => fifo_rd_en ); -- 连接FIFO IP核的接口信号 fifo_data_in <= data_in; data_out <= fifo_data_out; fifo_wr_en <= wr_en; fifo_rd_en <= rd_en; end architecture rtl; ``` 在这个示例中,我们实例化了一个名为`fifo_ip`的FIFO IP核,并将其接口与顶层实体的信号相连接。你可以根据自己的需求修改这个示例。 请注意,这只是一个基本的示例,实际的代码可能会根据具体的FIFO IP核和设计需求有所不同。你需要根据IP核的文档和要求进行详细的配置和连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值