首页 >资讯 > > 正文

基于循环队列的FIFO缓存设计实现

FPGA之家 2023-09-08 09:33:36

内容

FIFO缓存是介于两个子系统之间的弹性存储器,其概念图如图1所示。它有两个控制信号,wr和rd,用于读操作和写操作。当wr被插入时,输入的数据被写入缓存,此时读操作被忽视。FIFO缓存的head一般情况下总是有效的,因此可在任意时间被读取。rd信号实际上就像“remove”信号;当其被插入的时候,FIFO缓存的第一个项(即head)被移除,下一个项变为可用项。


(相关资料图)

图1 FIFO缓存的概念框图

在许多应用中,FIFO缓存是一种临界组件,其实现的优化相当复杂。在本节中,我们介绍一种简单的、真实的基于循环序列设计的FIFO缓存。更有效的、基于指定器件实现的FIFO缓存可在Altera或Xilinx的相关手册中找到。

基于循环队列的实现

一种实现FIFO缓存的方法是给寄存器文件添加一个控制电路。寄存器文件通过两个指针像循环队列一样来排列寄存器。写指针(writeponiter)指向队列的头(head);读指针(read poniter)指向队列的尾(tail)。每次读操作或写操作,指针都会前进一个位置。8-字循环队列的操作如图2所示。

图2 基于循环队列的FIFO缓存

FIFO缓存通常包括两个标志信号,full和empty,相应地来指示FIFO满(即不可写)或FIFO空(即不可读)。这两种情况发生在读指针和写指针相等的时候,如图2(a)、(f)和(i)所示的情况。控制器最难的设计任务是获取一种分辨这两种情形的机制。一种方案是使用触发器来跟踪empty和full标志。当系统被初始化时,触发器被设置为1和0;然后在每一个时钟周期根据wr和rd的值来修改。

代码 FIFO缓存

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798modulefifo#(parameterB=8, // number of bits in a wordW=3 // number of address bits)(// global clock and aysn resetinputclk,inputrst_n,// fifo interface// fifo control signnalinputrd,inputwr,// fifo status signaloutputempty,outputfull,// fifo data businput[B-1:0] w_data,output[B-1:0] r_data);// signal declarationreg[B-1:0] array_reg [2**W-1:0]; // register arrayreg[W-1:0] w_ptr_reg, w_ptr_next, w_ptr_succ;reg[W-1:0] r_ptr_reg, r_ptr_next, r_ptr_succ;regfull_reg, empty_reg, full_next, empty_next;wirewr_en;// body// register file write operationalways@(posedgeclk)if(wr_en)array_reg[w_ptr_reg] <= w_data;// register file read operationassignr_data = array_reg[r_ptr_reg];// write enabled only when FIFO is not fullassignwr_en = wr & ~full_reg;// fifo control logic// register for read and write pointersalways@(posedgeclk, negedgerst_n)if(!rst_n)beginw_ptr_reg <= 0;r_ptr_reg <= 0;full_reg <= 1"b0;empty_reg <= 1"b1;endelsebeginw_ptr_reg <= w_ptr_next;r_ptr_reg <= r_ptr_next;full_reg <= full_next;empty_reg <= empty_next;end// next-state logic for read and write pointersalways@*begin// successive pointer valuesw_ptr_succ = w_ptr_reg + 1;r_ptr_succ = r_ptr_reg + 1;// default: keep old valuesw_ptr_next = w_ptr_reg;r_ptr_next = r_ptr_reg;full_next = full_reg;empty_next = empty_reg;case({wr, rd})// 2"b00: no op2"b01: // readif(~empty_reg) // not emptybeginr_ptr_next = r_ptr_succ;full_next = 1"b0;if(r_ptr_succ==w_ptr_reg)empty_next = 1"b1;end2"b10: // writeif(~full_reg) // not fullbeginw_ptr_next = w_ptr_succ;empty_next = 1"b0;if(w_ptr_succ==r_ptr_reg)full_next = 1"b1;end2"b11: // write and readbeginw_ptr_next = w_ptr_succ;r_ptr_next = r_ptr_succ;endendcaseend// outputassignfull = full_reg;assignempty = empty_reg;endmodule

