馬 雪,段宇博,安書董
(中航工業(yè)西安航空計算技術研究所 陜西 西安 710068)
隨著航空技術的快速發(fā)展,機載設備的更新?lián)Q代,計算機技術在航空機載設備中日趨成熟。存儲器作為計算機硬件中必不可少的一項設備,其性能及熟練的使用方式顯得尤為重要。而非易失性存儲器(Non-Volatile Random Access Memory,NvRAM)因其斷電后數(shù)據(jù)仍然能夠保留的特性大受推崇,并且NvRAM還具有速度快、自動保存和自動恢復數(shù)據(jù)等功能,電路設計相對簡單,被廣泛使用在機載設備當中[1-2]。隨著存儲器的性能逐漸在計算機系統(tǒng)中占據(jù)了越來越重要的位置,能否高效準確運用存儲器就有了更高的要求。
在工程中,開發(fā)者們逐漸發(fā)現(xiàn)對于存儲器的控制邏輯相對復雜,時序要求也比較嚴格,且在調試過程中,存儲器出現(xiàn)異常后的故障定位也因為時序的復雜性而變得非常紛繁復雜,這就使得開發(fā)人員在硬件調試過程中耗費了相當多的資源[3-4]。本文重點介紹利用FPGA作為存儲器控制器來對非易失性存儲器進行控制的過程,采用VHDL語言編寫FPGA中的控制邏輯,來實現(xiàn)對存儲器的使用;通過ISE Design Suite環(huán)境進行系統(tǒng)仿真,使用ChipScope技術分析FPGA控制存儲器進行數(shù)據(jù)交換的時序邏輯。采用FPGA控制實現(xiàn)的NvRAM控制器,結合ChipScope邏輯分析技術可以明顯提高系統(tǒng)調試期間的可控性。
采用深圳市國微電子有限公司的SM14CA8-NF45型存儲器,該存儲器是一款128 K*8 bit容量的快速非易失性靜態(tài)隨機存儲器芯片。存儲器中的每個存儲器單元都自帶1個非易失性存儲單元。芯片提供了快速的讀寫訪問周期,方便使用,并且作為常規(guī)的SRAM具有無限的讀寫壽命。
當檢測到掉電,數(shù)據(jù)會自動保存到非易失性存儲單元(STORE操作)。一旦上電,數(shù)據(jù)會自動從非易失性存儲單元加載到SRAM(RECALL操作)。STORE和RECALL均有邏輯軟件控制。
該芯片的控制信號有:片選信號()、寫使能信號()、輸出使能信號()、STORE操作狀態(tài)信號(),其中#代表低電平有效。數(shù)據(jù)位使用DQ[7:0]表示,地址位使用A[16:0]表示。
當和為低,和為高時,SM14CA8-NF45執(zhí)行讀操作。
當和為低,為高時,執(zhí)行寫操作。此時一般會在整個寫操作周期使保持為高,以避免通用I/O上的數(shù)據(jù)總線競爭。如果被拉低,內部電路將在變低后tWLQZ(寫使能到輸出無效)時間內關閉輸出緩沖器。該存儲器的工作原理如圖1所示:
圖1 NvRAM結構框圖
圖2給出了SM14CA8-NF45型NvRAM工作時讀時序的波形。Q(Data Out)表示存儲器輸出的數(shù)據(jù)。A(Address)表示地址信號。分別是存儲器高8位,低8位的數(shù)據(jù)線使能信號。表1給出了符號的代表含義。
圖2 NvRAM讀周期時序
表1 NvRAM讀時序圖符號解析表
由圖2可知,在NvRAM的讀操作時序內,分為3個階段:讀建立、讀觸發(fā)、讀保持。tAVAV是一個讀周期時間,地址信號A在該時間段內始終有效。一次完整的讀數(shù)據(jù)的過程是:讀建立階段(Setup_State),信號先置為低電平,片選有效。讀觸發(fā)階段(Pulse_State),信號保持低電平不變化,和信號同時置為低電平,數(shù)據(jù)有效,從存儲器中讀出。讀保持階段(Hold_State),和號設置為高電平,而信號仍然低有效,在讀保持階段的末期,信號位置高,結束一次讀操作。
圖3展示了SM14CA8-NF45型NvRAM一次寫操作的時序波形。其中D(Data IN)表示主控向數(shù)據(jù)輸入輸出口所寫入的數(shù)據(jù)。表2給出了符號所代表的含義。tAVAV是一個寫周期時序,在寫操作的一個周期tAVAV內同樣分為3個階段,在Setup_State時,和同時置低,片選有效產生,在Pulse_State階段,置低,開始寫入數(shù)據(jù),該階段為真正數(shù)據(jù)傳輸?shù)碾A段。在Hold_State階段,先置高,隨后和置高,結束一次寫操作。
圖3 NvRAM寫周期時序
表2 NvRAM寫時序圖符號解析表
在對NvRAM控制器的設計中,需要用戶將存儲的數(shù)據(jù)地址、數(shù)據(jù)內容、數(shù)據(jù)長度、時序參數(shù)等信息發(fā)送給控制器,控制器按照讀寫時序自動進行配置完成整個數(shù)據(jù)的讀和寫[5]。如圖4所示,本次采用58所公司JXCSX95T型FPGA作為該控制器的硬件載體,結合VHDL語言編程,用有限狀態(tài)機(finite state machine,F(xiàn)SM)實現(xiàn)存儲器控制器。同時控制器中還需要配置計數(shù)器對時序圖中的各個參數(shù)狀態(tài)進行計數(shù),數(shù)據(jù)通路用來實現(xiàn)數(shù)據(jù)地址、數(shù)據(jù)的傳遞。
圖4 NvRAM控制器結構
對于配置寄存器而言,主要用來定義NvRAM的存儲類型、字長、地址、時序參數(shù)等。對于讀/寫操作,主要定義讀寫時序的邏輯有限狀態(tài)機的有限個狀態(tài)、狀態(tài)跳轉函數(shù)、開始狀態(tài)以及終止狀態(tài)。以NvRAM的一個寫操作為例,在SM14CA8-NF45使用手冊上查到AC特征表可知,寫建立時間為小于9 ns或者大于42 ns的區(qū)域內,若控制器工作頻率100 MHz(即周期為10 ns),則寫建立共需要一個時鐘周期即1拍。經時序圖和時序參數(shù)可以計算出讀觸發(fā)的時間至少為8 ns,因此,寫觸發(fā)至少需要一個時鐘周期。在寫保持階段,也需要一拍[6]。
本設計采用4個狀態(tài)機實現(xiàn),各狀態(tài)之間的跳轉需要滿足各自計數(shù)器的節(jié)拍數(shù)根據(jù)時鐘進行倒計數(shù),若計數(shù)的值不是0,則保持當前狀態(tài),若等于0則進入下一狀態(tài)。NvRAM的一個寫操作的狀態(tài)轉移圖如圖5所示。圖中狀態(tài)名稱與第2節(jié)狀態(tài)名含義保持一致。其中IDLE狀態(tài)表示不在一個讀寫操作內的例外狀態(tài)。一次寫操作的狀態(tài)開始狀態(tài)即為“IDLE”,當滿足進入狀態(tài)機的條件“片選有效且寫使能有效時”,狀態(tài)機跳轉到“寫建立”狀態(tài),在寫建立周期結束(write_setup_time = 0)后,狀態(tài)機跳轉進入“寫觸發(fā)”狀態(tài),在寫觸發(fā)周期(write_Pulse_time)內,該控制器可以將數(shù)據(jù)有效寫入。在一個寫觸發(fā)周期結束后,邏輯狀態(tài)機跳轉進入“寫保持”狀態(tài),寫保持周期(write_Hold_time)內,數(shù)據(jù)不再寫入,但只有結束一次寫保持周期,狀態(tài)機才會跳轉進入“IDLE”狀態(tài)。這樣才能再次進入下一次寫操作或者讀操作。否則邏輯狀態(tài)機錯誤運轉。
圖5 NvRAM邏輯狀態(tài)機狀態(tài)轉移圖
根據(jù)NvRAM的讀寫狀態(tài)機,使用VHDL實現(xiàn)一個寫操作的偽代碼如圖6。偽代碼先定義了寫操作狀態(tài)機的有限個狀態(tài),是有限個狀態(tài)跳轉條件。然后一次begin到end case的過程,即為一次寫操作的邏輯狀態(tài)機使用VHDL語言實現(xiàn)的具體過程。
圖6 NvRAM寫操作狀態(tài)機VHDL偽代碼
通過上述分析,結合有限狀態(tài)機設計存儲器控制器,利用VHDL語言作為控制邏輯編寫語言,以ISE Design Suite 13.3和IMPACT為開發(fā)環(huán)境,以FPGA為硬件載體,對程序進行下載。與此同時,采用Xilinx開發(fā)環(huán)境自帶的ChipScope邏輯分析儀在具體調試中進行時序分析,ChipScope使用方法大致為:設置一個觸發(fā)條件,一般為邏輯狀態(tài)的時鐘條件,當存儲器控制器開始運轉,時鐘生效,則ChipScope開始監(jiān)控該控制器的所有讀寫操作時序。同時ChipScope可以允許用戶根據(jù)自身調試需要,來自主選擇需要監(jiān)控的變量,該調試方法具有靈活性和可操作性。通過自主調試,在一次邏輯分析中,監(jiān)控了該存儲器控制器中的片選信號、讀寫使能信號以及數(shù)據(jù)流的狀態(tài)。發(fā)現(xiàn)NvRAM可以正常工作,滿足各種讀寫要求,且得出的時序圖與NvRAM使用手冊的時序圖一致,在一次片選有效的周期內,能夠正確進行讀操作或者寫操作。因此證明本文所設計的NvRAM控制器可以有效控制,該方法已經成熟運用在機載計算機中,滿足各類機載試驗要求。
NvRAM存儲器工作時的讀寫操作時序圖如圖7所示。
圖7 NvRAM控制器工作時序圖
綜上所述,本文通過FPGA作為NvRAM存儲器的控制器,有效按照時序控制存儲器進行讀寫操作,具有較高的靈活性,同時結合ChipScope邏輯分析儀可以進行在線調試,提高設計及調試系統(tǒng)的工作效率,可以為后續(xù)工程上對存儲器的控制提供技術參考。