《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于SoPC的FPGA在線測(cè)試方法
基于SoPC的FPGA在線測(cè)試方法
摘要: 本文提出了一種基于SoPC的FPGA在線測(cè)試方法,,是對(duì)現(xiàn)有FPGA在線測(cè)試方法的一種有效的補(bǔ)充,。
Abstract:
Key words :

        本文提出了一種基于SoPCFPGA在線測(cè)試方法,是對(duì)現(xiàn)有FPGA在線測(cè)試方法的一種有效的補(bǔ)充。
  1 在線測(cè)試數(shù)據(jù)操作流程
  基于SoPC的FPGA在線測(cè)試方法的數(shù)據(jù)操作流程如圖1所示,。如果用戶需要采集FPGA的測(cè)試數(shù)據(jù)并且上傳至PC機(jī),則用戶首先要將被測(cè)試數(shù)據(jù)寫入DMA讀從外設(shè),,然后系統(tǒng)自動(dòng)啟動(dòng)DMA控制器,,將數(shù)據(jù)送入Nios II的數(shù)據(jù)存儲(chǔ)器。再由JTAG UART控制器經(jīng)JTAG接口上傳至Nios II IDE(NiosⅡIntegrated Development Environment,,Nios II開發(fā)環(huán)境),,Nios II IDE將接收到的數(shù)據(jù)寫入測(cè)量數(shù)據(jù)存儲(chǔ)文件,從而完成了FPGA測(cè)試數(shù)據(jù)的上傳,。如果用戶需要將PC機(jī)中的激勵(lì)數(shù)據(jù)文件下載至FPGA,,則系統(tǒng)首先在Nios II IDE中通過Host-Based File System讀出激勵(lì)文件數(shù)據(jù),然后由JTAG接口經(jīng)JTAG UART控制器下載至Nios II處理器的數(shù)據(jù)存儲(chǔ)器,,Nios II發(fā)起DMA寫傳輸把數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)器搬運(yùn)至DMA寫從外設(shè)并寫入FPGA片上FIFO,,從而完成了激勵(lì)數(shù)據(jù)的下載。
  


  2 SoPC平臺(tái)架構(gòu)
  SoPC系統(tǒng)部件組成見圖2,,系統(tǒng)包括Nios II處理器,、On-Chip RAM、JTAG UART,、EPCS控制器,,SYSID、定時(shí)器,、DMA讀控制器dma_0,、DMA寫控制器dam_1,以及自定義DMA讀從外設(shè)fifo_control與自定義DMA寫從外設(shè)ext_rdfifo_controller,。NiosⅡ的復(fù)位地址為EPCS控制器,,異常地址為On_ChipRAM。DMA讀控制器的讀主端口連接至自定義DMA讀從外設(shè),,寫主端口連接至On-Chip RAM,,DMA寫控制器的讀主端口連接至On-Chip RAM,寫主端口連接至自定義DMA寫從外設(shè),。系統(tǒng)的JTAG UART主要實(shí)現(xiàn)JTAG接口的控制,,使FPGA能夠通過JTAG接口與PC機(jī)進(jìn)行通信。
  3 DMA讀,、寫從外設(shè)的設(shè)計(jì)
  測(cè)試數(shù)據(jù)在DMA控制器讀數(shù)據(jù)之前是存儲(chǔ)在片上FIFO的,,而激勵(lì)數(shù)據(jù)是通過DMA控制器寫入片上FIFO的。然而DMA控制器數(shù)據(jù)讀,、寫主端口采用的是Avalon存儲(chǔ)器映射接口(Avalon Memory Mapped Interface,,Avalon-MM接口),不能直接對(duì)FIFO進(jìn)行操作,Altera公司也沒有提供相應(yīng)的控制器核,,需要用戶自己開發(fā)DMA讀從外設(shè)用于控制FIFO把測(cè)試數(shù)據(jù)傳送給DMA控制器,,以及DMA寫從外設(shè)用于控制FIFO接收DMA控制器的激勵(lì)數(shù)據(jù)。本文開發(fā)的DMA讀從外設(shè)模塊結(jié)構(gòu)框圖如圖3所示,。
  


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