代码被分为寄存器文件和FIFO控制器两部分。控制器由两个指针和两个标志触发器组成,它们的次态逻辑会检测wr和rd信号,以采取相应的动作。举例说,在“10”条件下,即暗示只发生写操作。先检查标志触发器,以确保缓存不为满。如果满足条件,我们将写指针前进一位,并清除空标志。再多存储一个字(偏移地址为1所对应的数据)可能使得FIFO缓存满,即新的写指针赶上了读指针,我们使用w_ptr_succ==r_ptr_reg表达式来描述这一情况。

根据图2,我写了下面的testbench,其RTL仿真结果与图2一致。

代码 FIFO缓存的testbench

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100`timescale1ns/1nsmodulefifo_tb;localparam T=20; // clock period// global clock and asyn resetregclk, rst_n;// fifo interfaceregrd, wr;wireempty, full;reg[7:0] w_data;wire[7:0] r_data;// fifo instantiationfifo #(.B(8), .W(3)) fifo_inst(.clk(clk), .rst_n(rst_n),.rd(rd), .wr(wr),.empty(empty), .full(full),.w_data(w_data), .r_data(r_data));// clcokalwaysbeginclk = 1"b0;#(T/2);clk = 1"b1;#(T/2);end// resetinitialbeginrst_n = 1"b0;#(T/2)rst_n = 1"b1;end// stimulus bodyinitialbegin// initial input; emptyrd=0; wr=0; w_data=8"h00;@(posedgerst_n); // wait to deassert rst_n@(negedgeclk); // wait for a clock// 1 writewr=1; w_data=8"h11;@(negedgeclk); // wait to assert wrwr=0;@(negedgeclk); // wait to deassert wr// 3 writeswr=1;repeat(3)beginw_data=w_data+8"h11;@(negedgeclk);endwr=0;@(negedgeclk);// 1 readrd=1;@(negedgeclk); // wait to assert rdrd=0;@(negedgeclk) // wait to deassert rd// 4 writeswr=1;repeat(4)beginw_data=w_data+8"h11;@(negedgeclk);endwr=0;@(negedgeclk);// 1 write; fullwr=1; w_data=8"hAA;@(negedgeclk);wr=0;@(negedgeclk);// 2 readsrd=1;repeat(2) @(negedgeclk);rd=0;@(negedgeclk);// 5 readsrd=1;repeat(5) @(negedgeclk);rd=0;@(negedgeclk);// 1 read; emptyrd=1;@(negedgeclk);rd=0;@(negedgeclk);$stop;endendmodule

图3 RTL级仿真波形

审核编辑:刘清

上一篇:首钢京唐自主研发首个国际专利获得国际相关机构授权 下一篇:最后一页
x
推荐阅读

基于循环队列的FIFO缓存设计实现

2023-09-08

首钢京唐自主研发首个国际专利获得国际相关机构授权

2023-09-01

说说“氛围感”

2023-09-01

复姓欧阳新颖有涵养的男宝宝名字

2023-09-01

桑科草原海拔多少(桑科)

2023-09-01

安卓手机上网速度很慢怎么办(教你两个方法)

2023-09-01

锦州银行(00416)延迟刊发2022年度业绩及2023中期业绩 继续停牌

2023-08-31

会通股份:8月28日公司高管李荣群减持公司股份合计3.91万股

2023-08-31

力合科技:公司有相关产品在近岸海域海水监测、海洋巡测方面应用

2023-08-31

Boss 直聘说蓝领就业恢复最好

2023-08-31

夏季治安打击整治行动|东安县公安局积极推广“永州快反135”APP,切实提高群众安全感

2023-08-31

明日起 打五折!社保卡(市民卡)“约惠金秋”系列活动开启

2023-08-31

赛隆药业(002898):该股换手率大于8%(08-31)

2023-08-31

A股三大指数午间休盘集体下跌,房地产板块集体下挫

2023-08-31

8月31日安徽星鑫化工氯化石蜡价格动态

2023-08-31

贴吧吧主申请个人宣言(贴吧吧主申请)

2023-08-31

微软 Microsoft 365 推出多项新功能:浏览器扩展、iOS 小组件等

2023-08-31

美媒:希腊野火肆虐,雅典居民众筹无人机预警

2023-08-31

搜狐健康课·精编 | 前列腺癌最适合做机器人手术?

2023-08-31

【天眼问政】有斑马线无红绿灯,市民过街心慌慌!交管部门回应……

2023-08-31

云南高尔夫球场有几个(云南高尔夫)

2023-08-31

旭辉控股将延迟刊发2023年中期业绩公告

2023-08-30

意甲官网确认:AC米兰边锋萨勒马科尔斯租借加盟博洛尼亚

2023-08-30

幼儿园大型玩具消毒比例_幼儿园大型玩具有哪些?

2023-08-30

KXD集团:在中东拓展脚步,携手合作伙伴共谱成功之章

2023-08-30

尖峰集团股东户数下降6.64%,户均持股10.05万元

2023-08-30

贵州省交通运输“一网通办”政务服务体系全面建成

2023-08-30

马和什么属相配婚姻如何,马跟什么配是更好的婚姻

2023-08-30

江永香芋销售破8亿元

2023-08-30

打造农机产业集群

2023-08-30

小熊电器:截止至2023年08月18日,公司股东总户数23,005户

2023-08-30

使白皮鞋干净的方法(使白皮鞋干净的方法有哪些)

2023-08-30

国泰君安;需求预期改善助力 铜价或强势上行

2023-08-30

陕西省榆林市2023-08-30 05:49发布大雾橙色预警

2023-08-30

莫斯科圣母升天大堂(关于莫斯科圣母升天大堂简述)

2023-08-30

国家卫生健康委印发《手术质量安全提升行动方案(2023-2025年)》

2023-08-29

中国梦·大国工匠篇丨我在三江源国家公园当宣传员

2023-08-29

出行大数据:“报复性”看演出 体育场馆成今夏出行目的地黑马

2023-08-29

打了苹果措手不及,华为Mate 60 Pro开售,疑惑一大堆!

2023-08-29

王诗龄在英国读书,李湘被传在伦敦买房,本人否认

2023-08-29

婴儿食品行业市场机遇分析:婴幼儿辅食市场发展趋势及现状分析2023

2023-08-29

广西计划2025年底建立市场监管领域城镇燃气安全监管长效机制

2023-08-29

杭州亚运会体育文化主题展开幕 三位世界冠军捐赠藏品

2023-08-29

多重利好之下A股高开低走 政策底到市场底要多久?|予菲视点

2023-08-29

胡歌深夜发文慢一点等等身边的人 胡歌深夜发文:我对不起好多人 基本情况讲解

2023-08-29

南京新百:8月28日融资买入323.93万元,融资融券余额1.45亿元

2023-08-29

反应堆核心模块吊装成功 为“玲龙一号”装上“心脏”

2023-08-29

中超武汉三镇官方:俱乐部100%股权将被无偿转让

2023-08-29

医保的重大疾病保险是什么?包括哪些病?

2023-08-29

风华高科(000636.SZ)拟公开挂牌方式转让所持参股公司贺江电力20%股权 挂牌底价2.58亿元

2023-08-28

嫩江县卧都河乡人民政府(关于嫩江县卧都河乡人民政府简述)

2023-08-28

妙可蓝多:上半年净利润2856.7万元,同比下降78.36%

2023-08-28

我国互联网普及率达76.4%

2023-08-28

保障用电安全 四川阿坝电网启动变电站年度“体检”

2023-08-28

公交陷入经营困境,与全面电动化有关吗?

2023-08-28

有来有往,一波逆转获胜,TTG和DRG胜者组的比赛,打得非常精彩!

2023-08-28

“螺蛳粉代购”火了,20元一碗不包邮!外地人:味道正能解馋

2023-08-28

15万级带智驾!小鹏汽车与滴滴达成战略合作:新品牌首车明年量产

2023-08-28

波兰热舒夫市军团菌感染呈上升趋势

2023-08-28

防水塑料布多少钱一平 防水塑料布

2023-08-28

余承东宣称砸了6亿改款,问界M7预售门槛却降到25.8万,让步就好

2023-08-28

“苏拉”已成超强台风,下周杭州雷雨不断,气温直降10℃

2023-08-27

山东推动传统产业向高端化转型升级 开辟绿色产业新赛道

2023-08-27

西力科技(688616.SH)发布上半年业绩 净利润2238万元 同比下降12.96%

2023-08-27

日本民众举行集会 要求停止福岛第一核电站核污染水排海

2023-08-27

深度|当公募基金反超银行理财,理财经理众生相

2023-08-27

众志成城 防汛救灾丨天津主要行洪河道进入行洪尾声

2023-08-27

朝鲜:允许回国

2023-08-27

甘霖娘是什么意思 福建话甘霖娘是什么意思

2023-08-27

吴金贵信任危机仍未解除,球迷还应多宽容,泰山队或成海港争冠的最强对手

2023-08-27

ESPN:曼联后卫卢克-肖的肌肉问题较为严重,可...

2023-08-26

记者:巴洛-图雷尚未同意加盟安特卫普,不莱梅仍在争夺球员

2023-08-26

柏林时尚博主caroschaeffler 复古时髦女孩真的好美呀!

2023-08-26

吴頔评阿尔斯兰加盟宁波:阿指导八一碎片+1 双外援八一快实现了

2023-08-26

守护“舌尖上的安全”!我国加大监测力度 保护海洋渔业健康发展

2023-08-26

制造抢盐恐慌,西安一店铺老板被罚!

2023-08-26

谷神星一号遥八运载火箭发射成功

2023-08-26

带路况的导航下载(路况导航)

2023-08-26

恒指科技:融资净买入745.13万元,融资余额7.51亿元(08-25)

2023-08-26

漫步李嘉琪现场版(漫步李嘉琪)

2023-08-26

越夜越有爱,捐一元公益夜市“郑”在有爱进行中

2023-08-25

万物云不“拼爹”,朱保全:现在更重要的是自身拼命奋斗

2023-08-25

慕思股份:部分经销商拟3500万至7000万元增持公司股份

2023-08-25

企业研发投入最高补助400万元!这场活动详解政策“大礼包”

2023-08-25

新邵全力推进交通问题顽瘴痼疾整治 落实道路交通事故救援、救治联动机制

2023-08-25

“2023凤凰之星港股最佳上市公司”评选100家候选企业公布

2023-08-25

宁波银行公布2023年半年度业绩 净利129.47亿同比增14.90%

2023-08-25

鹿晗关晓彤遭质疑!频繁去日本游玩,被骂卖国贼为当地旅游做宣传

2023-08-25

炬光科技:8月24日融资买入581.13万元,融资融券余额4.64亿元

2023-08-25

4457万元投入深圳青少年体育 体彩公益金为少儿燃动奔跑力量

2023-08-25

字母哥:我不想在一支球队效力20年却不能再次夺冠

2023-08-25

山东哪里有蹦极的地方100米以上_山东哪里有蹦极

2023-08-25

4部“七夕特供”上了个寂寞,国产爱情片无档可去

2023-08-25

唐宫中国(01181.HK)中期实现纯利4156.4万元 中期特别息2.5港仙

2023-08-24

轻纺城:上半年净利润2.04亿元 同比下降44.17%

2023-08-24

重庆“上新”10条举措支持“双倍增”行动

2023-08-24

习近平出席金砖国家领导人第十五次会晤特别记者会 强调金砖扩员是金砖合作的新起点,将为金砖合作机制注入新活力

2023-08-24

永新股份:2023年半年度净利润约1.77亿元 同比增加20.01%

2023-08-24

蛊惑交易、黑嘴荐股属操纵行为

2023-08-24

米体:曼奇尼年薪2500万至3000万之间,将自带教练团队

2023-08-24