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

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

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

3天內不再提示

CPLD設計故障異步時鐘域處理案例分析

454398 ? 來源:博客園 ? 作者:fpgatalk ? 2020-10-21 14:25 ? 次閱讀

麻雀雖小,五臟俱全。CPLD規模雖小,其原理和設計方法和FPGA確是一樣的。輕視在CPLD上的投入,就有可能存在設計隱患,導致客戶使用產品時出現故障,從而給公司帶來不可挽回的信譽損失。

近一段時間,我遇到了兩個CPLD設計故障,這兩個故障的根因(root cause)是一樣的。其中的一個故障發生在實驗室測試階段,另一個發生在運營商的網絡上,造成了非常不好的負面影響,因此引起了高度重視,必須徹底找出原因并消除。雖然可以很容易讓故障不復現,但是要想找到根因,并給相關人員解釋清楚, 卻并不是一件容易的事情。

問題代碼:

圖 1. 問題代碼截圖

這段代碼的功能是統計 輸入信號’status_in’ 的高電平持續時間。CPU寫相應的寄存器產生’clr_cnt’把”cnt”清零。同時,也會把”cnt”的值給回讀到CPU。實際上就是一個讀清操作。

很明顯,這里有一個問題,就是異步時鐘域處理的問題。’clr_cnt’的時鐘為’clk_sys’,而”cnt”的時鐘為’clk_io’, ‘clk_sys’和’clk_io’是異步的,沒有確定的相位關系。

測試方法:

測試中,CPU循環執行以下四步。

1) 清零: CPU通過Local Bus寫寄存器,產生’clr_cnt’脈沖,把”cnt”清零;

2) 計數: CPU等待一段時間。“cnt” 開始對外部輸入 ‘status_in’ 計數;

3) 回讀: CPU通過Local Bus讀取 ”cnt” 值;

4) 循環: goto 1)。

實際實現可能略有不同,CPLD邏輯在執行清零1)的同時會把”cnt”的值鎖存下來,供CPU回讀,也就是1)和3)也可以是一個步驟。這樣表述是為了突出問題代碼。

問題描述:

如果’status_in’ 恒為低電平’0’輸入, 那么”cnt”應該恒為零值。可是,客戶發現一個非常奇觀的現象。測試中,讓 ‘status_in’ 恒為低電平’0’輸入時,客戶發現CPU會低概率的回讀到非零的”cnt”值。朋友們,你們能解釋這種現象嗎?

初步分析:

‘status_in’恒為零,不可能引起”cnt”變化。

‘clr_cnt’在測試中是翻轉變化的。’clr_cnt’是從’clk_sys’時鐘域來的信號。而時鐘’clk_sys’和時鐘’clk_io’是異步關系,沒有固定的相位關系。也就是說’clr_cnt’是可能違反觸發器”cnt”的建立/保持時間要求的,進而出現亞穩態。

但是有人認為, “cnt”的值原來是零,“clr_cnt”只是把”cnt”的值清零, 這樣來說觸發器“cnt”的輸入根本沒有發生過變化,怎么可能有亞穩態事件? 而且故障出現的概率很高,遠比亞穩態的概率高,好像也不能用亞穩態來解釋。

問題根因:

要解釋問題的真正原因,必須要知道 ”cnt” 對應的電路網表是什么樣的。”cnt”電路網表由綜合工具(synthesis)生成,可以在綜合工具中查看電路圖, 圖2是網表的局部放大。

圖 2. “cnt”的Technology View電路

圖2中調用了進位鏈模塊,看起來很亂,整理一下, 手工簡化一下如圖3。

圖 3. 手工簡化的“cnt”的電路圖

圖3中,可以看到,’clr_cnt’和’status_in’相或的結果控制觸發器的使能端(‘CE’)。另外,’clr_cnt’還決定了觸發器輸入(‘D’)是”cnt+1”還是”0”。真值表如下。

也許和你想象中的不一樣,電路使用了觸發器的兩個輸入端’D’和’CE’,而不是單單一個’D’端。于是,’clr_cnt’的跳變引起了’D’/’CE’的跳變。

為了說明問題方便,定義 ‘clr_cnt’ 跳變的時刻為t0,這個跳變事件傳播到觸發器’CE’端的時刻為t1, 傳播到觸發器’D’端的時刻為t2。見圖4。

圖4. “cnt”觸發器時序違反的演示

圖4中的場景, t2》t1》t0。 最初的時候,”cnt”的值為hex”0000”,”cnt+1”的值為hex”0001”。 由于’clk_io’的上升沿落在t1和t2之間, 因此”cnt”錯誤地跳變為hex”0001”。

一個布局布線后的設計,一般情況下CE的傳播延時(t1-t0)不會等于D的傳播延時(t2-t0)。由于’clk_io’和’clk_sys’之間的相位關系是隨機的, 肯定會出現’clk_io’的上升沿剛好位于t1和t2之間的情況。這種情況下,觸發器CNT[15:0]就會錯誤的采樣到”cnt+1”,而不是期望的hex”0000”值。

