FPGA應用詳介_第1頁
FPGA應用詳介_第2頁
FPGA應用詳介_第3頁
FPGA應用詳介_第4頁
FPGA應用詳介_第5頁
已閱讀5頁,還剩47頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FPGA應用文章實時信號處理系統    摘要:簡要敘述了常用的信號處理系統的類型與處理機結構,介紹了正逐步得到廣泛應用的處理機結構,在此基礎上提出了一種實時信號處理的線性流水陣列,并舉例說明了該結構的具體實現,最后分析說明了此結構的優越性。    關鍵詞:實時信號處理 處理機結構 線性流水陣列    實時信號處理系統要求必須具有處理大數據量的能力,以保證系統的實時性;其次對系統的體積、功耗、穩定性等也有較嚴格的要求。實時信號處理算法中經常用到對圖象的求和、求差運算,二維梯度運算,圖象分割及區域特征提取等不

2、同層次、不同種類的處理。其中有的運算本身結構比較簡單,但是數據量大,計算速度要求高;有些處理對速度并沒有特殊的要求,但計算方式和控制結構比較復雜,難以用純硬件實現。因此,實時信號處理系統是對運算速度要求高、運算種類多的綜合性信息處理系統。 信號處理系統的類型與常用處理機結構    根據信號處理系統在構成、處理能力以及計算問題到硬件結構映射方法的不同,將現代信號處理系統分為三大類:    ·指令集結構()系統。在由各種微處理器、處理器或專用指令集處理器等組成的信號處理系統中,都需要通過系統中的處理器所提供的指令系統(或微代碼)

3、來描述各種算法,并在指令部件的控制下完成對各種可計算問題的求解。    ·硬連線結構系統。主要是指由專用集成電路()構成的系統,其基本特征是功能固定、通常用于完成特定的算法,這種系統適合于實現功能固定和數據結構明確的計算問題。不足之處主要在于:設計周期長、成本高,且沒有可編程性,可擴展性差。    ·可重構系統?;咎卣魇窍到y中有一個或多個可重構器件(如),可重構處理器之間或可重構處理器與結構處理器之間通過互連結構構成一個完整的計算系統。    從系統信號處理系統的構成方式來看,常用的

4、處理機結構有下面幾種:單指令流單數據流()、單指令流多數據流()、多指令流多數據流()。    ·結構通常由一個處理器和一個存貯器組成,它通過執行單一的指令流對單一的數據流進行操作,指令按順序讀取,數據在每一時刻也只能讀取一個。弱點是單片處理器處理能力有限,同時,這種結構也沒有發揮數據處理中的并行性潛力,所以在實時系統或高速系統中,很少采用結構。    · 結構系統由一個控制器、多個處理器、多個存貯模塊和一個互連網絡組成。所有“活動的”處理器在同一時刻執行同一條指令,但每個處理器執行這條指令時所用的數據是從它本身的

5、存儲模塊中讀取的。對操作種類多的算法,當要求存取全局數據或對于不同的數據要求做不同的處理時,它是無法獨立勝任的。另外, 一般都要求有較多的處理單元和極高的吞吐率,如果系統中沒有足夠多的適合 處理的任務,采用 是不合算的。     · 結構就是通常所指的多處理機,典型的系統由多臺處理機、多個存儲模塊和一個互連網絡組成,每臺處理機執行自己的指令,操作數也是各取各的。結構中每個處理器都可以單獨編程,因而這種結構的可編程能力是最強的。但由于要用大量的硬件資源解決可編程問題,硬件利用率不高。 結構    隨著大規模可編程器件

6、的發展,采用結構的信號處理系統顯示出了其優越性,正逐步得到重視。與通用集成電路相比,芯片具有體積小、重量輕、功耗低、可靠性高等幾個方面的優勢,而且在大批量應用時,可降低成本。    現場可編程門陣列()是在專用的基礎上發展出來的,它克服了專用不夠靈活的缺點。與其他中小規模集成電路相比,其優點主要在于它有很強的靈活性,即其內部的具體邏輯功能可以根據需要配置,對電路的修改和維護很方便。目前,的容量已經跨過了百萬門級,使得成為解決系統級設計的重要選擇方案之一。    結構最大的特點是結構靈活,有較強的通用性,適于模塊化設計,從而能夠提高算法

7、效率;同時其開發周期較短,系統易于維護和擴展,適合于實時信號處理。    實時信號處理系統中,低層的信號預處理算法處理的數據量大,對處理速度的要求高,但運算結構相對比較簡單,適于用進行硬件實現,這樣能同時兼顧速度及靈活性。高層處理算法的特點是所處理的數據量較低層算法少,但算法的控制結構復雜,適于用運算速度高、尋址方式靈活、通信機制強大的芯片來實現。 線性流水陣列結構    在我們的工作中,設計并實現了一種實時信號處理結構。它采用模塊化設計和線性流水陣列結構(圖)。    這種線性流水陣列結構具有如下特點:

8、    ·接口簡單。各處理單元()之間采用統一的外部接口。    ·易于擴充和維護。各個的內部結構完全相同,而且外部接口統一,所以系統很容易根據需要進行硬件的配置和擴充。當某個模塊出現故障時,也易于更換。    ·處理模塊的規范結構能夠支持多種處理模式,可以適應不同的處理算法。    每個的核心由芯片和可重構器件組成,另外還包括一些外圍的輔助電路,如存儲器、先進先出()器件及 等(圖)。可重構器件電路與處理器相連,利用處理器強大的功能實現單元電路

9、內部和各個單元之間的通信。從的角度來看,可重構器件相當于它的宏功能協處理器()。    中的其他電路輔助核心電路進行工作。和各自帶有,用于存放處理過程所需要的數據及中間結果。 中存儲了的執行程序和的配置數據。先進先出()器件則用于實現信號處理中常用到的一些操作,如延時線、順序存儲等。每個單獨做成一塊,各級之間通過插座與底板相連。底板的結構很簡單,主要由幾個串連的插座構成,其作用是向各個提供通信通道和電源供應。可以根據需要安排底板上插座的個數,組成多級線性陣列結構。這種模塊化設計的突出優點在于,它使得對系統的功能擴充和維護變得非常簡單。需要時,只要插上或更換電路板,

10、就可以實現系統的擴展和故障的排除。每一級中的都有通信端口與前級和后級電路板相連,可以很方便地控制和協調它們之間的工作。 應用實例    我們應用上述線性流水陣列結構實現了一個實時目標檢測系統,該系統的任務主要是接收攝像頭輸出的灰度圖象,經預處理、編碼、直線擬合和目標識別后,輸出結果到機顯示。在這個任務中,預處理模塊包括抽樣、卷積和編碼等步驟,屬于低層的處理,其運算數據量大,但運算結構較規則,適于用進行純硬件實現;而直線擬合及目標識別等高層圖象處理算法,所處理的數據量相對較少,但要用到多種數據結構,其控制也復雜得多,我們用編程來實現。  

11、0; 重構處理模塊采用的是公司的系列芯片。這是一種基于的現場可編程門陣列。表給出了 系列的一些參數。表1 XC5200系列FPGA的一些參數器件XC5204XC5206XC5210XC5215邏輯單元48078412961936最大邏輯門6000100001600023000多功能塊10×1214×1418×1822×22CLB120196324484觸發器48078412961936I/O124148196244    系列邏輯功能的實現由內部規則排列的邏輯單元陣列()來完成,它是的主要部分。的核心是可重構邏輯塊(),四周

12、是一些輸入輸出塊()。和之間通過片內的布線資源相連接。由配置代碼驅動,和的具體邏輯功能及它們的互聯關系由配置數據決定。整個模塊的設計實現在公司的 開發平臺上完成。該系統支持設計輸入、邏輯仿真、設計實現(設計綜合)和時序仿真等系統開發全過程。     在選用芯片時,主要應考慮性能能否滿足快速判讀算法的要求,具體說就是要求選擇那些指令周期短、數據吞吐率高、通信能力強、指令集功能完備的處理器,同時也要兼顧功耗和開發支持環境等因素。表列出了一些常用微處理器的性能參數。    我們選擇的是應用廣泛、性價比較高的芯片。它是美國公司推出的

13、為滿足并行處理需求的位浮點。主要特性如下:表2 常用微處理器對照表處理器類型DSP(Motorola)ADSPTMS3209600256156210202101C30C40C50字長/bit32163216323216指令周期/ns505050603325501024浮點FFT時間/ms1.042.330.962.072.361.933.42    ·外部時鐘,內部時鐘,所有指令均單周期完成,處理器內部采用高度并行機制,可同時進行多達項各類操作。    ·兩套相同的外部數據、地址總線,支持局部存儲器和全局共享存儲器

14、。    ·個高速并行通信口,采用異步傳輸方式,最大速率可達。通過令牌傳遞可靈活實現數據雙向傳輸,這種結構很適合之間的互連。    ·個通道,每個通道的最大速率可達。內部總線與的地址、數據、指令總線完全分開,避開了總線使用上的瓶頸。    從結構和功能上看,很適合與可重構器件互相配合起來構成高速、高精度的實時信息處理系統,并完全可以勝任圖像信息的實時處理任務;此外,的開發系統也比較完備,支持語言和匯編語言編程,能夠方便地進行算法移植和軟硬件的協同設計。   

15、; 衡量系統的整體性能不僅要看所使用的器件和所能完成的功能,還要看器件之間采用怎樣的互連結構??梢酝瓿赡K級的任務,起到的協處理器的作用。它的可編程性使它既具有專用集成電路的速度,又具有很高的靈活性。內部結構的主要優勢是:所有指令的執行時間都是單周期,指令采用流水線,內部的數據、地址、指令及總線分開,有較多的寄存器。這些特征使它有較高的處理速度。具有硬件的高速性,而具有軟件的靈活性,從器件上考察,能夠滿足處理復雜算法的要求。同時,的個通信口和個通道使其能夠在不被中斷的情況下比較從容地應付與外界大量的數據交換。    從內部互連來看,使用了專用的通信口完成與的互連,

