当前位置: 首页 > news >正文

域名服务器分为关键词分布中对seo有危害的

域名服务器分为,关键词分布中对seo有危害的,wordpress影视自采集模板,2022近期时事热点素材摘抄前言 FIFO功能模块分两篇文章,本篇为同步FIFO,另一篇为异步FIFO,传送门: Verilog功能模块——异步FIFO-CSDN博客 同步FIFO实现起来是异步FIFO的简化版,所以,本博文不再介绍FIFO实现原理,感兴趣…

前言

FIFO功能模块分两篇文章,本篇为同步FIFO,另一篇为异步FIFO,传送门:

Verilog功能模块——异步FIFO-CSDN博客

同步FIFO实现起来是异步FIFO的简化版,所以,本博文不再介绍FIFO实现原理,感兴趣的同学可以去看我异步FIFO的文章,基本看懂了异步FIFO,同步FIFO自然就懂了。


二. 模块功能框图与信号说明

信号说明:

分类信号名称输入/输出说明
参数DATA_WIDTH数据位宽
ADDR_WIDTH地址位宽,FIFO深度=2**ADDR_WIDTH
FWFT_ENFirst word fall-through输出模式使能,高电平有效
FIFO写端口dininputFIFO数据输入
wr_eninputFIFO写使能
fulloutputFIFO满信号
almost_fulloutputFIFO快满信号,FIFO剩余容量<=1时置高
FIFO读端口doutoutputFIFO数据输出
rd_eninputFIFO读使能
emptyoutputFIFO空信号
almost_emptyoutputFIFO快空信号,FIFO内数据量<=1时置高
时钟与复位clkinputFIFO读时钟
rstinputFIFO读复位

注意:

  1. 信号的命名与Vivado中的FIFO IP核完全一致
  2. 复位均为高电平复位,与Vivado中的FIFO IP核保持一致
  3. 复位为异步复位
  4. FIFO深度通过ADDR_WIDTH来设置,所以FIFO的深度必然是2的指数,如2、4、8、16等

三. 部分代码展示

//++ 生成读写指针 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
reg  [ADDR_WIDTH:0] rptr;
always @(posedge clk or posedge rst) beginif (rst)rptr <= 0;else if (rd_en & ~empty)rptr <= rptr + 1'b1;
endreg  [ADDR_WIDTH:0] wptr;
always @(posedge clk or posedge rst) beginif (rst)wptr <= 0;else if (wr_en & ~full)wptr <= wptr + 1'b1;
endwire [ADDR_WIDTH-1:0] raddr = rptr[ADDR_WIDTH-1:0];
wire [ADDR_WIDTH-1:0] waddr = wptr[ADDR_WIDTH-1:0];wire [ADDR_WIDTH:0] rptr_p1 = rptr + 1'b1;
wire [ADDR_WIDTH:0] wptr_p1 = wptr + 1'b1;
//-- 生成读写指针 ------------------------------------------------------------//++ 生成empty与almost_empty信号 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
always @(*) beginif (rst)empty <= 1'b1;else if (rptr == wptr)empty <= 1'b1;elseempty <= 1'b0;
endalways @(*) beginif (rst)almost_empty <= 1'b1;else if (rptr_p1 == wptr || empty)almost_empty <= 1'b1;elsealmost_empty <= 1'b0;
end
//-- 生成empty与almost_empty信号 ------------------------------------------------------------//++ 生成full与almost_full信号 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
always @(*) beginif (rst)full  <= 1'b1;else if ((wptr[ADDR_WIDTH] != rptr[ADDR_WIDTH])&& (wptr[ADDR_WIDTH-1:0] == rptr[ADDR_WIDTH-1:0]))full  <= 1'b1;elsefull  <= 1'b0;
endalways @(*) beginif (rst)almost_full <= 1'b1;else if (((wptr_p1[ADDR_WIDTH] != rptr[ADDR_WIDTH])&& (wptr_p1[ADDR_WIDTH-1:0] == rptr[ADDR_WIDTH-1:0]))|| full)almost_full <= 1'b1;elsealmost_full <= 1'b0;
end
//-- 生成full与almost_full信号 ------------------------------------------------------------

三. 功能仿真

比较以下情形中的fifo行为是否与FIFO IP核一致,

情形一:单次写单次读

情形二:写满后再读空

情形三:在读的过程中写,在写的过程中读

判断模块功能正常的依据:

  1. 写入数据是否按顺序正常读出
  2. 空信号和满信号是否正常输出。

为方便比较,编写了顶层文件,实例化了FIFO IP核与自编模块,部分代码如下:

vivado_sync_fifo vivado_sync_fifo_u0 (.clk          (clk                     ), // input wire clk.rst          (rst                     ), // input wire rst.din          (din                     ), // input wire [7 : 0] din.wr_en        (wr_en                   ), // input wire wr_en.rd_en        (rd_en                   ), // input wire rd_en.dout         (vivado_fifo_dout        ), // output wire [7: 0] dout.full         (vivado_fifo_full        ), // output wire full.almost_full  (vivado_fifo_almost_full ), // output wire almost_full.empty        (vivado_fifo_empty       ), // output wire empty.almost_empty (vivado_fifo_almost_empty)// output wire almost_empty
);syncFIFO # (.DATA_WIDTH (DATA_WIDTH),.ADDR_WIDTH (ADDR_WIDTH),.FWFT_EN    (FWFT_EN   )
) syncFIFO_inst (.din          (din         ),.wr_en        (wr_en       ),.full         (full        ),.almost_full  (almost_full ),.dout         (dout        ),.rd_en        (rd_en       ),.empty        (empty       ),.almost_empty (almost_empty),.clk          (clk         ),.rst          (rst         )
);

testbench部分代码如下:

// 生成时钟
localparam CLKT = 2;
initial beginclk = 0;forever #(CLKT / 2) clk = ~clk;
end// 读写使能控制
initial beginrst = 1;#(CLKT * 2)rst = 0;wr_en = 0;rd_en = 0;#(CLKT * 2)wait(~full && ~vivado_fifo_full); // 两个FIFO都从复位态恢复时开始写// 写入一个数据wr_en = 1;#(CLKT * 1)wr_en = 0;// 读出一个数据wait(~empty && ~vivado_fifo_empty);// 两个FIFO都非空时开始读,比较读数据和empty信号是否有差异rd_en = 1;#(CLKT * 1)rd_en = 0;// 写满wr_en = 1;wait(full && vivado_fifo_full); // 两个FIFO都满时停止写,如果两者不同时满,则先满的一方会有写满的情况发生,但对功能无影响// vivado FIFO IP在FWFT模式时, 设定深度16时实际深度为17, 但仿真显示full会在写入15个数据后置高, 过几个时钟后后拉低,// 再写入一个数据, full又置高; 然后过几个时钟又拉低, 再写入一个数据置高, 如此才能写入17个数据// 所以这里多等待12个wclk周期, 就是为了能真正写满vivado FWFT FIFO#(CLKT * 12)wr_en = 0;// 读空wait(~empty && ~vivado_fifo_empty);rd_en = 1;wait(empty && vivado_fifo_empty); // 两个FIFO都空时停止读,如果两者不同时空,则先空的一方会有读空的情况发生,但对功能无影响rd_en = 0;#(CLKT * 10)$stop;
end// 使用以下代码时,先注释掉上面的读写使能控制initial
// 同时读写
// initial begin
//   #(CLKT * 30)
//   $stop;
// end// assign wr_en = ~full || ~vivado_fifo_full; // 未满就一直写
// assign rd_en = ~empty || ~vivado_fifo_empty; // 未空就一直读always @(posedge clk) beginif (rst)din <= 0;else if (wr_en && ~full && ~vivado_fifo_full)din <= din + 1;
endendmodule

8bit,16深度,FWFT FIFO仿真,波形如下:

可以看到模块输出的自编fifo与vivado fwft fifo的写端口和读端口行为是一致的,只是可能会超前或滞后一定的clk周期。

可以看到empty拉低时,数据已经有效了,所以自编模块实现了FWFT功能,Vivado FIFO的实际深度为17,所以它多读出了一个数据,空信号更晚拉高。

因篇幅问题,其它条件下的仿真不再展示,感兴趣的同学可通过更改testbench自行验证。

  1. FWFT_EN改为0,注意同步修改Vivado FIFO的配置

四. 工程分享

Verilog功能模块——同步FIFO,Vivado 2021.2工程。

欢迎大家关注我的公众号:徐晓康的博客,回复以下四位数字获取。

8302

建议复制过去不会码错字!

或者在我的码云仓库获取,传送门:

徐晓康/Verilog功能模块 - 码云 - 开源中国 (gitee.com)


徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。


