国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SOPC的數(shù)據(jù)發(fā)生系統(tǒng)設(shè)計

2009-05-12 03:14邱文靜張曉輝
現(xiàn)代電子技術(shù) 2009年5期

邱文靜 張 凱 張曉輝

摘 要:提出一種基于SOPC的數(shù)據(jù)發(fā)生系統(tǒng)及其PCI接口的設(shè)計方案,詳細(xì)介紹了系統(tǒng)主要模塊的硬件設(shè)計方法,實現(xiàn)SOPC系統(tǒng)中定制用戶自定義主從外設(shè)及其通過相應(yīng)的主從端口與Avalon總線的連接,并在EDA 工具QuartusⅡ和ModelSim平臺上用硬件描述語言VHDL語言對該方案中的基本模塊,如數(shù)據(jù)產(chǎn)生,乒乓結(jié)構(gòu)和PCI9054接口邏輯進(jìn)行了邏輯綜合及功能仿真。可以在本系統(tǒng)的基礎(chǔ)上,通過軟件的完善,實現(xiàn)復(fù)雜的非常規(guī)類型數(shù)據(jù)的產(chǎn)生,提高了系統(tǒng)的適應(yīng)性和靈活性,有利于參數(shù)的修改和系統(tǒng)升級。

關(guān)鍵詞:SOPC;Avalon總線;乒乓結(jié)構(gòu);PCI9054

中圖分類號:TP27文獻(xiàn)標(biāo)識碼:B

文章編號:1004-373X(2009)05-167-04

Design of Data Generating System Based on SOPC

QIU Wenjing,ZHANG Kai,ZHANG Xiaohui

(Southeast University,Nanjing,210096,China)

Abstract:A design of data generating system based on SOPC is presented.The implement of hardware circuit of significant parts is introduced.In this paper,user logic models are turned into SOPC Builder components with master port or slave port,which are connected to Avalon bus.The basic models,such as data generator,ping-pong structure and PCI9054 interface logic are synthesized in logic and simulated in function with VHDL hardware description language on QUARTUSⅡand ModelSim EDA tool-desk.Meanwhile,based on the system,generating more complex data can be achieved through the well established software.Using this method can enhance the system′s flexibility and adaptability which has wide application in the future.

Keywords:SOPC;Avalon bus;ping-pong structure;PCI9054

0 引 言

可編程片上系統(tǒng)(SOPC)是一種特殊的嵌入式系統(tǒng),因為SOPC是片上系統(tǒng)(SoC),即由單個芯片完成整個系統(tǒng)的主要邏輯功能;SOPC是可編程系統(tǒng),具有靈活的設(shè)計方式,可裁減,可擴(kuò)充,可升級,并具備軟硬件在系統(tǒng)可編程的功能;SOPC結(jié)合了SoC 和FPGA 的優(yōu)點(diǎn),涵蓋了嵌入式系統(tǒng)設(shè)計技術(shù)的全部內(nèi)容;SOPC 涉及目前已引起普遍關(guān)注的軟硬件協(xié)同設(shè)計技術(shù)。

現(xiàn)以數(shù)據(jù)發(fā)生系統(tǒng)為例,介紹采用SOPC技術(shù),以硬件描述語言為主要手段,產(chǎn)生偽隨機(jī)序列的設(shè)計方案。研究了偽隨機(jī)序列的產(chǎn)生,兩片SRAM乒乓結(jié)構(gòu)存儲以及通過PCI9054芯

片與PC機(jī)之間數(shù)據(jù)傳遞等模塊的硬件實現(xiàn)問題。

1 基本原理和系統(tǒng)的整體結(jié)構(gòu)

本系統(tǒng)的主要模塊框圖如圖1所示,SOPC系統(tǒng)采用Altera的Cyclone Ⅱ系列的芯片。系統(tǒng)包括Nios Ⅱ軟核處理器,擴(kuò)展的程序存儲器FLASH,數(shù)據(jù)存儲器SRAM,以及用戶自定義邏輯如PCI9054接口邏輯模塊、數(shù)據(jù)產(chǎn)生模塊、乒乓結(jié)構(gòu)模塊等,并通過Avalon總線連接起來。數(shù)據(jù)產(chǎn)生模塊產(chǎn)生偽隨機(jī)序列,該數(shù)據(jù)存儲到兩片片外擴(kuò)展的SRAM中,PCI9054接口邏輯將數(shù)據(jù)從SRAM中讀出后通過PCI9054接口芯片傳輸?shù)絇C機(jī)中,其中SRAM中數(shù)據(jù)的寫入和讀出是通過乒乓結(jié)構(gòu)模塊控制的。

