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

原文地址:https://www.cnblogs.com/hesn/p/11666973.html

时间: 2024-10-07 22:48:41

同步FIFO设计Spec的相关文章

同步fifo的verilogHDL设计实例

原创 设计一个fifo,输入16bit,输出16bit的data,寻址宽度5bit,有空满标志. top 层如下所示: 1 /* 2 date : 2014/10/14 3 version : modelsim 10.1e-altera 4 design : pengxiaoen 5 function : 同步fifo设计 6 */ 7 module test2 ( 8 clock , 9 reset, 10 in_data , 11 12 ou_data , 13 wr_full , 14 r

【设计开发】 典型同步电路设计- 同步FIFO

一.前言 FIFO (First-In-First-Out) 是一种先进先出的数据交互方式,在数字ASIC设计中常常被使用.FIFO按工作时钟域的不同又可以分为:同步FIFO和异步FIFO. 同步FIFO的写时钟和读时钟为同一个时钟,FIFO内部所有逻辑都是同步逻辑,常常用于交互数据缓冲.异步FIFO的写时钟和读时钟为异步时钟,FIFO内部的写逻辑和读逻辑的交互需要异步处理,异步FIFO常用于跨时钟域交互. 本文介绍同步FIFO的典型设计方法. 二.原理 典型同步FIFO有三部分组成: (1)

同步FIFO的verilog描述

1 /****************************************************** 2 A fifo controller verilog description. 3 ******************************************************/ 4 module fifo(datain, rd, wr, rst, clk, dataout, full, empty); 5 input [7:0] datain; 6 input

Verilog学习笔记简单功能实现(八)...............同步FIFO

Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上升沿触发.当FIFO的数据满和空的时候分别设置相应的高电平加以指示.FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成

同步FIFO design and IP level verification

一.前言 应聘IC前端相关岗位时,FIFO是最常考也是最基本的题目.FIFO经常用于数据缓存.位宽转换.异步时钟域处理.随着芯片规模的快速增长,灵活的system verilog成为设计/验证人员的基本功.本文从简易版的同步FIFO开始,熟悉IP设计与验证的基础技能. 二.IP设计 FIFO这一IP核已经相当成熟,因此网上资料也是一抓一大把.其中笔者认为较好的一个在文末附录中,需要详细了解FIFO工作原理的朋友可以仔细看看.这里简单介绍下本文设计FIFO的原理与结构.FIFO的内部存储单元是常见

FPGA基础学习(11) -- FIFO设计(style#1)

FIFO是跨时钟域数据传输中常用的缓存器.一般情况下,自己设计的异步FIFO(无特殊说明以下均简称FIFO)虽然能应付90~99%的场景,但是由于设计缺陷,导致在1%的极端情况下会出问题,还不容易发现,所以设计合理的FIFO至关重要. 对于同步FIFO,因为读写属于同一时钟域,可以直接采用计数的方式来计算FIFO存储空间的动态变化,但是异步FIFO不能这么操作,因为读写时钟域完全有可能频率差异比较大,并且会面临暂稳态的问题.其实FIFO的设计要点,归根结底是设计正确的空/满信号.即数据写满的时候

多终端数据同步机制设计(二)

多终端数据同步机制设计(二) Intro 如果您没有看上一篇文章,建议您先移步到这里查看第一部分 上一次主要解决了基本的数据增量同步的问题,但仍然存在一些问题. 可能存在的主要问题: 大数据量传输时,数据在传输过程出现部分丢失,数据不完整 超大数据量需要同步,导致响应时间过长而导致连接超时 针对以上可能出现的这两个问题,需要对数据进行校验并且数据量超过一定量时进行分批量传输, 本文将着手解决 数据校验 和 数据分批次传输 这两个问题. 同步流程概览 结合之前的同步流程,加上数据校验和分批次传输数

多终端数据同步机制设计

多终端数据同步机制设计(一) Intro 因为项目需要,需要设计一个多终端数据同步的机制, 需要满足以下条件: 1. 多个终端数据操作及同步 2. 每次同步的时候只拉取需要同步的数据,且数据不能存在丢失 3. 尽可能少的调用服务器端接口 同步流程 整体同步流程 我想仿照Git数据同步的方式来进行数据同步,于是放着Git同步的流程来进行设计,首先每次提交会有一个版本号,另外每次提交之前应尽可能先从服务器端拉取数据, 保证客户端的数据是最新的情况下再进行提交本地的修改.按照Git的方式来进行数据同步

同步FIFO学习笔录--

同步FIFO学习 1.撰写缘由 这几天在初步学习verilog,学习到了同步FIFO,写点东西记录一下,写写心得体会和大家一起交流学习,中间有不对的地方希望大家能多多包涵,欢迎指正,共同进步.学习时主要参考:https://www.cnblogs.com/SYoong/p/6108780.html,感谢大神的分享.本文与参考有些不同,其中我自己认为有些需要改动的地方,若不对,多多指正.其实同步FIFO在实际中应用很少,应用多的还是异步FIFO,不过作为一个新手拿来练习练习感觉是很不错的. 2.什