32.同步FIFO-IP核的调用

news2024/9/22 21:28:52

        (1)FIFO(First In First Out,即先进先出),是一种数据缓冲器,用来实现数据先入先出的读写方式。

        (2)FIFO存储器主要是作为缓存,应用在同步时钟系统和异步时钟系统中,在很多的设计中都会被使用,比如:多比特数据做跨时钟域处理、前后带宽不同步等都用到了FIFO。

       (3)FIFO根据读写时钟是否相同,可以分为SCFIFO(同步FIFO)和DCFIFO(异步FIFO)。

 (4)scfifo配置过程:

(5)scfifo的调用:

module scfifo
(
    input clk               ,
    input reset_n           ,
    input [7:0]data_in      ,
    input wr_en             ,
    input rd_en             ,
    
    output [7:0]data_out    ,
    output full             ,
    output empty            ,
    output [7:0]data_count       

    );
    
    
scfifo_8x256 scfifo_8x256_inst (
    .clk            (clk           ),                // input wire clk
    .srst           (~reset_n      ),              // input wire srst
    .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 [7 : 0] dout
    .full           (full      ),              // output wire full
    .empty          (empty     ),            // output wire empty
    .data_count     (data_count)                // output wire [7 : 0] data_count
); 
    
    
    
    
    
    
endmodule

(6)仿真文件代码:

