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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于JTAG接口實(shí)現(xiàn)ARM的FPGA在線配置

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

          作者: 時(shí)間:2012-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
            引 言

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

            系統(tǒng)使用三星公司基于9的處理器芯片,Altera公司CycloneII系列的EP2C70 FPGA芯片,處理器上運(yùn)行基于裁剪后的嵌入式Linux系統(tǒng),內(nèi)核版本為2.4.18。

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

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

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

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

            2 工作方式

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

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

            3 Jam STAPL套件

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

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

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


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

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

          fpga相關(guān)文章:fpga是什么



          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: JTAG接口 ARM FPGA 在線配置 S3C2410

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