用FPGA實現Nios II嵌入式系統配置技術
配置控制器上的5個I/O端口連接上述5個信號線。其中連接nCONFIG、DCLK、DATA端口設置成輸出態,nSTATUS、CONF_DONE端口設置成輸入態。當配置控制器開始與FPGA通信時,配置控制器首先在nCONFIG上送出一個大于8 um的負脈沖,并且檢測nSTATUS 上的信號。當FPGA 接收到nCONFIG上的下降沿時,迅速將nSTATUS和CONF_DONE拉低,并且保持低電平信號一直到nCONFIG抬高電平。當nCONFIG上抬高電平后過1 um,nSTATUS也將電平抬高,配置控制器檢測到nSTATUS上的變化后認為FPGA 已經做好了接收數據的準備。下一步配置控制器將產生配置時鐘脈沖,配置時鐘的第一個上升沿至少要比nSTATUS上升沿晚1 um。又由于配置數據和配置時鐘上升沿同步,所以在配置時鐘上升沿發生之前,數據線必須已經有了配置數據信號。配置數據是按照低位在前高位在后的順序把數據送上數據線。當所有數據都傳輸完畢后,CONF_DONE線上電平被抬高以示配置完畢。如果傳輸中出現了異常,FPGA迫使nSTATUS拉低電平,配置控制器一旦檢測到了這種現象將重新開始配置。由于配置文件中已經包含了FPGA初始化的一些代碼,所以傳輸完配置文件后,FPGA就可以正常工作了。
3.2 基于CPLD配置控制器的配置電路設計
CPLD是一種用戶根據各自需要而自行構造邏輯功能的數字集成電路。其基本設計方法是借助Quartus II開發軟件平臺,通過JTAG下載電纜將代碼傳送到目標芯片中,實現系統配置所需的時序要求和功能需求。而更重要的是CPLD配置控制器可以進行上萬次的燒寫操作。
嵌入式系統中FPGA 的PS方式配置方式電路設計如圖3所示。FPGA和FLASH、SSRAM組成了一個最基本的嵌入式系統,其中將Nios II軟核處理器嵌入到FPGA中。FLASH 作為程序的存儲器,其中存儲著系統的整個軟件應用程序和配置文件。SSAM作為系統程序運行空間,可以有效地解決配置控制器自身SRAM容量小的問題。
圖3 PS方式配置方式電路設計
在圖3所示的設計中,MSEL0和MSEL1是配置專用線,如果MSEL0接高電平(VCC),MSEL1接地(GND),則此時的配置模式為PS模式; 如果MSELO 和MSEL1都接地(GND),則配置模式為AS模式。CPLD控制器的控制信號MAX_control_signal主要包括flash_CS_n (片選)、flash_OE_n (輸出使能)、flash_RW_n (讀寫使能)、flash_RESET_n(重置)、flash_BYTE_n (字節傳輸)等信號線。
配置文件通過Altera的Quartus II軟件以.pof(Programmer Object Files)文件格式下載到EPM7256配置控制器內,如果配置有錯誤,該配置控制器可以進行多次下載,直至最終完成配置功能。
FLASH中存儲的程序包括系統配置程序文件、軟件程序,其格式為.flash。系統加電后,配置控制器從FLASH 的0地址開始將配置文件進行并/串轉換后(即將圖3中的flash_DATA[7..0]轉換為DATA0)加載到FPGA中,完成系統加電時的自動配置功能;同時Nios II處理器將FLASH 中的應用程序移至到SSRAM 中運行,從而實現嵌入式系統的初運行。通過Nios II IDE工具可以將配置文件FPGA 的.sof文件格式轉換為Flash存儲器所需要的. flash文件格式。
4 配置文件的設計與實現
為了確保配置過程的正確,提高系統的配置性能,在配置文件設計時應嚴格按照FPGA的Ps配置流程進行,并在配置過程中始終監控配置工作狀態,在完善的配置程序配合下可以糾正如上電次序導致配置不正常等錯誤。該配置程序是采用VHDL語言編寫的,編寫完成后,將配置文通過JTAG接口下載到EPM7256配置控制器內,根據圖2的PS配置時序,其配置流程如下:
(1)配置信號的初始化:DATAO=0,DCLK=0,nCONFIG=0,CONF_DONE=1和nSTATUS=1,并保持2 us以上。
(2)檢測nSTATUS,如果為“0”,表明FPGA 已響應配置,可開始進行配置,否則報錯,并返回1。正常情況下,nCONFIG=0后1 us內nSTATUS為“0”。
(3)置nCONFIG=1,并延時5 us。
(4)DATAO上放置數據(低位在前),DCLK=1,延時。
(5)DCLK=0,并檢測nSTATUS,若為“0”,則報錯,重返1。
(6)準備下一位數據,并重新執行(4)、(5),直到數據發送完為止。
(7)此時CONF_DONE應變成“1”,表明FPGA已完成配置,如果數據發送完后,CONF_DONE為“0”,必須重新配置返回1。
(8)配置完成后,再送出299個周期(Cyclone要求的)的DCLK,以便FPGA完成初始化。
5 結束語
本文介紹了通過用CPLD 的MAX7000 系列配置控制器EPM7256和Flash實現Cyclone系列的EP1C6Q240C8 FPGA配置文件下載更新的方法。與傳統的JTAG或PROM 串行下載配置方法相比,此方法具有更新配置文件靈活方便、易于操作、更加有利于系統配置文件的升級等特點。與常用的串行配置方法相比,該配置方法更具有配置時間短,準確率高、易于實現等優點。雖然該配置控制電路是為配置Altera公司cyclone系列的FPGA器件而設計的,但稍加修改也適用于其它系列的。FPGA器件,故其有一定的通用性,采用此方法特別適用于需要不斷更新的系統設計中,具有較為廣闊的應用前景。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論