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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW和ARM嵌入式數(shù)據(jù)采集與遠(yuǎn)程傳輸控制系統(tǒng)

          基于LabVIEW和ARM嵌入式數(shù)據(jù)采集與遠(yuǎn)程傳輸控制系統(tǒng)

          作者: 時(shí)間:2009-12-09 來源:網(wǎng)絡(luò) 收藏

          b)Control_register:寄存器。內(nèi)部模塊有序工作的核心,具體的定義見表2。

          本文引用地址:http://www.ex-cimer.com/article/152253.htm

          c)Config_6620:配置AD6620。此模塊在Conf 6620位有效時(shí)接收由傳來的AD6620配置信息,完成DDC濾波器和寄存器配置。它除了本身使用地址總線的3位 ADD[3:1]作為FPGA內(nèi)部模塊選擇之外,還用了ARM ADD[6:4]作為AD6620的外部接口寄存器地址。Rdy in信號(hào)用于指示寫入操作成功,ARM檢測(cè)到此信號(hào)有效后,進(jìn)行下一次的寫操作。
          d)PII:鎖相環(huán)。Cyclone EP1C6Q240中有2個(gè)鎖相環(huán)模塊,設(shè)計(jì)中使用了其中的一個(gè)將20 MHz的時(shí)鐘倍頻至50 MHz,供AD9244,AD6620以及FPGA內(nèi)部使用。
          e)Ad_to_sram:AD6620輸出數(shù)據(jù)寫入SRAM時(shí)序產(chǎn)生模塊。AD6620工作在單通道模式時(shí)典型輸出時(shí)序見圖。
          此模塊主要完成的功能有:用2個(gè)數(shù)據(jù)鎖存器在DV與IQ信號(hào)的控制下鎖存I路和Q路數(shù)據(jù),產(chǎn)生寫SRAM所需的地址。由于AD6620抽取率較高的緣故,輸出數(shù)據(jù)率一般較低,在模塊中使用了狀態(tài)機(jī)在2次有效數(shù)據(jù)期間產(chǎn)生寫SRAM的時(shí)序。此外,當(dāng)寫地址到達(dá)設(shè)定值時(shí),模塊產(chǎn)生寫溢出中斷,提示ARM改變控制寄存器內(nèi)容,讀取數(shù)據(jù)。
          a)Read_add_gen:讀地址產(chǎn)生。在Fetch_sram位的控制下,產(chǎn)生讀SRAM時(shí)的地址,當(dāng)讀地址到達(dá)設(shè)定值時(shí),產(chǎn)生讀溢出中斷,提示ARM改變控制寄存器內(nèi)容,進(jìn)行下一步操作。
          b)Control_logic:控制邏輯。模塊在Start_daq有效時(shí)選擇由Ad_to_sram模塊產(chǎn)生的寫SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接,而在Fetch_sram有效時(shí)選擇讀SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接。與DMA讀取有關(guān)的請(qǐng)求與響應(yīng)信號(hào)也在此模塊中處理。
          3.3 Linux驅(qū)動(dòng)程序設(shè)計(jì)
          驅(qū)動(dòng)程序是硬件與應(yīng)用程序的接口。針對(duì)設(shè)計(jì)任務(wù)與硬件特點(diǎn),在驅(qū)動(dòng)程序中設(shè)計(jì)了以下函數(shù):
          a) AD6620_read:申請(qǐng)DMA緩存,睡眠等待寫溢出中斷到來,DMA完成后,將數(shù)據(jù)從內(nèi)核空間傳送至用戶空間,釋放DMA緩存。
          b) AD6620_ioctl:核心是一個(gè)switch選擇結(jié)構(gòu),根據(jù)應(yīng)用程序中用戶命令,完成初始化DMA,寫控制寄存器或者配置AD6620的工作。
          c)AD6620 open:主要完成DMA通道參數(shù)設(shè)置,初始化IO端口和信號(hào)量。
          d) AD6620 release:完成與AD6620_open相反的工作,主要是一些清理和釋放申請(qǐng)資源的工作。
          函數(shù)編寫好后,通過下面的file_operations結(jié)構(gòu)體聯(lián)系起來:


          e) AD6620 init:初始化函數(shù),完成驅(qū)動(dòng)程序注冊(cè)、中斷與中斷處理函數(shù)注冊(cè)、創(chuàng)建設(shè)備文件節(jié)點(diǎn)等。其中的驅(qū)動(dòng)程序注冊(cè)的核心就是上面的file_operations結(jié)構(gòu)體。
          驅(qū)動(dòng)程序編寫好后,用戶就可以在應(yīng)用程序中調(diào)用這些函數(shù),實(shí)現(xiàn)通過一組標(biāo)準(zhǔn)化的調(diào)用來操作底層硬件。
          3.4 客戶端應(yīng)用程序
          客戶端應(yīng)用程序?yàn)榱吮WC數(shù)據(jù)與控制信息的可靠,采用的是基于TCP協(xié)議的Socket網(wǎng)絡(luò)編程。本次設(shè)計(jì)客戶端運(yùn)行在ARM上,采用的是Linux下的C編程;而服務(wù)器端運(yùn)行在主機(jī)上,利用的圖形化語言實(shí)現(xiàn)。具體客戶端的通信與控制流程圖見圖4??梢钥闯???蛻舳耸且蕾囉谧x取由主機(jī)發(fā)送的控制字符來完成實(shí)時(shí)控制,實(shí)現(xiàn)與服務(wù)器端的交互操作的。因此,無論是客戶端還是服務(wù)器端,在每一次發(fā)送數(shù)據(jù)與控制信息時(shí),都會(huì)發(fā)送一個(gè)控制字符,接收端就是依靠識(shí)別此字符來完成相應(yīng)的操作。表3中給出了控制字符與所執(zhí)行操作之間的對(duì)應(yīng)關(guān)系。

          3.5 服務(wù)器程序設(shè)計(jì)
          服務(wù)器端的完整程序見圖5。服務(wù)器在指定的端口上偵聽,等待客戶端的連接。程序的核心是兩個(gè)循環(huán)框,上面的循環(huán)框完成發(fā)送數(shù)據(jù)和控制信息的任務(wù),主要包括傳送AD6620濾波器設(shè)計(jì)與控制寄存器配置文件、實(shí)時(shí)改變AD6620可動(dòng)態(tài)配置寄存器內(nèi)容、開始以及停止系統(tǒng)控制等模塊。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(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); })();