16、能夠保證在任何情況下與的數據通道的暢通。另外,和各自都有輸入端口,使得系統的處理結構多樣化。比如,可以作為處理流程中的一個模塊,獨立完成某項功能,也可以作為的協處理器,通過的調用來完成特定的子函數。底板將互連性延伸到之間,使得多個電路板能夠組成多處理機系統。前級的既可以與下一級的通信,也可以將數據發送到下一級的。    綜上所述,本文提出的基于的線性流水陣列結構,為設計中如何處理軟硬件的關系提供了一個較好的解決方案。同時,該系統具有靈活的處理結構,對不同結構的算法都有較強的適應能力,尤其適合實時信號處理任務。在測控系統中用IP核實現D/A轉換  摘要:采

17、用數字化技術、在測控系統中用IP核實現D/A轉換,并且在1片可編程邏輯器件中實現。它不受溫度的影響,既可保持高分辨率,又可降低對電路精度和穩定度的要求,并減少元件的數量。     關鍵詞:IP D/A VHDL 可編程邏輯器件在各類電子系統中,數字電路所占比重越來越大。這主要是因為數字電路相對于模擬電路有一些突出的優點,例如:*數字電路中的有源器件工作在飽和區與截止區,工作狀態穩定;*數字電路處理的是二值信號,易于存儲和再生;*數字電路是由大量相同的基本單元,如門、觸發器等所組成,易于大規模集成,易于自動化設計工具的應用等。由于數字電路的以上特點,再加上數字計算機

18、和數字信號處理技術的迅速發展,使得數字電路從集成規模、應用范圍及設計自動化程度等方面大大超過了模擬電路,越來越多的由模擬電路實現的功能轉由數字電路實現,進入了電子系統數字化的時代。在測控系統采用數字化技術,將原來由模擬電路實現的D/A由數字電路實現。1 IP核介紹IP(知識產權)核將一些在數字電路中常用,但比較復雜的功能塊,如FIR濾波器、SDRAM控制器、PCI接口等設計成可修改參數的模塊。IP核的重用是設計人員贏得迅速上市時間的主要策略。隨著CPLD/FPGA的規模越來越大,設計越來越復雜(IC的復雜度以每年55%的速率遞增,而設計能力每年僅提高21%),設計者的主要任務是在規定的時間周期

19、內完成復雜的設計。調用IP核能避免重復勞動,大大減輕工程師的負擔,因此使用IP核是一個發展趨勢。IP核包括硬IP與軟IP??膳渲肐P是參數化后的可重定目標IP,其優點是可以對功能加以裁剪,以符合特定的應用。這些參數包括總線寬度、存儲器容量、使能或禁止功能塊。硬IP最大的優點是確保性能,如速度、功耗等。然而,硬IP難以轉移到新工藝或集成到新結構中,是不可重配置的。軟IP是以綜合形式交付的,因而必須在目標工藝中實現,并由系統設計者驗證。其優點是源代碼靈活,可重定目標于多種制作工藝,在新功能級中重新配置。不過目前大多數庫是收費的,但也可以從網上下載一些免費的IP核。2 用IP核實現的D/A轉換器的功

20、能及特點數字到模擬轉換器(DACs)將一個二進制數轉換為與之對應的電壓值,目前常用的D/A轉換器都是由電阻或電容加權網絡、受碼元控制的開關和基準電壓或電流源組成。當D/A轉換器需要轉換的信號每次取樣字長很長時,對這些電路的精度要求很高,并且還必須在整個溫度范圍和整個使用壽命期間內保持電路參數的穩定。例如,一個16位的D/A轉換器,其MSB的精度必須在1/2 16以內,這是很困難的。所以,需尋求一種中保持高分辨率又可降低對電路精度和穩定度要求的方法??删C合的Delta-Sigma DAC(術語Delta-Sigma分別指算術差與和,即-DAC),是Xilinx公司提供的免費IP核,可從網上下載得

21、到。Delta-Sigma DAC使用數字技術,因而它不溫度的影響,并且能在一片可編程邏輯器件中實現。避免在D/A轉換器中使用匹配電阻,不僅能更便宜,而且,其轉換是線性的。Delta-Sigma DAC實際上是高速單個位的DAC,用數字反饋技術,在輸出端產生一串脈沖。脈沖串中信號為高電平的時間部分與二進制輸入成比例,當這個脈沖串通過一個模擬低通濾波器后就得到一個模擬輸出信號。圖1是一個典型的可編程邏輯器件實現的DAC的頂層電路圖,輸入信號有復位信號、時鐘信號以及二進制數據總線。輸出DACoutDrvr驅動一個外部的低通濾波器Vout能從0VVcco。這里Vcco是FPGA I/O塊的供電電壓。

22、輸入/輸出詳細說明如表1所列。表1 輸入輸出描述表信  號方  向描     述DACOUT輸出驅動外部低通濾波器的脈沖串(通過一個輸出驅動器)DACIN輸入數字輸入總線,值必須設置成鐘的正沿clk輸入正沿有效Reset輸入復位信號初始化SigmaLatch和輸出D觸發器  DAC的二進制輸入是一個無符號數?!?”代表最低電壓,輸出的模擬電壓也只有正的?!?”輸入產生0V輸出,輸入端全“1”,則輸出近似達到Vcco。圖2是Delta-Sigma DAC的原理框圖,二進制輸入的位寬是可變的。為簡單起見,電路原理圖描述了一個8位

