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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 一種基于SoPC的FPGA在線測(cè)試方法

          一種基于SoPC的FPGA在線測(cè)試方法

          作者: 時(shí)間:2011-03-31 來(lái)源:網(wǎng)絡(luò) 收藏


          2 平臺(tái)架構(gòu)
          系統(tǒng)部件組成見(jiàn)圖2,系統(tǒng)包括Nios II處理器、On-Chip RAM、JTAG UART、EPCS控制器,SYSID、定時(shí)器、DMA讀控制器dma_0、DMA寫(xiě)控制器dam_1,以及自定義DMA讀從外設(shè)fifo_control與自定義DMA寫(xiě)從外設(shè)ext_rdfifo_controller。NiosⅡ的復(fù)位地址為EPCS控制器,異常地址為On_ChipRAM。DMA讀控制器的讀主端口連接至自定義DMA讀從外設(shè),寫(xiě)主端口連接至On-Chip RAM,DMA寫(xiě)控制器的讀主端口連接至On-Chip RAM,寫(xiě)主端口連接至自定義DMA寫(xiě)從外設(shè)。系統(tǒng)的JTAG UART主要實(shí)現(xiàn)JTAG接口的控制,使能夠通過(guò)JTAG接口與PC機(jī)進(jìn)行通信。

          3 DMA讀、寫(xiě)從外設(shè)的設(shè)計(jì)
          測(cè)試數(shù)據(jù)在DMA控制器讀數(shù)據(jù)之前是存儲(chǔ)在片上FIFO的,而激勵(lì)數(shù)據(jù)是通過(guò)DMA控制器寫(xiě)入片上FIFO的。然而DMA控制器數(shù)據(jù)讀、寫(xiě)主端口采用的是Avalon存儲(chǔ)器映射接口(Avalon Memory Mapped Interface,Avalon-MM接口),不能直接對(duì)FIFO進(jìn)行操作,Altera公司也沒(méi)有提供相應(yīng)的控制器核,需要用戶自己開(kāi)發(fā)DMA讀從外設(shè)用于控制FIFO把測(cè)試數(shù)據(jù)傳送給DMA控制器,以及DMA寫(xiě)從外設(shè)用于控制FIFO接收DMA控制器的激勵(lì)數(shù)據(jù)。本文開(kāi)發(fā)的DMA讀從外設(shè)模塊結(jié)構(gòu)框圖如圖3所示。

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

          2.JPG


          DMA讀從外設(shè)包括了3個(gè)端口,即控制從端口、DMA從端口以及FIFO寫(xiě)端口。DMA讀從外設(shè)的控制從端口包括3個(gè)寄存器,分別是狀態(tài)寄存器status、控制寄存器control、FIFO已使用字?jǐn)?shù)寄存器usedw。NiosⅡ通過(guò)讀/寫(xiě)這些寄存器獲取此外設(shè)的狀態(tài)以及實(shí)現(xiàn)對(duì)此外設(shè)的控制。另外,控制端口還包含了中斷接口用于此外設(shè)向NiosⅡ發(fā)起中斷請(qǐng)求。DMA讀從外設(shè)產(chǎn)生中斷請(qǐng)求有2種情況:一是內(nèi)部FIFO寫(xiě)滿;二是收到外部測(cè)試數(shù)據(jù)的包結(jié)束信號(hào)。此時(shí),即使FIFO未寫(xiě)滿,DMA讀從外設(shè)也會(huì)發(fā)起中斷請(qǐng)求,從而實(shí)現(xiàn)采集的測(cè)試數(shù)據(jù)的立即傳輸。DMA從端口采用帶流控制信號(hào)的AvalonMM總線,用于實(shí)現(xiàn)DMA控制器的測(cè)試數(shù)據(jù)讀操作;管道接口是測(cè)試數(shù)據(jù)寫(xiě)入此外設(shè)的FIFO接口,包括數(shù)據(jù)總線、寫(xiě)有效信號(hào)和一些狀態(tài)信號(hào)(如FIFO寫(xiě)滿信號(hào)等)。DMA寫(xiě)從外設(shè)的結(jié)構(gòu)與DMA讀從外設(shè)類(lèi)似,只是沒(méi)有中斷請(qǐng)求信號(hào),這里不再詳述。

          4 數(shù)據(jù)傳輸?shù)腘iosⅡ控制
          4.1 DMA控制器的操作
          Altera公司為DMA控制器提供了硬件抽象層(HAL)接口函數(shù),使用這些函數(shù)編程需要注意的地方主要有2點(diǎn):一是要考慮到Cache數(shù)據(jù)的一致性問(wèn)題,在調(diào)用發(fā)送/接收函數(shù)之前需要調(diào)用相關(guān)函數(shù)清除數(shù)據(jù)Cache中的內(nèi)容;另外一個(gè)需要注意的地方是DMA控制器的alt_dma_txchan _send()函數(shù)以及alt_dma_rxchan_prepare()函數(shù)的第3個(gè)參數(shù)表示的是請(qǐng)求DMA控制器發(fā)送/接收的字節(jié)數(shù),而不是字或者雙字、四字?jǐn)?shù)。
          4.2 Host-Base File System
          Altera公司提供的Host-Base File System組件可以使正在目標(biāo)板上執(zhí)行的程序讀/寫(xiě)存儲(chǔ)在主機(jī)上的文件,文件的數(shù)據(jù)是NiosⅡIDE通過(guò)Altera下載線纜與目標(biāo)板進(jìn)行數(shù)據(jù)交互的。目標(biāo)板上的程序可以使用ANSIC標(biāo)準(zhǔn)庫(kù)函數(shù)如fopen、fread等函數(shù)來(lái)進(jìn)行文件的操作,用戶使用Host-Base File System前必須先在NtosII IDE工程中添加這個(gè)軟件組件,而且只能運(yùn)行在Debug模式下。另外,對(duì)于上傳至PC的測(cè)試數(shù)據(jù),也可以使用設(shè)置標(biāo)準(zhǔn)輸入/輸出信息存放于主機(jī)上的某個(gè)文件(在NiosⅡIDE/Run/Run…/Common下指定)而繞開(kāi)Host-BaseFile System,但是對(duì)于主機(jī)文件數(shù)據(jù)下載給目標(biāo)板的情況,對(duì)文件的操作必須添加這個(gè)組件。
          4.3 測(cè)試數(shù)據(jù)讀、寫(xiě)控制
          當(dāng)需要采集測(cè)試數(shù)據(jù)時(shí),首先在內(nèi)部用硬件語(yǔ)言編寫(xiě)模塊把測(cè)試數(shù)據(jù)存入DMA讀從外設(shè)的FIFO,然后DMA讀從外設(shè)產(chǎn)生中斷請(qǐng)求,NiosⅡ接到中斷請(qǐng)求后,首先查看中斷產(chǎn)生的原因是FIFO寫(xiě)滿還是數(shù)據(jù)包結(jié)束。若中斷原因是數(shù)據(jù)包結(jié)束,則NiosⅡ讀DMA讀從外設(shè)的usedw寄存器獲取FIFO已使用字?jǐn)?shù),并把這個(gè)值作為DMA控制器的傳輸長(zhǎng)度發(fā)起DMA傳輸;若是FIFO寫(xiě)滿,則發(fā)起固定長(zhǎng)度(如FIFO深度)的DMA讀傳輸,DMA傳輸完畢后用ANSIC標(biāo)準(zhǔn)函數(shù)fwrite()把數(shù)據(jù)寫(xiě)入PC機(jī)的數(shù)據(jù)文件。
          對(duì)于存儲(chǔ)在PC機(jī)上的數(shù)據(jù)激勵(lì)文件,NiosⅡIDE首先通過(guò)ANSIC標(biāo)準(zhǔn)函數(shù)fread()讀入NiosⅡ的數(shù)據(jù)存儲(chǔ)器,在查詢DMA寫(xiě)從外設(shè)中FIFO未滿時(shí),把數(shù)據(jù)寫(xiě)入外部的FIFO,完成數(shù)據(jù)激勵(lì)文件的傳輸。



          關(guān)鍵詞: SoPC FPGA 在線測(cè)試 方法

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();