在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

跨時鐘域處理方法(二)

CHANBAEK ? 來源:數字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-28 13:52 ? 次閱讀

時鐘域采集從快時鐘域傳輸來的信號時,需要根據信號的特點來進行同步處理。 對于單 bit 信號,一般可根據電平信號和脈沖信號來區分。

電平信號同步

同步邏輯設計中,電平信號是指長時間保持不變的信號。 保持不變的時間限定,是相對于慢時鐘而言的。 只要快時鐘的信號保持高電平或低電平的時間足夠長,以至于能被慢時鐘在滿足時序約束的條件下采集到,就可以認為該信號為電平信號。

既然電平信號能夠被安全的采集到,所以從快時鐘域到慢時鐘域的電平信號也采用延遲打拍的方法做同步。

脈沖信號同步

同步邏輯設計中,脈沖信號是指從快時鐘域輸出的有效寬度小于慢時鐘周期的信號。 如果慢時鐘域直接去采集這種窄脈沖信號,有可能會采集不到。

假如這種脈沖信號脈寬都是一致的,在知道兩個時鐘頻率比的情況下,可以采用“快時鐘域脈寬擴展+慢時鐘域延遲打拍”的方法進行同步。

如果有時窄脈沖信號又表現出電平信號的特點,即有時信號的有效寬度大于慢時鐘周期而能被慢時鐘采集到,那么對此類信號再進行脈沖擴展顯然是不經濟的。 此時,可通過“握手傳輸”的方法進行同步。

假設脈沖信號的高電平期間為有效信號期間,其基本原理如下。

(1) 快時鐘域對脈沖信號進行檢測,檢測為高電平時輸出高電平信號 pulse_fast_r。 或者快時鐘域輸出信號時,不要急于將信號拉低,先保持輸出信號為高電平狀態。

(2) 慢時鐘域對快時鐘域的信號 pulse_fast_r 進行延遲打拍采樣。 因為此時的脈沖信號被快時鐘域保持拉高狀態,延遲打拍肯定會采集到該信號。

(3) 慢時鐘域確認采樣得到高電平信號 pulse_fast2s_r 后,再反饋給快時鐘域。

(4) 快時鐘域對反饋信號 pulse_fast2s_r 進行延遲打拍采樣。 如果檢測到反饋信號為高電平,證明慢時鐘域已經接收到有效的高電平信號。 如果此時快時鐘域自身邏輯不再要求脈沖信號為高電平狀態,拉低快時鐘域的脈沖信號即可。

此方法實質是通過相互握手的方式對窄脈沖信號進行脈寬擴展。

利用握手信號進行同步處理的 Verilog 模型描述如下。

//同步模塊工作時鐘大約為 25MHz 的模塊
//異步數據對來自工作時鐘為 100MHz 的模塊
module pulse_syn_fast2s
  #( parameter          PULSE_INIT = 1'b0
   )
  (
   input                rstn,
   input                clk_fast,
   input                pulse_fast,
   input                clk_slow,
   output               pulse_slow);


   wire                 clear_n ;
   reg                  pulse_fast_r ;
   /**************** fast clk ***************/
   //(1) 快時鐘域檢測到脈沖信號時,不急于將脈沖信號拉低
   always@(posedge clk_fast or negedge rstn) begin
        if (!rstn)
           pulse_fast_r  <= PULSE_INIT ;
        else if (!clear_n)
           pulse_fast_r  <= 1'b0 ;
        else if (pulse_fast)
           pulse_fast_r  <= 1'b1 ;
   end


   reg  [1:0]           pulse_fast2s_r ;
   /************ slow clk *************/
   //(2) 慢時鐘域對信號進行延遲打拍采樣
   always@(posedge clk_slow or negedge rstn) begin
      if (!rstn)
        pulse_fast2s_r     <= 3'b0 ;
      else
        pulse_fast2s_r     <= {pulse_fast2s_r[0], pulse_fast_r} ;
   end
   assign pulse_slow = pulse_fast2s_r[1] ;


   reg [1:0]            pulse_slow2f_r ;
   /********* feedback for slow clk to fast clk *******/
   //(3) 對反饋信號進行延遲打拍采樣
   always@(posedge clk_fast or negedge rstn) begin
      if (!rstn)
        pulse_slow2f_r  <= 1'b0 ;
      else
        pulse_slow2f_r  <= {pulse_slow2f_r[0], pulse_slow} ;
   end
   //控制快時鐘域脈沖信號拉低
   assign clear_n = ~(!pulse_fast && pulse_slow2f_r[1]) ;


