国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種提高FPGA加載速度的方法

2011-12-31 00:00:00王征
考試周刊 2011年48期


  摘 要: 隨著FPGA技術(shù)的快速發(fā)展,F(xiàn)PGA集成的邏輯資源越來越多,隨之而來的是FPGA的配置文件越來越大??梢灶A(yù)見,隨著技術(shù)發(fā)展,以后高端FPGA配置文件會更大。配置文件的增大,直接導(dǎo)致FPGA加載時間的大量增加,因此縮短單板啟動時間,提高FPGA加載速度勢在必行。本文在分析其加載的過程基礎(chǔ)上,提出了數(shù)種可以加快FPGA加載速度的方法,并在工程實(shí)踐中證明,使用本文描述的方法可以使加載速度縮減到優(yōu)化前的1/5以下。
  關(guān)鍵詞: FPGA 加載速度 版本 提高方法
  
  對于目前廣泛使用的Xilinx FPGA芯片,加載模式一般選擇的是Slave SelectMAP (parallel,x8) 配置模式,具體是通過CPU的GPIO模擬localbus總線,對EPLD中程序所定義的寄存器進(jìn)行讀寫,寄存器的某些Bit映射到EPLD的引腳上,而這些引腳連接FPGA的相關(guān)配置引腳,所以我們可以通過CPU讀寫EPLD的寄存器,來控制FPGA的相關(guān)配置引腳,進(jìn)而達(dá)到對FPGA配置的目的。
  在某單板中,由于有多塊FPGA芯片,使用此方法加載一塊FPGA,需要用時30s左右,而4塊FPGA加載時間高達(dá)約2min以上。為提高加載速度,我們進(jìn)行了一系列的理論分析,提出了3個層次的優(yōu)化。
  一、一般方法加載FPGA時序介紹
  控制FPGA加載的EPLD寄存器主要有兩類,一個是配置數(shù)據(jù)寄存器FPGA_CFGDATA_REG,CPU將每個配置數(shù)據(jù)寫入該寄存器,然后該寄存器的值在每個配置時鐘的上升沿寫入FPGA。另一個寄存器是配置控制寄存器FPGA_CFG_REG,該寄存器有5個Bits,定義如下表所示。
  在某單板上,加載FPGA配置數(shù)據(jù)時序?yàn)椋?br/>  1.首先由CPU向FPGA_CFGDATA_REG寫入配置數(shù)據(jù);
  2.然后通過3次讀和寫FPGA_CFG_REG,使得FPGA_ CFGCLK先為低,再為高,最后為低,即使得FPGA_CFGCLK出現(xiàn)一個上升沿,則配置數(shù)據(jù)將在FPGA_CFGCLK的上升沿寫入FPGA。
  具體流程可以參見圖2.4,由此可見,向FPGA寫入一個配置數(shù)據(jù),需要CPU對EPLD寄存器執(zhí)行4個寫操作,3個讀操作,共計(jì)大約3018ns,型號XC6VLX240T的FPGA配置數(shù)據(jù)為9232444字節(jié),則加載一塊FPGA時間大約為3018ns*9232444=27.8s。(注:本文中所有時間值都是在仿真環(huán)境下,利用TSC計(jì)數(shù)器測量得到,代碼編譯時,選擇了o3優(yōu)化)
  二、自動產(chǎn)出配置時鐘
  從上文可以看出,向FPGA寫入一個配置數(shù)據(jù),需要CPU對EPLD寄存器執(zhí)行4個寫操作,3個讀操作,其中后面的3次讀和3次寫操作僅僅是為了產(chǎn)生一個配置時鐘的上升沿。假如在CPU向EPLD寫入一個配置數(shù)據(jù)時,EPLD能自動產(chǎn)生一個周期的配置時鐘,則加載一個配置數(shù)據(jù)僅需要CPU對EPLD寄存器執(zhí)行1個寫操作即可,這樣將大大縮短FPGA加載時間。
  按照上述思路,加載FPGA時序?qū)⑷鐖D2所示,從圖2可見,當(dāng)CPU向EPLD寫入一個數(shù)據(jù)時,EPLD自動產(chǎn)生一個配置時鐘。
  由于CPU向EPLD寫入數(shù)據(jù)時,必有一個WR的低脈沖,而配置時鐘則為一個高脈沖,并在WR低脈沖之后,因此可以考慮將WR取反,并延時。
  在某單板上,有4塊FPGA,每個FPGA的配置時鐘FPGA_CFGCLK和片選FPGA_CFGCS都是獨(dú)立的,而配置數(shù)據(jù)是共用8條數(shù)據(jù)線。為了將4個FPGA_CFGCLK分開,在實(shí)際應(yīng)用中,我們可以將WR取反并延時后的信號和CFGCS取反后的信號相與。
  經(jīng)過實(shí)際測試,寫一個配置數(shù)據(jù)時間由3018 ns縮短到633ns,加載XC6VLX240T型號的FPGA時,加載總時間由27.8s減少到5.85s。
  三、CPU連續(xù)寫EPLD寄存器
  對于XC6VLX240T型號的FPGA來說,配置數(shù)據(jù)為9232444個字節(jié),CPU將所有的配置數(shù)據(jù)都寫入EPLD的同一個寄存器,即FPGA_CFGDATA_REG。在寫該寄存器時,CPU總是先寫入該寄存器地址,然后再寫入數(shù)據(jù)。由于寄存器地址固定,因此我們可以考慮僅在第一次寫FPGA_CFGDATA_REG時,提供寄存器地址,EPLD將地址寄存,然后在以后CPU寫該寄存器的時,不提供地址。僅在WR為低時,給EPLD提供有效的數(shù)據(jù)即可。
  按照該方式寫FPGA_CFGDATA_REG的時序如圖2.6所示。按照該方式,加載一個配置數(shù)據(jù)需要325ns,加載一塊FPGA時間為3.01s。
  四、壓縮FPGA配置數(shù)據(jù)
  我們仔細(xì)觀察FPGA的配置數(shù)據(jù),可以發(fā)現(xiàn),數(shù)據(jù)中有大量的連續(xù)的值,比如連續(xù)1000個0x00。以某單板下行FPGA為例,在050d版本里,下行FPGA代碼中0x00的連續(xù)個數(shù)超過512的就有31處之多,最多一處為連續(xù)1215388個字節(jié)0x00;在某單板上,下行FPGA連通性測試代碼中,0x00連續(xù)個數(shù)超過512的也有271處之多,最多一處為2428942個字節(jié)0x00。
 

大竹县| 漳州市| 丹凤县| 沙雅县| 璧山县| 剑河县| 新郑市| 双鸭山市| 读书| 盐城市| 巫山县| 城步| 滦平县| 罗源县| 新邵县| 遵义市| 嵩明县| 眉山市| 黄陵县| 前郭尔| 磴口县| 白城市| 开化县| 分宜县| 平谷区| 百色市| 天镇县| 岑巩县| 二连浩特市| 安国市| 荣成市| 河北区| 府谷县| 潍坊市| 石林| 明水县| 新密市| 宣汉县| 郴州市| 城口县| 东阿县|