异步fifo学习

news2025/2/27 11:42:28

FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线,顺序写入顺序读出数据,其数据地址是由内部读写指针自增完成,因此 FIFO 在读写时不需要考虑读写冲突的问题。
根据 FIFO 工作的时钟域,可以分为同步 FIFO 和异步 FIFO,同步 FIFO 的读时钟和写时钟是同一个时钟,常用于两边数据位宽不同的临时缓冲,异步 FIFO 的读时钟和写时钟不一致,常用于数据信号跨时钟域处理。

时序图

同步 fifo

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
初始状态 empty 信号是高电平,此时 fifo 为空,若此时对 fifo 发起读操作,则读取到的数据无效。当 wr_en 拉高后,开始向 fifo 内部写入数据,fifo 中有数据后,empty 信号就会拉低。后面同时发起读写操作后,因为是同步 fifo,所以标志位不会发生变化。
只写不读时,fifo 中存在两个及以上的数据,此时 almost empty 也会拉低。当 fifo 处于写满状态时,当 fifo 只能接受一次只写不读操作时,almost full 将会拉高,最后,在没有进行读操作的情况下,再进行了一次写操作,full 信号就会被拉高,说明此时的 FIFO 已经写满了,在发出读请求之前将无法再写入任何数据,如果此时再写入数据,数据就会丢失。

AXIS FIFO


时序图如下:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
写入数据时,s_axis_tvalid 为高电平,同时 full 为低电平,取反后为 s_axis_tready 为高电平,此时才能写入数据。
读数据时同理,只有 validready 信号同时拉高时才能读出数据。
m_axis_tvalid 对应 fifowr_en 信号,m_axis_tready 对应 fifofull 信号取反,s_axis_tvalid 对应 fifoempty 信号取反,s_axis_tready 对应 fiford_en

AXIS fifo

Axis fifo 的 IP 核界面如下:
|500
本次是学习 FIFO 的异步读写,因此将 independent clock 选为‘是’,并且不使能 packet 模式。Bd 框图如下:

其中 clk_wiz 的输出有两个,端口 1 的时钟速率为 100 M H z 100MHz 100MHz,端口 2 的时钟速率为 50 M H z 50MHz 50MHzaxis_data_sourceaxis_dest 的源代码如下:

module axis_data_source (
    input s_axis_clk,
    input s_axis_rstn,
    input m_axis_tready,
    output [7:0] m_axis_tdata,
    output m_axis_tvalid 
);

reg [7:0] cnt;

always @(posedge s_axis_clk or negedge s_axis_rstn) begin
    if(!s_axis_rstn) begin
        cnt<=0;
    end
    else begin
        if(m_axis_tready) begin
            if(cnt==255) begin
                cnt<=0;
            end
            else begin
                cnt<=cnt+1'b1;
            end
        end
    end
end
assign m_axis_tdata=cnt;
assign m_axis_tvalid=1'b1;
    
endmodule

/*read fifo data*/
module axis_dest (
    input s_axis_clk,
    input s_axis_tvalid,
    input [7:0] s_axis_tdata,
    output s_axis_tready
);

assign s_axis_tready=1'b1;

endmodule

其中 data_source 100 M H z 100MHz 100MHz 的速率生成并输出 0 − 0 x F F 0-0xFF 00xFFaxis_dest 一直以 50 M H z 50MHz 50MHz 的速率读取数据。时序图如下:

可以看到开始时 FIFO 未被写满,此时写入和读出互不干扰,随着数据不断写入而不能被马上读出,在一段时间后 FIFO 的 full 信号拉高,对应 m_axis_tready 信号拉低,axis_data_source 不在生成新的数据,仿真图如下:

可以看到此时写入和读出的速率经过 valid 和 ready 信号的使能而同步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2306862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【有啥问啥】All-to-All 通信:原理、实现与应用

All-to-All 通信&#xff1a;原理、实现与应用 一、引言 在分布式计算和并行处理领域&#xff0c;进程之间的通信是至关重要的。All-to-All 通信作为一种高效的通信模式&#xff0c;广泛应用于各种高性能计算和分布式系统中。本文将详细介绍 All-to-All 通信的定义、工作原理…

Python学习第十七天之PyTorch保姆级安装

PyTorch安装与部署 一、准备工作二、pytorch介绍三、CPU版本pytorch安装1. 创建虚拟环境2. 删除虚拟环境1. 通过环境名称删除2. 通过环境路径删除 3. 配置镜像源4. 安装pytorch1. 首先激活环境变量2. 进入pytorch官网&#xff0c;找到安装指令 5. 验证pytorch是否安装成功 四、…

GPT-5倒计时:2025年AI海啸来袭,机器与人类对话临近

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 人工智能&AIGC术语100条 Shelly聊AI-重…

ADC采集的电压误差比较大怎么办?