23、二進制輸入的DAC。在這個器件中,二進制加法器用來產生和,也用來產生差。盡管Delta Adder的輸入是無符號數,兩個加法器的輸出卻都是有符號數。Delta Adder計算DAC輸入和當前DAC輸出的差,并用一個二進制數表示。因為DAC的輸出是一個單個的位,因此它不是1就是0。如圖2所示,當輸入加上由Sigma Latch的輸出的兩個拷貝與0構成的10位數,就產生差值,這也補償了DACIN是無符號數的事實。Sigma Adder將它原來的輸出(保存在Sigma Latch中)與當前的Delta Adder的輸出相加。圖1中輸出電壓與輸入電壓的關系為VOUT=(DACIN/(2MSBI+1)&

24、#215;VCCO式中單位為V。例如,對于一個8位DAC(MSBI=7),最后的輸出是這樣:DACIN輸入是0,則輸出也是0;DACIN輸入是十六進制數FF時,輸出值為最大(255/256)×Vcco。阻容低通濾波器適合多數應用需要,一個簡單的阻容低通濾波器就能工作得很好。Vs的定義是:DAC輸入增加或減少時,在Vout端產生變化的絕對值。對一個8位DAC,Vs等于(1/256)×Vcco。Vout能夠產生在0VVcco之間可變的電壓,具體的值由DACIN的位寬和輸入的數值決定。Delta-Sigma DAC適合需要相對高精度的低頻應用。在這種應用中,電壓不會很快地變化,因

25、此,RC的時間常數可以很大,以減小噪聲。這種DAC最廣泛的應用就是產生通常直流電壓。這包括電壓控制振蕩器、電壓控制運算放大器、I/O參數電壓、可編程電壓源、波形發生器(正弦、三角等)、A/D轉換中的參考電壓等。Delta-Sigma DAC是一個例子,說明高速可編程邏輯器件能用于混合信號系統,以減少元件的數量??删幊踢壿嬈骷乃俣群兔芏仁顾鼈兂蔀槟M信號產生和處理方面理想的元件。3 用VHDL語言編寫的程序library ieee;use ieeestd_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigne

26、d.all;entity dac_ds isport(reset :in std_logic;clk :in std_logic;din :in std_logic_vector(7 downto 0);-Signed integerdout :out std_logic;);end dac_ds;architecture arch_dac_ds of dac_ds issignal error :std_logic_vector(9 downto 0);-Error accumulator is 2 bits largerconstant zeros:std_logic_vector(7 d

27、ownto 0):=(others=>'0');beginprocess(reset,clk,din)variable val :std_logic_vector(9 downto 0);beginif reset='1'thenerror<=(others=>'0');dout<='0'elsif clk'event and clk='1' then-val:=din+error;din is sign extended to nbits+2val:=(din(din'hi

28、gh)&din(din'high)&din)+error;if val(val'high)='0'thendout<='1'error<=val+("11"& zeros);elsedout<='0'error<=val+("01"&zeros);end if;end if;end process;end arch_dac_ds;4 芯片的選擇和配置選擇MAX7000S系列可編程邏輯器件,編譯后由MAX+PLUS II軟件自動配置進EM

29、P7032SLC44芯片,將生成的目標文件通過編程電纜對器件進行編程。將該IP核實現的D/A轉換器用于新型智能電阻爐溫度控制儀中,因為調節爐溫的信號不要求變化很快,因此DAC的輸入二進制信號為緩變信號。對于這種低頻應用,可以將RC時間常數取得較大,以減小噪聲。這樣,可綜合的VHDL語言Delta-Sigma DAC模塊配置進EMP7032芯片后,達到了預期的效果。 基于FPGA的USB2.0控制器設計摘要:介紹了一種用VHDL設計USB2.0功能控制器的方法,詳術了其原理和設計思想,并在FPGA上予以實現。關鍵詞:USB VHDL FPGA在視頻存儲和圖像寬帶領域中,經常遇到實時高速數據傳輸的

30、要求。2000年4月,由Intel、Microsoft、NEC、Compaq、Lucent、Phillips等公司共同制訂的USB2.0(Universal Serial Bus)傳輸協議,其速度遠遠超過了目前使用IEEE1394接口進行視頻傳輸的400Mbps,達到了480Mbps;而且具有即插即用的PnP(Plug And Play)、可進行菊花鏈式的級聯(通過USB HUB進行外圍擴展)、可串連多達127個USB設備等優點。應用該協議可支持實時語音、音頻和視頻數據的傳輸。本文針對高速數據傳輸需求,根據USB2.0的協議規范,利用VHDL語言實現符合該協議的功能控制器,在視頻壓解系統中使數

