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

 


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
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社区 版权所有