<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設計應用 > FPGA+DSP導引頭信號處理中FPGA設計的關鍵技術

          FPGA+DSP導引頭信號處理中FPGA設計的關鍵技術

          作者: 時間:2010-06-02 來源:網(wǎng)絡 收藏

          現(xiàn)代IC與FPGA巾使用的綜合工具可以保證能滿足每個數(shù)字電路觸發(fā)器對建立與保持時間的要求。然而,異步信號卻給軟件提出了難題。對新的時鐘域米說.從其它時鐘域傳柬的信號是異步的。大多數(shù)綜合丁具在判定算步信號是否滿足觸發(fā)器時序要求時遇到了麻煩。因為它們不能確定觸發(fā)器處于非穩(wěn)態(tài)的時間,所以它們也就不能確定從一個觸發(fā)器通過組合邏輯到達下一個觸發(fā)器的總延遲時間。所以,最好的辦法是使用一些電路來減輕異步信號的影響。

            同步措施歸納起來主要有兩方面,

            1)對于跨越時鐘域控制信號,用同步器來實現(xiàn)同步;

            為了使同步。工作能正常進行,從某個時鐘域傳來的信號應先通過原時鐘域上的一個觸發(fā)器,然后不經(jīng)過兩個時鐘域間的任何組合邏輯,直接進入同步器的第一個觸發(fā)器中(圖3)。這一要求非常重要,因為同步器的第一級觸發(fā)器對組合邏輯所產(chǎn)生的毛刺非常敏感。如果一個足夠長的信號毛刺正好滿足建立一保持時問的要求,則同步器的第一級觸發(fā)器會將其放行,給新時鐘域的后續(xù)邏輯送出一個虛假的信號。



            圖3同步器示意

            一個經(jīng)同步后的信號在兩個時鐘沿以后就成為新時鐘域中的有效信號。信號的延遲是新時鐘域中的一到兩個時鐘周期。一種粗略的估算方法是同步器電路在新時鐘域中造成兩個時鐘周期的延遲,者需要考慮同步延遲將對跨時鐘域的信號時序造成的影響。

            2)對于跨越時鐘域的數(shù)據(jù)總線,要通過FIFO或RAM達到同步的目的。

            數(shù)據(jù)在時鐘域之間的傳遞是多個隨機變化的控制信號在時鐘域之間傳遞的一種實例。這種情況下,用同步器米處理同步問題往往不能收到滿意的效果,因為多位數(shù)據(jù)的變化將會使同步器的采樣錯誤率大大增加。常用的數(shù)據(jù)同步方法有兩種:一種是用握手信號;另一種是用FIFO,一個時鐘存數(shù)據(jù)。另一個時鐘取數(shù)據(jù)。

            時鐘域之間的數(shù)據(jù)傳輸用得最多的是FIFO,采用Xilinx自帶的FIFO核來實現(xiàn)比較簡單方便,圖4足Xilinx提供的FIFO核的一個簡單的示意圖.wclk為寫時鐘,rclk為讀時鐘,F(xiàn)IFO深度通過讀寫使能wen和ren控制。


            圖4 FIFO核示意圖

            3.2、FPGA與DSP數(shù)據(jù)交互

            實際應用過程中,DSP和FPGA程序設計往往是由不同的設計人員分工完成,在最后系統(tǒng)聯(lián)調(diào)時,這兩者之間的數(shù)據(jù)傳輸經(jīng)常占用大量的調(diào)試時間,成為約束工程進度的關鍵兇素。因此,DSP與FPGA間接口和傳輸方式的選擇與設計,是系統(tǒng)設計中必須要考惑的問題。

           



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();