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

news2024/11/14 2:06:12

(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 / 1ps

module 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)begin
            full_reg0 <= 1'd0;
            full_reg1 <= 1'd0;      
        end
        else begin
            full_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.coloradmin.cn/o/1924911.html

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

相关文章

LT_0001_两数之和

一、题目描述 二、代码实现 2.1 暴力枚举 时间复杂度O(N^2) public static int[] towSum(int[] nums, int target) {for (int i 0; i < nums.length; i) {for (int j i 1; j < nums.length; j) {if (nums[i] nums[j] target) {return new int[]{i,j};}}}return n…

github actions方式拉取docker镜像

参考&#xff1a; https://wkdaily.cpolar.cn/archives/gc 注意github actions提供的免费虚拟机空间有限&#xff0c;空间不足会报错&#xff0c;查看大概语句有10来G 我在workflow file里加了df -h 运行查看磁盘情况&#xff1a; 通过pwd命令&#xff0c;可以知道运行目录/ho…

护网HW面试——redis利用方式即复现

参考&#xff1a;https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法&#xff0c;讲到ssrf那么就会讲到配合打内网的redis&#xff0c;本篇就介绍redis的打法。 未授权 原理&#xff1a; Redis默认情况下&#xff0c;会绑定在0.0.0.0:6379&#xff0c;如果没有采用相关…

自然语言处理(NLP)——法国工程师IMT联盟 期末考试题

1. 问题1 &#xff08;法语&#xff09;En langue arabe lcrasante majorit des mots sont forms par des combinaisons de racines et de schmes. Dans ce mcanisme... &#xff08;英语&#xff09;In Arabic language the vast majority&#xff08;十之八九&#xff09; of…

JAVA自定义注释

interface 声明 package test; public interface InProgress { } InProgress public void calculateInterest(float amount, float rate) { } 带成员 public interface TODO {String value(); } InProgress //只有成员变量名有value时&#xff0c;值有给value赋值时可以这…

水的几个科学问题及引发的思考

水的几个科学问题及引发的思考 1、两个相同的容器A和B&#xff0c;分别装有同质量的水&#xff0c;然后&#xff0c;在A容器中加入水&#xff0c;在B容器中加入冰&#xff0c;如果加入水和冰的质量相同。问&#xff0c;容器B的水位将与容器A的水位相同吗&#xff08;假设冰未融…

Web 性能入门指南-1.5 创建 Web 性能优化文化的最佳实践

最成功的网站都有什么共同点&#xff1f;那就是他们都有很强的网站性能和可用性文化。以下是一些经过验证的有效技巧和最佳实践&#xff0c;可帮助您建立健康、快乐、值得庆祝的性能文化。 创建强大的性能优化文化意味着在你的公司或团队中创建一个如下所示的反馈循环&#xff…

永磁同步电机控制算法--基于 SVM 的无磁链环 DTC

永磁同步电机无磁链环 DTC 通过控制定子磁链交轴分量来直接控制转矩&#xff0c;不再要求控制磁链幅值恒定&#xff0c;省去了传统 DTC 中的磁链环&#xff0c;不仅转矩响应更快&#xff0c;有效抑制了转矩脉动&#xff0c;而且提高了电机功率因数。但无磁链环 DTC 方案仍采用传…

探索4D毫米波雷达和摄像头在自动驾驶中的潜力

随着自动驾驶技术的快速发展&#xff0c;关于各种传感器的必要性&#xff0c;尤其是LiDAR&#xff08;激光雷达&#xff09;与毫米波雷达结合摄像头的作用&#xff0c;激发了激烈的讨论。在这篇博客中&#xff0c;我们将探讨4D毫米波雷达和摄像头的组合是否可能成为自动驾驶车辆…

python爬虫网页解析模块及测试案例详解

xpath模块 xpath模块基本使用方法 测试网页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><title>Title</title> </head> <body><ul><li id"l1" class"c1&q…

R语言安装devtools包失败过程总结

R语言安装devtools包时&#xff0c;遇到usethis包总是安装失败&#xff0c;现总结如下方法&#xff0c;亲测可有效 一、usethis包及cli包安装问题 首先&#xff0c;Install.packages("usethis")出现如下错误&#xff0c;定位到是这个cli包出现问题 载入需要的程辑包…

GESP CCF C++ 四级认证真题 2024年6月

第 1 题 下列代码中&#xff0c;输出结果是&#xff08; &#xff09; A. 12 24 24 12 B. 24 12 12 24 C. 12 12 24 24 D. 24 24 12 12 第 2 题 下面函数不能正常执行的是&#xff08;&#xff09; A. B. C. D. 第 3 题 下面程序…

博客前端项目学习day01

这里写自定义目录标题 登录创建项目配置环境变量&#xff0c;方便使用登录页面验证码登陆表单 在VScode上写前端&#xff0c;采用vue3。 登录 创建项目 检查node版本 node -v 创建一个新的项目 npm init vitelatest blog-front-admin 中间会弹出询问是否要安装包&#xff0c…

OZON夏季热卖产品有哪些,OZON夏季热卖新品

OZON平台在夏季的热卖产品种类繁多&#xff0c;涵盖了多个领域&#xff0c;主要包括但不限于以下几个方面&#xff0c;接下来看看OZON夏季热卖产品有哪些&#xff0c;OZON夏季热卖新品&#xff01;Top1 运动套装 Костюм спортивный Victorias Secret 商品id…

AI绘画Stable Diffusion 自制素材工具: layerdiffusion插件—透明背景生成工具

大家好&#xff0c;我是设计师阿威 今天给大家分享一款AI绘画的神级插件—LayerDiffusion。 Layerdiffusion是一个用于stable-diffusion-webui 的透明背景生成&#xff08;不是生成图再工具扣图&#xff0c;是直接生成透明背景透明图像&#xff09;插件扩展&#xff0c;它可以…

SpringBoot整合Java Mail实现发送邮件

SpringBoot整合Java Mail实现发送邮件 实现 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>发送邮件配置 这里使用qq邮箱发送邮件&#xff0c;需要…

TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

重要工具介绍 TensorBoard&#xff1a; 是一个TensorFlow提供的强大工具&#xff0c;用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。 TensorBoard 简介 TensorBoard是TensorFlow提供的一个可视化工具&#xff0c;用于&#x…

visual studio开发C++项目遇到的坑

文章目录 1.安装的时候&#xff0c;顺手安装了C模板&#xff0c;导致新建项目执行出问题2.生成的exe&#xff0c;打开闪退问题3.项目里宏的路径不对&#xff0c;导致后面编译没有输出4. vs编译ui&#xff0c;warning跳过&#xff0c;未成功5.vs编译.h&#xff0c;warning跳过&a…

python自动化之用flask校验接口token(把token作为参数)

用到的库&#xff1a;flask 实现效果: 写一个接口&#xff0c;需要token正确才能登录 代码&#xff1a; # 导包 from flask import Flask,request,jsonify,json # 创建一个服务 appFlask(__name__) # post请求&#xff0c;路径&#xff1a;/query app.route(/query, met…

spring boot(学习笔记第十三课)

spring boot(学习笔记第十三课) Spring Security的logout&#xff0c;传统后端开发模式和前后端分离模式的不同&#xff0c;invalidateHttpSession不好用&#xff0c;bug&#xff1f; 学习内容&#xff1a; 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能 1.…