圖1 系統(tǒng)主要模塊框圖

由于PCI總線協(xié)議比較復(fù)雜,該系統(tǒng)采用PCI接口專用芯片PCI9054,用于PCI總線的控制。為了實現(xiàn)數(shù)據(jù)的高速傳輸,采用了DMA傳輸模式。在該模式中,PCI9054既是PCI總線的控制器又是本地總線的控制器[1],所以其與FPGA之間的接口邏輯模塊設(shè)置為Avalon主外設(shè),控制SRAM的讀操作。

FPGA的片上資源很寶貴,所以數(shù)據(jù)的存儲采用了片外擴(kuò)展SRAM。由于數(shù)據(jù)為16 b,而且為實現(xiàn)數(shù)據(jù)的高速傳輸,采用了兩片256K×16 b的SRAM(IDT71V416)構(gòu)成乒乓結(jié)構(gòu),以用作系統(tǒng)的數(shù)據(jù)存儲器。為保證整個系統(tǒng)高速運(yùn)行以及以后升級的需要,選用了存取時間為10 ns的IDT71V416。

2 系統(tǒng)主要硬件設(shè)計

2.1 數(shù)據(jù)產(chǎn)生模塊

該模塊的邏輯功能由VHDL語言設(shè)計實現(xiàn),可以通過修改該模塊的設(shè)計產(chǎn)生所需要的數(shù)據(jù),本系統(tǒng)產(chǎn)生的數(shù)據(jù)為偽隨機(jī)序列。模塊的邏輯功能是:先產(chǎn)生8 b的偽隨機(jī)數(shù),再將所產(chǎn)生的數(shù)據(jù)通過D觸發(fā)器組合成16 b的數(shù)據(jù)。該系統(tǒng)采用了非線性反饋的移位寄存器,即全狀態(tài)移位計數(shù)器[2]來產(chǎn)生所需要的偽隨機(jī)數(shù)。這種計數(shù)器利用了移位寄存器的所有狀態(tài),能夠自啟動,不需要額外輸入。這種偽隨機(jī)序列發(fā)生器,可大大簡化結(jié)構(gòu),提高可靠性,易于實現(xiàn)。

全狀態(tài)移位計數(shù)器的狀態(tài)變化規(guī)律有兩個特點(diǎn):狀態(tài)的最高位由反饋函數(shù)確定;余下的各位由原態(tài)移位得到。該系統(tǒng)采用的反饋函數(shù)為:

D1 = Q8軶4軶3⊙(Q2Q7Q6Q5Q1)

式中:Q璱(i=1,…,8)為電路的現(xiàn)態(tài)。

2.2 乒乓結(jié)構(gòu)模塊

2.2.1 乒乓結(jié)構(gòu)的硬件實現(xiàn)

為了提高系統(tǒng)的傳輸速率,兩片SRAM構(gòu)成了乒乓緩存結(jié)構(gòu)[3],即在一片執(zhí)行寫操作的同時,另一片在執(zhí)行讀操作。乒乓結(jié)構(gòu)模塊的原理如圖2所示,P1口與數(shù)據(jù)產(chǎn)生模塊相連接,僅具有寫入功能,P2口設(shè)計為Avalon從端口,與Avalon總線相連僅具有讀出功能。

圖2 乒乓緩存控制器

對于數(shù)據(jù)產(chǎn)生模塊而言,由于僅具有并行數(shù)據(jù)的輸出,沒有地址和控制信號端口,故它無法直接對SRAM進(jìn)行寫操作,因而要求乒乓結(jié)構(gòu)模塊有地址產(chǎn)生功能。P1口的CLK作為計數(shù)器的脈沖源,計數(shù)器的輸出作為SRAM的地址。DB1連接數(shù)據(jù)產(chǎn)生模塊的輸出端。CB1為控制信號,因為P1口只有寫入功能,所以其we_n恒接低,oe_n恒接高。

P2口為只有讀出功能的Avalon從端口,所以AB2為從端口的地址線address;DB2為數(shù)據(jù)線readdata;CB2中的we_n為讀信號線read,oe_n恒接低。由于兩片SRAM始終處于工作狀態(tài),所以相應(yīng)的片選信號chip_select_n恒接低。

兩片SRAM在P1口和P2口之間的切換的控制信號即chipselect,由計數(shù)器產(chǎn)生。當(dāng)計數(shù)值小于262 144時,chipselect接低,SR1與P1口相接,SR2與P2口相接;當(dāng)計數(shù)值在262 144~524 288之間時,chipselect接高,SR1 與P2口相接,SR2與P1口相接。當(dāng)計數(shù)值到達(dá)524 288時,計數(shù)器清零。

