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

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

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

如何捕獲后門路徑信號的跳變?

sanyue7758 ? 來源: 驗證芯發(fā)現(xiàn) ? 2023-09-24 11:34 ? 次閱讀

使用后門方式測量時鐘頻率的需求來源更多是SOC驗證的場景,由于SOC的規(guī)模較大,一次編譯時間成本較高,在N個小時級別。如果采用前門方式,比如編寫測量頻率的module或者interface,一旦有新的測量需求則就需要TB重新連接時鐘信號,重新編譯環(huán)境。

此前的一篇文章,提出了一個問題:如何后門準確地捕獲到信號地跳變沿?

如何捕獲后門路徑信號的跳變?

69b0daa2-5960-11ee-939d-92fbcf53809c.png

如果無法精確捕獲到信號地跳變沿,那么也就無法"精確地"測量出時鐘地頻率。容易想到的辦法,是可以使用如下的方法進行測量:

bitdut_value=1
//step1:找到信號低電平
while(dut_value)begin
hdl_read("xxx",dut_value)
#N
end

//step2:找到高電平,作為測量的第一個上升沿時刻
bitdut_value=0
//找到信號低電平
while(!dut_value)begin
hdl_read("xxx",dut_value)
#N
end

//step3:找到低電平,作為下降沿
...
//step4:找到高電平,作為測量的第二個上升沿。記錄此時的仿真時間,減去step2的仿真時間,得到時鐘周期
...

上述的代碼需要考慮如下問題:

時鐘頻率,時鐘頻率的大小決定了兩次后門讀取的間隔,即上述代碼中的#N,這也是后門方式測不準的來源。

timescale,dut信號的timescale和后門測量所在的scope的timescale可能并不一致。

那怎么解決測不準的問題?

第一次意識到這個問題,作者也曾一度陷入苦思冥想,始終找不到完美的解決辦法。曾經(jīng)也想過用#1step來進行step級別的delay,但也由于仿真器的差異、環(huán)境結(jié)構(gòu)的差異,表現(xiàn)不夠穩(wěn)定。雖然已過去了近一年的時間,工作也換了新的公司,還好對此的思考沒有停止。

最近終于開發(fā)出了clock_probe_pkg,一個可以使用后門方式,精確測量時鐘頻率的package。

請看下面的demo:

`timescale1ps/1ps
moduletb;
importclock_probe_pkg::*;
regclk1,clk2,clk3;

initialbegin
clk1=0;
clk2=0;
clk3=0;
fork
foreverbegin#11;clk1=~clk1;end
foreverbegin#17;clk2=~clk2;end
foreverbegin#19;clk3=~clk3;end
join_none
end
initialbegin
realfreq1,freq2,freq3;
#100;
get_clock_freq("tb.clk1",freq1);
get_clock_freq("tb.clk2",freq2);
get_clock_freq("tb.clk3",freq3);
$display("freq1=%f,freq2=%f,freq3=%f",freq1,freq2,freq3);
$finish();
end
endmodule

仿真結(jié)果如下:

clock_probe_pkg:getclockhier:tb,2
clock_probe_pkg:getclockscopetimeunit:-12
clock_probe_pkg:@110.000000tb.clk1=0,0
clock_probe_pkg:@121.000000tb.clk1=1,1
clock_probe_pkg:@132.000000tb.clk1=0,2
probeclockfreqdone,freq=45454.545455@0
clock_probe_pkg:getclockhier:tb,2
clock_probe_pkg:getclockscopetimeunit:-12
clock_probe_pkg:@153.000000tb.clk2=1,0
clock_probe_pkg:@170.000000tb.clk2=0,1
clock_probe_pkg:@187.000000tb.clk2=1,2
probeclockfreqdone,freq=29411.764706@0
clock_probe_pkg:getclockhier:tb,2
clock_probe_pkg:getclockscopetimeunit:-12
clock_probe_pkg:@209.000000tb.clk3=1,0
clock_probe_pkg:@228.000000tb.clk3=0,1
clock_probe_pkg:@247.000000tb.clk3=1,2
probeclockfreqdone,freq=26315.789474@0
freq1=45454.545455,freq2=29411.764706,freq3=26315.789474
$finishcalledfromfile"testbench.sv",line26.
$finishatsimulationtime266

clock_probe_pkg可以自動識別時鐘信號所在scope的timescale,而且僅有一個接口,方便使用。get_clock_freq:

taskget_clock_freq(stringpath,outputrealx_freq);
...
endtask

第一個參數(shù)為字符串類型的時鐘信號的后門路徑,第二個參數(shù)即為返回的時鐘頻率,單位為MHz。

clock_probe_pkg也是目前作者能找到的"完美"解決方案。雖然這個需求非常小眾,可能也不一定能完全滿足需求,可能后續(xù)還會更好的解決方案,但這個嘗試的過程,作者覺得仍然是有意義的嘗試,因為:

真理存在于尋求過程之中。

審核編輯:湯梓紅

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

    關(guān)注

    38

    文章

    4070

    瀏覽量

    217605
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2767

    瀏覽量

    76478
  • 時鐘頻率
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

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

    關(guān)注

    30

    文章

    4701

    瀏覽量

    68122
  • 高電平
    +關(guān)注

    關(guān)注

    6

    文章

    143

    瀏覽量

    21273

原文標(biāo)題:耗時一年,終于測準了時鐘頻率

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    信號怎么測量頻率切換時間

    隨著技術(shù)發(fā)展,頻電臺、捷變頻雷達、寬帶頻雷達等設(shè)備的頻率范圍越來越寬,頻率切換時間越來越短,從而產(chǎn)生了兩個測試難題.
    發(fā)表于 03-29 15:25 ?4481次閱讀

    tc377調(diào)試pwm輸入捕獲,輸入頻率小于10hz時輸入占空比就會的原因?

    我在調(diào)試pwm輸入捕獲遇到一個問題,我用的是tc377的板件,當(dāng)輸入頻率小于10hz時輸入占空比就會(0和輸入占空比之間)您能幫我簡單的分析一下是什么原因造成的嗎?有什么解決方案,或者在初始化時有什么濾波的 結(jié)構(gòu)體可以配置。
    發(fā)表于 03-05 06:39

    如何用LabVIEW檢測下降沿

    如何用LabVIEW檢測信號的下降沿并記錄次數(shù)
    發(fā)表于 03-05 15:49

    如何用LabVIEW檢測下降沿

    如何用LabVIEW檢測信號的下降沿并記錄次數(shù)
    發(fā)表于 03-05 15:51

    霍爾信號沿,并且能把捕獲間隔的時長用通用定時器計數(shù)得到,但是捕獲計數(shù)怎么差這么多?

    各位老師好,我想測一下電機霍爾信號的間隔時間是否一致,我現(xiàn)在捕獲霍爾信號沿,并且能把捕獲間隔
    發(fā)表于 05-21 20:41

    ADL5304接通電源時,輸出信號,請問是什么原因?

    ADL5304輸入端是光電二極管,二極管已經(jīng)做了遮光處理(不漏光),但是接通電源時,ADL5304輸出信號。下面有正常信號
    發(fā)表于 08-03 07:57

    AD2S1210位置信號

    使用AD2S1210進行位置讀取,在恒轉(zhuǎn)速模式下,串口模式SPI讀取的位置信號(12位)偶爾會出現(xiàn)異常跳,如附件顯示(讀取的位置誤差,兩個數(shù)據(jù)之間的時間為100us,單位弧度)。
    發(fā)表于 11-25 19:47

    什么是捕獲?如何去輸入捕獲模式

    捕獲和比較捕獲什么是捕獲所謂捕獲就是通過檢測捕獲通道上的邊沿信號。在邊沿
    發(fā)表于 07-16 15:22

    什么是輸入捕獲?STM32輸入捕獲

    ,簡單的說就是通過檢測 TIMx_CHx 上的邊沿信號,在邊沿信號發(fā)生(比如上升沿/下降沿)的時候,將當(dāng)前定時器的值(TIMx_CNT)存放到對應(yīng)的通道的
    發(fā)表于 01-06 07:54

    采用AD603對傳感器接收到的信號放大時,遇到信號怎么解決?

    采用AD603對傳感器接收到的信號放大時,遇到信號問題。采用AD603進行程控放大,把前面的串?dāng)_縮小, 對有效信號進行放大,在有效
    發(fā)表于 11-14 06:07

    SOC時序分析中的

      點是所有重要時序分析工具中的一個重要概念。點被時序分析工具用來計算設(shè)計節(jié)點上的時延與過渡值。
    發(fā)表于 09-15 10:48 ?1694次閱讀
    SOC時序分析中的<b class='flag-5'>跳</b><b class='flag-5'>變</b>點

    基于時頻投影的信號分選研究

    提出一種基于時頻投影的信號分選算法。從頻域投影信號分選出潛在信號頻率集合。根據(jù)
    發(fā)表于 06-21 17:42 ?20次下載
    基于時頻投影的<b class='flag-5'>跳</b>頻<b class='flag-5'>信號</b>分選研究

    基于雙譜頻率估計的快捕獲方法

    ,BFE)的捕獲方法。該方法通過重構(gòu)解信號,計算重構(gòu)信號的雙譜(三階自相關(guān)函數(shù)的傅里葉變換)來估計當(dāng)前
    發(fā)表于 12-21 10:16 ?7次下載

    多FPGA解決航天測控信號捕獲問題的方案

    多片F(xiàn)PGA組成的星形系統(tǒng)可解決頻和直接序列混合擴頻(FHDS)衛(wèi)星測控信號大時延差高動態(tài)條件下的快速捕獲問題。捕獲搜索時采用1“主”+N“副”形式的Multi-FPGA組分時進行多
    發(fā)表于 11-16 15:11 ?1605次閱讀
    多FPGA解決航天測控<b class='flag-5'>信號</b>的<b class='flag-5'>捕獲</b>問題的方案

    如何在不間斷測試中抓捕記錄信號?與之解決辦法

     工程師在日常測試中,是否有遇到產(chǎn)品不穩(wěn)定經(jīng)常被干擾、偶發(fā)性問題又抓不到這樣的技術(shù)問題?例如時序的波動、幅值的等。如何在連續(xù)不間斷的測試中抓捕并記錄這些
    的頭像 發(fā)表于 03-11 17:10 ?2324次閱讀