ALTERA FPGA在微處理器系統中的在應用配置
可編程邏輯器件(pld)廣泛應用在各種電路設計中。基于查找表技術、sram工藝的大規模pld/fpga,密度高且觸發器多,適用于復雜的時序邏輯,如數字信號處理和各種算法的設計。這類器件使用sram單元存儲配置數據。配置數據決定了pld內部互連和功能,改變配置數據,也就改變了器件的邏輯功能。sram編程時間短,為系統動態改變pld的邏輯功能創造了條件。但由于sram的數據是易失的,配置數據必須保存在pld器件以外的非易失存儲器內,才能實現在線可重配置(icr)。
本文引用地址:http://www.104case.com/article/21116.htm1 在應用配置(動態配置)
同一設備在實現不同的應用時,要求fpga實現不同的功能。如手持多媒體設備,可拍攝分辨率較高的靜止圖像照,采用jpeg2000壓縮,也可傳送活動圖像,采用h.263,h.264/avc等。單純使用軟件實現速度慢,需要對算法進行精細的優化;而使用硬件實現則速度快,但靈活性差。為此,采用微處理器和fpga相結合來實現手持多媒體終端,微處理器實現程序控制,fpga實現大量的規則運算。此外,手持設備的某些應用(如靜止圖像和活動視頻壓縮)可能并不同時實現。若在一片fpga同時實現這些功能,不僅布線復雜,功能難以實現,而且需要更大規模的fpga。若使用不同的配置數據進行配置,使fpga在不同時刻實現不同的功能,則fpga的容量可以顯著降低,從而降低設備的體積、功耗及成本。

altera sram工藝的fpga配置方式主要分為兩大類:主動配置和被動配置。主動配置方式由pld器件引導配置操作過程,它控制著外部存儲器和初始化過程;而被動配置方式則由外部計算機或控制器控制配置過程。根據數據線的多少又可以將pld器件配置方式分為并行配置和串行配置兩大類。下面以altera apex20kc系列器件為例,介紹兩種在微處理器系統里連接簡單且使用方便的配置方式:被動串行配置和被動并行異步配置。
2 被動串行配置(ps)
被動串行配置的主要配置引腳如下:
nstatus:命令狀態下為器件的狀態輸出。加電后,fpga立即驅動該引腳到低電位,然后在5μs內釋放它。nstatus經過10kω電阻上拉到vcc,如果配置中發生錯誤,fpga將其拉低。在配置或者初始化時,若配置電路將nstatus拉低,fpga進入錯誤狀態。
nconfig:配置控制輸入。低電位使器件復位,由低到高的電位跳變啟動配置。
conf_donf:雙向漏極開路;在配置前和配置期間為狀態輸出,fpga將其驅動為低。所有配置數據無錯誤接收并且初始化時鐘周期開始后,fpga將其置為三態,由于有上拉電阻,所以將其變為高電平,表示配置成功。在配置結束且初始化開始時,conf_done為狀態輸入:若配置電路驅動該管腳到低,則推遲初始化工作;輸入高電位則引導器件執行初始化過程并進入用戶狀態。
dclk:時鐘輸入,為外部數據源提供時鐘。
nce:fpga器件使能輸入。nce為低時,使能配置過程。單片配置時,nce必須始終為低。
nceo:輸出(專用于多片器件)。fpga配置完成后,輸出為低。在多片級聯配置時,驅動下一片的nce端。
data0:數據輸入,在data0引腳上的一位配置數據。
porsel:專用輸入,用來設置上電復位(por)的延時時間。

