fpga 同步fifo

FIFO
基础知识

FIFO(First In First Out,即先入先出),是一种数据缓存器,用来实现数据先入先出
的读写方式。在 FPGA 或者 ASIC 中使用到的 FIFO 一般指的是对数据的存储具有先入先出
特性的缓存器,常被用于多比特 数据跨时钟域的转换、读写数据带宽不同步等场合。
FIFO 本质上是由 RAM 加读写控制逻辑构成的一种先进先出的数据缓冲器,其与普通
存储器 RAM 的 区别在于 FIFO 没有外部读写地址线,使用起来非常简单,但 FIFO 只能顺
序写入数据,并按顺序读出数 据,其数据地址由内部读写指针自动加 1 完成,不能像普通
存储器那样可以由地址线决定读取或写入某个指定的地址,不过也正是因为这个特性,使得
FIFO 在使用时并不存在像 RAM 那样的读写冲突问题。
根据 FIFO 工作的时钟域,可以将 FIFO 分为同步 FIFO 和异步 FIFO。
同步 FIFO 是指读时钟和写时钟 为同一个时钟,在时钟沿来临时同时发生读写操作,常
用于两边数据处理带宽不一致的临时缓冲。
异步 FIFO 是指读写时钟不一致,读写时钟是互相独立的,一般用于数据信号跨时钟阈
处理。
在这里插入图片描述

