同步fifo的串并_同步FIFO设计Spec(示例代码)

为什么要写Spec文档:

记得刚进公司实习的时候,导师安排我写一个SM4算法AHB接口模块,要求写代码前

写出详细的设计文档,详细到什么程度呢,看着文档就能把代码写好,作为一个只

在学校写过数字钟的小白来说有点不太理解,后面看的Spec多了,好的Spec的确能够看

着Spec把代码给敲了,能够方便别人理解你的设计思路,特别是当你遇到一份注释不太

清楚,逻辑难懂的代码时,是多么渴望来一份Spec帮助理解。

网页上编辑图和格式不是很方便,就写的简单点吧

1.同步FIFO(First In First Out):一种先进先出的数据缓存器,同步FIFO是指读写为同一时钟,

主要做数据缓存。本设计用8*256的双口RAM来做,主要是对RAM的控制,产生空、满信号。

2.总体模块划分

子模块dpram.v 双口RAM的描述

子模块fifo_ctrl.v 对RAM的控制,产生空满信号

Top层 fifo_sync.v 对两个子模块的例化

(这里能用图来描述最好了)

3.dpram模块

信号列表

clk       IN         时钟

rst_n    IN         复位

wr_en    IN        写使能

rd_en    IN        读使能

wr_data[7:0]  IN    写数据

wr_addr[7:0]  IN    写地址

rd_addr[7:0]   IN    读地址

rd_data[7:0]  OUT  读数据

定义一块memory  8*256

电路图:

(这里用电路把读写操作的电路图画好,公司服务器上无法编辑就用文字代替了)

写操作,wr_en控制wr_data写到相应地址的memory里

读操作,rd_en控制相应地址的memory里的数据给rd_data,寄存器输出

4.fifo_ctrl模块

信号列表:

clk       IN         时钟

rst_n    IN         复位

wr_en    IN        写使能

rd_en    IN        读使能

wr_addr[7:0]  OUT  输出写地址

rd_addr[7:0]  OUT  输出读地址

empty      OUT       FIFO空信号

full           OUT       FIFO满信号

电路图:

写地址计数器,写使能和非满时计数器计数,写计数器满时清零,读地址计数器同理

空满信号的生成通过多用一位标志位的方式来实现,即地址信号加最高位标志位得到读写指针

读写标志位复位清零,读写使能有效&&读写计数器满 时翻转

空信号:读写指针相同时产生

满信号:读写地址相同&&最高位读写标志不同产生

//注:为什么这样可以 实现空满信号产生:

//(1)读写地址相同时产生空或满信号

//(2)读指针追上写指针时为空信号,写指针追上读指针时为满信号

//(3)FIFO是先进先出,先写进来的数据先读出去,所以空满信号不能反

5.fifo_sync模式

例化上面两个子模块

信号列表:

clk       IN         时钟

rst_n    IN         复位

wr_en    IN        写使能

rd_en    IN        读使能

wr_data[7:0] IN   写数据

rd_data[7:0] OUT   读数据

wr_full      OUT        FIFO满信号

rd_empty OUT        FIFO空信号

Test plan暂时还没写,先占个坑,后续补上,如果觉得哪里有问题或者说得不清楚评论指出来,我及时修改

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

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

相关文章

网络数据隐私保护,阿里工程师怎么做?

个人数据挖掘和个人隐私保护,并非鱼与熊掌,可视分析的技术手段能够帮助我们保护个人隐私数据,避免后续的数据挖掘暴露隐私的同时,平衡数据质量发生的变化,减少对后续数据挖掘的影响。针对网络数据中的隐私保护问题&…

刷爆了!这份被程序员疯传的Python神作牛在哪?

随着AI的兴起,Python彻底火了。除了谷歌爬虫、Google广告等项目在大量使用Python开发。包括豆瓣、知乎在内的很多互联网公司都将 Python 作为了主要编程语言开发。对于程序员来说,Python应用前景广,市场需求大,随之而来的是薪资非…

SpringBoot 2.x yml 文件中自定义参数解析对象

在SpringBoot中通过自定义参数可以实现很多重要的功能来达到解耦。 SpringBoot 自定义参数的类型有&#xff1a; 简单键值对&#xff0c;自定义对象&#xff0c;数组&#xff0c;List&#xff0c;Map&#xff0c;List<Map>1. yml中添加自定义参数 # yml 自定义参数 cus:…

阿里云李刚:下一代低延时的直播CDN

在上周落幕帷幕的多媒体领域技术盛会——LiveVideoStackCon音视频技术大会上&#xff0c;阿里云的高级技术专家李刚进行了《下一代低延时的直播CDN》技术分享。主讲人李刚&#xff0c;多年关注在CDN这个领域&#xff0c;早期主要研究和cache服务器缓存以及流媒体相关的技术, 专…

云计算体系结构中soa构建层_云计算的服务模式及技术结构

IaaS: Infrastructure-as-a-Service(基础设施即服务)第一层叫做IaaS&#xff0c;有时候也叫做Hardware-as-a-Service&#xff0c;几年前如果你想在办公室或者公司的网站上运行一些企业应用&#xff0c;你需要去买服务器&#xff0c;或者别的高昂的硬件来控制本地应用&#xff0…

我的计算机专业作文800字,我家的电脑作文800字

