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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 使用PLD內(nèi)部鎖相環(huán)解決系統(tǒng)設計難題

          使用PLD內(nèi)部鎖相環(huán)解決系統(tǒng)設計難題

          作者: 時間:2004-12-08 來源:網(wǎng)絡 收藏
          摘要:從整個應用系統(tǒng)的角度,理解和分析內(nèi)部;在此基礎(chǔ)上,深入剖析的相移結(jié)構(gòu),同時用這個技術(shù)解決難題。

          關(guān)鍵詞: 內(nèi)嵌 FIFO XBUS

          引言

          微電子技術(shù)的發(fā)展趨勢是片上系統(tǒng)(SoC),也就是在一塊芯片上實現(xiàn)整個系統(tǒng),包括模擬部分和數(shù)字部分。作為IC產(chǎn)業(yè)中重要的一個分支,可編程邏輯器件()也在努力向這個方向發(fā)展。無論是Xilinx還是Altera,它們最新的PLD產(chǎn)品中都集成了諸如PCI接口、乘法器、MCU核以及DSP核等部件,有的甚至集成了完整的微處理器。例如,Xlinux的Vietex2-Pro系列就是集成了PowerPC微處理器。

          技術(shù)是模擬集成電路設計中一個重要的研究方向。但是,現(xiàn)在中高檔的可編程邏輯器件一般都集成有片內(nèi)的(如Xilinx的Spartan2系列,Altera的Cyclone系列)。鎖相環(huán)一端連接外部全局時鐘或者全局控制信號,另一端連接可編程邏輯器件內(nèi)部專門的布線網(wǎng)絡,可以最大程度地減少全局時鐘信號到片內(nèi)各個部分的布線延遲,有效地消除了時鐘偏移而帶一的各種問題。同時,鎖相環(huán)一般都提供了倍頻、分頻、相移三個功能。

          1 應用背景介紹

          本文用FPGA實現(xiàn)FIFO,連接PCI與TI的TMS320C6204的擴展總線,與DSP傳輸數(shù)據(jù)的時鐘達到100MHz。由于DSP的接口對于時鐘和信號的要求很苛刻,所以下面具體分析核心的DSP的XBUS時序。

          DSP的擴展總線(XBUS)是一個32位寬的總線,支持與異步外設、異步/同步FIFO、PCI橋以及外部主控處理器等的接口。它同時提供一個靈活的總線仲裁機制,可以內(nèi)部進行仲裁,也可以由外部邏輯完成。

          本文中使用XBUS的同步FIFO接口。如果是要讀取FIFO,首先FIFO要通過中斷信號XINT0來通知XBUS數(shù)據(jù)已經(jīng)準備好,然后XBUS響應XCE0、XRE、XOE有效,就開始讀?。疲桑疲现械臄?shù)據(jù),讀FIFO的時序如圖1所示;如果是要寫FIFO,FIFO通過XINT1申請XBUS,然后XBUS響應XCE1、XWE有效,開始一個寫FIFO的DMA傳輸過程,寫FIFO的時序如圖2所示。

          通過分析XBUS讀寫FIFO的時序關(guān)系可以看出,在FIFO實現(xiàn)的過程中需要注意以下幾個地方:

          ①XBUS工作時鐘是100MHz,對于大部分的FPGA來說是一個比較高的頻率。而且,由于讀出的數(shù)據(jù)要求一定的建立時間(setup time)和保持時間(hold time),這就對內(nèi)部邏輯的設計提出了較高的要求。

          ②讀FIFO時,必須在使能信號有效之后的第二個時鐘周期就把數(shù)據(jù)輸出。對于FIFO內(nèi)部的雙端口RAM來說,這個實現(xiàn)起來不一定能滿足要求(有很多RAM是在使能信號只有的3~5個時鐘周期才輸出數(shù)據(jù)的)。這樣,通用FIFO中就要考慮產(chǎn)生預讀邏輯來產(chǎn)生數(shù)據(jù),以滿足XBUS嚴格的時序要求。

          ③XBUS的使能信號XCE0/XCE1/XRE/XOE/XWE的變化時間范圍是在時鐘有效之后的1~7ns,考慮到FPGA內(nèi)部的組合邏輯延時和布線延時,這樣對有效信號的鎖定可能是不穩(wěn)定的。這就為邏輯設計帶來了很大的難度。

          2 鎖相環(huán)的相移功能

          系統(tǒng)時鐘是100MHz,為了獲得更好的布線效果和系統(tǒng)性能,時鐘信號必須經(jīng)過鎖相環(huán)到達全局時鐘布線網(wǎng)絡。同時,鎖相環(huán)還可以提供多個時鐘相移的信號,同樣可以連接到全局布線網(wǎng)絡來驅(qū)動片的時鐘信號。以Xilinx公司的SPARTAN2系列芯片為例(Altera的Cyclone或者更高級別的系列也提供了類似的鎖相環(huán)),使用片內(nèi)鎖相環(huán)進行時鐘相移的示意如圖3所示。

          相移以后的時鐘對于有很大的用處。本文利用了相移以后的時鐘解決了中的兩個難點,取得了令人滿意的效果:

          ①用PLL解決使能信號漂移的難題;

          ②使用PLL滿足TI的TMS320C62XX系列DSP中XBUS的建立、保持時間要求。

          3 使用PLL解決使能信號漂移的難題

          由于DSP的XBUS響應FIFO的中斷XINT0時,需要回復XRF、XCE0、XOE三個信號。只有三個同時有效時,才可以讀FIFO,所以讀使能信號RDEN=not(XCE0 or XRE or XOE);XBUS回復FIFO中斷信號XINT1時,需要回復XWE和XCE1兩個信號。只有兩個信號時有效才可以寫FIFO,所以WREN=not(XCE1 or XWE)。

          RDEN或者WREN都是由FPGA內(nèi)部組合邏輯產(chǎn)生的,在FPGA內(nèi)部組合邏輯的物理延時(tc)為3~5ns??紤]到XBUS的使能信號本身相對于時鐘上升沿(td)就有1~7ns,所以使能信號有效相對時鐘上升沿來說可能的變化范圍為4~12ns,如圖4所示。

          圖3中,系統(tǒng)經(jīng)過鎖相環(huán)的相移,驅(qū)動FPGA內(nèi)部邏輯的時鐘。相對于XCLK來說,如果XBUS的回應信號的延時為1ns(圖4中實線所示部分),則RDEN經(jīng)過組合邏輯延遲,變?yōu)楦哂行У臅r候,可以在時鐘的第一個上升沿采樣到(圖4中實線所示);如果XBUS的回應信號延時為7ns(圖4中虛線所示),則RDEN經(jīng)過組合邏輯延遲以后,只能在第二個時鐘的上升延才能采樣到高有效信號。

          顯而易見,XBUS信號延遲的變化范圍太大,造成了系統(tǒng)設計的不穩(wěn)定性。要解決這個問題,通過邏輯優(yōu)化是沒有辦法來進行的。因為產(chǎn)生使能信號的那一級組合邏輯本身的延遲是無法改變的。

          本文靈活地運用了FPGA內(nèi)部鎖相環(huán)的移相功能,巧妙地解決了信號XCLK_Shift相對于XCLK的相移問題。而且,經(jīng)過這個相移以后的時鐘信號,無論XBUS使能信號怎么在1~7ns內(nèi)發(fā)生變化,都可以保證在XCLK_Shift的第二個時鐘周期采樣到高有效信號。這樣就確定了穩(wěn)定的邏輯關(guān)系,為可靠穩(wěn)定的設計奠定了基礎(chǔ)。

          4 使用PLL滿足XBUS的建立、保持時間要求

          如圖1中所示,F(xiàn)IFO中數(shù)據(jù)輸出時需要滿足一定的建立和保持時間(圖1中為時間5和時間6)。但是,時鐘信號XCLK輸入FPGA的時候需要首先經(jīng)過IOB(輸入輸出模塊),然后才能連接到鎖相環(huán)部分進入全局時鐘網(wǎng)絡。采用同步輸出的時候,輸出數(shù)據(jù)也要經(jīng)過IOB才可以輸出。IOB本身的延時就很容易導致無法確保正確的建立和保持時間,滿足不了XBUS的要求,如圖5所示。

          為了解決這個問題,同樣可以采用鎖相環(huán)進行時鐘相位偏移來彌補通過IOB引起的時鐘相位偏移。這樣,數(shù)據(jù)端的輸出只要相對于經(jīng)過偏移的時鐘信號滿足建立保持時間,那么,就可以滿足原始時鐘信號的要求(如圖5中虛線所示)。

          5 結(jié)論

          通過合理的使用FPGA內(nèi)部的鎖相環(huán),本文在不改動原有邏輯設計和代碼的情況下,巧妙地解決了高速DSP擴展總線XBUS與FIFO的接口問題。為系統(tǒng)和邏輯設計解決了可能遇到的幾個難點,為進一步的研究和開發(fā)提供了一種解決問題的新方法和思路。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();