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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于CPLD的FPGA從并快速加載方案

          基于CPLD的FPGA從并快速加載方案

          作者: 時(shí)間:2016-10-15 來源:網(wǎng)絡(luò) 收藏

          現(xiàn)場(chǎng)可編程門陣列(FPGA)作為專用集成電路(ASIC)領(lǐng)域的一種半定制電路,可以根據(jù)設(shè)計(jì)的需要靈活實(shí)現(xiàn)各種接口或者總線的輸出,在設(shè)備端的通信產(chǎn)品中已得到越來越廣泛的使用。 是基于靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)結(jié)構(gòu)的,斷電后程序丟失后的每次上電都需要重新加載程序。且隨著規(guī)模的升級(jí),加載程序的容量也越來越大,如Xilinx 公司的Spartan - 6 系列中的6SLX150T,其加載容量最大可以達(dá)到4.125 MB。在通信產(chǎn)品中,要求系統(tǒng)啟動(dòng)快,相應(yīng)時(shí)間盡可能短,因此其加載方式是產(chǎn)品設(shè)計(jì)時(shí)必須要妥善解決的一個(gè)問題。文章介紹了通過復(fù)雜可編程邏輯器件(CPLD)對(duì)FPGA 方式的并行實(shí)現(xiàn),滿足通信系統(tǒng)的加載速度快、占用資源少的要求。

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

          1 FPGA 常用配置方式

          FPGA 的配置數(shù)據(jù)通常存放在系統(tǒng)中的存儲(chǔ)器件中,上電后控制器讀取存儲(chǔ)器中的bit 文件并加載到FPGA 中,配置方式有JTAG、從并、從串、主從4 種,不同廠家叫法不同,但實(shí)現(xiàn)方式基本都是一樣的。

          (1)邊界掃描JTAG 方式。單板調(diào)試階段常用JTAG 模式,該方式需要控制器,F(xiàn)PGA 等芯片JTAG 接口構(gòu)成菊花鏈,且在該模式下,控制器其他功能不能使用。

          (2)從串方式。從串加載方式占用資源少,主要是和FPGA 相連的I/O接口較少,但是一個(gè)配置時(shí)鐘只能傳輸一個(gè)bit 數(shù)據(jù),速度相對(duì)較低。

          (3)主從方式。該方式最主要的缺點(diǎn)是配套使用的FLASH 存儲(chǔ)器必須是FPGA 廠家指定的型號(hào),且這個(gè)FLASH 容量不大,不能和控制器的FLASH 共用,使用這種方式,單板上就會(huì)有兩個(gè)FLASH,增加產(chǎn)品成本,因此該方案使用較少。

          (4)從并方式。即文章中探討的FPGA方案。

          2 從并加載方式的實(shí)現(xiàn)

          以Xilinx 公司Spartan - 6 系列FPGA 為例,與從并加載相關(guān)的管腳如表1 所示。

          表1 從并加載管腳名稱

          由表1 可以看出,從并加載接口占用的管腳資源是比較多的,即使加載數(shù)據(jù)總線使用8 位,也要14 個(gè)管腳,CPU 一般沒有這么多通用輸入/輸出(GPIO)口,因此從并加載一般和CPLD 配套使用。其加載流程如圖1所示。

          圖1 SPARTAN-6 從并加載流程

          3 基于CPLD 的FPGA 加載方案

          3.1 方案介紹

          在設(shè)備端通信產(chǎn)品中,基于CPLD 的FPGA 從并加載框如圖2 所示,配置數(shù)據(jù)存儲(chǔ)在FLASH 中,且在加載數(shù)據(jù)之前,CPU 通過局部總線和雙倍速內(nèi)存(DDR)接口,將配置數(shù)據(jù)從FLASH 中搬移到DDR 顆粒;真正需要加載時(shí),再通過DDR2 接口將配置數(shù)據(jù)搬移到CPU 的緩存中,DDR2接口速度很快,其時(shí)鐘頻率可以達(dá)到266 MHz,因此①、②兩步加載時(shí)間可以忽略不計(jì)。

          圖2 基于CPLD 的FPGA 從并加載框

          之后CPU 通過和CPLD 的接口③——8 位的局部總線接口,將配置數(shù)據(jù)逐字節(jié)的寫入CPLD 的寄存器中。以MIPS 系列CPU XLS408 為例,XLS408 工作時(shí)鐘頻率為66.7 MHz,寫總線周期最快需要10 個(gè)工作時(shí)鐘周期,即6.67 MHz,這一步受局部總線速度限制。

          數(shù)據(jù)寫入到CPLD 后,再通過接口④ ——CPLD 與FPGA 之間的從并接口,將數(shù)據(jù)加載到FPGA,從并接口是同步總線,加載時(shí)間受限于總線時(shí)鐘CCLK 頻率。

          本方案的優(yōu)點(diǎn)為:① 、② 兩條路徑可以在加載之前處理,且運(yùn)行速度快,不占用加載時(shí)間。加載時(shí)間只受③ 、④ 的限制,而③ 受限于寫總線周期間隔,④受限于從并接口的時(shí)鐘。

          3.2 程序?qū)崿F(xiàn)

          CPLD 從并程序采用verilog 語言實(shí)現(xiàn),該加載模塊接口定義如下:

          程序?qū)崿F(xiàn)流如圖3 所示。

          圖3 基于CPLD 從并加載FPGA的程序流程

          FPGA 加載片選和寫信號(hào)產(chǎn)生部分代碼如下:

          4 仿真及加載結(jié)果分析

          基于modelsim 6.5SE 仿真波形可以看出CPU 每加載1 字節(jié)數(shù)據(jù)需要向CPLD 寫1 次加載數(shù)據(jù),這共需花費(fèi)一個(gè)局部總線周期,局部總線頻率最快為6.67 MHz。因此CPU 加載4.125 MB 數(shù)據(jù)到CPLD 共需時(shí)間為:

          CPLD 需要1 個(gè)CCLK 周期寫1 字節(jié)數(shù)據(jù)到 FPGA,CCLK 則是利用CPU局部總線的寫信號(hào)產(chǎn)生,可以實(shí)現(xiàn)CCLK 和數(shù)據(jù)的同步,因此CCLK 時(shí)鐘速率為6.67 MHz,因此加載4.125 MB數(shù)據(jù)到FPGA,共需時(shí)間為:

          FPGA 上電需要1 ms,因此當(dāng)FPGA 使用SPARTAN-6 系列最高端的6SLX150T 時(shí),采用基于CPLD 的從并加載方式,共需要的加載時(shí)間為1.221 s,滿足通信產(chǎn)品FPGA 加載時(shí)間小于2 s 的要求。而如果采用從串等加載方式,使用ARM7 處理器作為控制器,對(duì)于CycloneII 系列中的EP2C35,配置文件大小1.16 MB,加載時(shí)間需要1.30 min;采用基于CPLD的從串加載方式,加載同樣4.125 MB的FPGA 數(shù)據(jù),CPLD 加載時(shí)鐘33MHz,則加載時(shí)間需要3.8 s,F(xiàn)PGA加載時(shí)間過長(zhǎng),則會(huì)影響系統(tǒng)的啟動(dòng)時(shí)間。

          表2 是常用加載方式加載6SLX150T 型號(hào)FPGA 芯片數(shù)據(jù)所需時(shí)間比較。

          表2 FPGA 加載時(shí)間對(duì)比

          從上述分析可以得出結(jié)論,如果提高CPU 的局部總線寫速度,加載FPGA 的時(shí)間就會(huì)更快。

          5 結(jié)束語

          使用基于CPLD 的FPGA 從并加載方案,相對(duì)于其它幾種加載方式,雖然加載管腳增多,但加載時(shí)間大大縮短,并且如果提高CPU 局部總線的寫速度,加載速度有進(jìn)一步提高空間,滿足通信系統(tǒng)快速啟動(dòng)的要求,具有很高的實(shí)用價(jià)值。



          關(guān)鍵詞: FPGA CPLD 控制器 從并 加載

          評(píng)論


          相關(guān)推薦

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