色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是握手協議?握手機制的原理

倩倩 ? 來源:CSDN ? 作者:CSDN ? 2022-08-12 14:51 ? 次閱讀

什么是握手協議

說起握手,首先查了一下百度百科。握手是一種禮儀,起源于中世紀的歐洲,順序為長幼有序,女士優先。(PS:所以握手的時候,男士記得要紳士一點哦)。

芯片中,握手是最古老的跨時鐘域之間傳輸數據的方式。握手機制通過將脈沖信號展寬,待輸出一側檢測到信號并將其解析為脈沖信號后,再向輸入一側發送應答信號,表明接收到信號并且傳輸完成。

96f7bf62-19f6-11ed-ba43-dac502259ad0.png

為什么要握手

在人類的進化史中,握手作為一種善意的表達方式,可以增進人與人之間的和諧。言歸正傳,那么數字電路中為什么也需要握手機制呢?這是因為在數字電路中,跨時鐘域處理是個較為常見的問題。關于跨時鐘域,我們公眾號之前有介紹過,想復習一下的同學可以查看一下之前寫的文章。

在從快時鐘向慢時鐘傳遞時,由于輸入信號變化較快,輸出一側可能跟不上輸入的變化,從而導致“漏采“現象。由于兩個時鐘之間的頻率不同,來自快時鐘域的脈沖信號,還沒來得及被慢時鐘的采到,便轉瞬即逝,從而導致信號被漏采。此時,握手機制便可以大顯神通。

握手機制的原理

97777d60-19f6-11ed-ba43-dac502259ad0.png

(1)發送端在t_clk時鐘域下將需要發送的數據準備好后,將t_rdy信號置為有效,該信號必須在tclk下降沿輸出。接收端在rclk時鐘域下同步r_rdy信號,同步后的信號命名為t_rdy_rclk。

(2)接收端在t_rdy_rclk有效期間,對t_data進行采樣,得到t_data_rclk。

(3)接收端將r_ack信號置為1,信號必須在rclk下降沿輸出。發送端將r_ack同步為r_ack_tclk。

至此,已經完成“半握手”,發送端在輸出下一數據前,不會等到r_ack_tclk被置為0。半握手機制工作速度快,但是使用不當有可能會導致操作錯誤。然而,如果要從高頻時鐘向低頻時鐘傳輸數據,則需要采用全握手機制。

(4)當r_ack_tclk為高電平時,發送端將t_rdy置為0。

(5)當t_rdy_rclk為低電平時,接收端將r_ack置為0。

(6)當r_ack_tclk為低電平時,發送端將t_rdy重新置為1發送端可以發送新的數據。

至此,全握手完成。顯然,全握手過程耗時較長,數據傳輸較慢。但是全握手機制穩定可靠,可以在兩個任意頻率的時鐘域中安全地進行數據傳輸。需要注意一點的是,數據應該在發送時鐘域內穩定至少兩個時鐘上升沿,請求信號req的寬度應該超過兩個時鐘周期,否則從高速時鐘向低速時鐘傳遞可能無法捕捉到該信號,也就是信號“失聯”了。

握手機制的代碼實現

發送端狀態機:

97c37e22-19f6-11ed-ba43-dac502259ad0.jpg


module transmit(tclk,reset_tclk,t_rdy,data_avail,transmit_data,t_data,r_ack);input tclk;input reset_tclk;input data_avail;input [31:0]transmit_data;input r_ack;output t_rdy;output t_data;
localparam IDLE_T = 2'd0,    ASSERT_T_RDY = 2'd1,    DEASSERT_T_RDY = 2'd2;
reg [1:0] t_hndshk_state,t_hndshk_state_nxt;reg t_rdy,t_rdy_nxt;reg [31:0] t_data,t_data_nxt;reg r_ack_tclk;
always@(*)begin
 t_hndshk_state_nxt = t_hndshk_state; t_rdy_nxt = 1'b0; t_data_nxt = t_data;
 case(t_hndshk_state)  IDLE_T:begin   if(data_avail) begin    t_rdy_nxt = 1'b1;    t_hndshk_state_nxt = ASSERT_T_RDY;    t_data_nxt = transmit_data;   end  end
  ASSERT_T_RDY:begin   if(r_ack_tclk)begin    t_rdy_nxt = 1'b0;    t_hndshk_state_nxt = DEASSERT_T_RDY;    t_data_nxt = 'd0;   end   else begin    t_rdy_nxt = 1'b1;    t_data_nxt = transmit_data;   end  end
  DEASSERT_T_RDY:begin   if(!r_ack_tclk)begin    if(data_avail)begin     t_rdy_nxt = 1'b1;     t_hndshk_state_nxt = ASSERT_T_RDY;     t_data_nxt = transmit_data;    end    else begin     t_hndshk_state_nxt = IDLE_T;    end   end  end
 endcaseendalways@(posedge tclk or negedge reset_tclk)begin if(!reset_tclk)begin  t_rdy <= 1'b0;  t_hndshk_state <= IDLE_T;  t_data <= 32'h00000000;  r_ack_tclk <= 1'b0; end
 else begin  t_rdy <= t_rdy_nxt;  t_hndshk_state <= t_hndshk_state_nxt;  t_data <= t_data_nxt;  r_ack_tclk <= r_ack; end
