基于JTAG接口實(shí)現ARM的FPGA在線(xiàn)配置

發(fā)布時(shí)間:2010-4-24 22:09    發(fā)布者:李寬
關(guān)鍵詞: arm , FPGA , JTAG , 接口 , 在線(xiàn)
引言

隨著(zhù)通信技術(shù)的發(fā)展,出現越來(lái)越多的無(wú)線(xiàn)接人技術(shù),為了解決不同標準間的互通和兼容,人們提出了軟件無(wú)線(xiàn)電(Software Defined Radio,SDR)技術(shù)。SDR技術(shù)要求通信終端具有可重配置能力,根據特定通信網(wǎng)絡(luò )情況,動(dòng)態(tài)地改變調制/解調、編解碼、交織/解交織等方案。SDR 終端的實(shí)現往往都是基于可重配置的硬件環(huán)境,如現場(chǎng)可編程邏輯陣列(Field Programmable Gate Array,FPGA)、數字信號處理器(Digital Signal Processor,DSP),而不是專(zhuān)用集成電路(Application Specific Integrated Circuit,ASIC)等特定的硬件電路和芯片。在線(xiàn)配置(In Sys—tem Programming,ISP)或者動(dòng)態(tài)配置FPGA就是一種重要的SDR實(shí)現技術(shù)。本文介紹作者開(kāi)發(fā)實(shí)現的一種基于ARM嵌入式Linux下通過(guò) JTAG接口動(dòng)態(tài)配置FPGA的方法。

系統使用三星公司基于A(yíng)RM9的S3C2410處理器芯片,Altera公司CycloneII系列的EP2C70 FPGA芯片,ARM處理器上運行基于S3C2410裁剪后的嵌入式Linux系統,內核版本為2.4.18。

1 FPGA的配置方式及配置文件

Altera公司CycloneII系列FPGA芯片,是Altera公司推出的基于90 nm工藝制造、低成本的FPGA,主要面向數字終端、手持設備等對成本敏感的應用領(lǐng)域。EP2C70擁有68 416個(gè)邏輯單元,115 200位RAM,150個(gè)乘法器模塊,是CycloneII系列處理能力最強的芯片。與大部分FPGA一樣,CycloneII系列FPGA的配置信息保存在SRAM中,掉電后就丟失配置信息,每次上電后需要重新配置。CycloneII系列FPGA支持3種配置方式:主動(dòng)串行(AS)方式、被動(dòng)串行 (PS)方式、JTAG方式。

在主動(dòng)串行和被動(dòng)串行兩種方式中,FPGA芯片支持在配置過(guò)程中對配置數據進(jìn)行解壓縮,也就是配置數據可以采用壓縮格式存放;而使用JTAG配置時(shí),FPGA芯片不支持解壓縮過(guò)程,不能采用壓縮格式的配置數據。

不同的配置方式,往往要求不同格式的配置文件。使用Altera公司提供的QuartusII集成開(kāi)發(fā)環(huán)境可以生成各種配置文件。QuartusII默認產(chǎn)生.sof和.pof格式的配置文件,基于A(yíng)RM的嵌入式Linux中對FPGA進(jìn)行JTAG下載,必須使用.jam或者.jbc格式的配置文件。

2 JTAG接口工作方式

JTAG接口是一個(gè)業(yè)界標準,主要用于芯片測試和配置等功能,使用IEEE Std 1149.1聯(lián)合邊界掃描接口引腳。JTAG最初用于芯片功能的測試,其工作原理是在器件內部定義一個(gè)測試訪(fǎng)問(wèn)端口(Test Access Port,TAP),通過(guò)專(zhuān)用的JTAG測試工具對內部節點(diǎn)進(jìn)行測試和調試。TAP是一個(gè)通用的端口,外部控制器通過(guò)TAP可以訪(fǎng)問(wèn)芯片提供的所有數據寄存器和指令寄存器,F在JTAG接口還常用于芯片的在線(xiàn)配置,對PLD、Flash等器件進(jìn)行配置。為了完成系統的調試,任何原型系統都支持JTAG配置方式,因而JTAG配置也就成為最廣泛支持的配置方式。不同廠(chǎng)商和不同型號的絕大部分FPGA芯片都支持JTAG配置方式。在A(yíng)ltera公司的FPGA 芯片中,JTAG配置方式比其他任何一種配置方式的優(yōu)先級都高。JTAG允許多個(gè)器件通過(guò)JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,實(shí)現對各個(gè)器件分別測試和配置。