31、據在PC與外設之間高速傳輸。如圖1所示由視頻A/D采集的原始視頻數據,在Philips公司生產的TM1300專用視頻處理器中壓縮后,通過USB控制器送至PC機。PC機的整個通過USB控制器傳輸到TM1300,解壓后發送至視頻D/A。1 控制器結構原理USB2.0控制器結構框圖如圖2所示。控制器主要由兩個部分組成,其一為與外設的接口,另一個是內部協議層邏輯PL(Protocol Layer)。內部存儲器仲裁器實現對內部DMA和外部總線對存儲器訪問之間的仲裁。PL則實現USB的數據I/O和控制。接口有三種:一種是與微控制器之間的功能接口;一種是與單口同步靜態存儲器(SSRAM)之間的接口;另外一種

32、是與物理層之間的接口。這里符合UTMI(USB Transceiver Macrocell Interface)規范定義。2 控制器實現控制器接口的信號框圖如圖3所示。存儲器采用標準的單口SRAM,其信號接口由32位數據線SRAM_DATA、15位地址線SRAM_ADDR及讀寫信號(SRAM_WE和SRAM_RD)組成,系統所需SRAM的容量為2 15×32bit=128KB。而與微控制器之間的接口信號包括32位數據線DATA、18位地址線ADDR以及DMA請求和響應信號(DMA_REQ和DMA_ACK)。由于要支持到128KB,需要17位地址線,另外還需要一根地址線來選通SSRAM

33、和USB控制器內部的寄存器,總共需要18根地址線addr17:0。定義如下:USB_RF_SEL <= !addr17;USB_MEM_SEL <=addr17;第18位地址addr17為高時選擇緩沖存儲器,否則選擇內部寄存器。地址addr16:2直接用于存儲器SSRAM的地址。2.1 UTMI接口UTMI接口信號包括:與發送數據相關的信號(TxValid、TxReady等),與接收數據相關的信號(RxActive、RxValid、RxError等)以及16位雙向數據線。在物理層,該控制器需要一個外部的USB收發器(Transceiver),本文采用的是Philips公司的ISP1

34、501芯片。該芯片用作USB2.0的模擬前端,從USB電纜來的差分信號進行反轉不歸零碼(NRZI)解碼和位解填充轉換成16位并行數據;反之,16位并行數據通過一個差分驅動電路經過串行化、位填充和NRZI編碼輸出到USB電纜上。ISP1501通過管腳MODE0和MODE1決定收發器的工作模式,共有4種工作模式:MODE1:0為“00”時,收發器處于斷開狀態;為“01”時處于全速(Full Speed)模式(此時USB帶寬為12Mb/s);為“10”時是高速(High Speed)模式(此時USB最大帶寬是480Mb/s);為“11”時是HS chirp模式。UTMI接口通過譯碼MODE1:0來控

35、制ISP1501在HS和FS之間轉變。If mode_hs='1'thenMODE<='10'Elsif mode_hs='0'thenMODE<='01'End if;2.2 協議層控制器的核心邏輯位于PL(Protocl Layer)模塊,負責管理所有USB數據I/O和控制通信,其結構如圖4所示。DMA和存儲器接口提供隨機存儲器訪問和DMA操作。該模塊使PL和外部微控制器采用DMA方式訪問SSRAM。當外部總線有訪問SRAM的請求時,且PL沒有請求訪問存儲器,控制邏輯如下:req、ack分別對應外部總線和存儲器之間

36、的請求和響應信號,din、addr和we分別是外部總線給出的數據、地址和寫信號,mreq是內部DMA向存儲器發送的請求信號,mdin、maddr和mwe分別是內部DMA給出的數據、地址和寫信號。sel <=(req OR ack_r) AND(NOT mreq);if sel='1' thensram_out<=din;sram_adr<=addr;sram_we<=req AND we;elsesram_out<=mdin;sram_adr<=maddr;sram_we <=mwe;end if;由控制邏輯可看出,內部DMA操作的優先

37、級比外部總線高。協議引擎(Protocol Engine)處理所有標準的USB握手信號和控制通信。分組組裝器組裝分組并送入輸出FIFO,先組裝分組頭,插入適當的PID(分組標識)和校驗和,然后加入數據域。分組拆裝器先解碼出PID和序列號以及校驗和,再從8位PID取低4位(或高4位取反)得到PID3:0,通過USB2.0協議的PID類型定義譯碼出PID名,判斷是Token分組(OUT、IN、SOF和SETUP)還是DATA分組(DATA0、DATA1、DATA2和MDATA)。Pid_Token<=pid_OUT OR pid_IN OR pid_SOF OR pid_SETUP;Pid_

38、DATA <=pid_DATA OR pid_DATA1 OR pid_DATA2 OR pid_MDATA;如果是Token分組(格式定義如圖5所示),則將后續的16bit數據分別放入兩個8bit臨時Token寄存器token0和token1,然后取出分組中的7位地址、4位端點號及5位CRC校驗碼。Token_fadr<=token06:0;Token_endp<=token12:0 & token07;Token_crc5<=token17:3;對于特殊的Token須進行特殊的處理,本文實現的控制器只對SOF這一特殊Token進行操作,解出PID后的11位幀

