《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SD卡的Virtex FPGA 配置方案
基于SD卡的Virtex FPGA 配置方案
摘要: 本文首先簡略介紹了幾種當前對Virtex 系列FPGA 進行配置的方式和其不足之處, 在此基礎上提出了一種使用微處理器讀取SD 卡中的配置數據,并通過SELECTMAP 接口 對FPGA 進行配置的方案,并輔以電路圖和工作流程圖,以及配置數據在SD 卡中的存儲方 式進行說明。采用此配置方案可以使產品更新只涉及到修改SD 卡中的數據,方便靈活,有 利于降低大規模產品升級時的成本,適用于通信、工控等多個領域。
關鍵詞: FPGA SD卡 Virtex
Abstract:
Key words :

  摘 要:本文首先簡略介紹了幾種當前對Virtex 系列FPGA 進行配置的方式和其不足之處, 在此基礎上提出了一種使用微處理器讀取SD 卡中的配置數據,并通過SELECTMAP 接口 對FPGA 進行配置的方案,并輔以電路圖和工作流程圖,以及配置數據在SD 卡中的存儲方 式進行說明。采用此配置方案可以使產品更新只涉及到修改SD 卡中的數據,方便靈活,有 利于降低大規模產品升級時的成本,適用于通信、工控等多個領域。

  1.引言

  由于 FPGA 良好的可編程性和優越的性能表現,當前采用FPGA 芯片的嵌入式系統數 量呈現迅速增加的趨勢,特別是在需要進行大規模運算的通信領域。目前FPGA 配置數據一 般使用基于SRAM 的存儲方式,掉電后數據消失,每次上電后都要重新寫入。配置數據的 寫入方式有3 種,即使用JTAG 仿真器、使用專用芯片以及使用微處理器。JTAG 仿真器的 方式在調試的時候使用較多,能隨時修改,但缺點是FPGA 芯片必須與電腦主機連接,失去 了靈活性。使用專用芯片的方式可以將配置數據事先存儲在非易失性存儲介質中,為大規模 升級提供了方便,但不利之處在于專用芯片往往價格較高,并且也必須采用特定的存儲介質, 提升了系統成本,而且沒有利用到板上的現有資源,需要為配置芯片設置出專用的空間,占 用了電路板上的空間資源。而第三種方式可以利用當前嵌入式系統中一般都存在的微處理 器,同時也可以自行選擇合適的存儲介質。下面就這種配置方案進行說明。

  2. 系統介紹

  2.1 系統工作原理

  本配置方案中使用的微控制器是Philips 公司生產的ARM7 處理器LPC2468。FPGA 則 是Xilinx 公司的Virtex SX95T。存儲配置數據的介質是成本較低而且使用廣泛的SD 卡。

  系統的工作原理是上電時微控制器LPC2468 從SD 卡中讀取FPGA 的配置文件,然后 通過其通用IO 管腳模擬FPGA 的某種配置模式的時序,將配置文件寫入到FPGA 的配置 RAM 中。Virtex 系列FPGA 有幾種不同的配置模式,每種配置模式使用到的管腳以及配置 信號的時序都是不同的, 因此對配置模式需要作出合適的選擇。

  2.2 Viretex 系列FPGA 的配置模式

  Viretex 系列FPGA 的配置模式是由上電時其專用配置管腳的狀態決定的,對應的關系 如下表所示:

 

  

  

 

  因在系統中使用微處理器作為主控制器,因此FPGA 的模式需選擇Slave 方式,所以有 2 種模式可以選擇,即Slave SelectMap 和Slave Serial。這2 種模式的區別在與數據管腳的數 目不同,Slave Serial 模式只有1 個管腳用于數據傳輸,屬于串行傳輸,而Slave SelectMap 模式有8 個管腳用于數據傳輸,屬于并行傳輸。這2 種模式可以任意選擇,本文選擇的是 Slave SelectMap 模式。

  2.3 Slave SelectMap 配置模式

  Slave SelectMap 配置模式在管腳信號功能、配置流程、配置數據等方面有自己的特點, 在進行電路板設計以及程序編寫時需要注意。下面對其主要特點進行說明。

  2.3.1 Slave SelectMap 模式使用的管腳信號:

  SelectMap 模式下使用的FPGA 管腳為:

 

  

 

  根據上表,可以將微控制器的通用IO 管腳與上述FPGA 管腳連接起來,連接電路圖如圖1 所示:

 

  

 

  2.3.2 Slave SelectMap 模式的配置流程

  Slave SelectMap 模式下提供時鐘的是外部器件,本方案中的時鐘信號是CCLK 使用 ARM 芯片的通用IO 進行模擬。同時,該模式下數據管腳有8 個,因此在每個CCLK 的上 升沿,FPGA 可以讀入1 個字節的數據。需要注意的是這1 字節的最高位是D0,而不是一 般微處理器默認的D7,在電路板布線和編寫配置程序時應給予相應改變。

  配置過程的具體流程如圖2 所示。

 

  

 

  接收完配置數據后,DONE 管腳會被拉高。但這并不是表示配置過程已經結束,系統仍 需要時鐘來進行后續的上電啟動工作。為保證上電配置過程的正確進行,最好的辦法是將配 置文件中的所有數據寫入FPGA 中之后,然后繼續輸出CCLK 信號,直到DONE 管腳被拉 高。之后,再輸出8 個周期的CCLK,保證配置能正常完成。

  根據上述流程,配置程序的主要函數的偽碼如下。

  1.初始化函數SelectMAP_Init,在其它函數之前運行。

  SelectMAP_Init(){

  將ARM 通用IO 設置為對應的SelectMap 管腳信號;

  設置 PROGRAM#,CS#和WRITE#管腳為低電平;

  延時至少300ns;

  設置 PROGRAM#為高電平;

  循環檢查INIT#是否變為高電平;

  }

  2.發送數據的函數SendData_Byte,發送1 字節的數據。

  SendData(uint8 data){

  拉低CCLK;

  將 D0~D7 電平設置為與data 對應的狀態;

  拉高 CCLK;

  }

  3.發送數據的函數SendData_Sector,發送SD 卡中1 個扇區的數據。

  void SendData_Sector(uint8 * data){

  聲明計數器,并將初始值設為0;

  調用 SendData_Byte 發送1 個字節的數據,計數器加1;

  檢查 BUSY 管腳的狀態,等待其變為低電平;

  檢查計數器是否到達規定的數據塊大小,達到時函數返回,未到達時繼續發送數據;

  }

  2.3.3 配置文件的格式

  FPGA 支持將配置文件生成為幾種不同的格式,但在本方案中不是所有格式都可以使用 的。一般最常用的格式是.BIN 和.BIT 格式。由于.BIT 格式包含頭部開銷,會增加額外的處 理過程,因此本方案沒有支持.BIT 格式的數據,僅推薦使用.BIN 格式。

  2.4 文件在SD 卡中的存儲

  發送數據前,需要先從SD 卡中讀取配置文件。所有文件在SD 卡中都是按照一定的格式來組織的,本方案默認文件采用FAT16 格式進行存儲。FAT16 格式下,SD 卡的結構如下圖所示[3]。

 

  

 

  主引導記錄中最重要的參數是邏輯扇區的起始地址。獲得該參數后即可以讀取BIOS 參 數數據塊(BPB)。BPB 中存儲了扇區(Sector)、簇(Cluster)、文件分配表(FAT)的 大小,以及分區總扇區數等參數,是文件進行操作時必不可少的。文件分配表則是指明了文 件存儲的位置,這些位置是以簇為單位的。每個簇包含的扇區數目在BPB 中說明。根文件 夾中存儲了各不同文件的文件名和起始簇以及文件大小等信息。

  2.5 配置文件的讀取和發送

  根據上述SD 卡存儲格式的說明,可以對存儲在其中的配置數據進行讀取并發送出去。在本方案中,數據的讀取和發送是同時進行的。

  在對 SD 卡進行讀取時,首先需要讀取主引導記錄(MBR),獲得邏輯扇區的位置,然 后根據該位置讀取BIOS 參數數據塊(BPB),得到文件分配表(FAT)的位置以及扇區大 小等參數。在讀取文件分配表之前,需要先讀取根文件夾來獲得文件的起始位置,然后再 通過文件分配表獲得后續數據的位置。

  得到文件的起始簇號之后,在文件分配表中讀取對應該起始簇的字節,獲得文件存儲的 下一個簇的簇號,這樣可以連續的進行讀取。在讀取一個簇后,即將整簇的數據發送出去。 如果發現文件分配表中某一簇對應的數值是0xFFFF,則說明是文件最后一個簇,這時該簇 的數據可以不足一個整簇,需要對其中的數據進行取舍,以保證發送數據的正確性。

  對配置文件讀取和發送的函數偽碼如下所示。

  ReadSD_FAT16(){

  讀取物理第0 扇區內容,即MBR,獲取邏輯0 扇區的位置;

  讀取邏輯0 扇區的內容,獲取每扇區字節數,每簇扇區數,FAT 表占據的扇區數等參數;

  讀取根文件夾的內容,根據配置文件的文件名獲取其起始簇號和文件長度;

  將當前簇設置為起始簇;

  While(1){

  讀取FAT 中對應當前簇的內容,獲得下一個簇的簇號;

  FAT 表中對應當前簇的內容為0xFFFF 時,即說明當前簇是最后一個簇,計算該簇內的有效數據,并進行發送;

  讀取當前簇內容,進行發送;

  當前簇指向下一個簇;

  }

  }

 

  3 結束語

  在當前FPGA 使用領域日趨廣泛的情況下,對現有的含有FPGA 的嵌入式產品進行升 級更新成為了一項比較繁瑣的工作,特別是在產品數量較多的情況下。本方案提出了采用 SD 卡存儲配置數據的配置方案,使用了目前嵌入式系統中常見的ARM 微處理器和SD 卡, 不僅降低了成本,而且利用了現有資源,節省了電路板布線布局的空間。最重要的是使升級 過程更加簡潔,在進行調試時也可以靈活使用。本文只給出了對Virtex FPGA 進行配置的情 況,該方案也可以適用于Spartan 系列FPGA。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文字幕一区中文亚洲 | 怡红院免费在线视频 | 亚洲不卡在线观看 | 亚洲天堂免费观看 | 大陆孕妇孕交视频自拍 | 国产成人综合亚洲 | 国产一区二区三区在线视频 | 在线免费观看国产视频 | 亚洲精品国产成人一区二区 | 亚洲精品一区二区三区在线观看 | 99免费精品视频 | 亚洲国产欧美日韩第一香蕉 | 国产精品久久久久久免费播放 | 九九这里只精品视在线99 | 日本一级看片免费播放 | 青草欧美| 无码孕妇孕交在线观看 | 国产91亚洲精品 | 澳门一级特黄真人毛片 | a级毛片免费全部播放 | 久久久久国产精品免费 | 国产福利精品在线观看 | 亚洲精品91| 一个人免费观看日本www视频 | 中国一级特黄大片毛片 | 国产高清美女一级a毛片久久 | xx69欧美| 一区三区三区不卡 | pgone太大了兽王免费视频 | 国产日产欧美精品一区二区三区 | 成人一区视频 | 九九免费精品视频在这里 | 91久久精品国产亚洲 | 国产成人综合95精品视频免费 | 91久久国产精品 | 91p在线| 在线视频日本 | 在线观看欧美亚洲日本专区 | 香蕉香蕉国产片一级一级毛片 | 手机看片国产免费久久网 | 二区久久国产乱子伦免费精品 |