<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA可測性設計的“大數據”原理

FPGA可測性設計的“大數據”原理

作者: 時(shí)間:2017-10-21 來(lái)源:網(wǎng)絡(luò ) 收藏

  當下,最火的學(xué)問(wèn)莫過(guò)于“”,的核心思想就是通過(guò)科學(xué)統計,實(shí)現對于社會(huì )、企業(yè)、個(gè)人的看似無(wú)規律可循的行為進(jìn)行更深入和直觀(guān)的了解。的可測性也可以對內部“小數據”的統計查詢(xún),來(lái)實(shí)現對內部BUG的探查。

本文引用地址:http://dyxdggzs.com/article/201710/367065.htm

  可測性設計對于FPGA設計來(lái)說(shuō),并不是什么高神莫測的學(xué)問(wèn)。FPGA的可測性設計的目的在設計一開(kāi)始,就考慮后續問(wèn)題調試,問(wèn)題定位等問(wèn)題。要了解FPGA可測性設計,只不過(guò)要回答幾個(gè)問(wèn)題,那就是:

 ?。?) 設計完成如何進(jìn)行測試?

 ?。?) 設計出現問(wèn)題,如何迅速定位?

 ?。?) 如何在設計之初就能劃分故障的層次,進(jìn)行問(wèn)題隔離?

  一般情況下,在設計的調試階段,如果出現BUG,則需要通過(guò)嵌入式邏輯分析儀(chipscope/signaltap)對可能出現問(wèn)題的信號進(jìn)行抓取。這種方式,對于較大型的設計調試速度較慢(其編譯時(shí)間較長(cháng),迭代速度較慢,但是也是一種很有效的手段和FPGA的必備技能)。那么對于大型工程的可測試性,有什么行之有效的手段?

 ?。?)統計計數。

  FPGA設計中的統計計數不是不是什么”“,只不過(guò)是些“小數據”,例如,對于網(wǎng)絡(luò )接口來(lái)說(shuō),收到多少包,發(fā)送多少包,收到多少字節,發(fā)送多少字節。 對于一個(gè)模塊來(lái)說(shuō),收到多少次調用,或者發(fā)起多少次操作。對于讀取的數據流操作,從中讀取多少frame(幀),向后級寫(xiě)入多少幀。

  這些計數,毫無(wú)疑問(wèn)都是需要占用資源的,但是占用這些資源是有價(jià)值的。通過(guò)這些計數,設計可以通過(guò)總線(xiàn)接口供外部處理器讀出。于是一張FPGA內部設計的“大數據”圖形就顯現出來(lái)了”。

 

  從上圖可得,通過(guò)外部CPU可將各處理模塊中的計數,分別讀出,于是得到其內部的一張數據流圖。我們可以簡(jiǎn)化設計為(計數A->計數B->計數C->計數D->計數E)。實(shí)際使用中可根據占用的資源和實(shí)際需要的觀(guān)測點(diǎn)來(lái)確定。

  假設,我們在調試過(guò)程中發(fā)現,有輸入突然沒(méi)有輸出,這是不需要再去內嵌邏輯分析儀來(lái)抓取信號,通過(guò)CPU的軟件,可以打印出所有計數,在有輸入驅動(dòng)的情況下,假設計數C有變化,而計數D沒(méi)有變化,則直接定位處理模塊3,此時(shí)處理有問(wèn)題,簡(jiǎn)單直接而有效。

  令一種情形也可以迅速定位,輸入多,但是輸出少,比如正常輸入的碼流,但是輸出到顯示上確實(shí)缺幀少幀,完全不流暢。通過(guò)計數分析,原本幀計數C和D應該一樣多,但是D卻計數較C少很多,說(shuō)明此時(shí)處理模塊3性能不夠,或者設計有缺陷。這樣就把整個(gè)設計的關(guān)鍵點(diǎn)定位到處理模塊3.

  通過(guò)FPGA內部各模塊的關(guān)鍵計數分析,來(lái)定位分析問(wèn)題,在設計上沒(méi)有任何難度。不過(guò)需要外部CPU或者FPGA嵌入式CPU的配合使用。

  凡事有利就有弊,添加多的計數,會(huì )增加資源的使用量,那么如何平衡?對這種分析計數進(jìn)行單獨位寬設定,在全局統一的宏定義中定位`define REG_WIDTH N 。此時(shí)N的設定可以靈活多樣,8位/16位/32位等等??梢愿鶕椖恐匈Y源的剩余量,靈活添加所需的邏輯,畢竟這些計數的值提供分析試用。

 ?。?)狀態(tài)輸出。

  如果向上述問(wèn)題一樣,我們定位到某個(gè)模塊,那么如何再定位到模塊中那個(gè)邏輯的問(wèn)題?

  解決這個(gè)問(wèn)題的關(guān)鍵,就是狀態(tài)機,向輸出計數一樣,一般的設計中,都會(huì )以狀態(tài)機為核心進(jìn)行設計,將狀態(tài)機的CS(當前狀態(tài))信號引出,如果沒(méi)有外部輸出的情況下,當前狀態(tài)應該為IDLE。比如上文中,我們定位到模塊3此時(shí)死機,等待不再輸入外部信號時(shí),此時(shí)模塊3中的狀態(tài)機信號如不為IDLE,假如此時(shí)正處于狀態(tài)B_CS,則說(shuō)明此時(shí)模塊的錯誤出現在狀態(tài)B。而B(niǎo)跳轉必須由信號X起效。因此可以直接定位到信號X的問(wèn)題。剩下就是要定位信號X為什么不起效。

 ?。?)邏輯復位。

  劃分FPGA的問(wèn)題或者模塊問(wèn)題的另一種方式就是邏輯復位,上文講復位時(shí)(架構設計漫談),邏輯復位,如果A模塊自身有邏輯復位,如果設計沒(méi)有輸出(通俗叫做“FPGA死了”),如果懷疑某個(gè)模塊,該模塊邏輯復位后,設計又正常工作,則需要定位的則是可以是該模塊、或者該模塊影響的與其連接模塊(該模塊的非正常輸出導致下一級模塊出錯)。

  本文將的FPGA可測性設計,非ASIC講的通過(guò)插JTAG/BIST進(jìn)行的測試。其目的還是通過(guò)關(guān)注如何測試的設計,來(lái)定位問(wèn)題,提高FPGA的可測性。除此之外,邏輯探針也是可以一個(gè)解決測試問(wèn)題的方向(專(zhuān)題另述)??蓽y性的提高,意味著(zhù)調試手段的增加,調試速度加快,而不是一味的依賴(lài)嵌入式邏輯分析儀。能夠達到快速問(wèn)題定位能力,是FPGA研發(fā)能力一個(gè)重要的體現,而可測性設計則是提升這一能力有力的助手。



關(guān)鍵詞: 大數據 FPGA FIFO

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>