2.2.2 Avalon從外設(shè)的端口信號設(shè)計

系統(tǒng)中,數(shù)據(jù)產(chǎn)生模塊與乒乓結(jié)構(gòu)模塊結(jié)合為一個模塊,通過P2口掛在Avalon總線上。該模塊的信號列表如圖3所示。其中,avalon_slave_0接口類型的信號與Avalon總線相連接,而conduit_end接口類型的信號與SRAM相連接。圖3中的Avalon從端口即為P2口,采用了流水線讀傳輸?shù)哪J?,這種模式能在前一次傳輸返回readdata前開始一次新的傳輸,增加了帶寬。

圖3 Avalon 從外設(shè)端口信號設(shè)計

2.2.3 動態(tài)地址對齊及其時序設(shè)計

Avalon總線模塊能夠適應(yīng)主從外設(shè)的不同寬度和不匹配的數(shù)據(jù)寬度。當(dāng)系統(tǒng)中存在不匹配的存儲端口時,要考慮地址對齊問題。對于存儲器類型的外設(shè),采用動態(tài)地址對齊方式[4]。IDT71V416型SRAM是靜態(tài)RAM,屬于存儲器型外設(shè),所以該Avalon從端口采用動態(tài)地址對齊方式,如圖4所示。選用動態(tài)地址對齊方式,使得主端口能連續(xù)地對從外設(shè)進(jìn)行讀寫,并使系統(tǒng)將外設(shè)認(rèn)作存儲器型外設(shè)。

圖4 Avalon從端口地址對齊設(shè)置

根據(jù)IDT71V416型SRAM手冊[5]中讀寫時序的各時間參數(shù)值設(shè)定set up,read wait,write wait及hold time的時間均為10 ns,使該端口既符合Avalon總線讀寫時序的要求[6],又符合IDT71V416型SRAM的讀寫時序的要求,如圖5所示。

圖5 Avalon 從端口的時序參數(shù)設(shè)置

數(shù)據(jù)產(chǎn)生,乒乓結(jié)構(gòu)和兩片SRAM三部分的組合在ModelSim中的仿真結(jié)果如圖6所示。avalon_address_b不變時是在執(zhí)行第一次寫操作,此時沒有數(shù)據(jù)讀出,所以avalon_readdata_b值為高阻;avalon_address_b開始變化時,表示一片SRAM已經(jīng)寫滿,正在執(zhí)行該片的讀操作,而另一片在執(zhí)行寫操作,avalon_readdata_b為系統(tǒng)生成的數(shù)據(jù)。

圖6 ModelSim仿真結(jié)果

2.3 PCI9054接口邏輯模塊

PCI總線作為PC機(jī)與外部設(shè)備之間重要的連接總線,具有數(shù)據(jù)傳輸穩(wěn)定靈活,傳輸速度快,即插即用和良好的擴(kuò)展性等特點(diǎn),被廣泛地用在各種與PC機(jī)互聯(lián)的設(shè)備中。該系統(tǒng)采用的PCI9054芯片[1]可以將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對簡單的用戶接口,大大縮短了設(shè)計周期。

2.3.1 本地總線狀態(tài)機(jī)設(shè)計

由于PCI9054 的DMA傳輸方式只適宜于做單次傳輸,故該系統(tǒng)采用了DMA結(jié)合中斷的方式傳輸數(shù)據(jù)。由于數(shù)據(jù)的存儲采用了乒乓結(jié)構(gòu),可以在一片SRAM執(zhí)行DMA傳輸?shù)耐瑫r執(zhí)行另一片寫操作,這樣不會造成數(shù)據(jù)丟失,狀態(tài)也比較容易控制。

系統(tǒng)復(fù)位后,數(shù)據(jù)產(chǎn)生模塊開始產(chǎn)生偽隨機(jī)序列,產(chǎn)生的數(shù)據(jù)直接存入SRAM中。此時,計數(shù)器同步計數(shù),當(dāng)計數(shù)值每一次達(dá)到262 144時,也就是一片SRAM已經(jīng)存滿時,SOPC系統(tǒng)就會觸發(fā)PCI9054中斷請求信號LINT#,CPU響應(yīng)中斷,發(fā)出讀命令、要讀取的字節(jié)數(shù)、地址信號等。PCI9054先通過LHOLD申請本地總線的控制權(quán),SOPC系統(tǒng)通過LHOLDA響應(yīng),使PCI9054獲得本地總線的控制權(quán)。PCI9054將PCI地址空間映射到本地地址空間,接著啟動本地總線的DMA傳輸[7]。

