利用配置芯片實現啟動引導和數據的讀寫系統及方法
【技術領域】
[0001]本發明屬于電子信息工程技術領域,涉及一種利用配置芯片實現啟動引導和數據的讀寫系統及方法,具體地說,涉及一種利用配置芯片實現現場可編程門陣列(Field-Programmable Gate Array,FPGA)的引導啟動(bootloader)和利用配置芯片實現啟動引導和數據的讀寫系統及方法。
【背景技術】
[0002]FPGA需要外部存儲器進行程序加載,也就是bootloader。該存儲器的主要作用是存放FPGA的配置文件。Altera公司的FPGA的配置文件一般通過后綴為Pof、Jic格式文件進行存放,其開發軟件QuartusII能識別這些格式文件,并調用下載器對外部存儲器進行編程,把Pof與Jic中有效的數據固化到外部存儲器中。在很多情況下FPGA的有效配置數據并沒占據存儲器的所有存儲空間,因此在印制電路板(Printed Circuit Board, PCB)空間狹小或為了節省成本等實際情況下,外部存儲器除了存放FPGA的配置數據以外還可以存儲用戶自定義的數據。
【發明內容】
[0003]為了克服現有技術中存在的缺陷,本發明提供一種利用配置芯片實現啟動引導和數據的讀寫系統及方法,把用戶自定義數據組合到Pof或JiC文件中,通過下載器把包含了FPGA配置數據以及用戶自定義數據的Pof或Jic文件下載到外部存儲器中,從而實現FPGA配置數據與用戶自定義數據的一并固化,同時提供了一種FPGA加載后,從外部存儲器中讀取用戶自定義數據的方法。
[0004]其技術方案如下:
[0005]一種利用配置芯片實現啟動引導和數據的讀寫系統,包括計算機、下載器、FPGA芯片、外部存儲器,
[0006]所述計算機用于組合自定義數據和FPGA的應用程序,生成下載文件pof/jic ;
[0007]所述下載器用于連接計算機和FPGA,實現pof/jic文件的下載;
[0008]所述FPGA為可編程器件,輔助實現pof/jic文件到外部存儲器的傳輸、應用程序的運行以及用戶數據的讀寫;
[0009]所述外部存儲器用于存儲包含應用程序和用戶自定義數據的pof/jic文件,它可以是EPCS系列等閃存(flash)芯片。
[0010]一種利用配置芯片實現啟動引導和數據的讀寫方法,包括以下步驟:
[0011]組合文件下載到外部存儲器;配置數據加載到FPGA ;其中:
[0012]組合文件下載到外部存儲器包括以下步驟:
[0013]I)在計算機上使用QuartusII軟件生成應用程序的Pof/jic文件;
[0014]2)計算Pof/jic文件中地址偏置;
[0015]3)查閱后綴為map的文件,
[0016]由Addrend+l+Offsetadto? Size flash-l+Offsetaddr計算 Pof/jic 文件中可利用空間地址范圍;其中Addrend為程序的結束地址,Offsetadd,為程序頭的偏移地址,SizeflashSS儲芯片的大小。如果可用空間足夠,可進行步驟4);否則組合失敗,更換大容量的flash芯片,再進行步驟I)
[0017]4)由W、matlab等其他計算機上的工具將用戶自定義數據寫入到可利用空間地址范圍內;
[0018]5)在計算機上,由G(x) = x15+xn+x3對組合后的Pof/jic文件數據進行校驗碼計算,并替換原校驗碼;
[0019]6)在計算機上,生成新的Pof/jic文件;
[0020]7)將組合后的Pof/jic文件數據下載到外部存儲器中;
[0021]8)下載結束;
[0022]配置數據加載到FPGA包括以下步驟:
[0023]I)系統上電;
[0024]2)bootloader加載FPGA配置數據,啟動應用程序;
[0025]3)由應用程序讀寫用戶自定義數據,并運行相關功能;
[0026]本發明的有益效果:
[0027]本發明,將FPGA的啟動代碼和用戶數據共同存放于一個flash芯片中,既可實現FPGA的正常bootloader過程,又可實現用戶數據的讀寫,節約了系統的硬件成本,同時有利于PCB尺寸的減小,為設備的小型化提供條件。
【附圖說明】
[0028]圖1為利用配置芯片實現啟動引導和數據的讀寫系統的原理圖;
[0029]圖2為Altera FPGA配置文件內的數據組成結構圖;
[0030]圖3為map文件內的地址空間范圍信息圖;
[0031]圖4為組合文件下載到外部存儲器流程圖;
[0032]圖5為配置數據加載到FPGA流程圖;
[0033]圖6為Pof/jic文件頭;
[0034]圖7為Pof/jic文件填充用戶自定義數據;
[0035]圖8為SignalTapII抓取增益校正系數;
[0036]圖9為SignalTapII抓取偏移校正系數。
【具體實施方式】
[0037]下面結合附圖和【具體實施方式】對本發明的技術方案作進一步詳細地說明。
[0038]系統框圖如圖1所示。本系統框圖主要是由四部分組成:計算機、下載器、FPGA芯片、外部存儲器。系統主要實現兩個功能:1)將FPGA配置數據以及用戶自定義數據文件保存到計算機上,通過計算機和下載器將該數據由JTAG(Joint Test Act1n Group, JTAG)模式或AS(Active Serial,AS)模式下載到外部存儲器中。在AS模式下,該數據直接通過主動串行存儲器接口(Active Serial Memory Interface,ASMI)結構送到外部存儲器中;在JTAG模式下,JTAG接口不能直接訪問外部存儲器,需通過FPGA內的串行Flash加載IP (Serial Flash Loader Intellectual Property, SFL IP)核作為 JTAG 接口和 ASMI 接口橋梁,將數據送到外部存儲器中。2)系統上電后,用戶對外部存儲器進行讀、寫操作。用戶可以通過SFL共享的ASMI接口,將讀、寫操作指令通過ASMI接口發送到外部存儲器,外部存儲器根據指令,做出相應的操作,從而實現用戶對外部存儲器的讀、寫操作。
[0039]圖1中各個模塊的用途概括如下:
[0040]計算機:用于組合自定義數據和FPGA的應用程序,生成下載文件pof/jic ;
[0041]下載器:連接計算機和FPGA,實現pof/jic文件的下載;
[0042]FPGA:可編程器件,輔助實現pof/jic文件到外部存儲器的傳輸、應用程序的運行以及用戶數據的讀寫。
[0043]外部存儲器:存儲包含應用程序和用戶自定義數據的pof/jic文件,它可以是EPCS 等 flash 芯片。
[0044]原理介紹:
[0045]Pof與Jic文件是QuartusII軟件編譯生成的FPGA編程對象文件,文件內的數據組成結構如圖2所示:
[0046]可以看到Pof或Jic文件由四部分組成,第一部分是Pof/jic的文件頭,文件頭主要記錄的內容包括:①文件類型標識、②QuartusII版本號、③被配置的FPGA型號、④外部Flash的型號;第二部分記錄了 FPGA的配置數據;第三部分為對剩余空間的填充數據;第四部分是Pof/jic的文件尾,文件尾主要記錄了第二部分中FPGA配置數據的分頁狀況以及數據段的起始地址、數據長度以及對整個文件的校驗碼。
[0047]其中Pof/jic文件的文件頭與文件尾僅為QuartusII軟件所識別,并不參與到實際下載中,所以實際下載并固化到外部存儲器里面的數據僅為第二部分以及第三部分的內容,第三部分填充數據的目的就是把實際內容長度擴展成與所選的外部存儲器容量相匹配。因此可以把用戶自定義數據替換掉第三部分的數據,這樣既不影響原有的FPGA配置數據,又可以把用戶自定義數據作為固化內容加入到Pof/jic文件當中。最后修改文件尾部校驗碼,即可生成可以被QuartusII識別的合法Pof/jic文件。
[0048]為實現FPGA的bootloader功能,FPGA與外部存儲器相連接的管腳是特殊的管腳,包括讀寫時鐘、片選使能、數據輸出、數據輸入等,這些都不是普通的1/0 口,不能被FPGA內部用戶編寫的模塊配置和調用。為實現用戶通過FPGA對外部存儲器中的數據進行讀寫等操作,可使用 Altera 提供的 “Serial Flash Loader megafunct1n IP core”,在 QuartusII 11.0,可通過 Tools->MegaWizard Plug-1n Manager->Next->Create a newcustom megafunct1n variat1n->Next->JTAG-accessible Extens1ns->Serial FlashLoader的操作,調出該IP核。。
[0049]Pof/jic與用戶自定義數據的組合技術的關鍵部分有三點:
[0050]①計算Pof/jic中有效載荷內容所在地址到外部存儲空間地址的偏置。
[0051]②定位可利用的外部存儲空間的地址范圍。
[0052]③文件校驗碼的生成。
[0053]地址偏置計算
[0054]Pof/jic文件頭與FPGA配置數據部分交接處的數據具備一定的特征,而Pof/jic頭文件由于內容的關系,是不會出現這樣特征的數據,因此只需要從文件頭開始尋找這種特征的數據,該特征數據所在地址就是地址映射的偏置,設該地址偏置為Offsetaddr,Pof/