endendmodule

接收端狀態機:

97e481b2-19f6-11ed-ba43-dac502259ad0.jpg


module receiver(rclk,reset_rclk,t_rdy,t_data,r_ack);input rclk,reset_rclk;input t_rdy;input[31:0] t_data;output r_ack;
reg r_hndshk_state,r_hndshk_state_nxt;reg t_rdy_rclk;reg[31:0] t_data_rclk,t_data_rclk_nxt;reg r_ack,r_ack_nxt;
localparam IDLE_R = 1'b0,    ASSERT_ACK = 1'b1;
always@(*)begin r_hndshk_state_nxt = r_hndshk_state; r_ack_nxt = 1'b0; t_data_rclk_nxt = t_data_rclk; case(r_hndshk_state)  IDLE_R:begin   if(t_rdy_rclk)begin    r_hndshk_state_nxt = ASSERT_ACK;    t_data_rclk_nxt = t_data;    r_ack_nxt = 1'b1;   end  end
  ASSERT_ACK:begin   if(!t_rdy_rclk)begin    r_hndshk_state_nxt = IDLE_R;    r_ack_nxt = 1'b0;   end   else begin    r_ack_nxt = 1'b1;   end  end
 endcaseend
always@(posedge rclk or negedge reset_rclk)begin if(!reset_rclk)begin  r_hndshk_state <= IDLE_R;  t_data_rclk <= 1'b0;  t_rdy_rclk <= 1'b0;  r_ack <= 1'b0; end
 else begin  r_hndshk_state <= r_hndshk_state_nxt;  t_data_rclk <= t_data_rclk_nxt;  t_rdy_rclk <= t_rdy;  r_ack <= r_ack_nxt; endend
endmodule

握手機制的缺點

一個字:慢。

好了,希望本文對大家有所幫助。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數字電路
    +關注

    關注

    193

    文章

    1608

    瀏覽量

    80682
  • 代碼
    +關注

    關注

    30

    文章

    4799

    瀏覽量

    68728
  • 脈沖信號
    +關注

    關注

    6

    文章

    399

    瀏覽量

    37009