幾乎所有altera fpga器件都支持被動串行配置。被動串行配置的是序圖如圖1所示,在這種配置方式中沒有握手信號,配置時鐘的工作頻率必須在器件允許的范圍,最低頻率沒有限制。為了開始配置,配置管腳和jtag管腳所在的bank的vccint、vccio必需供電。fpga上電后進入復位狀態。nconfig被置為低電平,使fpga進入復位狀態;nconfig由低到高的電位跳變啟動配置過程。整個配置包括三個階段:復位、配置和初始化。當nstatus或者nconfig為低電平時,器件脫離復位狀態,并且釋放漏極開路的nstatus管腳。在nstatus釋放后,被外部電阻拉高,這時nstatus和nconfig同時為高電平,fpga準備接收配置數據,配置階段開始。在串行配置過程中,fpga在dclk上升沿鎖存data0引腳上的數據。成功接收到所有數據后,釋放conf_done引腳,并被外部電阻拉高。conf_done由低到高的轉變標志配置結束,初始化開始。此后,dclk必須提供幾個周期的時鐘(具體周期數據與dclk的頻率有關),確保目標芯片被正確初始化。初始化完成后,fpga進入用戶工作模式。如果使用了可選的init_done信號,在初始化結束后,init_done被釋放,且被外部電阻拉高,這時進入用戶模式。dclk、data、data0配置后不能三態,可置高或者置低。
在配置過程中,一旦出現錯誤,fpga將nstatus拉低。系統可以實時監測,當識別到這個信號后,重新啟動配置過程。nconfig由高變低,再變高可以重新進行配置。一旦nconfig被置低,nstatus和conf_done也將被fpga置低。當nstatus和nconfig同時為高電平時,配置開始。
圖2是采用微處理器的fpga被動串行配置方案的簡化電路圖。配置過程為:由微處理器將nconfig置低再置高來初始化配置;檢測到nstatus變高后,就將配置數據和移位時鐘分別送到data0和dclk管腳;送完配置數據后,檢測conf_done是否變高,若未變高,說明配置失敗,應該重新啟動配置過程。在檢測conf_done變高后,根據器件的定時參數再送一定數量的時鐘到dclk管腳;待fpga初始化完畢后進入用戶模式。如果單片機具有同步串口,data0、dclk使用同步串口的串行數據輸出和時鐘輸出,這時只需要簡單把數據字節或字鎖存到發送緩沖器就可以了。在使用普通i/o線輸出數據時,每輸出1個比特,就要將dclk置低再置高產生一個上升沿。它比altera公司手冊給出的電路連接圖更有效地使用了存儲器。

3 被動并行異步配置
如同被動串行配置一樣,被動并行異步配置也包括三個階段:復位、配置和初始化。被動并行異步配置電路圖如圖3所示。當nstatus或者nconfig為低電平時,器件處于復位狀態。微處理器在nconfig管腳產生一個由低到高的跳變啟動fpga的配置。當nconfig變高后,器件脫離復位狀態,并且釋放漏極開路的nstatus管腳,fpga準備接收配置數據,配置階段開始。在配置階段,微處理器fpga當作存儲器,進行寫操作,即微處理器先使片選有效,然后把8比特數據送到data[0:7]管腳上,并配置管腳rdynbsy到低電平,表示fpga正忙于處理配置數據,微處理器可執行其它功能。在rdynbsy低電平期間,fpga使用內部振蕩器時鐘處理配置數據。當fpga準備接收下一字節的配置數據時,它驅動rdynbsy到高電平。微處理器檢測到這一高電平,便送下一字節數據到配置管腳。為了節省一根用來檢測rdynbsy的i/o線,可采用讀存儲器的方法讀fpga,其中nrs為存儲器讀信號,在nrs有效期間,rdynbsy信號被送到數據線d7上。也可以不檢測rdynbsy,也不讀fpga,簡單地等待延時tbusy(max)+trdy2ws+tw2sb之后就寫下一個配置數據字節。fpga每處理一字節配置數據后,若發現錯誤就會將nstatus拉低,暗示配置出錯。微處理器可以檢測這一錯誤,并重新進行配置。如同被動串行配置一樣,fpga在正確接收所有配置數據后,將釋放conf_done信號,于是該管腳被外部上拉電阻拉高,表示配置結束,初始化開始。
4 配置數據文件的生成
altera的max+plus ii或quartus ii開發工具可以生成多種格式的配置文件,用于不同配置方法。不同目標器件,配置數據的大小不同。配置文件的大小一般由二進制文件(擴展名為.rbf)決定。altera提供的軟件工具不自動生成.rbf文件,需要按照下面的步驟生成:①在max+plus ii編譯狀態,選擇文件菜單中的變換sram目標文件命令;②在變換sram目標文件對話框,指定要轉換的文件并且選擇輸出文件格式為.rbf(sequential),然后予以確定。
評論