JTAG接口由4個(gè)必需的信號TDI、TD0、TMS和TCK,以及1個(gè)可選信號TRST構成。

3 Jam STAPL套件

在嵌入式Linux環(huán)境中,使用JTAG接口配置FP—GA,必須使用標準測試與編程語(yǔ)言(Standard Test AndProgramming Language,STAPL)標準。STAPL是一種專(zhuān)門(mén)用于描述可編程邏輯設備(Programmable Logic De—vice,PLD)配置文件的編程語(yǔ)言,由EIA/JEDEC組織制定標準。使用STAPL描述的配置文件具有通用性,獨立于PLD生產(chǎn)廠(chǎng)商。

Jam STAPL是Altera公司提供的支持STAPL的套件。使用Jam STAPL進(jìn)行配置包含兩部分,Jam Player(Jam解釋器或者稱(chēng)為Jam虛擬機)和Jam配置文件。Jam Player運行在微處理器中,讀取Jam文件并解析Jam文件表達的內容,在JTAG接口上產(chǎn)生用于配置的二進(jìn)制數據流并讀取反饋數據。

Jam STAPL的工作方式如圖1所示。利用PLD廠(chǎng)商提供的集成開(kāi)發(fā)環(huán)境Jam Composer,可以產(chǎn)生Jam配置文件(該文件包含目標沒(méi)備、應用數據等完整配置信息,與廠(chǎng)商和配置平臺無(wú)關(guān))。然后使用Jam Player解釋并產(chǎn)生JTAG配置數據,對JTAG鏈中的各個(gè)設備進(jìn)行配置。



使用Jam STAPL進(jìn)行配置時(shí),針對不用的應用和不同的目標設備(不同型號或者不同廠(chǎng)商),只需要改變Jam配置文件,而無(wú)需改變Jam Player。因為Jam Player不包含任何與應用或者設備相關(guān)的信息,它只負責解析Jam配置文件中的內容。它的工作方式與Java編程語(yǔ)言非常相似,Jam P1ayer相當于Java虛擬機,而Jam文件相當于編譯之后的Java字節碼文件(.class文件)。Jam配置文件有兩種格式:

①ASCII文本格式文件,也就是用STAPL描述的配置源文件,文件后綴名是.jam。該格式便于閱讀和理解,但由于采用ASCII文本編碼,體積較大。

②字節碼(Byte—Code)格式文件,STAPL源文件編譯好之后的字節碼文件,文件后綴名是“.jbc”。對于同樣的配置信息,該格式比.jam格式體積小,節省存儲空間;其缺點(diǎn)是,無(wú)法直接閱讀其中的配置信息。

與之對應,Jam Player也有兩種:普通Jam Player,負責對.jam文件的解釋?zhuān)籎am Byte一Code Player,負責對.jbc文件的解釋。從AItera官方網(wǎng)站上可以免費下載到用C語(yǔ)言編寫(xiě)的兩種Player源代碼。

4 系統設計與實(shí)現

4.1 系統硬件設計

系統硬件連接方案如圖2所示。系統中只使用JTAG配置方式,所以與AS、PS相關(guān)的nCONFIG、MSELO和MSEL1引腳都不使用,而將nCONFIG拉高,MSELO和MSEL1接地。DATA0和DCLK引腳可以任意配置,在這里都接地。使用S3C2410的通用引腳GPB7、GPB8、GPB9、GPBlO引腳分別作為JTAG接口的TMS、TDl、TCK和TDO。



