33.异步FIFO IP核的配置、调用与仿真

(1)异步FIFO的配置过程:

ps:异步fifo相比较同步fifo少一个实际深度

(2)异步FIFO的调用:

module dcfifo
(input               wr_clk          ,input               rd_clk          ,input       [7:0]   data_in         ,input               wr_en           ,input               rd_en           ,output      [15:0]  data_out        ,output              full            ,output              empty           ,output      [6:0]   rd_data_count   ,output      [7:0]   wr_data_count     
);dcfifo_8x256_to_16x128 dcfifo_8x256_to_16x128_inst (.wr_clk                   (wr_clk         ),                // input wire wr_clk.rd_clk                   (rd_clk         ),                // input wire rd_clk.din                      (data_in        ),                      // input wire [7 : 0] din.wr_en                    (wr_en          ),                  // input wire wr_en.rd_en                    (rd_en          ),                  // input wire rd_en.dout                     (data_out       ),                    // output wire [15 : 0] dout.full                     (full           ),                    // output wire full.empty                    (empty          ),                  // output wire empty.rd_data_count            (rd_data_count  ),  // output wire [6 : 0] rd_data_count.wr_data_count            (wr_data_count  )  // output wire [7 : 0] wr_data_count
);endmodule

(3)异步FIFP仿真文件代码:

