握手协议打拍

在芯片中常常用到握手协议中vaild或者ready延迟过大,此时需要对握手协议进行打拍。但打拍不能简单的拿寄存器打一拍。

前向打拍

如果对valid和数据打拍,那么就是前向打拍

复制代码
module cmm_streamPipeForward(
input clk,
input rst_n,
input slv_rvalid,
output slv_ready,
input [1:0] data,

output mst_valid,
output [1:0] mst_data,
input  mst_ready);

reg pipe_valid;
reg [1:0] pipe_data;

always@(posedge clk or negedge rst_n)
  begin
  if(~rst_n)
    begin
    pipe_valid <= 1'b0;
    pipe_data  <= 2'b0;
    end
  else
    begin
    if(slv_ready)
      begin
      pipe_valid <= slv_valid;
      pipe_data <= slv_data;
      end
    end
  end


assign mst_valid = pipe_valid;
assign mst_data = pipe_data;
assign slv_ready = pipe_valid ? mst_ready :1'b1;



endmodule 

后向打拍

后向打拍主要针对ready打拍。因为ready打拍,延迟一拍,所以内部也要缓存一笔数据。

复制代码
module cmm_straemPipeBackward(
  input  clk,
  input rst_n,
  input slv_valid,
  output slv_ready,
  input [1:0] data,
  output mst_valid,
  output [1:0] mst_data,
  input  mst_ready
);

reg pipe_ready;
reg pipe_data

always@(posedge clk or negedge rst_n)
  begin
  if(!rst_n)
    begin
    pipe_ready <=1'b1;
    pipe_data <=2'b0;
    end
  else
   begin
   if(slv_valid)
     begin
     pipe_ready <= 1'b0; 
     end
   if(mst_ready)
     begin
     pipe_ready <= 1'b1;
     end
    
   if(slv_ready)
     begin
     pipe_data <=slv_data;
     end
   end
  end


assign slv_ready = pipe_ready;
assign mst_valid = slv_valid ||(!pipe_ready);
assign mst_data = pipe_data;




endmodule

如果双边都要打拍,那么就需要加一个前向然后再加一个后向,组合起来。

相关推荐
数据安全科普王17 小时前
打破中心枷锁:P2P网络如何用“去中心化”重构互联网通信
网络·去中心化·p2p
爱吃烤鸡翅的酸菜鱼17 小时前
CANN ops-nn激活函数与池化算子深度解析
网络·开源·aigc
saber_andlibert18 小时前
TCMalloc底层实现
java·前端·网络
飞凌嵌入式20 小时前
用「EN 18031认证」通关欧盟,这张 “网络安全护照” 已就位
网络·安全·能源
Trouvaille ~20 小时前
TCP Socket编程实战(三):线程池优化与TCP编程最佳实践
linux·运维·服务器·网络·c++·网络协议·tcp/ip
JoySSLLian21 小时前
手把手教你安装免费SSL证书(附宝塔/Nginx/Apache配置教程)
网络·人工智能·网络协议·tcp/ip·nginx·apache·ssl
Zach_yuan1 天前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
猫头虎1 天前
如何解决 OpenClaw “Pairing required” 报错:两种官方解决方案详解
网络·windows·网络协议·macos·智能路由器·pip·scipy
charlotte102410241 天前
高并发:关于在等待学校教务系统选课时的碎碎念
java·运维·网络
Zaralike1 天前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络