4.2 系統軟件設計

4.2.1 生成Jam配置文件

使用Jam STAPL進(jìn)行JTAG配置,需要有Jam配置文件。集成開(kāi)發(fā)環(huán)境QuartusII默認生成的是.sol和.pof格式的配置文件,要生成.jam 和.jbc文件,可以使用2種方法:

第1種方法,在工程編譯之前設置QuartusII的生成配置文件選項。在QuartusII的主菜單中,選擇【Assign—ments】→ 【【)evice】菜單,進(jìn)入【Setting】窗口,單擊“Device&.Pin Options…”按鈕,在彈出的對話(huà)框中選擇“Program—ming Files”標簽,在該標簽頁(yè)中選擇.jam或者.jbc文件格式,單擊“0K”按鈕即可。

第2種方法,編譯完成后利用QuartusII自帶的文件格式轉換工具,將.sof或.pof文件轉換為.jam或.jbc文件類(lèi)型。在 QuartusII的主菜單中,選擇【File】→【ConvertProgramming Flies】菜單,進(jìn)入【Convert ProgrammingFiles】窗口。在該窗口的“Programming file type'’中選擇.jam或者.jbc類(lèi)型,在“File name”中指定文件保存路徑和文件名(默認使用與.sof或.pof同路徑同名),最后單擊“OK”按鈕,即可生成.jam或者.jbc配置文件。

4.2.2 移植Jam Player

Altera公司提供的Jam Player源程序文件包含了DOS、Windows和Unix三種平臺的代碼。在類(lèi)似Unix的Linux平臺中使用,必須進(jìn)行定制和移植。

Jam Player源程序組織結構如圖3所示。與配置平臺的I/O處理相關(guān)的功能都安排在jbis—tub.c文件中,使用Jam Player的用戶(hù)只需要根據平臺和硬件環(huán)境修改jbistub.c中的函數,而不需要修改其他的文件。



將Jam Player移植到嵌入式Linux中,主要進(jìn)行下列的定制:

    ①更改平臺預定義環(huán)境,添加預處理語(yǔ)句,去除不必要的源代碼;
    ②將JTAG信號映射到具體硬件引腳;
    ③定制錯誤信息輸出方式;
    ④根據具體微處理器的處理能力,定制延時(shí)函數。

關(guān)于更詳細的定制和移植過(guò)程可參考文獻[7]和[8]。

為了幫助Jam Player移植過(guò)程,Altera公司提供了調試和驗證使用的idcode文件。該文件有.jam格式和.jbc格式,分別供移植普通Jam Player和Jam Byte一CodePlayer使用。其功能都是讀取目標設備的IDCODE(每種型號的FPGA芯片都有一個(gè)與其一一對應的IDC0DE,可參見(jiàn)芯片的數據手冊)。如果移植成功,Jam Player會(huì )將讀取的IDCODE和對應的芯片型號打印出來(lái);否則輸出詳細的相關(guān)錯誤信息,以供調試使用。

4.2.3 JTAG驅動(dòng)程序

由于Jam Player運行在嵌入式Linux環(huán)境中,無(wú)法直接訪(fǎng)問(wèn)ARM芯片的引腳寄存器,也就無(wú)法直接操作引腳的輸入輸出。所以還必須為用于JTAG接口的引腳編寫(xiě)驅動(dòng)程序,將它們封裝成Jam Player可以讀寫(xiě)的字符型文件。