忽略次要參數和亞穩態事件,故障出現的概率可以被估算為 (t2-t1)/TCLK_IO 。(t2-t1)越大,故障概率越高。這就是為什么故障出現的概率這么高的原因。

顯然,對于t2

對于t2=t1的情況(應該沒有可能),只有當’clk_io’采樣到’D’/’CE’的邊沿附近時,引起亞穩態事件,CNT才會出錯,當然這種故障的概率會低的多。

圖5. “cnt”觸發器的后仿真時序違反演示

解決措

通過以上的分析,問題是由于信號跨異步時鐘域而產生了模糊的時序關系,布局布線工具無法也不可能分析出這種時序要求,只能從代碼上加以處理。

1.同步化

一個很成熟的異步信號同步化方法就是多拍處理。見圖6。

圖6. 優化過后的代碼

‘clr_cnt’經過同步化后, ’clr_cnt_sync’會在’clk_io’上升沿之后很短的時間內穩定下來。布局布線工具通過利用’clk_io’的時鐘周期,去約束’clr_cnt_sync’到’D’和’CE’的路徑。從而不會出現”cnt”非零的錯誤。

如果’status_in’也是異步的信號,原理是一樣的,會引起計數的不準確,只是故障更隱蔽,同樣需要同步化。如果’status_in’是同步的引腳輸入,必須通過時序約束告知布局布線工具,’status_in’相對于’clk_io’的建立時間和保持時間。

2.禁止CE

有人提出過一種偽辦法,我們來討論一下。就是約束綜合工具,禁止使用觸發器的’CE’功能。這樣,觸發器只有D端口, 且D = ( clr_cnt ) ? “0000” : ( status_in ) ? cnt+1 : cnt 。

當’status_in’==0且”cnt”=”0000”時,D = ( clr_cnt ) ? “0000” : cnt = ”0000”,此時,’clr_cnt’的跳變不會引起D端口上出現跳變,也就不會出現錯誤的采樣。

這樣做局限性很大,首先限制了”cnt”=”0000”的狀態才適用, 如果”cnt”的當前狀態非零,一樣會有問題,只是錯誤會跟隱蔽。再者,使用CE端口可以降低邏輯級數,改善時序,節省面積,實際上可能的情況下應該盡量使用。

因此禁止CE的手段是不能作為解決措施的。
編輯:hfy

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

    關注

    1630

    文章

    21799

    瀏覽量

    606161
  • 電路圖
    +關注

    關注

    10357

    文章

    10725

    瀏覽量

    533067
  • cpld
    +關注

    關注

    32

    文章

    1257

    瀏覽量

    169651
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10908

    瀏覽量

    213069
  • 觸發器
    +關注

    關注

    14

    文章

    2014

    瀏覽量

    61364
