FPGA/Verilog HDL/AC620零基础入门学习——8*8同步FIFO实验
实验要求
该项目主要实现一个深度为8、位宽为8bit的同步FIFO存储单元。模块功能应包括读控制、写控制、同时读写控制、FIFO满状态、FIFO空状态等逻辑部分。
该项目由一个功能模块和一个testbench组成。其中功能模块的端口信号如下表所示。
提示:
(1)设定一个写地址waddr[2:0],每来一个写使能wr,则写地址加一;
(2)设定一个读地址raddr[2:0],每来一个读使能rd,则读地址加一;
(3)若同时读写,则读写地址不变,只是将输入数据din直接赋值给dout;
(4)FIFO中数据的个数cout=waddr-raddr;
(5)状态指示:
- 当cout=8时,FIFO满(full=1);
- 当cout=6时,FIFO快满了(almost_full=1);
- 当cout=4时,FIFO半满(半空)(half=1);
- 当cout=2时,FIFO快空了(almost_empty=1);
- 当cout=0时,FIFO空(empty=1);
sfifo
module sfifo(clk,rst_n,data_in,wr,rd,full,empty,data_out,sfifo_cnt,half,almost_empty,almost_full);input clk;input rst_n;input [7:0] data_in;input wr;input rd;output full;output empty;output almost_full;output almost_empty;output half;output [7:0] data_out;output [3:0] sfifo_cnt;wire clk;wire rst_n;wire [7:0] data_in;wire wr;wire rd;wire full;wire empty;wire almost_full;wire almost_empty;wire half;reg [7:0] data_out;reg [3:0] sfifo_cnt;`define DEL 1 // Clock-to-output delayreg [7:0] sfifo_ram[0:7]; // sfifo_ram initializedreg [2:0] rd_ptr; // Read pointerreg [2:0] wr_ptr; // Write pointer assign empty = ( sfifo_cnt == 0 ) ? 1 : 0; //Empty signalassign full = ( sfifo_cnt == 8 ) ? 1 : 0; //Full signalassign almost_full = ( sfifo_cnt == 6 ) ? 1 : 0; //Almost Full signalassign almost_empty = ( sfifo_cnt == 2 ) ? 1 : 0;//Almost Empty signalassign half = ( sfifo_cnt == 4 ) ? 1 : 0;//HALF signal// sfifo_cnt changed// 当读有效, cnt--// 当写有效, cnt++always @( posedge clk or negedge rst_n) beginif( ~rst_n ) beginsfifo_cnt <= #`DEL 4'h0;endelse if( rd && ~wr ) beginsfifo_cnt <= #`DEL sfifo_cnt - 1;endelse if( ~rd && wr ) beginsfifo_cnt <= #`DEL sfifo_cnt + 1;endelse begin sfifo_cnt <= sfifo_cnt;endend always @( posedge clk or negedge rst_n) beginif( ~rst_n ) beginrd_ptr <= #`DEL 3'h0;endelse if( rd ) beginif( rd_ptr == 3'h7 ) beginrd_ptr <= #`DEL 3'h0;endelse beginrd_ptr <= #`DEL rd_ptr +1;endendelse beginrd_ptr <= rd_ptr;endend always @( posedge clk or negedge rst_n) beginif( ~rst_n ) beginwr_ptr <= #`DEL 3'h0;endelse if( wr ) beginif( wr_ptr == 3'h7 ) beginwr_ptr <= #`DEL 3'h0;endelse beginwr_ptr <= #`DEL wr_ptr +1;endendelse beginwr_ptr <= wr_ptr;endend always @( posedge clk or negedge rst_n) beginif( ~rst_n ) begindata_out <= #`DEL 8'h0;endelse if( wr ) beginsfifo_ram[wr_ptr] <= #`DEL data_in;endelse if( rd ) begin data_out <= #`DEL sfifo_ram[rd_ptr];endend endmodule
sfifo_test
module sfifo_test();reg clk;reg rst_n;reg [7:0] data_in;reg wr;reg rd;wire full;wire empty;wire almost_full;wire almost_empty;wire half;wire [7:0] data_out;wire [3:0] sfifo_cnt;initial beginrst_n=1;clk=0;wr=0;rd=0;data_in=0;#1 rst_n=0;#5 rst_n=1;#3 wr=1;#5 rd=1;#5 rd=0;#5 wr=0;#5 wr=1;#10 rd=1;#10 rd=0;endalways begin#5 clk=~clk;endalways @(posedge clk or negedge rst_n) beginif (~rst_n) begindata_in<=0;wr<=0;rd<=0;endelse begindata_in<=$random;endendinitial begin$dumpfile ("F:/Robei/practice/prac_07_sfifo/sfifo_test.vcd");$dumpvars;#5000;$stop;end//---Module instantiation---sfifo sfifo1(.clk(clk),.rst_n(rst_n),.data_in(data_in),.wr(wr),.rd(rd),.full(full),.empty(empty),.almost_full(almost_full),.almost_empty(almost_empty),.half(half),.data_out(data_out),.sfifo_cnt(sfifo_cnt));endmodule
实验结果
整体波形
读
写
同时读写
相关文章:
FPGA/Verilog HDL/AC620零基础入门学习——8*8同步FIFO实验
实验要求 该项目主要实现一个深度为8、位宽为8bit的同步FIFO存储单元。模块功能应包括读控制、写控制、同时读写控制、FIFO满状态、FIFO空状态等逻辑部分。 该项目由一个功能模块和一个testbench组成。其中功能模块的端口信号如下表所示。 提示: (1&a…...
shell脚本
shell函数 函数分类: 系统函数 自定义函数 常用系统函数: basename 从指定路径中获取文件名 dirname 从指定路径中获取目录名,去掉文件名 自定义函数 # 函数的定义 函数名 () { 命令 # 使用$n获取函数的参数 [return 返回…...
不部署服务端调用接口,前端接口神器json-server
简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 API,尤其适合前端接口测试使用。 只需指定一个 json 文件作为 api 的数据源即可,使用起来非常方便,30秒入门,基本上有手就行。 进阶…...
国产化:复旦微JFM7K325T +华为海思 HI3531DV200 的综合视频处理平台
板卡概述 TES714 是自主研制的一款 5 路 HD-SDI 视频采集图像处理平台,该平台采用上海复旦微的高性能 Kintex 系列 FPGA 加上华为海 思的高性能视频处理器 HI3531DV200 来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强大的神经网络引擎…...
Ceph入门到精通- stderr raise RuntimeError(‘Unable to create a new OSD id‘)
/bin/podman: stderr raise RuntimeError(Unable to create a new OSD id) podman ps |grep osd.0 podman stop osd.0 容器id 重新添加osd.0 集群目录 cd /var/lib/ceph/e8cde810-e4b8-11ed-9ba8-98039b976596/1109 ls1110 rm -rf osd.01111 ceph orch daemon add osd…...
AWSFireLens轻松实现容器日志处理
applog应用程序和fluent-bit共享磁盘,日志内容是json格式数据,输出到S3也是JSON格式 applog应用部分在applog目录: Dockerfile文件内容 FROM alpine RUN mkdir -p /data/logs/ COPY testlog.sh /bin/ RUN chmod 777 /bin/testlog.sh ENTRYP…...
Java程序设计入门教程--案例:自由落体
程序模拟物体从10000米高空掉落后的反弹行为。 球体每落地一次,就会反弹至原高度的一半。按用户输入的弹跳次数,计算球体每次弹跳的高度。 实现过程: 1. 新建项目; 2. 接收 用户输入的弹跳次数: (1&#…...
Qt音视频开发44-本地摄像头推流(支持分辨率/帧率等设置/实时性极高)
一、前言 本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果不支持那就歇菜&a…...
SpringCloud学习(七)——统一网关Gateway
文章目录 1. 网关介绍2. 网关搭建2.1 引入依赖2.2 创建启动类2.3 编写配置2.4 测试 3. 路由断言工厂4. 路由过滤器4.1 过滤器配置4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 网关介绍 到现在,我们可以使用Nacos对不同的微服务进行注册并管理配置文件&am…...
《花雕学AI》31:ChatGPT--用关键词/咒语/提示词Prompt激发AI绘画的无限创意!
你有没有想过用AI来画画?ChatGPT是一款基于GPT-3的聊天模式的AI绘画工具,它可以根据你输入的关键词/咒语/提示词Prompt来生成不同风格和主题的画作。Prompt是一些简短的文字,可以用来指导ChatGPT的创作过程。在这篇文章中,我将展示…...
计算机组成原理9控制单元的结构
9.1操作命令的分析 取值周期间址周期执行周期中断周期 取指周期数据流 PC存放下条指令的地址给MAR访问存储器相应单元,将数据取出来送给MDR寄存器,MDR取出来的内容送给IR指令寄存器,然后对指令进行译码,把指令的操作码部分取出…...
MySQL数据备份和恢复
MySQL数据备份和恢复 数据备份 mysqldump是MySQL数据库备份工具,可以备份MySQL数据库中的数据和结构,生成.sql文件,方便数据的迁移和恢复。 使用mysqldump工具前一定要配置环境变量 打开开始菜单,搜索“环境变量”。点击“编辑…...
数据结构与算法之链表: Leetcode 237. 删除链表中的节点 (Typescript版)
删除链表中的节点 https://leetcode.cn/problems/delete-node-in-a-linked-list/ 描述 有一个单链表的 head,我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的,并且保证给…...
继承的相关介绍---C++
一、概念及定义 概念: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结…...
Java多线程深入探讨
1. 线程与进程2. 创建和管理线程2.1. 继承Thread类2.2. 实现Runnable接口2.3 利用Callable、FutureTask接口实现。2.4 Thread的常用方法 3. 线程同步3.1. synchronized关键字3.1.1同步代码块:3.1.2 同步方法: 3.2. Lock接口 4. 线程间通信5. 线程池5.1 使…...
SpringCloud全面学习笔记之进阶篇
目录 前言微服务保护初识Sentinel雪崩问题及解决方案雪崩问题超时处理仓壁模式熔断降级流量控制总结 服务保护技术对比Sentinel介绍和安装微服务整合Sentinel 流量控制快速入门流控模式关联模式链路模式小结 流控效果warm up排队等待 热点参数限流全局参数限流热点参数限流案例…...
英语中主语从句的概念及其用法,例句(不断更新)
主语从句的原理 主语从句是一种充当整个句子主语的从句,主语从句构成的句子,是要以引导词开头的。它可以用名词性从属连词、关系代词或关系副词引导。主语从句通常位于谓语动词之前,用于表示动作、状态或事件的主体。 以下是一些常用的引导主…...
数组的子数组(亚阵列)、子序列,字符串的子串、子序列
数组 子数组 一个或连续多个数组中的元素组成一个子数组 子数组最少包含一个元素 数组 {1, 2, 3} 的子数组是 {1}, {1, 2}, {1, 2, 3}, {2}, {2, 3}, 和 {3}. 子序列 子序列就是在原来序列中找出一部分组成的序列 子序列不一定连续 相对位置还是不变 但是ÿ…...
MySQL 知识:迁移数据目录到其他路径
一、系统环境 操作系统:Centos 7 已安装环境:MySQL 8.0.26 二、开始操作 2.1 关闭SELinux 为了提高 Linux 系统的安全性,在 Linux 上通常会使用 SELinux 或 AppArmor 实现强制访问控制(Mandatory Access Control MACÿ…...
Go | 一分钟掌握Go | 8 - 并发
作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 前言 当今编程界,一个好的编译型语言如果不支持并发,…...
【滤波】多元高斯
本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第5章节05-Multivariate-Gaussians(多元高斯)。 %matplotlib inline#format the book import book_format book_format.set_style()简介 上一篇文章中的技术非常强大,但它们只…...
单源最短路问题
全部代码 全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork 单源最短路问题 先用spfa算法 不行再换其他的 spfa-超级万能 说不定比dijsktra还快 dis[] 代表第k到某一点的最短距离 queue 代表刚被更新的点 它有可能更…...
Security方法注解权限控制过程及自定义权限表达式
文章目录 使用内置的权限表达式PreAuthorizePermissionEvaluator 自定义权限表达式SysMethodSecurityExpressionHandler源码流程 SysMethodSecurityExpressionRoot 使用内置的权限表达式 PreAuthorize 这个用来判断超级管理员的话,还得在表达式上加上或 Permissi…...
vue 省市县三级联动
1、 <template><div>所在省<el-select popper-class"eloption" :popper-append-to-body"true"change"getShiList(obj.province)" v-model"obj.province" placeholder"请选择所在省" clearableclear"re…...
ChatGPT实现编程语言转换
编程语言转换 对于程序员来说,往往有一类工作,是需要将一部分业务逻辑实现从服务端转移到客户端,或者从客户端转移到服务端。这类工作,通常需要将一种编程语言的代码转换成另一种编程语言的代码,这就需要承担这项工作…...
浅拷贝和深拷贝
浅拷贝: 定义:浅拷贝(Shallow Copy)是一种简单的对象复制方式,将一个对象的数据成员直接复制给另一个对象(通常是通过默认的复制构造函数或赋值运算符实现),这些数据成员可以是基本…...
进程地址空间与页表方面知识点(缺页中断及写时拷贝部分原理)
谢谢阅读,如有错误请大佬留言!! 目录 谢谢阅读,如有错误请大佬留言!! 抛出总结 开始介绍 发现问题 进程地址空间(虚拟地址) 页表 物理内存与进程地址空间映射 缺页中断基本…...
Photoshop如何使用滤镜之实例演示?
文章目录 0.引言1.将普通照片制作成油画效果2.使用液化滤镜修出完美身材3.用镜头光晕滤镜制作唯美的逆光人像4.用Camera Raw滤镜对偏色风景照进行调色 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其…...
Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】
简介 仿照《Flutter 仿ios自定义一个DatePicker》实行的日期弹窗选择器(DatePicker)、时间弹窗选择器(TimePicker) 效果 范例 class _TestPageState extends State<TestPage> {overridevoid initState() {super.initStat…...
基于opencv的YOLOV3对图片的目标检测
目录 1. 准备工作 2. utils 函数 2.1 plot_show 函数 2.2 get_prediction 函数 2.3 draw_bounding_box 绘制边界框函数...
响应式网站做多大的尺寸/seo推广经验
自定义三维图表绘制 柱状图 环状图 三叶草图 这里仅给出环状图用作统计亚洲航班执航飞机制造公司统计的截图 根据相机高度,自动调节统计框及统计图大小。...
网站标题优化排名/百度网站官网入口网址
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便一、目标样式我们要实现上图中的效果,需要如下的操作:1.从工具栏上的”Smobiler Components”拖动一个一个TableView控件到窗体界面上2.…...
宁波建设银行网站分部/培训学校加盟费用
哪里有macOS常用的压缩解压软件?小编今天为大家推荐的是解压专家 mac版下载,解压专家mac中文版是一个小巧易用的程序,可以压缩或解压许多不同类型的压缩文件。使用FileZip,您可以根据需要压缩任意数量的文件。您也可以使用密码保护…...
电商建站系统/宁波seo推荐推广平台
解题思路:最短路的模板题,注意一个细节处理即可。 见代码: 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 using namespace std;5 #define inf 0x3f3f3f3f6 const int maxn 1005;7 int vis[maxn], w[maxn][maxn], d[…...
旅游网站建设目的/by网站域名
一、go的搭建 二、初识go 三、混个脸熟--go 四、go的语言结构 五、go的常量与变量 六、go基础数据类型 七、go 条件语句 八、go 运算符 九、go条件语句switch 十、go循环语句 十一、go之数组 十二、go初级函数 十三、go函数高级运用 十四、go之变量、指针、内存地址 十五、go之…...
自己建一个网站需要多少钱?/百度快照不更新怎么办
每当夜深人静的时候,正兴致冲冲的准备打开电脑玩游戏。结果按下开机键后,一片死寂,又按一遍,还是鸦雀无声,于是瞬间心态爆炸。相信不少小伙伴遇到过上面这种情况,甚至有些暴躁的大佬们直接巴掌伺候…...