同步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暂时还没写,先占个坑,后续补上,如果觉得哪里有问题或者说得不清楚评论指出来,我及时修改
同步fifo的串并_同步FIFO设计Spec(示例代码)相关推荐
- 同步fifo的串并_同步FIFO笔记
FIFO简介:First in First out,先进先出的数据结构.只能顺序的读入数据,顺序的读出数据. 使用RAM进行建模.设计相应的控制模块,控制RAM中的数据写入和读取,先写入的数据先读取. ...
- 同步fifo的串并_同步fifo
利用verilog实现FIFO 摘要:本文先介绍了一下关于FIFO的基本概念,工作原理,功能,同步与异步的分类等.然后基于RAM实现了一个同步FIFO.该FIFO通过巧妙地应用地址位和状态位的结合实现 ...
- 同步电复律英文_同步电复律与非同步电复律有什么区别?
展开全部 同步电除颤的适应症是治疗--房颤.房扑.室32313133353236313431303231363533e59b9ee7ad9431333365653161上速.室速等快速心律失常,经电除 ...
- 同步电复律英文_同步电复律操作规程
同步电复律操作规程 目的 中止血液波动力学不稳定的心动过速性心律失常, 同时也可将血液动力 学稳定的房颤或房扑转为窦律. 相关知识 1 同步电复律是指同步触发装置能利用患者心电图中 R 波来触发 放电 ...
- uniapp同步获取用户信息_表单设计是为了帮助用户获取信息,而不是填写
之前有会员来信提到希望能够找一期时间聊一聊在应用中的表单设计,当时我爽快的答应了但却一直没有写. 其实没写的主要原因还是在于网络上已经有了很多关于表单设计的讨论,这些文章都提到了很多在表单设计中需要注 ...
- java 同步与异步区别_同步和异步有何异同,在什么情况下分别使用它们?
2015-05-12 06:30:01 阅读( 4 ) 通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器 ...
- java前后端数据交互_前后端数据交互(示例代码)
function ajax(option) { function objtostring(obj){ if(typeof obj==='object' && !Array.isArra ...
- JAVA开发需求分析套路_JAVA并发工具常用设计套路示例代码
了解JAVA并发工具常用设计套路 前言 在学习JAVA并发工具时,分析JUC下的源码,发现有三个利器:状态.队列.CAS. 状态 一般是state属性,如AQS源码中的状态,是整个工具的核心,一般操作 ...
- java动态规划解法_动态规划通用解法总结(示例代码)
背景:leetcode刷题遇到动态规划的题目,做不出来时看别人的code,也可以理解,但还是没有找到create solution的技巧,单纯的comprehend and remeber,直到遇到了 ...
最新文章
- 计算机四级分数怎么查,计算机三四级成绩查询正确打开方式
- 小码哥iOS学习笔记第八天: block的底层结构
- 稀疏表示介绍(中)、(下)
- MySql之自动同步表结构
- vb.net axWindowsMediaPlayer 控件使用
- 原来Java大数据才是真正的高富帅!
- linux第三课:一些注意点
- 分享Swing学习的一些经验
- 联想换机助手_Smart Switch.apk下载|S换机助手下载 v3.4.04 安卓版_最火软件站
- c51单片机流水灯程序汇编语言,基于51单片机的流水灯程序
- MySQL 8.0 drop table恢复
- 没有学历,四步进Google
- VS2019中Git源代码管理总结
- 记一次微信小程序源码反解包
- 修改elementui组件el-input样式
- db4o_8.0对象数据库官方文档翻译_学习笔记三
- 精度超越ConvNeXt的新CNN——HorNet:通过递归门控卷积实现高效高阶的空间信息交互
- linux 接收中文数据乱码,linux中文乱码问题的解决方法
- easyui-filebox再苹果手机上只能打开摄像头不能选择文件
- React - 路由 lazyLoad 的使用(路由懒加载)