【芯片前端】同步FIFO的一个小的延伸——一会加一会减得计数器怎么写

简介: 【芯片前端】同步FIFO的一个小的延伸——一会加一会减得计数器怎么写

前言

【芯片前端】保持代码手感——同步FIFO


写完同步fifo的文章后,想起了刚开始的一个错误写法:我做了一个计数器用来算fifo_cnt,就是winc有效就加1,rinc有效就减1;


思路

以前遇到这种问题我都是这样写的:

reg  [DP_WD -1:] fifo_cnt;
wire             fifo_cnt_en = winc | rinc;
wire [DP_WD -1:] fifo_cnt_d  = (winc&rinc) ? fifo_cnt :
                               winc ? fifo_cnt + 1 :
                               rinc ? fifo_cnt - 1 :
                               fifo_cnt;
always @(posedge clk or negedge rst_n)begin
  if(~rst_n)           fifo_cnt<= 0;
  else if(fifo_cnt_en) fifo_cnt<= fifo_cnt_d;
end


后来我发现逻辑可以简化:

reg  [DP_WD -1:] fifo_cnt;
wire             fifo_cnt_en = winc ^ rinc;
wire [DP_WD -1:] fifo_cnt_d  = winc ? fifo_cnt + 1 : fifo_cnt - 1;
always @(posedge clk or negedge rst_n)begin
  if(~rst_n)           fifo_cnt<= 0;
  else if(fifo_cnt_en) fifo_cnt<= fifo_cnt_d;
end


代价就是,fifo_cnt_d这个信号基本就不能用了,没法在当拍做其他逻辑o(╥﹏╥)o


相关文章
|
1月前
|
应用服务中间件 开发工具 nginx
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端 最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。
106 1
|
1月前
|
前端开发
前端React篇之React setState 调用的原理、React setState 调用之后发生了什么?是同步还是异步?
前端React篇之React setState 调用的原理、React setState 调用之后发生了什么?是同步还是异步?
|
9月前
|
前端开发 芯片
【芯片前端】延迟一拍出数的握手型ram结构的一次探索
【芯片前端】延迟一拍出数的握手型ram结构的一次探索
|
9月前
|
前端开发 芯片
【芯片前端】保持代码手感——一对多的握手拆分模块
【芯片前端】保持代码手感——一对多的握手拆分模块
|
9月前
|
前端开发 芯片
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
|
9月前
|
前端开发 芯片
【芯片前端】保持代码手感——握手型同步FIFO设计
【芯片前端】保持代码手感——握手型同步FIFO设计
|
8月前
|
前端开发 JavaScript
Jquery前端分页插件pagination同步加载和异步加载
Jquery前端分页插件pagination同步加载和异步加载
56 0
|
9月前
|
前端开发 调度 芯片
【芯片前端】根据数据有效选择输出的握手型FIFO结构探究
【芯片前端】根据数据有效选择输出的握手型FIFO结构探究
|
9月前
|
前端开发 芯片
【芯片前端】关于set_input_delay/set_output_delay慢信号约束到快时钟的思考
【芯片前端】关于set_input_delay/set_output_delay慢信号约束到快时钟的思考
174 0
|
18天前
|
前端开发 JavaScript 数据库
如何实现前后端分离-----前端笔记
如何实现前后端分离-----前端笔记