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

扁平式网站模板phpcms模板行业网站

扁平式网站模板,phpcms模板行业网站,旅游网站建站目的,老干局网站建设方案异步FIFO是verilog中常见的设计#xff0c;通常用于不同时钟域下的数据同步。 在实现 FIFO 时#xff0c;无论是同步 FIFO 还是异步 FIFO #xff0c;通常会通过双口 RAM #xff08; Dual Port RAM #xff09;并添加一些必要的逻辑来实现。双口 RAM的设计如下#xff1…异步FIFO是verilog中常见的设计通常用于不同时钟域下的数据同步。 在实现 FIFO 时无论是同步 FIFO 还是异步 FIFO 通常会通过双口 RAM  Dual Port RAM 并添加一些必要的逻辑来实现。双口 RAM的设计如下 //双口RAM注意没有读写同步可能会发生对同一地址的读写冲突问题 //使用时一口仅用于读另一口仅用于写module full_dp_ram #(parameter DW 8, //数据位宽parameter AW 4, //地址位宽parameter SZ 2**AW //数据深度 ) (input clk_a,input wen_a,input ren_a,input [AW-1:0] addr_a,input [DW-1:0] wdata_a,output [DW-1:0] rdata_a,input clk_b,input wen_b,input ren_b,input [AW-1:0] addr_b,input [DW-1:0] wdata_b,output [DW-1:0] rdata_b );reg [DW-1:0] mem [SZ-1:0];reg [DW-1:0] q_a;always (posedge clk_a) beginif (wen_a) beginmem[addr_a] wdata_a;endif (ren_a) beginq_a mem[addr_a];endendreg [DW-1:0] q_b;always (posedge clk_b) beginif (wen_b) beginmem[addr_b] wdata_b;endif (ren_b) beginq_b mem[addr_b];endendassign rdata_a q_a;assign rdata_b q_b; endmodule 在异步FIFO的框图中只需要加入读、写控制逻辑即可。在写逻辑中用于产生写地址和写满信号 在读逻辑中用于产生读地址和读空信号。 读写控制逻辑还需要受到读写使能信号的控制。 空 读空读地址追上写地址 满 写满写地址追上读地址。 问题来了 怎么判地址断追上了呢 如果地址相等那应该是追上了即 raadr waddr 或者 wddr raddr 。 如果按照这种判断显然这两个地址追上对方的判断是等效的无法区分出来到底是写追上读还是读追上写。 因此一种方式是可以考虑 使用 1 个标志位 flag 来额外指示写追上读还是读追上写。 以一个 4 深度的 FIFO 实例来说明 4 深度原本需要 2 bit 的读写地址现在扩展成 3 bit 。 使用低 2 位来进行双口 RAM 的地址索引高位用于判断空满。 对于空信号可以知道当 FIFO 里没有待读出的数据时产生。 也就是说此时读追上了写把之前写的数据刚刚全部都出读地址和写地址此时指向相同的位置即raddr  waddr 对于写满信号当写入后还没被读出的数据恰好是 FIFO 深度的时候产生满信号即写地址 - 读地址  FIFO 深度  4 。 对照下图可以发现此时对于双口 RAM 的 2 bit 的地址来说读写地址一致 对于最高位来所写是 1 而读是 0 。 再考虑下图所示的一种情况写入待读出的数据仍然是 4 个此时也是 4 深度的 FIFO 已经满了。 读写地址的低位相同高位是写 0 读 1 。 异步FIFO设计代码如下所示 //利用双口RAM实现异步FIFOmodule async_fifo #(parameter DW 8, //数据宽度parameter AW 4 //数据深度 ) (input wclk, input rclk, input wrstn,input rrstn, input wen, input [DW-1:0] wdata, output wfull, //写满信号input ren, output [DW-1:0] rdata,output rempty //读空信号 );reg [AW:0] waddr;reg [AW:0] raddr;//sync_w2rwire [AW:0] wptr waddr ^ {1b0, waddr[AW:1]}; //转换为Gray Codereg [AW:0] w2r_wptr1, w2r_wptr2;always (posedge rclk or negedge rrstn) begin //用读时钟来同步写端信号if (!rrstn) beginw2r_wptr1 0;w2r_wptr2 0;endelse beginw2r_wptr1 wptr;w2r_wptr2 w2r_wptr1;endend//sync_r2wwire [AW:0] rptr raddr ^ {1b0, raddr[AW:1]}; //将二进制转换为Gray Codereg [AW:0] r2w_rptr1, r2w_rptr2;always (posedge wclk or negedge wrstn) begin //用写时钟来同步读端信号if (!wrstn) beginr2w_rptr1 0;r2w_rptr2 0;endelse beginr2w_rptr1 rptr;r2w_rptr2 r2w_rptr1;endend//statusassign rempty (w2r_wptr2 rptr); assign wfull (wptr {~r2w_rptr2[AW:AW-1], r2w_rptr2[AW-2:0]}); //写指针等于读指针最高位取反时表示满wire wr_flag !wfull wen; //FIFO非满且写使能wire rd_flag !rempty ren; //FIFO非空且读使能always (posedge wclk or negedge wrstn) beginif (!wrstn)waddr 0;else if (wr_flag)waddr waddr 1b1;elsewaddr waddr;endalways (posedge rclk or negedge rrstn) beginif (!rrstn)raddr 0;else if (rd_flag)raddr raddr 1b1;elseraddr raddr;endfull_dp_ram #(.DW (DW),.AW (AW)) ram (.clk_a (wclk),.wen_a (wr_flag),.ren_a (1b0), //A口仅用于写.addr_a (waddr[AW-1:0]),.wdata_a (wdata),.rdata_a (),.clk_b (rclk),.wen_b (1b0), //B口仅用于读.ren_b (rd_flag),.addr_b (raddr[AW-1:0]),.wdata_b (0),.rdata_b (rdata));endmodule 由于涉及异步时钟因此需要读端到写端信号的同步和写端到读端的信号同步。异步FIFO在这里每个口只用作一种用途读或写。
http://www.hkea.cn/news/14435064/