一天我和妈妈逛街来到一家衣服店&#xff0c;遇到这家店里刚好有抽奖活动。我对买衣服没啥兴趣&#xff0c;就连忙跑去抽奖。我用手轻轻的推了一下转盘&#xff0c;它就飞快的转了起来&#xff0c;最后慢慢的停在了“电脑一台”。我兴奋地一把抱住老板娘&#xff0c;不停的说&a…

教你用一条SQL搞定跨数据库查询难题

导读 日前&#xff0c;某电商用户由于业务发展迅猛&#xff0c;访问量极速增长&#xff0c;导致数据库容量及性能遭遇瓶颈。为降低数据库大小&#xff0c;提升性能&#xff0c;用户决定对架构进行垂直拆分。根据不同的表来进行拆分&#xff0c;对应用程序的影响也更小&#xf…

漫画:什么是公有云、私有云和混合云?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 漫话编程 责编 | 阿秃为了方便大家理解&#xff0c;我们尽量用通俗的语言和举例子的方式讲解&#xff0c;并且文中还配备了漫画供大家参考学习。随着最近几年的云计算技术的主键发展和普及&#xff0c;越来越多的企业通过采用…

dell idrac 复位_DELL 服务器 装系统前初始化(恢复出厂、超线程、虚拟化、iDRAC设置)...

参考链接&#xff1a;一、初始化BIOS1、开机启动期间&#xff0c;按“F2 System Setup”(系统设置)2、按 重设 BIOS 或 UEFI 设置为其默认设置。二、CPU超线程设置&#xff1a;1、开机启动期间&#xff0c;按“F2 System Setup”(系统设置)2、选择“System BIOS”(BIOS设置)3…

PTS + ARMS打造性能和应用诊断利器

服务端的性能测试&#xff0c;尤其是业务性能测试&#xff0c;是用来评估性能容量、诊断性能瓶颈和应用错误&#xff0c;或是验证高可用的能力&#xff0c;以此达到降低成本、提升用户体验的目的。但是&#xff0c;当需要有进一步的定位和刨析时&#xff0c;这类性能测试就会显…

计算机如何玩二十四点游戏,数学二十四点游戏有什么技巧吗?

首先.电脑是不存在随机这样东西..因为电脑所用到的随机也不可能是完全的随机吧....怎么也是有个初始条件的吧..至于那个初始条件能不能模拟那就是另一回事了..纯粹数学上的话..应该把开了的区域和没开的区域分开..开了的区域和没开的区域之间的没开的第一行叫做他们的边界.这样…

mybatis 插入数据后返回自增id

useGeneratedKeys"true" keyProperty"id">sql全部内容&#xff1a; <insert id"insertSelective" parameterType"com.gblfy.mall.pojo.Shipping" useGeneratedKeys"true" keyProperty"id">insert into …

Envoy源码分析之Dispatcher

Dispatcher 在Envoy的代码中Dispatcher是随处可见的&#xff0c;可以说在Envoy中有着举足轻重的地位&#xff0c;一个Dispatcher就是一个EventLoop&#xff0c;其承担了任务队列、网络事件处理、定时器、信号处理等核心功能。在Envoy threading model这篇文章所提到的EventLoo…

这项技术厉害了!让旅行者 2 号从星际空间发首批数据!

限时8.3折&#xff0c;立即购票&#xff1a;https://dwz.cn/z1jHouwE物联网作为信息系统向物理世界的延伸&#xff0c;极大地拓展了人类认知和控制物理世界的能力&#xff0c;被称为继计算机和互联网之后的世界信息产业的第三次浪潮&#xff0c;正在深刻地改变着人类的生存环境…

修改文件 华为交换机_华为交换机系统文件管理配置命令大全(二)

11、解压文件&#xff08;unzip&#xff09;<Huawei>dirDirectory of flash:/Idx Attr Size(Byte) Date Time FileName0 drw- - Aug 07 2015 13:51:14 src1 drw- - Apr 02 2016 11:29:41 pmdata2 drw- - Apr 02 2016 11:29:52 dhcp3 -rw- 28 Apr 02 2016 11:29:53 privat…

从阿里云数据库入选Gartner谈数据库的演化

根据全球权威的IT咨询公司Gartner的最新研究报告&#xff0c;在2018年度数据库系统的魔力象限中&#xff0c;阿里云数据库被列入“远见者”象限&#xff0c;这是国产数据库首次进入Gartner魔力象限。Gartner的魔力四象限&#xff0c;描述了数据库厂商的产品能力和市场规模。四个…

申请美国计算机科学,美国计算机科学的申请特点

计算机科学官方定义&#xff1a;计算机科学是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究&#xff0c;计算机科学专业的申请特点如下&#xff1a;申请难度中等学校…

mysql 插入数据时 自动设置创建时间和更新时间

一般除了配置表&#xff0c;表中都会有create_time &#xff0c;update_time 2个字段&#xff0c;而这个2个字段测处理方式雨2种&#xff1a; 1在代码中设置当前日期 2>mysq自动设置&#xff08;推荐使用&#xff09; 加入&#xff0c;已经设置好了&#xff0c;修改一下表结…

基于智能家居场景的POALRDB性能体验

Polardb 是阿里云研发的一种关系型数据库&#xff0c;与mysql完全兼容&#xff0c;而性能又是其6倍&#xff0c;具有高吞吐&#xff0c;低延迟等特性&#xff1b; 本测试通过模拟控制智能家居开关的终端场景&#xff0c;来体验polardb的性能&#xff1b; 1、环境搭建 1.1 po…