`timescale 1ns / 1psmodule dcfifo_tb;reg         wr_clk          ;
reg         rd_clk          ;
reg [7:0]   data_in         ;
reg         wr_en           ;
reg         rd_en           ;
reg         reset_n         ;
reg [1:0]   cnt             ;
reg         full_reg0       ;
reg         full_reg1       ;wire [15:0] data_out        ;
wire        full            ;
wire        empty           ;
wire [6:0]  rd_data_count   ;
wire [7:0]  wr_data_count   ;//50MHz读时钟initial wr_clk = 1'd1;always #10 wr_clk = ~wr_clk;//25MHz写时钟   initial rd_clk = 1'd1;always #20 rd_clk = ~rd_clk;//复位信号initial begin reset_n <= 1'd0;#15;reset_n <= 1'd1;#100_000;$stop;end//cnt信号    always@(posedge wr_clk or negedge reset_n)if(!reset_n)cnt <= 2'd0;else if(cnt == 2'd3)cnt <= 2'd0;else    cnt <= cnt + 2'd1;//wr_en信号always@(posedge wr_clk or negedge reset_n)if(!reset_n)wr_en <= 1'd0;else if((cnt == 2'd3) && (rd_en == 1'd0))wr_en <= 1'd1;else wr_en <= 1'd0;//data_in信号always@(posedge wr_clk or negedge reset_n)if(!reset_n)data_in <= 8'd0;else if((data_in == 8'd255) && (wr_en == 1'd1))data_in <= 8'd0;else if(wr_en == 1'd1)data_in <= data_in + 8'd1;else    data_in <= data_in;//full_reg0、full_reg1信号设计always@(posedge rd_clk or negedge reset_n)if(!reset_n)beginfull_reg0 <= 1'd0;full_reg1 <= 1'd0;      endelse beginfull_reg0 <= full;full_reg1 <= full_reg0;end//rd_en信号always@(posedge rd_clk or negedge reset_n)if(!reset_n)rd_en <= 1'd0;else if(full_reg1 && (wr_en == 1'd0))rd_en <= 1'd1;else if(empty)rd_en <= 1'd0;else rd_en <= rd_en;dcfifo dcfifo_inst
(.wr_clk          (wr_clk  ),.rd_clk          (rd_clk  ),.data_in         (data_in ),.wr_en           (wr_en   ),.rd_en           (rd_en   ),.data_out        (data_out     ),.full            (full         ),.empty           (empty        ),.rd_data_count   (rd_data_count),.wr_data_count   (wr_data_count)  
);endmodule

(4)仿真波形:

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

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

相关文章

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

防火墙NAT和智能选路实验详解(华为)

目录 实验概述实验拓扑实验要求要求一要求二要求三要求四要求五 实验概述 从我上面一个博客能够了解到NAT和防火墙选路原理 ——>防火墙nat和智能选路&#xff0c;这一章我通过实验来详解防火墙关于nat和智能选路从而能熟练使用和配置防火墙&#xff0c;这里使用的是华为US…

《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

期刊&#xff1a;TPAMI 年份&#xff1a;2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文&#xff0c;即单个图像中像素之间的依赖关系。然而&…

Dify中高质量索引模式时,通过线程池处理chunk过程

本文主要介绍了Dify中高质量索引模式时,如何通过线程池执行器来处理chunk的过程。源码位置:dify\api\core\indexing_runner.py\IndexingRunner._load。核心思想:假设一个数据集中有一个文档,该文档可以拆分为12个段(segment)。如果chunk_size=10,那么分为2批提交给线程池…

Mojo语言的运用

1.Mojo语言概述 1.1什么是Mojo语言&#xff1f; Mojo语言是一种现代的动态编程语言&#xff0c;主要用于Web开发。它结合了多种语言的优点&#xff0c;如JavaScript、Perl和Lua&#xff0c;旨在为开发者提供&#xff1a; 简洁的语法&#xff1a;易于学习和使用&#xff0c;适…

Azcopy Sync同步Azure文件共享

Azcopy Sync同步Azure文件共享 一、工作原理二、安装 AzCopy在 Windows 上在 Linux 上 三、资源准备1. 创建源和目标 Azure 存储账户2. 创建源和目标文件共享3. 确定路径4. 生成源和目的存储账户的共享访问签名&#xff08;SAS&#xff09;令牌配置权限示例生成的 URL 四、Azco…

【鸿蒙学习笔记】尺寸设置・width・height・size・margin・padding・

官方文档&#xff1a;尺寸设置 目录标题 width&#xff1a;设置组件自身的宽度height&#xff1a;设置组件自身的高度size&#xff1a;设置高宽尺寸margin&#xff1a;设置组件的外边距padding&#xff1a;设置组件的内边距 width&#xff1a;设置组件自身的宽度 参数为Length…

【Linux杂货铺】3.程序地址空间

1.程序地址空间的引入 fork(&#xff09;函数在调用的时候子如果是子进程则返回0&#xff0c;如果是父进程则返回子进程的pid&#xff0c;在代码中我们分别在子进程和父进程读取全局变量g_val的时候居然出现了俩个不同的值。如下&#xff1a; #include<stdio.h> #includ…

【Linux】软件管理工具 yum

文章目录 概念搜索&#xff1a;yum list安装&#xff1a;yum install卸载&#xff1a;yum remove 概念 在Linux下安装软件&#xff0c;可以下载到程序的源代码&#xff0c;进行编译得到可执行程序&#xff0c;另外这些软件还有依赖其它工具的问题&#xff0c;还得下载编译这些依…

底软驱动 | Linux字符设备驱动开发基础

文章目录 知识整理--Linux字符设备驱动开发基础字符设备基础1从一个最简单的模块源码说起字符设备驱动工作原理字符设备驱动代码实践--给空模块添加驱动壳子应用程序如何调用驱动 字符设备基础2添加读写接口&#xff08;应用和驱动之间的数据交换&#xff09;驱动中如何操控硬件…

WIFI连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下&#xff0c;如何使用阿里云物联网平台&#xff0c;创建一个简单的远程控制小灯示例。 1 实现功能…

整洁架构SOLID-里氏替换原则(LSP)

文章目录 定义LSP继承实践正例反例 LSP软件架构实践反例 小结 定义 1988年&#xff0c;Barbara Liskov在描述如何定义子类型时写下了这样一段话&#xff1a; 这里需要的是一种可替换性&#xff1a;如果对于每个类型是S的对象o1都存在一个类型为T的对象o2&#xff0c;能使操作T…

Meta MobileLLM

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

鸿蒙开发—基础组件

目录 安装介绍 1.Text 2.Image 3.Button 4.Slider 安装介绍 该文章介绍鸿蒙开发中的部分基础组件&#xff0c;适用于鸿蒙开发的初学者。 1.软件下载地址&#xff1a;DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 (huawei.com) 2.安装DevEco Studio&#xff1a;…

最新版智能修图-中文luminar ai 1.55(13797) 和 neo1.20,支持m芯片和intel芯片(绝对可用)

Luminar AI for macOS 完整版本 这个程序是第一个完全由人工智能驱动的图像编辑器。有了它&#xff0c;创建引人注目的照片是有趣的&#xff0c;令人惊讶的容易。它是一个独立的照片编辑器和macOS插件。 Luminar AI for macOS 轻轻地塑造和完善一个肖像打造富有表现力的眼睛…

增加内容曝光、获得更多粉丝 - 「评论发红包」功能

目录 博客发放以及领取红包规则 1. 发布博客评论社区红包规则&#xff1a; 2. 博客评论红包领取规则 如何发红包评论&#xff1f; 发布红包评论益处 不知道大家有没有注意到&#xff0c;我们的「评论发红包」功能已经上线啦&#xff5e; 现在几乎所有的内容 -- 博客&…

TCP连接的三次握手和断开的四次挥手

TCP连接的建立过程通过三次握手完成&#xff0c;‌而连接的关闭过程则通过四次挥手完成。‌ 三次握手&#xff1a;‌这是TCP连接建立的过程&#xff0c;‌主要目的是确保双方都准备好进行数据传输。‌具体步骤如下&#xff1a;‌ 客户端向服务器发送一个SYN报文&#xff0c;‌请…

独立开发者系列(24)——使用redis

&#xff08;一&#xff09;REdis的使用原理 在早期的网站的时候&#xff0c;如果系统本身功能不是很复杂&#xff0c;比如就是内部的几个用户使用&#xff0c;而且基本就是汇报一点简单的设备维护信息&#xff0c;还有日常公告。完全可以不使用数据库&#xff0c;直接使用jso…

IoTDB 集群高效管理:一键启停功能介绍

如何快速启动、停止 IoTDB 集群节点的功能详解&#xff01; 在部署 IoTDB 集群时&#xff0c;对于基础的单机模式&#xff0c;启动过程相对简单&#xff0c;仅需执行 start-standalone 脚本来启动 1 个 ConfigNode 节点和 1 个 DataNode 节点。然而&#xff0c;对于更高级的分布…

02:项目二:感应开关盖垃圾桶

感应开关盖垃圾桶 1、PWM开发SG901.1、怎样通过C51单片机输出PWM波&#xff1f;1.2、通过定时器输出PWM波来控制SG90 2、超声波测距模块的使用3、感应开关盖垃圾桶 需要材料&#xff1a; 1、SG90舵机模块 2、HC-SR04超声波模块 3、震动传感器 4、蜂鸣器 5、若干杜邦线 1、PWM开…