原文標題:談談數字芯片中的握手協議

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何監測TCP三次握手過程

    在計算機網絡中,傳輸控制協議(TCP)是確保數據可靠傳輸的關鍵協議之一。TCP通過三次握手過程來建立兩個端點之間的連接,這個過程對于網絡通信的穩定性和安全性至關重要。 TCP三次握手
    的頭像 發表于 01-06 09:20 ?152次閱讀

    TCP三次握手與負載均衡的配置

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三次握手(Three-way Handshake)建立連接,確保數據的可靠傳輸。而負載均衡(Load
    的頭像 發表于 01-06 09:15 ?161次閱讀

    TCP三次握手如何影響網絡性能

    在計算機網絡中,TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三次握手過程來建立兩個網絡實體之間的連接,確保數據傳輸的可靠性和順序性。 TCP三次握手的過程 SYN(同步
    的頭像 發表于 01-06 09:13 ?157次閱讀

    TCP三次握手的常見問題及解決方案

    TCP三次握手(Three-way Handshake)是TCP(傳輸控制協議)建立連接時的一個過程,它確保了兩個端點在開始通信之前都準備好了。這個過程包括三次通信:SYN(同步),SYN-ACK
    的頭像 發表于 01-06 09:11 ?183次閱讀

    TCP三次握手與連接建立的關系

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它負責在兩個主機之間建立、維護和終止連接,確保數據的可靠傳輸。TCP連接的建立過程是通過三次握手
    的頭像 發表于 01-06 09:09 ?158次閱讀

    TCP三次握手的步驟詳解

    1.TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。在兩個主機之間建立通信之前,必須通過三次握手過程來建立一個穩定的連接。這個過程確保了兩個端點都準備好發送和接收數據。 2. 第一次握手
    的頭像 發表于 01-06 09:07 ?157次閱讀

    TCP三次握手的網絡抓包分析

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。TCP通過三次握手過程建立兩個通信實體之間的連接,確保數據傳輸的可靠性和順序性。 TCP三次握手
    的頭像 發表于 01-06 09:05 ?152次閱讀

    TCP三次握手安全性分析

    TCP(傳輸控制協議)的三次握手是建立可靠連接的重要機制,它確保了通信雙方在數據傳輸前的連接狀態是可靠和準確的。然而,從安全性的角度來分析,TCP三次握手并非無懈可擊,以下是對其安全性
    的頭像 發表于 01-03 18:10 ?442次閱讀

    TCP三次握手與UDP的區別

    在計算機網絡中,數據傳輸的可靠性和效率是兩個關鍵因素。為了滿足不同的應用需求,設計者們開發了多種傳輸層協議。其中,TCP(傳輸控制協議)和UDP(用戶數據報協議)是最常用的兩種。它們在數據傳輸
    的頭像 發表于 01-03 17:35 ?330次閱讀

    TCP三次握手的基本原理

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它確保了數據在網絡中傳輸的可靠性和順序性。為了建立兩個網絡實體之間的通信,TCP使用一種稱為“三次握手
    的頭像 發表于 01-03 17:25 ?429次閱讀

    TCP三次握手協議的作用

    在計算機網絡中,數據的傳輸需要在發送方和接收方之間建立一個穩定的連接,以確保數據的完整性和順序。TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,它通過三次握手協議
    的頭像 發表于 01-03 17:15 ?307次閱讀

    TCP三次握手的詳細過程

    TCP(傳輸控制協議)三次握手是一種在互聯網上建立一個可靠的、有序的和錯誤檢測能力的連接的方法。這個過程確保了兩個設備(通常是客戶端和服務器)在數據傳輸開始之前能夠相互確認對方的存在和狀態。以下
    的頭像 發表于 01-03 17:11 ?326次閱讀

    簡述TCP協議的三次握手機制

    TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它主要用于在IP網絡中進行數據傳輸。TCP協議的三次握手
    的頭像 發表于 08-16 10:57 ?1097次閱讀

    說說TCP三次握手的過程?為什么是三次而不是兩次、四次?

    三次而不是兩次或四次。 首先,我們需要了解TCP是一種面向連接的協議。在進行數據傳輸之前,發送端和接收端需要建立一個可靠的連接。TCP三次握手就是用來建立這個連接的過程。 三次握手的過程如下: 第一步:發送端向接收端發送一個SY
    的頭像 發表于 02-04 11:03 ?704次閱讀

    TCP協議連接的三次握手

    通過三次握手,客戶端與服務端能夠確保彼此的網絡連接是可用的。客戶端發起的SYN報文和服務端返回的SYN+ACK報文都包含了對方的初始序列號和通信能力信息,通過互相確認這些信息,雙方確認彼此的能力和正確性。
    的頭像 發表于 02-03 16:44 ?1385次閱讀
    TCP<b class='flag-5'>協議</b>連接的三次<b class='flag-5'>握手</b>
    主站蜘蛛池模板: 欧美精品九九99久久在免费线| ⅹxx日本护土| 有人在线观看的视频吗免费| 久久国产36精品色熟妇| 国产激情视频在线| 波多结衣一区二区三区| 囚禁固定在调教椅上扩张H| 在线看片av以及毛片| 少妇精油按摩| 国产精人妻无码一区麻豆| 亚洲精品午睡沙发系列| 人妻满熟妇AV无码区国产| 久久青草在线视频精品| 国产乱对白精彩在线播放| 99视频久九热精品| 在线高清视频不卡无码| 午夜想想爱| 日韩一区二区三区精品 | 0951影音在线| 日本不卡一二三| 米奇影视999| 国产偷抇久久精品A片蜜臀AV| 伊人影院综合网| 性色AV乱码一区二区三区视频| 久久夜色撩人精品国产| 久久综合中文字幕无码| 亚洲精品免费在线视频| 开心成人社区| 久久aa毛片免费播放嗯啊| bbw videos 欧美老妇| 天天干夜夜叭| 日日操夜夜摸| 欧洲日韩av无线在码| 黄小飞二人转| 国产亚洲精品福利视频| 国产高潮久久精品AV无码| 糙汉顶弄抽插HHHH| xxxx69美国| 拔擦拔擦8X永久华人免费播放器| 99精品免费在线观看| 亚洲精品中文字幕一二三四区|