一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是握手協(xié)議?握手機(jī)制的原理

倩倩 ? 來(lái)源:CSDN ? 作者:CSDN ? 2022-08-12 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

。

什么是握手協(xié)議

說(shuō)起握手,首先查了一下百度百科。握手是一種禮儀,起源于中世紀(jì)的歐洲,順序?yàn)殚L(zhǎng)幼有序,女士?jī)?yōu)先。(PS:所以握手的時(shí)候,男士記得要紳士一點(diǎn)哦)。

在芯片中,握手是最古老的跨時(shí)鐘域之間傳輸數(shù)據(jù)的方式。握手機(jī)制通過(guò)將脈沖信號(hào)展寬,待輸出一側(cè)檢測(cè)到信號(hào)并將其解析為脈沖信號(hào)后,再向輸入一側(cè)發(fā)送應(yīng)答信號(hào),表明接收到信號(hào)并且傳輸完成。

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

為什么要握手

在人類(lèi)的進(jìn)化史中,握手作為一種善意的表達(dá)方式,可以增進(jìn)人與人之間的和諧。言歸正傳,那么數(shù)字電路中為什么也需要握手機(jī)制呢?這是因?yàn)樵跀?shù)字電路中,跨時(shí)鐘域處理是個(gè)較為常見(jiàn)的問(wèn)題。關(guān)于跨時(shí)鐘域,我們公眾號(hào)之前有介紹過(guò),想復(fù)習(xí)一下的同學(xué)可以查看一下之前寫(xiě)的文章。

在從快時(shí)鐘向慢時(shí)鐘傳遞時(shí),由于輸入信號(hào)變化較快,輸出一側(cè)可能跟不上輸入的變化,從而導(dǎo)致“漏采“現(xiàn)象。由于兩個(gè)時(shí)鐘之間的頻率不同,來(lái)自快時(shí)鐘域的脈沖信號(hào),還沒(méi)來(lái)得及被慢時(shí)鐘的采到,便轉(zhuǎn)瞬即逝,從而導(dǎo)致信號(hào)被漏采。此時(shí),握手機(jī)制便可以大顯神通。

握手機(jī)制的原理

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

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

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

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

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

(4)當(dāng)r_ack_tclk為高電平時(shí),發(fā)送端將t_rdy置為0。

(5)當(dāng)t_rdy_rclk為低電平時(shí),接收端將r_ack置為0。

(6)當(dāng)r_ack_tclk為低電平時(shí),發(fā)送端將t_rdy重新置為1發(fā)送端可以發(fā)送新的數(shù)據(jù)。

至此,全握手完成。顯然,全握手過(guò)程耗時(shí)較長(zhǎng),數(shù)據(jù)傳輸較慢。但是全握手機(jī)制穩(wěn)定可靠,可以在兩個(gè)任意頻率的時(shí)鐘域中安全地進(jìn)行數(shù)據(jù)傳輸。需要注意一點(diǎn)的是,數(shù)據(jù)應(yīng)該在發(fā)送時(shí)鐘域內(nèi)穩(wěn)定至少兩個(gè)時(shí)鐘上升沿,請(qǐng)求信號(hào)req的寬度應(yīng)該超過(guò)兩個(gè)時(shí)鐘周期,否則從高速時(shí)鐘向低速時(shí)鐘傳遞可能無(wú)法捕捉到該信號(hào),也就是信號(hào)“失聯(lián)”了。

握手機(jī)制的代碼實(shí)現(xiàn)

發(fā)送端狀態(tài)機(jī):

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

接收端狀態(tài)機(jī):

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

握手機(jī)制的缺點(diǎn)

一個(gè)字:慢。

好了,希望本文對(duì)大家有所幫助。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1639

    瀏覽量

    81921
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70747
  • 脈沖信號(hào)
    +關(guān)注

    關(guān)注

    6

    文章

    402

    瀏覽量

    37649

原文標(biāo)題:談?wù)剶?shù)字芯片中的握手協(xié)議