endmodule

testbench 描述如下。

`timescale 1ns/1ps


module test ;
   reg          clk_100mhz, clk_25mhz ;
   reg          rstn ;


   initial begin
      clk_100mhz = 0 ;
      clk_25mhz  = 0 ;
      rstn = 0 ;
      #11 rstn = 1 ;
   end
   always #(10/2)   clk_100mhz  = ~clk_100mhz ;
   always #(45/2)   clk_25mhz   = ~clk_25mhz ;


   reg [7:0]            cnt ;
   reg                  pulse_sig ;
   always @(posedge clk_100mhz or negedge rstn) begin
      if (!rstn) begin
         cnt     <= 'b0 ;
      end
      else begin
         cnt    <= cnt + 1'b1 ;
      end
   end


   //窄脈沖生成部分
   always @(posedge clk_100mhz or negedge rstn) begin
      if (!rstn) begin
         pulse_sig      <= 1'b0 ;
      end
      else if (cnt == 5 ||
               cnt == 40 || cnt == 42 ||
               cnt >= 75 && cnt <= 81 || cnt == 85 || cnt == 87 ) 
      begin
         pulse_sig      <= 1'b1 ;
      end
      else begin
         pulse_sig      <= 1'b0 ;
      end
   end


   pulse_syn_fast2s u_fast2s_pulse(
      .rstn             (rstn),
      .clk_fast         (clk_100mhz),
      .pulse_fast       (pulse_sig),
      .clk_slow         (clk_25mhz),
      .pulse_slow       ());


   initial begin
      forever begin
         #100;
         if ($time >= 10000)  $finish ;
      end
   end


endmodule // test

仿真結果如下,由圖可知:

(1) 快時鐘域單個窄脈沖信號被慢時鐘域采集到,但是同步后的信號延遲較長,脈沖寬度較大。 信號延遲是因為延遲打拍和反饋清零決定的,無法避免。 脈寬問題,可以通過對慢時鐘域的信號再進行打拍邊沿檢測的方法進行處理。

(2) 兩個窄脈沖信號同步后的信號脈寬與單個窄脈沖沒有差異,也就是說,同步電路漏掉了第二個窄脈沖的檢測。 這也屬于握手傳輸處理同步問題的特點,當快時鐘域的脈沖信號變化速率過快時,該方法不能分辨相鄰的脈沖。

(3) 當多個寬窄脈沖信號相鄰較近時,雖然該同步方法不能分辨多個脈沖信號,但同步后的信號脈寬可能會相對大一些。

圖片

多位寬數據同步

當多位寬數據進行同步時,如果該數據各 bit 位都可以看作電平信號,即相對一段時間內各 bit 位數據均可以保持不變以至于能被慢時鐘采集到,可以消耗一些觸發器資源對多位寬數據進行簡單的延遲打拍同步。

但如果數據變化速率過快,就不能再使用延遲打拍采樣的方法。 因為此時數據各 bit 位不再是電平信號,變化的時間也參差不齊,用異步時鐘進行打拍采樣,可能會采集到因路徑延遲不停而導致的錯誤數據,即時序上存在 violation。

解決此類異步問題常用的方法是采用異步 FIFO (First In First Out)。

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

    關注

    11

    文章

    2801

    瀏覽量

    76962
  • 脈沖信號
    +關注

    關注

    6

    文章

    400

    瀏覽量

    37030
  • 時鐘域
    +關注

    關注

    0

    文章

    52

    瀏覽量

    9547
  • 異步時鐘
    +關注

    關注

    0

    文章

    17

    瀏覽量

    9417
  • 電平信號
    +關注

    關注

    3

    文章

    26

    瀏覽量

    9149
收藏 人收藏

    評論

    相關推薦

    關于時鐘信號的處理方法

    我在知乎看到了多bit信號時鐘的問題,于是整理了一下自己對于時鐘信號的處理
    的頭像 發表于 10-09 10:44 ?6330次閱讀

    如何處理好FPGA設計中時鐘問題?

    級寄存器的延拍,所以意義是不大的。02方法:異步雙口 RAM處理多 bit 數據的時鐘
    發表于 09-22 10:24

    探尋FPGA中三種時鐘處理方法

    級寄存器的延拍,所以意義是不大的。02方法:異步雙口 RAM處理多 bit 數據的時鐘
    發表于 10-20 09:27

    三種時鐘處理方法

    ,所以意義是不大的。  方法:異步雙口RAM  處理多bit數據的時鐘,一般采用異步雙口R
    發表于 01-08 16:55

    FPGA初學者的必修課:FPGA時鐘處理3大方法

    第三級寄存器,由于第級寄存器對于亞穩態的處理已經起到了很大的改善作用,第三級寄存器在很大程度上可以說只是對于第級寄存器的延拍,所以意義是不大的。02方法
    發表于 03-04 09:22

    如何處理好FPGA設計中時鐘間的數據

    介紹3種時鐘處理方法,這3種方法可以說是FPGA界最常用也最實用的
    發表于 07-29 06:19

    如何處理時鐘間的數據呢

    時鐘處理是什么意思?如何處理時鐘
    發表于 11-01 07:44

    FPGA界最常用也最實用的3種時鐘處理方法

    介紹3種時鐘處理方法,這3種方法可以說是FPGA界最常用也最實用的
    發表于 11-15 20:08 ?1.4w次閱讀

    揭秘FPGA時鐘處理的三大方法

    時鐘處理方法,這三種方法可以說是 FPGA 界最常用也最實用的
    的頭像 發表于 12-05 16:41 ?1681次閱讀

    關于時鐘的詳細解答

    每一個做數字邏輯的都繞不開時鐘處理,談一談SpinalHDL里用于時鐘
    的頭像 發表于 04-27 10:52 ?4308次閱讀
    關于<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>的詳細解答

    介紹3種方法時鐘處理方法

    介紹3種時鐘處理方法,這3種方法可以說是FPGA界最常用也最實用的
    的頭像 發表于 09-18 11:33 ?2.2w次閱讀
    介紹3種<b class='flag-5'>方法</b><b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>

    SpinalHDL里用于時鐘處理的一些手段方法

    每一個做數字邏輯的都繞不開時鐘處理,談一談SpinalHDL里用于時鐘
    的頭像 發表于 07-11 10:51 ?1936次閱讀

    三種時鐘處理方法

    時鐘處理是FPGA設計中經常遇到的問題,而如何處理
    的頭像 發表于 10-18 09:12 ?7938次閱讀

    FPGA時鐘處理方法(一)

    時鐘是FPGA設計中最容易出錯的設計模塊,而且一旦時鐘出現問題,定位排查會非常困難,因為
    的頭像 發表于 05-25 15:06 ?2047次閱讀
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>(一)

    FPGA時鐘處理方法()

    上一篇文章已經講過了單bit時鐘處理方法,這次解說一下多bit的
    的頭像 發表于 05-25 15:07 ?1057次閱讀
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>(<b class='flag-5'>二</b>)
    主站蜘蛛池模板: 全免费一级午夜毛片| 5g影院欧美成人免费| 夜夜夜夜夜夜夜猛噜噜噜噜噜噜| 国产精品最新资源网| 91网视频在线观看| 亚洲成a人片在线看| 手机看片福利视频| 狠狠干狠狠插| 日本xxxx69日本| 亚欧乱色束缚一区二区三区| 男男污肉高h坐便器调教| 最好看的2019中文字幕免费高清 | 成 人在线观看视频网站| 97视频人人| 色中色在线视频| 干成人| 亚洲一区在线视频观看| 在线观看亚洲成人| 色站视频| 狠狠色成人综合首页| 午夜手机福利视频| 国内精品 第一页| 38pao强力打造永久免费高清视频| 久久精品国产精品亚洲精品| 五月伊人婷婷| 免费看一级视频| 永久手机看片福利盒子| 好吊色视频988gao在线观看| 亚洲精品美女久久久aaa| 午夜三级毛片| 久久青| 天天拍夜夜操| 操熟逼| 特级毛片a级毛免费播放| 久久青草视频| 天天做天天做天天综合网| 2019天天干天天操| 在线播放一区二区三区| 欧美高清在线播放| 亚洲偷图色综合色就色| 日本人69xxx|