39、號及5位CRC5校驗碼。Frame_no<=token12:0 & token0;Token_crc5<=token17:3;檢驗校驗碼是否出錯,如果出錯等待下一個Token,否則將地址、端點號和幀號等放入相應寄存器。Token類型如果是IN,則執行組裝分組并發送寄分組;如果是OUT則拆卸接收到的數據分組。對于其他不支持的Token則視為錯誤處理:Pid_ERROR<=pid_ACK OR pid_NACK OR pid_STALL OR pid_NYET OR pid_PRE OR pid_ERR OR pid_SPLIT OR pid_PING;如果出錯則不進行T

40、oken的解碼,而等待下一個Token的到來。如果是DATA分組,則緊接著PID的是最大載荷為1024字節的數據和16位CRC16校驗碼。對數據的處理先寫入端點寄存器,然后通過DMA操作寫入SSRAM。下面詳細介紹端點寄存器和DMA操作2.3 端點操作數據的傳輸實際上通過端點(Endpoint)進行,控制器通過寫端點的寄存器來配置端點,該控制器最多可有16個端點,每個端點有相應的4個寄存器:Epn_CSR、Epn_INT、Epn_BUF0和Epn_BUF1(這里n=0、1、2或3),其格式如圖6所示。本文使用addr8:27根據地址線來訪問這些寄存器,addr8:4用來選擇端點號,其值(16進

41、制)從4到19分別表Epn(n=0.15)。addr3:2指定寄存器類型:“00”代表CSR(Control Status Register);“01”代表中斷寄存器;“10”指向Buffer0;“11”代表Buffer1。這兩個Buffer用來作臨時數據存儲,Buffer0和Buffer1分別作為專用的輸入/輸出緩沖器來提高USB的數據吞吐能力。雙Buffer能夠減少微控制器和驅動軟件之間的延遲。其中端點的CSR寄存器指定端點的工作模式并且向控制器報告指定端點的狀態。Ep_CSR31:30必須初始化為“00”(最初使用Buffer0),通過讀這2位可以知道下次所要處理的緩沖器;為“01”時,

42、指定Buffer1。Ep_CSR27:26和Ep_CSR25:24分別指定端點類型和傳輸類型,其類型編碼參見表1。Ep_CSR21:18指定端點號,總共可以有16個端點。Ep_CSR15時DMA使能位,為“1”時允許外部DMA操作,否則不允許DMA操作。表1 類型編碼表Ep_CSR27:26端點類型Ep_CSR25:24傳輸類型 00控制端點00中斷傳輸01IN端點01同步傳輸10OUT端點10塊傳輸11保留11保留 當控制器收到中斷時,讀中斷源寄存器(Ep_INT6:0)來判斷中斷源和產生的原因??勺远x中斷源,如Ep_INT2定義為該控制器接收到不支持的PID而產生的中斷:Ep_

43、INT2<=Pid_ERROR。Ep_INT4和Ep_INT3分別表示Buffer1和Buffer0的滿或空的狀態位。Ep_BUF31(標記緩沖器是否被使用過)在使用后被控制器置“1”,在清空或重填充該緩沖器后,控制器清除該位。該閏初始化時為“0”。Ep_BUF30:17指定緩沖器能容納的字節數。Ep_BUF16:0緩沖器的指針,裝載存儲器SRAM中數據的地址。控制端點(Endpoint0)比較特殊,由于它既要接收也要發送數據,因此對于控制端點,Buffer0用于OUT緩沖器,Buffer1則是IN緩沖器。從SETUP和OUT分組來的數據,寫入Buffer0,IN分組的數據則是從Buff

44、er1中獲取。 2.4 DMA操作DMA操作允許控制器與功能接口之間數據的透明傳輸。一旦設置了DMA操作,則不需要微控制器的干預。每個端點有一對DMA_REQ和DMA_ACK信號。當CSR寄存器中DMA使能信號位(Ep_CSR15)被置位時,USB控制器使用DMA_REQ和DMA_ACK這兩個信號來進行DMA的流控制。當緩沖區有數據或為空需要填充時發送DMA請求信號DMA_REQ,每傳輸4字節,響應一個DMA_ACK信號。由于USB2.0協議定義的事務操作以8bit為單位,因此完成一次32bit的DMA操作需要進行4次寫8bit。內部DMA采用高效的One-hot狀態機設計方法,狀態

45、轉換如圖7所示。當需要將接收到的數據存儲到SRAM(rx_dma_en=1)時進入WAIT_MRD狀態,在該狀態選中一個臨時數據寄存器,并向存儲器發送請求信號mreq,從存儲器中預取4字節(當接收到的數據少于4字節時,保證有4字節的數據寫入存儲器)到該寄存器中,然后進入MEM_WR狀態。當PL的分組拆裝器接收到1字節數據時,將該字節寫入臨時存儲器,轉入下一狀態MEM_WR1;當分組拆裝器沒數據給DMA仲裁器時則進入MEM_WR2狀態,在此狀態將臨時存儲器中的數據寫入SRAM,然后回到IDLE狀態。在操作過程中,使用計數器adr_cb對傳輸字節數進行計數,通過addr_cb1:0的值標識當前傳輸