文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯片設(shè)計(jì)之握手協(xié)議

    本文主要介紹握手的基本概念,讀者可通過(guò)該篇文章對(duì)握手有個(gè)基本概念。
    的頭像 發(fā)表于 05-14 09:16 ?447次閱讀
    芯片設(shè)計(jì)之<b class='flag-5'>握手</b><b class='flag-5'>協(xié)議</b>

    TCP三次握手和四次揮手,這樣解釋太通俗易懂了!

    TCP連接的建立和釋放分別通過(guò)“三次握手”和“四次揮手”來(lái)完成。三次握手過(guò)程TCP三次握手是建立可靠網(wǎng)絡(luò)連接的關(guān)鍵過(guò)程,它用于確保通信雙方能夠正常發(fā)送和接收數(shù)據(jù),并提供可靠的數(shù)據(jù)傳輸機(jī)制
    的頭像 發(fā)表于 04-24 19:33 ?770次閱讀
    TCP三次<b class='flag-5'>握手</b>和四次揮手,這樣解釋太通俗易懂了!

    AXI握手時(shí)序優(yōu)化—pipeline緩沖器

    skid buffer(pipeline緩沖器)介紹 ??解決ready/valid兩路握手的時(shí)序困難,使路徑流水線化。 ??只關(guān)心valid時(shí)序參考這篇寫(xiě)得很好的博客鏈接:?握手協(xié)議(pvld
    的頭像 發(fā)表于 03-08 17:10 ?558次閱讀
    AXI<b class='flag-5'>握手</b>時(shí)序優(yōu)化—pipeline緩沖器

    如何監(jiān)測(cè)TCP三次握手過(guò)程

    在計(jì)算機(jī)網(wǎng)絡(luò)中,傳輸控制協(xié)議(TCP)是確保數(shù)據(jù)可靠傳輸?shù)年P(guān)鍵協(xié)議之一。TCP通過(guò)三次握手過(guò)程來(lái)建立兩個(gè)端點(diǎn)之間的連接,這個(gè)過(guò)程對(duì)于網(wǎng)絡(luò)通信的穩(wěn)定性和安全性至關(guān)重要。 TCP三次握手過(guò)
    的頭像 發(fā)表于 01-06 09:20 ?777次閱讀

    TCP三次握手與負(fù)載均衡的配置

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它通過(guò)三次握手(Three-way Handshake)建立連接,確保數(shù)據(jù)的可靠傳輸。而負(fù)載均衡(Load
    的頭像 發(fā)表于 01-06 09:15 ?562次閱讀

    TCP三次握手如何影響網(wǎng)絡(luò)性能

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它通過(guò)三次握手過(guò)程來(lái)建立兩個(gè)網(wǎng)絡(luò)實(shí)體之間的連接,確保數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?TCP三次握手的過(guò)程 SYN(同步
    的頭像 發(fā)表于 01-06 09:13 ?653次閱讀

    TCP三次握手與連接建立的關(guān)系

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它負(fù)責(zé)在兩個(gè)主機(jī)之間建立、維護(hù)和終止連接,確保數(shù)據(jù)的可靠傳輸。TCP連接的建立過(guò)程是通過(guò)三次握手
    的頭像 發(fā)表于 01-06 09:09 ?736次閱讀

    TCP三次握手的步驟詳解

    1.TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。在兩個(gè)主機(jī)之間建立通信之前,必須通過(guò)三次握手過(guò)程來(lái)建立一個(gè)穩(wěn)定的連接。這個(gè)過(guò)程確保了兩個(gè)端點(diǎn)都準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。 2. 第一次握手
    的頭像 發(fā)表于 01-06 09:07 ?952次閱讀

    TCP三次握手的網(wǎng)絡(luò)抓包分析

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP通過(guò)三次握手過(guò)程建立兩個(gè)通信實(shí)體之間的連接,確保數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?TCP三次握手
    的頭像 發(fā)表于 01-06 09:05 ?725次閱讀

    TCP三次握手安全性分析

    TCP(傳輸控制協(xié)議)的三次握手是建立可靠連接的重要機(jī)制,它確保了通信雙方在數(shù)據(jù)傳輸前的連接狀態(tài)是可靠和準(zhǔn)確的。然而,從安全性的角度來(lái)分析,TCP三次握手并非無(wú)懈可擊,以下是對(duì)其安全性
    的頭像 發(fā)表于 01-03 18:10 ?1021次閱讀

    TCP三次握手與UDP的區(qū)別

    在計(jì)算機(jī)網(wǎng)絡(luò)中,數(shù)據(jù)傳輸?shù)目煽啃院托适莾蓚€(gè)關(guān)鍵因素。為了滿足不同的應(yīng)用需求,設(shè)計(jì)者們開(kāi)發(fā)了多種傳輸層協(xié)議。其中,TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是最常用的兩種。它們?cè)跀?shù)據(jù)傳輸
    的頭像 發(fā)表于 01-03 17:35 ?865次閱讀

    TCP三次握手的基本原理

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它確保了數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)目煽啃院晚樞蛐?。為了建立兩個(gè)網(wǎng)絡(luò)實(shí)體之間的通信,TCP使用一種稱(chēng)為“三次握手
    的頭像 發(fā)表于 01-03 17:25 ?1153次閱讀

    TCP三次握手協(xié)議的作用

    在計(jì)算機(jī)網(wǎng)絡(luò)中,數(shù)據(jù)的傳輸需要在發(fā)送方和接收方之間建立一個(gè)穩(wěn)定的連接,以確保數(shù)據(jù)的完整性和順序。TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它通過(guò)三次握手協(xié)議
    的頭像 發(fā)表于 01-03 17:15 ?930次閱讀

    TCP三次握手的詳細(xì)過(guò)程

    TCP(傳輸控制協(xié)議)三次握手是一種在互聯(lián)網(wǎng)上建立一個(gè)可靠的、有序的和錯(cuò)誤檢測(cè)能力的連接的方法。這個(gè)過(guò)程確保了兩個(gè)設(shè)備(通常是客戶端和服務(wù)器)在數(shù)據(jù)傳輸開(kāi)始之前能夠相互確認(rèn)對(duì)方的存在和狀態(tài)。以下
    的頭像 發(fā)表于 01-03 17:11 ?1208次閱讀

    簡(jiǎn)述TCP協(xié)議的三次握手機(jī)制

    TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在IP網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸。TCP協(xié)議的三次握手
    的頭像 發(fā)表于 08-16 10:57 ?2062次閱讀