`timescale 1ns / 1ps

module scfifo_tb;

reg                     clk         ;
reg                     reset_n     ;
reg         [7:0]       data_in     ;
reg                     wr_en       ;
reg                     rd_en       ;

reg         [1:0]       cnt         ;

wire        [7:0]       data_out    ;
wire                    full        ;
wire                    empty       ;
wire        [7:0]       data_count  ;


scfifo scfifo_inst
(
   .clk        (clk       )     ,
   .reset_n    (reset_n   )     ,
   .data_in    (data_in   )     ,
   .wr_en      (wr_en     )     ,
   .rd_en      (rd_en     )     ,
                          
   .data_out   (data_out  )     ,
   .full       (full      )     ,
   .empty      (empty     )     ,
   .data_count (data_count)      

    );
    
    initial clk = 1'd1;
    always #10 clk = ~clk;
    
    initial begin 
        reset_n <= 1'd0;
        #21;
        reset_n <= 1'd1;
        #100_000;
        $stop;
    end
    
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            cnt <= 2'd0;
        else if(cnt == 2'd3)
            cnt <= 2'd0;
        else 
            cnt <= cnt + 2'd1;
            
    always@(posedge 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;
            
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            data_in <= 8'd0;
        else if(data_in == 8'd255 && wr_en)
            data_in <= 8'd0;
        else if(wr_en  && (!full))
            data_in <= data_in + 8'd1;
        else 
            data_in <= data_in;
            
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            rd_en <= 1'd0;
        else if(full && wr_en == 1'd0)
            rd_en <= 1'd1;
        else if(empty)
            rd_en <= 1'd0;
        else 
            rd_en <= rd_en;

endmodule

(7)仿真波形:

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

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

相关文章

深入解析发生 OOM 的三大场景

深入解析 OOM 的三大场景 什么是 OOM&#xff1f;一、堆内存溢出 ( Heap OOM )原因分析解决方案 二、栈内存溢出&#xff08;Stack OOM&#xff09;原因分析解决方案 三、方法区内存溢出&#xff08;Metaspace OOM&#xff09;原因分析解决方案 在Java应用程序开发中&#xff0…

CORDIC Translate

随便记录一下下&#xff1a; Cordic IP核使用说明以及避坑记录-CSDN博客 本次只用到了Translate&#xff0c;记录一下自己遇到的坑坑 实际配置&#xff1a; timescale 1ns / 1nsmodule cordic_tb();reg clk;wire m_axis_dout_tvalid;reg s_axis_cartesian_tvalid 0;wire [31…

三分钟了解什么是消费返利

消费返利作为一种创新的营销手段&#xff0c;不仅增强了消费者的购物体验&#xff0c;还为电商平台及商家带来了更多的用户粘性和复购率。什么是消费返利&#xff0c;其背后的运作机制又是如何的呢&#xff1f; 返利的定义: 返利即是一种消费激励措施&#xff0c;当消费者在指…

网络安全防御 -- 防火墙安全策略用户认证综合实验

实验拓扑&#xff1a; 实验目的&#xff1a; 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网。 3、办公区设备10.0.2.10不允许访问DM…

ns3-gym入门(一):代码结构和简单例子

ns3-gym真的好难学&#xff0c;网上可以参考的例子也太少了&#xff0c;如果有用这个做路由的麻烦联系我交流一下吧&#xff0c;太痛苦了 一、安装 之前的文章已经提到过了&#xff0c;这里不赘述了 二、运行简单的例子 用两个终端的方式运行感觉更加直观&#xff0c;但是仍然…

白嫖3个域名用cloudeflare托管

这也是看到别的up主分享得到的&#xff0c;我也分享一下给你们。 浏览器打开官网 https://register.us.kg/ 然后注册 根据信息填地址电话可以去另一个网页生成&#xff0c;名字姓名之类的可以填自己喜欢的&#xff0c;注意一下&#xff0c;我尝试了一下谷歌的邮箱&#xff0…

webstorm问题解决:无法识别 @

问题解决tsconfig.json 问题 本地的 vite.config.ts 已经配置 路径 但是&#xff0c;我用webstorm 上识别不了 解决 新增文件tsconfig.json&#xff0c;添加 baseUrl 和 paths 的配置&#xff0c;以告诉 TypeScript 和 WebStorm 如何解析路径别名 tsconfig.json {&quo…

以设备为核心的状态自动采集、人工运维和预测性维护为一体的智能管理系统

中服云设备全生命周期管理系统充分利用物联网、人工智能、机器学习、大数据等新一代技术&#xff0c;实现对企业生产设备从采购、安装、调试、使用、维护、维修、改造、更新直到报废全生命周期的智能化、数字化、可视化的实时管控&#xff0c;支持设备运行状态的自动采集和人工…

SketchUp Pro 2023: 强大的跨平台建模软件

SketchUp Pro 2023 是一款广受建筑设计师、工程师和创意设计师欢迎的专业建模软件&#xff0c;它结合了直观的用户界面和强大的功能&#xff0c;为用户提供了创造、设计和分享他们的想法的理想平台。无论是初学者还是经验丰富的专业人士&#xff0c;SketchUp Pro 2023 都能够满…

JVM是如何管理内存的?图文详解GC垃圾回收算法

前言&#xff1a;在C/C中对于变量的内存空间一般都是由程序员手动进行管理的&#xff0c;往往会伴随着大量的 malloc 和 free 操作&#xff0c;常常会有很多问题困扰开发者&#xff0c;这个代码会不会发生内存泄漏&#xff1f;会不会重复释放内存&#xff1f;但是在Java开发中我…

python作业二

# 二进制转化为十进制 num input("num:")def binaryToDecimal(binaryString):he 0length len(binaryString)for i in range(length):he int(binaryString[i]) * 2 ** (length - i - 1)return heprint(binaryToDecimal(num))代码运行如下&#xff1a; import math…

数据结构4.0——串的定义和基本操作

串的定义(逻辑结构) 串&#xff0c;即字符串(String)是由零个或多个字符组成的有序数列。 一般记为Sa1a2....an(n>0) 其中&#xff0c;S是串名&#xff0c;单引号括起来的字符序列是串的值;ai可以是字母、数字或其他字符&#xff1b;串中字符的个数n称为串的长度。n0时的…

印尼Facebook直播网络需要达到什么要求?

在全球化浪潮的推动下&#xff0c;海外直播正受到企业、个人和机构的广泛关注和青睐。无论是用于营销、推广还是互动&#xff0c;海外直播为各种组织提供了更多机会和可能性。本文将探讨在进行印尼Facebook直播前&#xff0c;需要满足哪些网络条件以确保直播的质量和用户体验。…

Codeforces Round 957 (Div. 3) F. Valuable Cards

题目 #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long longconst int maxn 1e6 5, inf 1e18, maxm 4e4 5…

容器docker 架构命令案例

文章目录 前言一、docker1.1 为什么有docker1.2 docker架构1.3 docker 安装1.4 docker中央仓库1.5 docker 基本指令1.6 docker数据卷&#xff0c;挂载例&#xff1a;nginx 数据卷挂载例&#xff1a;mysql 本地持久化 1.7 镜像制作镜像结构dockerfile基础指令容器生成镜像 1.8 d…

如何使用Github Page搭建个人网站【踩坑实录多图预警】

读前提示 教程链接&#xff1a;使用GitHub Page创建个人网站和博客 | GitHub 中文社区 点进网站就是非常详细的步骤介绍&#xff0c;基本按部就班来跟着做就OK了&#xff0c;结果不是很熟悉操作&#xff0c;踩了几个坑还是顺利搞定了。 踩坑后的建议&#xff1a;一定要先完成…

百元不入耳耳机哪款好?强推这五款宝藏产品

如今无线蓝牙耳机是年轻人学习通勤、健身娱乐的标配&#xff0c;但普及率极高的入耳式耳机却存在堵塞耳孔、影响外界感知等不足&#xff0c;而开放式耳机的出现恰好弥补了这些不足&#xff0c;受到了越来越多人的欢迎。但要从各种品牌、各类型号的开放式耳机中选出一款最适合自…

数学建模·灰色关联度

灰色关联分析 基本原理 灰色关联分析可以确定一个系统中哪些因素是主要因素&#xff0c;哪些是次要因素&#xff1b; 灰色关联分析也可以用于综合评价&#xff0c;但是由于数据预处理的方式不同&#xff0c;导致结果 有较大出入 &#xff0c;故一般不采用 具体步骤 数据预处理…

Nginx和Tomcat实现负载均衡群集部署应用

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作时间&…

20240711每日消息队列-------------MQ消息的积压的折磨

目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息&#xff0c;处理业务逻辑&#xff0c;持久化订单和菜品数据&#xff0c;然后将其显示在菜品管理客户端上。 最初我们的用户基数很小&#xff0c;上线后的一段时间内&#xff0c;MQ消息通信还算顺利。 随着用户…