`timescale 1ns / 1psmodule top_fifo(input   wire  clk  ,input   wire  rst_n,output  wire  tx   );reg [7:0] cunt ;wire      wr_en;
wire [7:0]dout ;
wire      full ;
wire      empyt;
wire      tx   ;
wire      busy ;
reg  [3:0]cunt_t; 
wire      vled ;
always @(posedge clk or negedge rst_n) beginif(!rst_n)cunt<=0;else if(cunt==11) cunt<=cunt;  //只写入一次elsecunt<=cunt+1;    
end
assign wr_en=(cunt<11)?1:0;  //只写入一次
always @(posedge clk) beginif(!rst_n)cunt_t<=0;else if(busy==0&&wr_en==0)begin //tx中state是空闲状态并且wr_en已经写入if(cunt_t==3)               //每次只读出一位所以每次读取只记一次                cunt_t<=cunt_t;elsecunt_t<=cunt_t+1;endelsecunt_t<=0;
end
assign rd_en=(cunt_t==1)?1:0;    //因为要想一位一位读出就需要rd_en每次读一位只制高1个时钟周期
assign vled =(cunt_t==2&dout<10)?1:0;fifo_generator_0 u_fifo (.clk  (clk    ),      // input wire clk.srst (~rst_n ),    // input wire srst 复位信号 高电平复位.din  (cunt   ),      // input wire [7 : 0] din 输入数据.wr_en(wr_en  ),  // input wire wr_en 写使能 .rd_en(rd_en  ),  // input wire rd_en 读使能 .dout (dout   ),    // output wire [7 : 0] dout 读数据.full (full   ),    // output wire full          满标志.empty(empty  )  // output wire empty            空标志
);tx#(/*parameter*/  .CLK_DIV (50_000_000) ,/*parameter*/  .BIT     ( 115200 )   
)u_tx(/*input        */ . clk  (clk  ),/*input        */ . rst_n(rst_n),/*input   [7:0]*/ . data (dout ),/*input        */ . vled (vled ),/*output  reg  */ . tx   (tx   ),. busy (busy )  );endmodule

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

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

相关文章

Spark:大数据处理的强大引擎

一、Spark 简介 Apache Spark 是一个专为大规模数据处理而设计的快速、通用、可扩展的大数据分析计算引擎。它诞生于 2009 年&#xff0c;由美国加州伯克利大学的 AMP 实验室开发&#xff0c;2013 年被纳入 Apache 开源项目&#xff0c;并迅速成为顶级项目。 Spark 被认为是 …

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片&#xff0c;用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统&#xff1f; 无钥匙进入系统具有无钥匙进入并且启动的功能&#xff0c;英文名称是PKE&…

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示&#xff1a; 其中 ABCDE 为前5名的问题种类&#xff0c;其中A问题有124个&#xff08;出现了124次&#xff09; 数据说明&#xff1a; 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值&#xff0c;所有出…

在 Windows 上搭建 FTP 服务器

&#xff08;1&#xff09;搭建 FTP 服务器 &#xff0c;为 windows 开启 ftp功能 &#xff1a;控制面板 -- 》 程序和功能 -- 》 打开或关闭 windows 功能 &#xff0c;勾选 web 管理工具下所有选项 &#xff0c;如下图所示&#xff1a; &#xff08;2&#xff09;添加 FTP 站…

AI开发-计算机视觉库-OpenCV

1 需求 官网&#xff1a;OpenCV - Open Computer Vision Library 2 接口 3 示例 import cv2image cv2.imread("./data/train/1_1.jpg") print(type(image)) 4 参考资料

STM32 ADC --- DMA采样

STM32 ADC — DMA采样 文章目录 STM32 ADC --- DMA采样cubeMX配置重要 &#xff1a;cubeMX配置使用DMA时的一个问题 代码编写一维数组接收数据二维数组接收数据 使用cubeMX生成HAL工程 cubeMX配置 上面红框中选择配置为连续转换模式&#xff0c;即通过HAL_ADC_Start_DMA()函数…

【WPF】Prism学习(二)

Prism Commands 1.命令&#xff08;Commanding&#xff09; 1.1. ViewModel的作用&#xff1a; ViewModel不仅提供在视图中显示或编辑的数据&#xff0c;还可能定义一个或多个用户可以执行的动作或操作。这些用户可以通过用户界面&#xff08;UI&#xff09;执行的动作或操作…

两部手机的IP地址:是否会相同?全面探讨

在数字化时代&#xff0c;手机已成为我们生活中不可或缺的一部分&#xff0c;而IP地址作为手机连接互联网的重要标识&#xff0c;扮演着举足轻重的角色。许多用户可能会好奇&#xff0c;两部手机在连接网络时&#xff0c;它们的IP地址是否会相同&#xff1f;这个问题看似简单&a…

【代码随想录day31】【C++复健】56. 合并区间;738.单调递增的数字

56. 合并区间 遇到了三个问题&#xff0c;一一说来&#xff1a; 1 比较应该按左区间排序&#xff0c;我却写了右区间。由于本题是合并区间&#xff0c;判断是否连续显然是用下一个的左区间与前一个的右区间比较&#xff0c;属于没想清楚了。 2 在写for循环时写成了如下的代码…

uniapp: 微信小程序包体积超过2M的优化方法

一、问题描述 在使用uniapp进行微信小程序开发时&#xff0c;经常会遇到包体积超过2M而无法上传&#xff1a; 二、解决方案 目前关于微信小程序分包大小有以下限制&#xff1a; 整个小程序所有分包大小不超过 30M&#xff08;服务商代开发的小程序不超过 20M&#xff09; 单个…

MySQL Online DDL

文章目录 1. 在线DDL的优势2. 支持的DDL操作3. 在线DDL的原理4. Online DDL的操作流程1. 准备阶段&#xff08;Prepare phase&#xff09;2. 拷贝阶段&#xff08;Copy phase&#xff09;3. 应用阶段&#xff08;Apply phase&#xff09;4. 替换阶段&#xff08;Swap phase&…

【freertos】FreeRTOS时间管理

FreeRTOS时间管理 一、睡眠延时函数1、vTaskDelay2、vTaskDelayUntil3、相对延时与绝对延时对比 二、自定义延时函数1、微秒延时2、毫秒延时 一、睡眠延时函数 1、vTaskDelay \quad 在UCOSIII 中延时函数OSTimeDly()可以设置为三种模式:相对模式、周期模式和绝对模式。在FreeR…

栈相关算法题1|通过栈判断链表是否对称|共享栈入栈出栈|括号匹配|多种括号配对|递归求序列最大值(C)

通过栈判断链表是否对称 设单链表的表头指针为L&#xff0c;data域为字符型&#xff0c;判断该链表的全部n个字符是否中心对称 xyx&#xff0c;xyyx 算法思想 使用栈来判断链表中的数据是否中心对称&#xff0c;让链表的前一半元素依次进栈 在处理链表的后一半元素时&#x…

datawhale11月组队学习 模型压缩技术3:2:4结构稀疏化BERT模型

文章目录 一、 半结构化稀疏性简介二、 代码实践2.1 定义辅助函数2.2 加载模型、tokenizer和数据集2.3 测试baseline模型指标2.4 对BERT-base模型进行半结构稀疏化 《datawhale2411组队学习之模型压缩技术1&#xff1a;模型剪枝&#xff08;上&#xff09;》&#xff1a;介绍模…

Qt中实现旋转动画效果

使用QPropertyAnimation类绑定对应的属性后 就可以给这个属性设置对应的动画 //比如自定义了属性 Q_PROPERTY(int rotation READ rotation WRITE setRotation)//给这个属性加动画效果 //参数1&#xff1a;谁要加动画效果 //参数2&#xff1a;哪个属性加动画效果 //参数3&…

视频流媒体播放器EasyPlayer.js RTSP播放器视频颜色变灰色/渲染发绿的原因分析

EasyPlayer.js RTSP播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0…

SpringBoot+Vue3开发会议管理系统

1 项目介绍 会议管理系统&#xff0c;简化公司内会议方面的流程&#xff0c;提供便捷。实现对会议室的管理、会议的管理、会议预约的管理&#xff0c;三大主流程模块。 系统分为三种角色&#xff0c;分别是员工、管理员和超级管理员。 员工角色功能&#xff1a;查看会议室占…

前端 JS 实用操作总结

目录 1、重构解构 1、数组解构 2、对象解构 3、...展开 2、箭头函数 1、简写 2、this指向 3、没有arguments 4、普通函数this的指向 3、数组实用方法 1、map和filter 2、find 3、reduce 1、重构解构 1、数组解构 const arr ["唐僧", "孙悟空&quo…

Clip结合Faiss+Flask简易版文搜图服务

一、实现 使用目录结构&#xff1a; templates ---upload.html faiss_app.py 前端代码&#xff1a;upload.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&quo…

【鸿蒙开发】第十一章 Stage模型应用组件-任务Mission

目录 1 任务(Mission)管理场景 2 任务&#xff08;Mission&#xff09;与启动模式 2.1 singleton单实例模式 2.2 multiton多实例模式 2.3 specified指定实例模式 3 页面栈及任务链 3.1 页面栈 3.2 任务链 4 设置任务快照的图标和名称 4.1 设置任务快照的图标&#xf…