热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

同步_同步FIFO设计Spec

为什么要写Spec文档:      记得刚进公司实习的时候,导师安排我写一个SM4算法AHB接口模块,要求写代码前写出详细的设计文档

为什么要写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暂时还没写,先占个坑,后续补上,如果觉得哪里有问题或者说得不清楚评论指出来,我及时修改

 


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
author-avatar
手机用户2602935405
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有