46、的是32bit中的哪個字節。計數器sizu_c每接收1字節數值加1。在需要讀取SRAM中的數據(tx_dma_en=1)時,DMA仲裁器由IDIE狀態進入MEM_RD1狀態,讀取4字節數據到發送緩沖區中,然后進入狀態MEM_RD2,再讀4字節進入狀態MEM_RD3,這8字節輪流使用Buffer0和Buffer1緩沖區:在需要讀取SRAM中的數據(tx_dma_en=1)時,DMA仲裁器由IDLE狀態進入MEM_RD1狀態,讀取4字節數據到發送緩沖區中,然后進入狀態MEM_RD2,再讀4字節進入狀態MEM_RD3,這8字節輪流使用Buffer0和Buffer1緩沖區:if(NOT adr_cb2

47、) AND mackthen Buffer0<=SRAM_DATA_I;elsif (adr_cb2 AND mack)then Buffer1<=SRAM_DATA_I;end if;在MEM_RD3狀態判斷是否還需要讀下一個數據,如果需要再進入狀態MEM_RD2,否則在傳輸完所有字節后,返回到IDLE狀態。在發送數據過程中,使用14bit計數器sizd_c決定傳輸字節數,取自Ep_BUF30:17,每發送1字節數據,它的值減1。在圖7中的各個狀態中,由于超時、CRC校驗錯誤或得到的數據發生錯誤時,PE產生的Abort信號會使當前狀態都回到IDLE。文中闡述了USB2.0功能控制

48、器的一種實現方案。 其VHDL語言實現代碼,已在XILINX公司的FPGA Virtex XVV3006fg456中通過了Xilinx ISE的仿真、綜合及布局布線。FPGA的規模是32萬門,1536個CLB(可配置邏輯單元)。該控制模塊占用2050個Slice(66%),使用了1697個Slice觸發器(27%)和3047個4輸入LUT表(49%)。整個FPGA的速度可達到56.870MHz,完全滿足視頻數據的高速傳輸(對32bit數據操作,達到480Mb/s的速度時鐘只需15MHz)。該方案實現的控制器便于修改且易于實現,可作為一個功能模塊嵌入到SOC中,可使不同情況最大限度地靈活設計片上

49、系統。 用FPGA器件實現UART核心功能的一種方法串行外設都會用到RS232-C異步串行接口,傳統上采用專用的集成電路即UART實現,如TI、EXAR、EPIC的550、452等系列,但是我們一般不需要使用完整的UART的功能,而且對于多串口的設備或需要加密通訊的場合使用UART也不是最合適的。如果設計上用到了FPGA/CPLD器件,那么就可以將所需要的UART功能集成到FPGA內部,本人最近在用XILINX的XCS30做一個設計的時候,就使用VHDL將UADT的核心功能集成了,從而使整個設計更加緊湊,更小巧、穩定、可靠,下面就談談設計方法。 - 分析UART的結構,可以看出UART主要由數

50、據總線接口、控制邏輯和狀態接口、波特率發生器、發送和接受等部分組成,各部分間關系如圖一。 - 了解了UART的各部分組成結構后,下面對各部分的功能進行詳細的分析。我們假定所要設計的UART為:數據位為7位、8位可選,波特率可選,效驗方式為奇、偶、無等效驗方式,下面的分析都是在這個假定的基礎上進行。 一、波特率發生部分 - 從圖一可以看出,UART的接收和發送是按照相同的波特率進行收發的(當然也可以實現成對的不同波特率進行收發),波特率是可以通過CPU的總線接口設置的。UART收發的每一個數據寬度都是波特率發生器輸出的時鐘周期的16倍,即假定當前按照9600bps進行收發,那么波特率發生器輸出的

51、時鐘頻率應為960016Hz,當然這也是可以改變的,我們只是按照UART的方法進行設計。 - 我們假定提供的時鐘為1.8432MHz,那么可以很簡單地用CPU寫入不同的數值到波特率保持寄存器,然后用計數器的方式生成所需要的各種波特率,這個值的計算原則就是1843200/(16所期望的波特率),如果希望輸出9600Hz的波特率,那么這個值就是1843200/(169600)=12(0CH)。 二、 發送部分 - 這里應重點分析幾個問題:首先是何時CPU可以往發送保持寄存器(THR)寫人數據?也就是說CPU要寫數據到THR時必須判一個狀態,當前是否可寫?很明顯如果不判這個條件,發送的數據會出錯,除

52、非CPU寫入THR的頻率低于當前傳輸的波特率,而這種情況是極少出現的。其次是CPU寫入數據到THR后,何時THR的數據傳送到發送移位寄存器(TSR)并何時移位?即如何處理THR和TSR的關系?再次是數據位有7、8位兩種,校驗位有三種形式,這樣發送一個字節可能有9、10、11位三種串行長度,所以我們必須按照所設置的傳輸情況進行處理。數據位、效驗方式可以通過CPU寫一個端口來設置,發送和接受都根據這個設置進行,由于這部分很簡單,所以我就不給出程序了。 - 根據上面的分析,引進了幾個信號: - bigin1、begin2:引入兩個附加移位,目的是為送出起始位、停止位而加入串行長度。 - txdone

