握手协议打拍

在芯片中常常用到握手协议中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

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

相关推荐
@insist1231 小时前
网络工程师-网络安全核心加密技术体系:对称 / 非对称加密、数字签名与证书全解析
网络·安全·web安全·网络工程师·软考·软件水平考试
盐真卿1 小时前
华为数通 | VRRP负载分担与网关冗余实验:主备切换+流量分流,企业高可用网络实战
网络·华为
isyangli_blog1 小时前
4、sdn 网络性能的测试与验证
网络
qq_260241231 小时前
将盾CDN:网络安全情报共享的实践与挑战
网络·安全·web安全
攻城狮在此2 小时前
华为企业网二层交换、三层交换、出口路由组网配置案例(OSPF动态路由)
网络·架构
七夜zippoe2 小时前
OpenClaw 多代理协作编排:构建企业级智能协作网络
网络·工作流·openclaw·多代理协作·对等协作
会员果汁4 小时前
网络工程-路由策略概述
网络
mounter62510 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
ACP广源盛1392462567312 小时前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
嵌入式小企鹅13 小时前
蓝牙学习系列(八):BLE L2CAP 协议详解
网络·学习·蓝牙·ble·协议栈·l2cap