目录 1、电源噪声和电源不稳定 2、参考电压不稳定或不准确 3、采样电路设计不合理 4、温度影响 5、软件校准和误差修正 6、时钟抖动 ADC&#xff08;模数转换器&#xff09;采集的电压误差可能会受到多种因素的影响&#xff0c;要有效减少误差&#xff0c;需要从硬件和软…

【单片机】MSP430MSP432入门

文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP&#xff0c;所以把之前卸载的CCS给装回来了&#xff0c;手头也还有之前电赛剩下的MSP430和MSP432的板子&#xff0c;由于年代久远&#xff0c;想着花点…

大模型自动提示优化(APO)综述笔记

自大型语言模型&#xff08;LLMs&#xff09;出现以来&#xff0c;提示工程一直是各种自然语言处理&#xff08;NLP&#xff09;任务中激发期望响应的关键步骤。然而&#xff0c;由于模型的快速进步、任务的多样性和相关最佳实践的变化&#xff0c;提示工程对最终用户来说仍然是…

SOME/IP-SD -- 协议英文原文讲解6

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计&#xff0c;采用四个并行分支提取不同维度的信息相比于…

Springboot快速接入豆包大模型

背景 突然接到上面的通知&#xff0c;想要在系统里面接入各大模型的能力&#xff0c;我这边随机选了个豆包&#xff0c;然后快速对接了一下&#xff0c;很顺利&#xff0c;一把过&#xff0c;现在文档的快速入门还是很ok的&#xff0c;在此记录一下过程&#xff0c;给宝子们参考…

DeepSeek的安全挑战和安全控制措施

本研究探讨了与 DeepSeek 相关的安全风险&#xff0c;为安全和风险管理领导者提供了有针对性的策略来缓解这些威胁&#xff0c;并提供了可行的措施来加强基于现有安全控制的 AI 保护。 主要发现 了解 DeepSeek 当前的安全状况。DeepSeek的采用激增暴露了关键的安全挑战&…

力扣-贪心-968 监控二叉树

思路 用true和false作为放置了摄像头&#xff0c;会有局限&#xff0c;就是没法判断以下情况 所以要用数字代表三种状态 2&#xff1a;有覆盖1&#xff1a;有摄像头0&#xff1a;无覆盖 两个节点都被覆盖时&#xff0c;要返回0 两个节点有一个无覆盖就要返回1 两个…

计算机毕业设计SpringBoot+Vue.js智慧社区(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…

Chat2File - DeepSeek Chat 导出助手:解决deepseek对话导出问题,提升开发效率

Chat2File - DeepSeek Chat 导出助手&#xff1a;解决deepseek对话导出问题&#xff0c;提升开发效率 大家好久不见&#xff0c;最近这段时间一直在开发一些项目&#xff0c;今天给大家带来一款刚在 Edge 成功上线的实用插件 ——Chat2File - DeepSeek Chat 导出助手。作为开发…

MEMS光纤麦克风传感器特色解析

概念原理 光纤麦克风是利用光纤作为传光介质和传感元件&#xff0c;将声音信号转换为光信号&#xff0c;并通过对光信号的检测和处理来获取声音信息的设备。它区别于传统基于电信号转换的麦克风&#xff0c;利用光的特性来实现声音的传感与传输。  原理&#xff1a;声音引起敏…

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09;针对全桥LLC拓扑&#xff0c;利用Matlab软件搭建模型&#xff0c;分别对轻载&#xf…

山东大学软件学院ai导论实验之生成对抗网络

目录 实验目的 实验代码 实验内容 实验结果 实验目的 基于Pytorch搭建一个生成对抗网络&#xff0c;使用MNIST数据集。 实验代码 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data…

入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火&#xff0c;这个行业因为国家政策趋势正在大力发展&#xff0c;大有可为!但很多人对网络安全工程师还是不了解&#xff0c;不知道网…

【论文解读】《C-Pack: Packed Resources For General Chinese Embeddings》

论文链接&#xff1a;https://arxiv.org/pdf/2309.07597 本论文旨在构建一套通用中文文本嵌入的完整资源包——C-Pack&#xff0c;解决当前中文文本嵌入研究中数据、模型、训练策略与评测基准缺失的问题。论文主要贡献体现在以下几个方面&#xff1a; 大规模训练数据&#xf…

【操作系统、数学】什么是排队论?如何理解排队论?排队论有什么用处?Queueing Theory?什么是 Little’s Law?

排队论&#xff08;Queueing Theory&#xff09;是研究系统中排队现象的数学理论&#xff0c;旨在分析资源分配、服务效率及等待时间等问题。它广泛应用于计算机科学、通信网络、交通规划、工业工程等领域。 【下文会通过搜集的资料&#xff0c;从各方面了解排队论&#xff0c…