53、7、txdone8:分別表示7、8位的結束標志。Txdone<=txdone8 when“8bit”else txdone7; - Paritycycle7、paritycycle8:分別表示7、8位下的校驗位。Parity<=parity8 when“8 bit”else parity7; - Writerdy:為0時表示CPU不能將數據寫入THR,為1時可以寫入。 - 這樣就可以得到以下信息:在移位時鐘的上升沿檢測到txdone和writerdy都為高電平時,進入LOAD狀態即將THR的數據LOAD到TSR,在下一個時鐘就進入移位狀態。在移位中同時進行校驗位的運算,在需要送出校

54、驗位的時候將運算好的校驗位送出,txdone=1的時候將高電平送出,其它時候移位輸出。 - 最后還有一個小程序,那就是寫出writerdy的狀態,很明顯沒數據寫入時為高,而當txdone為低時為低,注意這里也必須同時同步。圖二給出了一個奇效驗8bit數據的發送時序圖。 三、 接受部分 - 對于接收同樣存在9、10、11位三種串行數據長度的問題,必須根據所設置的情況而將數據完整地取下來。接收還有一個特別的情況,那就是它的移位的時鐘不是一直存在的,這個時鐘必須在接受到起始位的中間開始產生,到停止位的中間結束。接受到停止位后,必須給出中斷,并提供相應的校驗出錯、FRAME錯以及溢出等狀態。 - 這樣

55、需引入hunt和idle兩個信號,其中hunt為高表示捕捉到起始位,idle為高表示不在移位狀態,利用這兩個信號就可以生成接收所需要的移位時鐘。 - 下面還有一個小程序,就是如何將接收的狀態和標志表示出來。溢出標志很簡單,那就是在idle從低變高,也就是說在接收到一個完整的串行序列后,去判一下當前的中斷是否有效?(高有效,數據沒有被讀走)如果為高那么溢出,否則沒有。在移位的時候,同時對接收的數據進行校驗,這樣就可以判斷接收的數據是否有錯,在接收完成時判一下當前的RX是否為高電平就可以知道FRAME是否有錯,圖三是一個8bit奇校驗的接收時序圖(假定接收正確,所以沒有給出校驗、溢出、幀出錯信號)

56、。 - 總結:我在用FPGA做一個設計的時候,由于還有資源而且正好用到UART,所以就根據對UART的認識進行了設計,全部用VHDL進行描述,用SPEEDWAVE進行語言級的仿真,用XILINX的F2.1進行頂層仿真,最后和PC的仿真終端進行聯機,功能一切正常,整個UART所需要的觸發器為80個左右,一般的PLD都可以完成。 在測控系統中用IP核實現D/A轉換  摘要:采用數字化技術、在測控系統中用IP核實現D/A轉換,并且在1片可編程邏輯器件中實現。它不受溫度的影響,既可保持高分辨率,又可降低對電路精度和穩定度的要求,并減少元件的數量。     關鍵詞

57、:IP D/A VHDL 可編程邏輯器件在各類電子系統中,數字電路所占比重越來越大。這主要是因為數字電路相對于模擬電路有一些突出的優點,例如:*數字電路中的有源器件工作在飽和區與截止區,工作狀態穩定;*數字電路處理的是二值信號,易于存儲和再生;*數字電路是由大量相同的基本單元,如門、觸發器等所組成,易于大規模集成,易于自動化設計工具的應用等。由于數字電路的以上特點,再加上數字計算機和數字信號處理技術的迅速發展,使得數字電路從集成規模、應用范圍及設計自動化程度等方面大大超過了模擬電路,越來越多的由模擬電路實現的功能轉由數字電路實現,進入了電子系統數字化的時代。在測控系統采用數字化技術,將原來由模

58、擬電路實現的D/A由數字電路實現。1 IP核介紹IP(知識產權)核將一些在數字電路中常用,但比較復雜的功能塊,如FIR濾波器、SDRAM控制器、PCI接口等設計成可修改參數的模塊。IP核的重用是設計人員贏得迅速上市時間的主要策略。隨著CPLD/FPGA的規模越來越大,設計越來越復雜(IC的復雜度以每年55%的速率遞增,而設計能力每年僅提高21%),設計者的主要任務是在規定的時間周期內完成復雜的設計。調用IP核能避免重復勞動,大大減輕工程師的負擔,因此使用IP核是一個發展趨勢。IP核包括硬IP與軟IP。可配置IP是參數化后的可重定目標IP,其優點是可以對功能加以裁剪,以符合特定的應用。這些參數包括總線寬度、存儲器容量、使能或禁止功能塊。硬IP最大的優點是確保性能,如速度、功耗等。然而,硬IP難以轉移到新工藝或集成到新結構中,是不可重配置的。軟IP是以綜合形式交付的,因而必須在目標工藝中實現,并由系統設計者驗證。其優點是源代碼靈活,可重定目標于多種制作工藝,在新功能級中重新配置。不過目前大多數庫是收費的,但也可以從網上下載一些免費的IP核。2 用I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論