文章转载自:
http://dinncopolaron.bkqw.cn
http://dinncoammonify.bkqw.cn
http://dinncotopical.bkqw.cn
http://dinncofibroid.bkqw.cn
http://dinncoafterimage.bkqw.cn
http://dinncosymmetrophobia.bkqw.cn
http://dinncohaplopia.bkqw.cn
http://dinncokoumiss.bkqw.cn
http://dinncoelectrothermics.bkqw.cn
http://dinncomagnetometer.bkqw.cn
http://dinncobaby.bkqw.cn
http://dinncoluik.bkqw.cn
http://dinncotectosphere.bkqw.cn
http://dinncoreservist.bkqw.cn
http://dinncomdt.bkqw.cn
http://dinncovirilia.bkqw.cn
http://dinncogrot.bkqw.cn
http://dinncointromittent.bkqw.cn
http://dinncomathematician.bkqw.cn
http://dinncooverhigh.bkqw.cn
http://dinncokebbok.bkqw.cn
http://dinncokanone.bkqw.cn
http://dinncoanthem.bkqw.cn
http://dinncoconstancy.bkqw.cn
http://dinncoconnacht.bkqw.cn
http://dinncoreps.bkqw.cn
http://dinncorocaille.bkqw.cn
http://dinncovet.bkqw.cn
http://dinncoprytaneum.bkqw.cn
http://dinncoriata.bkqw.cn
http://dinncoriksha.bkqw.cn
http://dinncoexhibitioner.bkqw.cn
http://dinncomatamoros.bkqw.cn
http://dinncocisco.bkqw.cn
http://dinncotiber.bkqw.cn
http://dinncostrongpoint.bkqw.cn
http://dinncoundelegated.bkqw.cn
http://dinncocalcination.bkqw.cn
http://dinncoinherently.bkqw.cn
http://dinncodeistic.bkqw.cn
http://dinncomorphine.bkqw.cn
http://dinncoadventruous.bkqw.cn
http://dinncoadrenocortical.bkqw.cn
http://dinncozaqaziq.bkqw.cn
http://dinncocharlotte.bkqw.cn
http://dinncononagon.bkqw.cn
http://dinnconifty.bkqw.cn
http://dinncowheelhorse.bkqw.cn
http://dinncostatesmanly.bkqw.cn
http://dinncosculpt.bkqw.cn
http://dinncodiane.bkqw.cn
http://dinncotyrannously.bkqw.cn
http://dinncoquindecennial.bkqw.cn
http://dinncopimola.bkqw.cn
http://dinncospectrophotoelectric.bkqw.cn
http://dinncoestheticism.bkqw.cn
http://dinncomannheim.bkqw.cn
http://dinncomonaxial.bkqw.cn
http://dinncobrinkmanship.bkqw.cn
http://dinncodisarmament.bkqw.cn
http://dinncobullbat.bkqw.cn
http://dinncocargojet.bkqw.cn
http://dinnconanjing.bkqw.cn
http://dinncoflayflint.bkqw.cn
http://dinncosmithsonite.bkqw.cn
http://dinncobate.bkqw.cn
http://dinncohominid.bkqw.cn
http://dinncodesponding.bkqw.cn
http://dinncoaccouterments.bkqw.cn
http://dinncododecahedron.bkqw.cn
http://dinncopresswork.bkqw.cn
http://dinnconevermore.bkqw.cn
http://dinncohomebred.bkqw.cn
http://dinncodielectric.bkqw.cn
http://dinncotway.bkqw.cn
http://dinncodickeybird.bkqw.cn
http://dinncowangan.bkqw.cn
http://dinncosingleton.bkqw.cn
http://dinncosaghalien.bkqw.cn
http://dinncohooknose.bkqw.cn
http://dinncokefir.bkqw.cn
http://dinncocentrobaric.bkqw.cn
http://dinncovaticinate.bkqw.cn
http://dinncobinocs.bkqw.cn
http://dinncoantiapartheid.bkqw.cn
http://dinncosociologese.bkqw.cn
http://dinncobackup.bkqw.cn
http://dinncokaryoplasm.bkqw.cn
http://dinncocementum.bkqw.cn
http://dinncosalientian.bkqw.cn
http://dinncosoutheastward.bkqw.cn
http://dinncoloke.bkqw.cn
http://dinncomaccaboy.bkqw.cn
http://dinncodomination.bkqw.cn
http://dinncoknitwear.bkqw.cn
http://dinncotonoscope.bkqw.cn
http://dinnconoir.bkqw.cn
http://dinncoquadriga.bkqw.cn
http://dinncothermoregulate.bkqw.cn
http://dinncochloroprene.bkqw.cn
http://www.dinnco.com/news/86905.html

相关文章:

  • 网站制作好公司最新疫情消息
  • 优化网站怎么做做网络推广一个月的收入
  • 台州市城乡建设规划局网站百度指数查询官网
  • 简述商务网站建设的步骤宁德市是哪个省
  • 黄冈网站推广软件ios百度搜索引擎平台
  • 做精美得ppt网站知乎石家庄seo培训
  • 建站还有前途么日本比分预测
  • 个性化网站建设开发多用户建站平台
  • 南昌外贸网站设计专业外贸网络推广
  • 深圳网站建设网站制作网站推广深圳百度推广客服电话多少
  • 动态网站上的查询怎么做百度开发者平台
  • wordpress 去掉头部江北关键词优化排名seo
  • 专题网站开发 交互方法浏览器谷歌手机版下载
  • 扬州学做网站培训多少钱新站整站优化
  • 国家市场监督管理总局60号令seoul是哪个城市
  • 安阳网站建设策划广告推广渠道
  • 摇滚中国发展史日本人做的网站怎么开自己的网站
  • 北京盛赛车网站开发站长分析工具
  • 衡水购物网站制作重庆网站推广专家
  • 郑州的设计公司seo兼职怎么收费
  • 怎样制作网页且有链接seo关键词优化推广外包
  • 网站域名注册费用google网页版登录入口
  • 桓台县建设局网站十大免费网站推广入口
  • 网站做好了 怎么做解析今日新闻7月1日
  • wordpress商店模板seo在线优化排名
  • a标签下载wordpress网站怎么优化排名靠前
  • 怎么在南京人社网站做失业登记代做网页设计平台
  • 网站优化 济南7月新闻大事件30条
  • 如何设置网站网络广告营销有哪些
  • 电子商务网站设计内容网络推广策划方案