該系統(tǒng)采用VHDL語言,實現(xiàn)了DMA讀傳輸本地端的時序控制狀態(tài)機(jī)設(shè)計。狀態(tài)0為空閑狀態(tài)(idle),若LHOLD信號被置1,則轉(zhuǎn)到狀態(tài)1,否則留在狀態(tài)0。狀態(tài)1為總線保持狀態(tài)(hold),在此狀態(tài)下應(yīng)將LHOLDA信號置1。如果信號ADS為0且LW_R為0,則轉(zhuǎn)到狀態(tài)2。狀態(tài)2為DMA讀狀態(tài)(DMA_read),在此狀態(tài)下應(yīng)將READY信號和模塊內(nèi)部信號avalon_read置1,從而使Avalon主端口的master_read置1,表示Avalon主外設(shè)發(fā)起讀傳輸。如果BLAST為1,則表明此次DMA讀取還沒有完成,繼續(xù)留在狀態(tài)2;如果BLAST為0,則表明此次DMA讀取完成,轉(zhuǎn)到狀態(tài)3。狀態(tài)3為DMA讀操作完成狀態(tài)(end_cycle),當(dāng)LHOLD被置0時,表示PCI9054不再請求本地總線,則轉(zhuǎn)到狀態(tài)0;當(dāng)BLAST為0且LHOLD為1時,則表明PCI9054還要進(jìn)行DMA讀操作,則轉(zhuǎn)到狀態(tài)1繼續(xù)。其中的DMA讀操作的時序邏輯的ModelSim仿真結(jié)果如圖7所示。

圖7 DMA讀時序邏輯的仿真結(jié)果

2.3.2 Avalon主外設(shè)的端口信號設(shè)計

該系統(tǒng)中,PCI9054控制數(shù)據(jù)從本地總線上讀出,先到PCI9054的FIFO中,再將FIFO中的數(shù)據(jù)傳輸?shù)絇CI總線上。因此SOPC系統(tǒng)中的PCI9054接口邏輯模塊為Avalon主外設(shè),主端口通過address,read,waitrequest等信號發(fā)起Avalon總線上的讀操作,從而控制Avalon從外設(shè)即乒乓結(jié)構(gòu)模塊的讀操作。

由于本系統(tǒng)定制的從外設(shè)采用了流水線讀的傳輸模式,為了使端口傳輸模式匹配,主外設(shè)也采用流水線讀的傳輸模式。流水線主端口一個必須的信號為readdatavalid,Avalon交換結(jié)構(gòu)向主端口發(fā)出readdatavalid,以表示readdata信號正在提供有效的數(shù)據(jù)。

本系統(tǒng)定制的Avalon主外設(shè)構(gòu)成模塊主要由5部分構(gòu)成,其中Read Master Logic提供了符合Avalon接口規(guī)范的主端口信號;Control Logic是Read Master Logic與PCI9054 Local Bus Logic控制信號和狀態(tài)信號轉(zhuǎn)換的橋梁;FIFO是數(shù)據(jù)由Read Master Logic向PCI9054傳輸?shù)木彌_區(qū)。這三部分通過主端口流水線讀傳輸時序邏輯聯(lián)系在一起,提供了Avalon主外設(shè)的主端口接口界面。PCI9054 Local Bus Logic即VHDL語言設(shè)計的本地總線狀態(tài)機(jī),它將PCI9054本地端的信號通過狀態(tài)機(jī)邏輯轉(zhuǎn)換為與Control Logic和FIFO相對應(yīng)的信號;Clock/Reset提供了主外設(shè)的clk和reset信號。

利用SOPC Builder中的new component edit設(shè)計PCI9054接口邏輯模塊的接口。在new component edit的signal中設(shè)置模塊的各信號線以及相應(yīng)的總線型號類型;在interface中設(shè)置各信號線對應(yīng)的端口類型及其相應(yīng)的參數(shù)。圖8為Avalon主端口的參數(shù)設(shè)置。

圖8 Avalon主端口設(shè)置

2.4 系統(tǒng)中各中斷的實現(xiàn)