4 數(shù)據(jù)傳輸?shù)腘iosⅡ控制
  4.1 DMA控制器的操作
  Altera公司為DMA控制器提供了硬件抽象層(HAL)接口函數(shù),,使用這些函數(shù)編程需要注意的地方主要有2點(diǎn):一是要考慮到Cache數(shù)據(jù)的一致性問題,,在調(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í)行的程序讀/寫存儲(chǔ)在主機(jī)上的文件,文件的數(shù)據(jù)是NiosⅡIDE通過Altera下載線纜與目標(biāo)板進(jìn)行數(shù)據(jù)交互的,。目標(biāo)板上的程序可以使用ANSIC標(biāo)準(zhǔn)庫函數(shù)如fopen,、fread等函數(shù)來進(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下指定)而繞開Host-BaseFile System,,但是對(duì)于主機(jī)文件數(shù)據(jù)下載給目標(biāo)板的情況,,對(duì)文件的操作必須添加這個(gè)組件。
  4.3 測(cè)試數(shù)據(jù)讀,、寫控制
  當(dāng)需要采集測(cè)試數(shù)據(jù)時(shí),,首先在FPGA內(nèi)部用硬件語言編寫模塊把測(cè)試數(shù)據(jù)存入DMA讀從外設(shè)的FIFO,然后DMA讀從外設(shè)產(chǎn)生中斷請(qǐng)求,,NiosⅡ接到中斷請(qǐng)求后,,首先查看中斷產(chǎn)生的原因是FIFO寫滿還是數(shù)據(jù)包結(jié)束。若中斷原因是數(shù)據(jù)包結(jié)束,,則NiosⅡ讀DMA讀從外設(shè)的usedw寄存器獲取FIFO已使用字?jǐn)?shù),,并把這個(gè)值作為DMA控制器的傳輸長(zhǎng)度發(fā)起DMA傳輸;若是FIFO寫滿,則發(fā)起固定長(zhǎng)度(如FIFO深度)的DMA讀傳輸,,DMA傳輸完畢后用ANSIC標(biāo)準(zhǔn)函數(shù)fwrite()把數(shù)據(jù)寫入PC機(jī)的數(shù)據(jù)文件,。
  對(duì)于存儲(chǔ)在PC機(jī)上的數(shù)據(jù)激勵(lì)文件,NiosⅡIDE首先通過ANSIC標(biāo)準(zhǔn)函數(shù)fread()讀入NiosⅡ的數(shù)據(jù)存儲(chǔ)器,,在查詢DMA寫從外設(shè)中FIFO未滿時(shí),,把數(shù)據(jù)寫入外部的FIFO,完成數(shù)據(jù)激勵(lì)文件的傳輸,。
  5 系統(tǒng)驗(yàn)證
  5.1 系統(tǒng)測(cè)試條件
  本次測(cè)試中FPGA芯片為Altera公司的CycloneIII EP3C120F484C8,,系統(tǒng)時(shí)鐘為50 MHz,使用的JTAG傳輸線纜為USB Blaster,,NiosⅡ?yàn)榻?jīng)濟(jì)模式,,自定義DMA讀、寫外設(shè)內(nèi)部FIFO均為2 K×16 b,,NiosⅡ數(shù)據(jù)存儲(chǔ)器On-Chip RAM大小為60 KB,,使用Host-Base File System組件,在NiosⅡ工程屬性中選中“Reduced device drivers”,,經(jīng)過NiosⅡIDE編譯后代碼占用程序存儲(chǔ)空間為50 KB,。
  5.2 測(cè)試數(shù)據(jù)傳輸測(cè)試
  在FPGlA目標(biāo)系統(tǒng)測(cè)試數(shù)據(jù)上傳至PC的測(cè)試中,在FPGA內(nèi)部用verilog語言編寫了一個(gè)數(shù)據(jù)源模塊,,數(shù)據(jù)源輸出為2~8 000的計(jì)數(shù)值,,數(shù)據(jù)寬度為16位,在數(shù)據(jù)8 000輸出時(shí),,數(shù)據(jù)包結(jié)束信號(hào)有效,,這樣既可以驗(yàn)證FIFO滿中斷的情況又可以驗(yàn)證數(shù)據(jù)包結(jié)束中斷的情況。測(cè)試數(shù)據(jù)源首,、尾部的SignalTapⅡ測(cè)試波形如圖4所示,。在NiosⅡIDE,通過把pritnf()函數(shù)輸出的調(diào)試信息自動(dòng)存放到一個(gè)文本文件中,刪去首,、尾的調(diào)試信息即得到有效數(shù)據(jù)文件,。文本文件數(shù)據(jù)結(jié)果如圖5所示,其中數(shù)字后面的小黑塊代表換行符,,從結(jié)果看,,此方法實(shí)現(xiàn)了測(cè)試數(shù)據(jù)的正確上傳(注:由于測(cè)試數(shù)據(jù)太長(zhǎng),文中只給出數(shù)據(jù)的首部和尾部的截圖),。
  

 


  5.3 激勵(lì)數(shù)據(jù)傳輸測(cè)試
  在激勵(lì)數(shù)據(jù)傳輸測(cè)試時(shí)激勵(lì)數(shù)據(jù)為存儲(chǔ)于PC機(jī)上的計(jì)數(shù)值為1~2048二進(jìn)制流文件,,數(shù)據(jù)寬度為16位,通過加入Host-Base File System組件調(diào)用fopen()與fread()函數(shù)完成數(shù)據(jù)的讀出,,當(dāng)查詢DMA寫從設(shè)備未滿時(shí)發(fā)起DMA傳輸,,圖6是外部邏輯讀DMA寫從設(shè)備中FIFO的Signal Tap II測(cè)試波形圖。從圖中的結(jié)果看,,數(shù)據(jù)讀出為1~2 048,,實(shí)現(xiàn)了激勵(lì)數(shù)據(jù)的正確下載。
  


  6 結(jié)語
  本文提出了一種基于SoPC的FPGA在線測(cè)試方法,,這種在線測(cè)試方法可以把存儲(chǔ)在FPGA片上FIFO的測(cè)試數(shù)據(jù)通過JTAG接口上傳至PC機(jī)并寫入文件,,也可以把存儲(chǔ)在PC機(jī)上的激勵(lì)文件通過JTAG接口下載到FPGA的片上FIFO。相比Altera已有的在線測(cè)試方法,,此方法采用DMA操作,,具有較高的數(shù)據(jù)吞吐量;采用NiosⅡ控制測(cè)試/激勵(lì)數(shù)據(jù)的傳輸,,無需手動(dòng)操作;采集過程的控制由C語言編寫,,簡(jiǎn)單易用;使用PC機(jī)上的激勵(lì)文件或者把測(cè)試數(shù)據(jù)存儲(chǔ)為PC機(jī)上的文件,可以使用其它分析工具(如Matlab)產(chǎn)生激勵(lì)文件或者對(duì)測(cè)試數(shù)據(jù)文件進(jìn)行分析;另外,,此方法對(duì)測(cè)試數(shù)據(jù)的采樣深度沒有限制,。因此,這種在線測(cè)試方法具有廣泛的應(yīng)用前景,。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。