收藏 人收藏

    評論

    相關推薦

    常見 CPLD 故障排除方法

    CPLD作為一種靈活的硬件解決方案,被廣泛應用于各種電子系統中。然而,由于各種原因,CPLD可能會出現故障。 1. 初步檢查 在開始故障排除之前,進行初步檢查是非常重要的。這包括: 電
    的頭像 發表于 01-23 10:01 ?137次閱讀

    CPLD 優勢與劣勢分析

    CPLD(Complex Programmable Logic Device,復雜可編程邏輯器件)是一種介于簡單可編程邏輯器件(如PAL、GAL)和FPGA(現場可編程門陣列)之間的可編程邏輯器件
    的頭像 發表于 01-23 09:54 ?142次閱讀

    CPLD 應用場景分析

    隨著電子技術的快速發展,可編程邏輯器件在各個領域中的應用越來越廣泛。CPLD作為一種靈活、成本效益高的解決方案,被廣泛應用于多種電子系統設計中。 CPLD概述 CPLD是一種可編程邏輯器件,它通過
    的頭像 發表于 01-23 09:48 ?164次閱讀

    混合示波器的原理和應用

    故障、評估通信系統的性能和穩定性等。 優化系統性能:在嵌入式系統開發、汽車電子和電源電子學等領域,混合示波器可用于監測和分析系統中的模擬和數字信號,以確保系統按照預期工作。工程師可以通過
    發表于 12-27 15:54

    CPLD輸出(3.3V)作TLC5510A的時鐘,為什么CPLD和板子共地,芯片就發熱?

    TLC5510A時鐘電壓多少伏? 我用CPLD輸出(3.3V)作TLC5510A的時鐘,為什么CPLD和板子共地,芯片就發熱? 謝謝!
    發表于 12-26 07:09

    一文解析跨時鐘傳輸

    一、單比特CDC傳輸1.1 慢到快 快時鐘相比慢時鐘采樣速度更快,也就是說從慢時鐘來到快
    的頭像 發表于 11-16 11:55 ?726次閱讀
    一文解析跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>傳輸

    變頻器過熱故障原因分析處理措施

    變頻器過熱故障原因分析處理措施 ? 1 )變頻器過熱故障原因分析 ? 此故障現象較為常見,一般
    的頭像 發表于 10-11 13:10 ?975次閱讀
    變頻器過熱<b class='flag-5'>故障</b>原因<b class='flag-5'>分析</b>與<b class='flag-5'>處理</b>措施

    pcm1794能否支持異步時鐘模式?

    MCLK接在pcm2706c上的12Mhz輸出上面,則正常出聲。。手頭還有一塊es9023 dac,可以支持49.152Mhz輸入到MCLK工作在異步模式,但是pcm1794不行,我想問一下pcm1794能否支持異步時鐘模式?
    發表于 09-29 06:56

    如何處理時鐘電路的常見故障

    處理時鐘電路的常見故障是一個涉及多個步驟和細節的過程,需要仔細分析和逐步排查。時鐘電路在電子設備中扮演著至關重要的角色,負責提供穩定的
    的頭像 發表于 09-09 16:49 ?1274次閱讀

    開源芯片系列講座第22期:異步電路機制為RISC-V處理器賦能

    鷺島論壇開源芯片系列講座第22期「異步電路機制為RISC-V處理器賦能」明晚(31號)20:00精彩開播期待與您云相聚,共襄學術盛宴!|直播信息報告題目異步電路機制為RISC-V處理
    的頭像 發表于 07-31 08:37 ?451次閱讀
    開源芯片系列講座第22期:<b class='flag-5'>異步</b>電路機制為RISC-V<b class='flag-5'>處理</b>器賦能

    直播預告 |開源芯片系列講座第22期:異步電路機制為RISC-V處理器賦能

    鷺島論壇開源芯片系列講座第22期「異步電路機制為RISC-V處理器賦能」7月31號(周三)20:00精彩開播期待與您云相聚,共襄學術盛宴!|直播信息報告題目異步電路機制為RISC-V處理
    的頭像 發表于 07-18 08:37 ?355次閱讀
    直播預告 |開源芯片系列講座第22期:<b class='flag-5'>異步</b>電路機制為RISC-V<b class='flag-5'>處理</b>器賦能

    FPGA異步信號處理方法

    FPGA(現場可編程門陣列)在處理異步信號時,需要特別關注信號的同步化、穩定性以及潛在的亞穩態問題。由于異步信號可能來自不同的時鐘或外部設
    的頭像 發表于 07-17 11:10 ?1293次閱讀

    同步FIFO和異步FIFO區別介紹

    ,并且間隔時間長,也就是突發寫入。那么通過設置一定深度的FIFO,可以起到數據暫存的功能,且使得后續處理流程平滑。 時鐘的隔離:主要用異步FIFO。對于不同
    的頭像 發表于 06-04 14:27 ?1814次閱讀
    同步FIFO和<b class='flag-5'>異步</b>FIFO區別介紹

    異步電動機的常見故障處理方法

    異步電動機,作為工業生產中的關鍵設備,其運行狀態直接影響到生產效率和產品質量。然而,在實際應用中,由于環境、使用和維護等多方面因素的影響,異步電動機難免會出現各種故障。本文將詳細介紹異步
    的頭像 發表于 06-03 15:30 ?1259次閱讀

    如何解決同步時鐘系統中的常見問題和故障

    同步時鐘系統 在電力、通信、交通等領域中應用廣泛,為保證其正常運行,需要進行系統的維護和保養。下面是述泰時鐘總結的時鐘同步系統維護常見問題及解決方法的介紹。 常見問題 GPS接收天線故障
    的頭像 發表于 03-19 10:42 ?1854次閱讀
    如何解決同步<b class='flag-5'>時鐘</b>系統中的常見問題和<b class='flag-5'>故障</b>?
    主站蜘蛛池模板: 人人做人人看 | 亚洲美女精品 | 欧美日本一道免费一区三区 | 国产午夜精品久久久久免费视小说 | 欧美激情亚洲色图 | 色婷婷久久免费网站 | 夜夜做日日做夜夜爽 | 四虎海外在线永久免费看 | 欧美日韩一区二区三区视频 | www淫 | 快色视频在线观看 | 欧美一级黄色片 | 永久免费在线看 | 日本午夜色 | 久久青青草原精品老司机 | 欧美日韩亚洲国产一区二区综合 | mm131美女肉体艺术图片 | 天天干天天做天天射 | va在线观看 | 狠狠干天天爱 | 国产在线精品观看 | 亚洲产国偷v产偷v自拍色戒 | 老色批影院 | 午夜在线观看免费观看大全 | 亚洲一区毛片 | 一区不卡 | 久久精品人 | 一级特黄特色的免费大片视频 | a色网站| 欧美国产精品主播一区 | 免费人成网站在线高清 | 1024手机看片国产旧版你懂的 | 色综合网天天综合色中文男男 | 好吊色7777sao在线视频观看 | 男人在线资源 | 手机在线看片你懂的 | 日本级毛片免费观看 | 伊人色综合久久天天爱 | 狠狠干一区 | 狠狠色噜噜狠狠狠狠米奇7777 | 日韩一区二区三区免费 |