相关文章:

  • 网站作用微网站 微信网站
  • 做公司网站详细步骤永州网站开发
  • 医药行业网站建设十大网站免费
  • 建设淘宝网站的目的wordpress插件目录504
  • 交通信用网站建设关于征求网站建设的通知
  • 宝安建网站公司域名购买之后怎么做网站
  • win8建立网站网上哪里接app推广单
  • 控制网站的大量访问软件开发的三种基本方法
  • 二手市场网站建设的目的怎么制作网站弹出广告
  • 卖二手手表的网站好网站建设公司开发
  • 无锡网站建设外贸net网站开发视频
  • 长沙城市建设档案馆网站朝阳公司做网站
  • 嘉禾手机网站建设策划设计网站
  • 亿达城市建设官方网站北京十大室内设计工作室
  • 关于做好学院网站建设的要求做网络竞拍的网站需要什么
  • 做兼职一般去哪个网站好pyhton可以做网站吗
  • 做网站程序的都不关注seo安全生产门户网站建设
  • 自己做的网站怎么用qq登入国家企业信用网官网
  • 做ios试玩推广网站软件app开发公司电话
  • 商城网站建设的步骤济南的网站建设公司哪家好
  • 图网新网站排名优化
  • 车床加工东莞网站建设公关公司服务的特点
  • 网站开发要求有哪些界面设计规范
  • 关于书店电商网站建设的心得十堰做网站最好的公司
  • 天津网站制作推广不知情的情况下帮别人做网站他违法
  • 建站公司如何在抖音平台开店徐州社交网站
  • 电子商务网站建设策划书范文广州公司注册场地要求
  • 网站设计 版权嘉定网站设计制作优化排名
  • WordPress询盘seo网站内容优化
  • 个人网站备案容易吗做购物网站能否生存