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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > FPGA基礎入門(二)

          FPGA基礎入門(二)

          作者: 時間:2011-02-28 來源:網絡 收藏

          很多兄弟對于C下JTAG的下載很熟悉了,可轉到來的時候,多多少少有些迷惑,怎么
          出現配置芯片了,為什么要用不同的下載電纜,不同的下載模式?我就自己知道的一點東西
          談一些個人的見解,并發(fā)一些資料.希望路過的朋友喝個采,版主給點威望.有問題大家也
          一起討論,歡迎拍磚.

          1.器件有三類配置下載方式:主動配置方式(AS)和被動配置方式(PS)和最常用
          的(JTAG)配置方式。

          AS由器件引導配置操作過程,它控制著外部存儲器和初始化過程,EPCS系列.如EPC
          S1,EPCS4配置器件專供AS模式,目前只支持 Cyclone系列。使用Altera串行配置器件來
          完成。Cyclone期間處于主動地位,配置期間處于從屬地位。配置數據通過DATA0引腳送
          入 FPGA。配置數據被同步在DCLK輸入上,1個時鐘周期傳送1位數據。(見附圖)

          PS則由外部計算機或控制器控制配置過程。通過加強型配置器件(EPC16,EPC8,EPC4)
          等配置器件來完成,在PS配置期間,配置數據從外部儲存部件,通過DATA0引腳送入FPG
          A。配置數據在DCLK上升沿鎖存,1個時鐘周期傳送1位數據。(見附圖)

          JTAG接口是一個業(yè)界標準,主要用于芯片測試等功能,使用IEEE Std 1149.1聯合邊界掃描
          接口引腳,支持JAM STAPL標準,可以使用Altera下載電纜或主控器來完成。

          FPGA在正常工作時,它的配置數據存儲在SRAM中,加電時須重新下載。在實驗系統(tǒng)中,
          通常用計算機或控制器進行調試,因此可以使用PS。在實用系統(tǒng)中,多數情況下必須由
          FPGA主動引導配置操作過程,這時FPGA將主動從外圍專用存儲芯片中獲得配置數據,而
          此芯片中fpga配置信息是用普通編程器將設計所得的pof格式的文件燒錄進去。

          專用配置器件:epc型號的存儲器

          常用配置器件:epc2,epc1,epc4,epc8,epc1441(現在好象已經被逐步淘汰了)等

          對于cyclone cycloneII系列器件,ALTERA還提供了針對AS方式的配置器件,EPCS系列.如
          EPCS1,EPCS4配置器件也是串行配置的.注意,他們只適用于cyclone系列.

          除了AS和PS等單BIT配置外,現在的一些器件已經支持PPS,FPS等一些并行配置方式,提
          升配置了配置速度。當然所外掛的電路也和PS有一些區(qū)別。還有處理器配置比如JRUNNE
          R 等等,如果需要再baidu吧,至少不下十種。比如Altera公司的配置方式主要有Passi
          ve Serial(PS),Active Serial(AS),Fast Passive Parallel(FPP),Passive Parallel
          Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchron
          ous(PSA),JTAG等七種配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三種.

          2 對FPGA芯片的配置中,可以采用AS模式的方法,如果采用EPCS的芯片,通過一條下載
          線進行燒寫的話,那么開始的'nCONFIG,nSTATUS'應該上拉,要是考慮多種配置模式,可
          以采用跳線設計。讓配置方式在跳線中切換,上拉電阻的阻值可以采用10K

          3,在PS模式下tip:如果你用電纜線配置板上的FPGA芯片,而這個FPGA芯片已經有配置芯片
          在板上,那你就必須隔離纜線與配置芯片的信號.(祥見下圖).一般平時調試時不會把配置
          芯片焊上的,這時候用纜線下載程序.只有在調試完成以后,才把程序燒在配置芯片中, 然
          后將芯片焊上.或者配置芯片就是可以方便取下焊上的那種.這樣出了問題還可以方便地
          調試.

          在AS模式下tip: 用過一塊板子用的AS下載,配置芯片一直是焊在板子上的,原來AS方
          式在用線纜對配置芯片進行下載的時候,會自動禁止對FPGA的配置,而PS方式需要電路
          上隔離。

          4,一般是用jtag配置epc2和flex10k,然后 epc2用ps方式配置flex10k.這樣用比較好.(
          這是我在網上看到的,可以這樣用嗎?懷疑中)望達人告知.

          5,下載電纜,Altera下的下載電纜分為byteblaster和byteblasterMV,以及ByteBlaster
          II,現在還推出了基于USB-blaster.由于BB基本已經很少有人使用,而USB-Blaster現在又
          過于昂貴,這里就說一下BBII和 BBMV的區(qū)別.

          BBII支持多電壓供電5.5v,3.3v,2.5v,1.8v;

          BBII支持三種下載模式:AS,可對Altera的As串行配置芯片(EPCS系列)進行編程

          PS,可對FPGA進行配置

          JTAG,可對FPGA,C,即Altera配置芯片(EPC系列)編程

          而BBMV只支持PS和JTAG

          6,一般在做FPGA實驗板,(如cyclone系列)的時候,用AS+JTAG方式,這樣可以用JTAG方式調
          試,而最后程序已經調試無誤了后,再用 AS模式把程序燒到配置芯片里去,而且這樣有一
          個明顯的優(yōu)點,就是在AS模式不能下載的時候,可以利用Quartus自帶的工具生成JTAG模式
          下可以利用的jic文件來驗證配置芯片是否已經損壞,方法祥見附件(這是駿龍的人寫的,
          摘自咱們的壇子,如有版權問題,包涵包涵).

          7.Altera的FPGA可以通過單片機,C等加以配置,主要原理是滿足datasheet中的時序即
          可,這里我就不多說了,有興趣的朋友可以看看下面幾篇文章,應該就能夠明白是怎么回事
          了.

          8.配置時,quartus軟件操作部分:

          (1).assignment-->device-->devicepin options-->選擇configuration scheme,conf
          iguaration mode,configuration device,注

          意在不支持遠程和本地更新的機器中configuration mode不可選擇,而configuration d
          evice中會根據不同的配置芯片產生pof文件,

          如果選擇自動,會選擇最小密度的器件和適合設計

          (2).可以定義雙口引腳在配置完畢后的作用,在剛才的devicepin option-->dual-purp
          ose pins-->,可以在配置完畢后繼續(xù)當I/O口

          使用

          (3).在general菜單下也有很多可鉤選項,默認情況下一般不做改動,具體用法參見alter
          a configuration

          handbook,volume2,sectionII.

          (4)關于不同后綴名的文件的適用范圍:

          sof(SRAM Object File)當直接用PS模式下將配置數據下到FPGA里用到,USB BLASTER,MA
          STERBLASER,BBII,BBMV適用,quartusII會自

          動生成,所有其他的配置文件都是由sof生成的.

          pof(Programmer Object File)也是由quartusII自動生成的,BBII適用,AS模式下將配置
          數據下到配置芯片中

          rbf(Raw Binary File)用于微處理器的二進制文件.在PS,FPP,PPS,PPA配置下有用處

          rpd(Raw Programing Data File)包含bitstream的二進制文件,可用AS模式配置,只能由
          pof文件生成

          hex(hexadecimal file)這個就不多說了,單片機里很多

          ttf(Tabular Text File)適用于FPP,PPS,PPA,和bit-wide PS配置方式

          sbf(Serial Bitstream File)用PS模式配置Flex 10k和Flex6000的

          jam(Jam File)專門用于program,verigy,blank-check


          這幾天查看了altera的FPGA下載配置的資料,現將學習心得總結如下:

          1、根據FPGA在配置電路中的角色,配置數據可以使用3種方式載入到目標器件中:

          (1) FPGA主動方式:由FPGA來主動輸出控制和同步信號給FPGA的串行配置芯片(EPCS系列),配置芯片收到命令后,把配置數據發(fā)給FPGA,完成配置過程;在AS模式下,FPGA必須與AS串行配置芯片配合使用,它與FPGA的接口為四跟信號線,分別為:串行時鐘輸入(DCLK),AS控制信號輸入 (ASDI),片選信號(nCS),串行數據輸出(DATA)。

          (2) FPGA被動方式:被動模式下,由系統(tǒng)的其他設備發(fā)起并控制配置過程,這些設備可以是配置芯片(EPC系列),或者單板的微處理器、等。 FPGA在配置過程中完全處于被動地位,只是輸出一些狀態(tài)信號來配合配置過程;在PS模式下,需要配置時鐘(DCLK),配置數據(DATA0),配置命令(nCONFIG),狀態(tài)信號(nSTATUS),配置完成指示(CONF_DONE)這四個信號來完成配置過程。

          (3) JTAG模式:使用JTAG進行配置可以使用Altera的下載電纜,或者通過智能主機模擬JTAG的時序來進行配置;JTAG接口由四個必須的信號TDI、TDO、TMS和TCK,以及一個可選的TRST構成。

          2、若使用ByteBlasterII下載電纜,支持的配置方式有以下3種:

          AS方式:對AS配置芯片(ECPS系列)進行編程;

          PS方式:可以對FPGA進行配置;

          JTAG方式:可以對FPGA、以及Altera配置芯片(EPC系列)編程。

          3、AS及PS模式下的注意事項

          PS 模式:如果你用電纜線配置板上的FPGA芯片,而這個FPGA芯片已經有配置芯片在板上,那你就必須隔離纜線與配置芯片的信號一般平時調試時不會把配置芯片焊上的,這時候用纜線下載程序.只有在調試完成以后,才把程序燒在配置芯片中,然后將芯片焊上.或者配置芯片就是可以方便取下焊上的那種.這樣出了問題還可以方便地調試.

          AS模式下: 用過一塊板子用的AS下載,配置芯片一直是焊在板子上的,原來AS方式在用線纜對配置芯片進行下載的時候,會自動禁止對FPGA的配置,而PS方式需要電路上隔離。

          4、一般在做FPGA實驗板,(如cyclone系列)的時候,用AS+JTAG方式,這樣可以用JTAG方式調試,而最后程序已經調試無誤了后,再用AS模式把程序燒到配置芯片里去,而且這樣有一個明顯的優(yōu)點,就是在AS模式不能下載的時候,可以利用Quartus自帶的工具生成JTAG模式下可以利用的jic文件來驗證配置芯片是否已經損壞。

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


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();