新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于fifo存儲(chǔ)器的聲發(fā)射信號的數(shù)據(jù)傳輸及存儲(chǔ)方案

基于fifo存儲(chǔ)器的聲發(fā)射信號的數(shù)據(jù)傳輸及存儲(chǔ)方案

作者: 時(shí)間:2012-04-17 來源:網(wǎng)絡(luò) 收藏

3.2 cpld控制邏輯

  當(dāng)并行數(shù)據(jù)進(jìn)入板卡后,cpld首先將一部分?jǐn)?shù)據(jù)存入鎖存器,而將另一部分?jǐn)?shù)據(jù)直接存入fifo。但此時(shí)必須將寫時(shí)鐘信號wclk進(jìn)行二分頻,以便在一個(gè)ad轉(zhuǎn)換周期內(nèi)完成兩次fifo寫操作。當(dāng)fifo數(shù)據(jù)到達(dá)半滿時(shí),cpld便向pci9054發(fā)出中斷申請,并由pci9054將該申請傳入計(jì)算機(jī)。若系統(tǒng)響應(yīng)該中請,則在中斷響應(yīng)程序內(nèi)發(fā)出讀命令,以讀取字節(jié)數(shù)和地址信號等。

  pci9054通過lhold申請local總線控制權(quán),而cpld則通過lholda響應(yīng),以使pci9054能得到局部總線的控制權(quán)。pci9054首先將pci地址窄間映射到本地地址空間,接著啟動(dòng)本地總線的散聚dma周期。cpld收到讀信號(lw/r)、地址選通信號(ads)和地址(la16、la17)后便開始傳送數(shù)據(jù)。當(dāng)la16位為0,la17位為1時(shí),系統(tǒng)將使能后三片fifo的讀使能端(ren2),以使后三片fifo數(shù)據(jù)線上的q0~q31有效而同時(shí)也使pci9054的準(zhǔn)備好信號(ready)有效,開始數(shù)據(jù)傳送。在最后一個(gè)數(shù)據(jù)傳送之前,blast信號有效,之后,cpld將在一個(gè)時(shí)鐘周期后使fifo的讀使能(ren1或ren2)無效,從而完成一次數(shù)據(jù)傳送過程。

  3.3 控制程序設(shè)計(jì)

  pci9054單周期讀、寫和dma讀的vhdl語言時(shí)序控制狀態(tài)機(jī)設(shè)計(jì)如圖4所示。圖中,s0為空閑狀態(tài)。當(dāng)本地總線請求信號lhold被置1時(shí)轉(zhuǎn)到s1,否則留在s0。s1為總線保持狀態(tài),此狀態(tài)下應(yīng)將本地總線響應(yīng)信號lholda置1。如ads信號為0且lw/r為1則轉(zhuǎn)到s3,如ads信號為1且lw/r和blast為0則轉(zhuǎn)到s4,這種狀態(tài)表明此次讀操作為單周期讀。s2為dma讀狀態(tài),在此狀態(tài)下應(yīng)將ready信號和fifo讀使能信號ren1置0。如blast為1,則表明此次dma讀取還未完成,應(yīng)繼續(xù)留在s2,如blast為0,則表明此次dma讀取完成,可轉(zhuǎn)到s4。s3為單周期寫狀態(tài),此狀態(tài)下也要置ready信號為0以表示寫數(shù)據(jù)有效,并在blast為0時(shí)轉(zhuǎn)到s4。s4為讀寫操作完成狀態(tài),當(dāng)lhold被置0時(shí),表明pci9054不再請求本地總線,此時(shí)應(yīng)轉(zhuǎn)到s0,當(dāng)blast為0且lhold為1時(shí),表明pci9054還要進(jìn)行數(shù)據(jù)讀寫,故應(yīng)轉(zhuǎn)到s1繼續(xù)操作。 

  3.4 控制程序邏輯的仿真結(jié)果

  max+plusⅱ是開發(fā)aletra公司的fpga/CPLD系列產(chǎn)品的軟件工具,本設(shè)計(jì)利用此工具提供的設(shè)計(jì)環(huán)境和設(shè)計(jì)工具來對cpld控制程序進(jìn)行開發(fā)和調(diào)試。其功能時(shí)序如圖5所示。

  cpld的設(shè)計(jì)是用vhdl編程實(shí)現(xiàn)的。本設(shè)計(jì)的操作代碼都已經(jīng)過仿真,并在實(shí)際調(diào)試中得到應(yīng)用。

  4 系統(tǒng)驅(qū)動(dòng)程序設(shè)計(jì)

  本設(shè)計(jì)使用driv erworks的driverwizard來創(chuàng)建wdm框架程序??筛鶕?jù)設(shè)計(jì)需求添加程序代碼,從而完成pci設(shè)備的dma傳輸系統(tǒng)驅(qū)動(dòng)程序,以執(zhí)行dma操作、訪問i/o端口和存儲(chǔ)器空間、處理器中斷和訪問pci。根據(jù)系統(tǒng)需要,驅(qū)動(dòng)程序的關(guān)鍵是三個(gè)方面:硬件訪問、中斷處理和dma傳輸。

  kdmaadapter類可用于建立一個(gè)dma適配器,以標(biāo)明一個(gè)dma通道的特性和提供串行化訪問服務(wù);kdmatransfer類則用于控制dma的傳輸和啟動(dòng)dma傳輸,以傳輸dma數(shù)據(jù)緩沖區(qū)物理地址和字節(jié)數(shù),dma傳輸結(jié)束后,數(shù)據(jù)將由公用緩沖區(qū)拷貝到應(yīng)用數(shù)據(jù)緩沖區(qū);kcommon dmabuffer用于實(shí)現(xiàn)公用緩沖區(qū)的操作。對于dma操作,本系統(tǒng)還提供了一個(gè)特殊的內(nèi)存,即公用緩沖區(qū)。應(yīng)當(dāng)說明的是,公用緩沖區(qū)是稀有的系統(tǒng)資源,應(yīng)該避免浪費(fèi)使用。

  5 結(jié)束語

  本文給出了數(shù)據(jù)緩存、傳輸模塊控制電路的設(shè)計(jì),并采用vhdl語言和cpld很好的完成邏輯控制任務(wù)和系統(tǒng)驅(qū)動(dòng)程序的編寫與調(diào)試。實(shí)驗(yàn)結(jié)果表明,該數(shù)據(jù)存儲(chǔ)傳輸模塊的硬件、軟件工作十分可靠、穩(wěn)定,可實(shí)現(xiàn)640 mbps(80 mbyte/s)以上實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)與傳輸,完全能滿足采集的要求。


上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