該驅動(dòng)遵守普通Linux字符型文件驅動(dòng)編寫(xiě)規則,無(wú)需向系統申請中斷和實(shí)現中斷函數,最關(guān)鍵的就是對引腳讀寫(xiě)時(shí),要符合JTAG接口引腳的時(shí)序控制。 JTAG接口的引腳時(shí)序如圖4所示。從圖中可知,對于A(yíng)RM的JTAG接口,TDI和TMS輸出信號是在TCK時(shí)鐘信號的下降沿鎖存的,而TDO反饋信號是在TCK時(shí)鐘信號的上升沿有效。



在驅動(dòng)程序中,與操作系統的write和read調用相對應的jtag_write和jtag_read的函數如下(這兩個(gè)函數實(shí)現了JTAG輸入輸出信號的具體操作過(guò)程):



Jam Player中調用該驅動(dòng)時(shí),在buffer中只提供TMS和TDI信號,如圖5(a)所示。根據硬件設計,系統使用的是S3C24lO的GPB端口的 7、8、9、10引腳,GPB數據寄存器(GPBDAT)的結構如圖5(b)所示。所以將buffer[0]的內容寫(xiě)到GPBDAT寄存器時(shí),需要左移7 位;讀取TDO信號時(shí),僅需返回第10位數據。



4.2.4 JTAG在線(xiàn)配置的性能和時(shí)間

由于使用JTAG配置不支持配置信息的壓縮形式,JTAG配置的時(shí)間只與目標芯片的型號有關(guān),而與具體應用無(wú)關(guān)。我們在PC系統中已驗證:一個(gè)源程序為 10行的與門(mén)操作應用和一個(gè)源程序超過(guò)6 000行的IEEE802.16物理層實(shí)現的應用,在QuartusII中使用JTAG下載時(shí),下載配置的時(shí)間相同。

根據上述嵌入式系統設計,Jam Player運行在基于S3C2410處理器的Linux環(huán)境中,時(shí)鐘頻率為200 MHz,一次配置EP2C70的時(shí)間約為70 s。在相同的Jam Player運行環(huán)境下,盡管不同應用的Jam文件的大小不同,其配置時(shí)間是一樣的。要減少配置時(shí)間,可以有3種方法:一是提高運行Jam Player系統的CPU速率;二是修改JamPlayer源程序的代碼,使其執行效率更高;三是根據自身系統設計,在滿(mǎn)足JTAG引腳時(shí)序的前提下,減少驅動(dòng)程序的延時(shí)操作。

結語(yǔ)

本設計實(shí)現了一種基于A(yíng)RM處理器的、在嵌入式Linux系統下通過(guò)FPGA的JTAG接口對其進(jìn)行在線(xiàn)配置的方案。該方法設計簡(jiǎn)單,只需將JTAG的4 個(gè)必需引腳連接;成本低廉,無(wú)需額外的配置芯片和設備(如AlteraEPC系列和EPCS系列);使用靈活,通過(guò)ARM對FPGA進(jìn)行在線(xiàn)配置;系統無(wú)需重啟就可動(dòng)態(tài)更新FPGA應用。在我們的實(shí)驗系統環(huán)境中,一次配置的時(shí)間約為70s。

參考文獻

   1. Joe mitola The Software Radio Architecture 1995(5)
   2. 王誠.吳繼華 Altera FPGA/CPLD設計(基礎篇) 2005
   3. IEEE Std.1149.1-2001,Test Access Port and BoundaryScan Architecture 2001
   4. Altera Corporation Altera Configuration Handbook 2007
   5. EIA/JEDEC standard JESD71.Standard Test and Programming Language(STAPL) 1999
   6. Jam STAPL
   7. Altera Corporation Altera Application Note 122 Using Jam STAPL for ISP & ICR via an Embedded Processor 2003
   8. Altera Corporation Altera Application Note 111 Embedded Programming Using the 8051 & Jam ByteCode 2005

作者:南京郵電大學(xué) 黃志海  周小會(huì )  糜正琨
來(lái)源:單片機與嵌入式系統應用 2009 (1)
本文地址:http://selenalain.com/thread-10782-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页