在SOPC系統(tǒng)中,當(dāng)沒有進(jìn)行傳輸時,Avalon交換結(jié)構(gòu)忽略來自主端口所有與傳輸相關(guān)的輸出信號,并且主端口也忽略來自Avalon交換結(jié)構(gòu)所有與傳輸相關(guān)的輸入信號。但是Avalon總線接口提供控制信號來實現(xiàn)中斷請求等功能,這些信號不直接與數(shù)據(jù)傳輸相關(guān)。Avalon中斷請求信號允許從端口發(fā)出一個IRQ,表明它需要主外設(shè)來服務(wù)[8]。系統(tǒng)中,PCI9054采用了DMA加中斷的方式來傳輸數(shù)據(jù),而且DMA傳輸中的主控制器PCI9054芯片也要通過中斷信號LINT#來觸發(fā),所以中斷的實現(xiàn)是本系統(tǒng)功能實現(xiàn)的關(guān)鍵。

系統(tǒng)從端口的中斷原理在于系統(tǒng)復(fù)位之后,數(shù)據(jù)產(chǎn)生模塊開始自動產(chǎn)生偽隨機(jī)序列,并自動將數(shù)據(jù)存入SRAM中,當(dāng)一片SRAM存滿之后,從端口的irq信號被設(shè)置。這個irq信號的時序必須與相關(guān)時鐘的上升沿同步,其相關(guān)地址端口的名字必須是本模塊中Avalon從端口的名字。系統(tǒng)中從端口中斷的具體設(shè)置如圖9所示。

圖9 從端口中斷設(shè)置

系統(tǒng)主端口的中斷原理:在于主端口的irq檢測到從端口有中斷發(fā)出,通過置為有效來響應(yīng)這個中斷,并同時用該信號觸發(fā)PCI9054的LINT#信號。PCI9054獲得本地總線的控制權(quán),并啟動DMA傳輸,向SOPC系統(tǒng)中的主外設(shè)即PCI9054接口邏輯模塊發(fā)送地址和傳輸?shù)淖止?jié)長度,開始DMA傳輸。當(dāng)字節(jié)長度減為0,另一片SRAM存滿時,再次觸發(fā)PCI9054的LINT#信號,使得PCI9054啟動下一次DMA傳輸。主端口中斷的設(shè)置如圖10所示。

圖10 主端口中斷設(shè)置

3 結(jié) 語

詳細(xì)介紹了基于SOPC設(shè)計的數(shù)據(jù)發(fā)生系統(tǒng)中PCI接口的開發(fā)過程。對其中的關(guān)鍵技術(shù),如設(shè)計添加在SOPC系統(tǒng)中的用戶自定義主外設(shè)和從外設(shè);PCI9054本地總線狀態(tài)機(jī)的設(shè)計,乒乓結(jié)構(gòu)的存儲模塊的設(shè)計,以及系統(tǒng)中各中斷的實現(xiàn)等主要部分做了分析和研究,給出了基于SOPC的硬件實現(xiàn)方案。系統(tǒng)的主要部分由VHDL語言設(shè)計實現(xiàn),有利于參數(shù)修改和系統(tǒng)升級。

參考文獻(xiàn)

[1]PCI 9054 Data Book Version 2.1[Z].2000.

[2]張海峰,段穎妮,呂虹.全狀態(tài)偽隨機(jī)序列發(fā)生器的實現(xiàn)[J].電子器件,2006,29(1):177-178,182.

[3]周如輝.實時視頻處理系統(tǒng)的乒乓緩存控制器設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(7):25-27.

[4]劉沁.Nios Ⅱ處理器的兩類外設(shè)接口設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(11):32-34.

[5]Integrated Device Technology Inc..IDT71V416S,IDT71V-416L,3.3 V COMS Static RAM 4Meg(256K×16 b) [Z].2003.

[6]Altera Corporation.Avalon Interface Specifications Version 1.0[Z].2008.

[7]韓雪峰,黃焱,楊濤.基于PCI總線的高速數(shù)據(jù)采集接口的設(shè)計與實現(xiàn)[J].微計算機(jī)信息,2005,21(15):71-73.

[8]周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2006.

作者簡介 邱文靜 女,1982年出生,東南大學(xué)碩士研究生。研究方向超聲醫(yī)學(xué)成像中的信號處理。

长葛市| 双城市| 丰都县| 元谋县| 丹寨县| 桐庐县| 西乡县| 吉安县| 阿克苏市| 阿坝县| 垦利县| 丰台区| 明水县| 岳阳市| 新津县| 阿克陶县| 喀喇| 游戏| 福清市| 淮安市| 兴城市| 襄汾县| 同仁县| 仁布县| 桂平市| 安仁县| 老河口市| 博罗县| 孙吴县| 大渡口区| 吕梁市| 贵港市| 伊春市| 古蔺县| 陇西县| 宝应县| 德庆县| 错那县| 舟曲县| 天柱县| 乌苏市|