

摘 要
為了解決雷達數字波束形成系統中數據的存儲問題,本文設計了基于FPGA的FLASH控制器。通過有限狀態機實現對FLASH的讀寫控制,在modelsim中對設計進行了仿真驗證,并通過硬件測試證明了設計的正確性和可靠性。該方法充分利用了FPGA設計靈活、FLASH存儲讀寫速度快的優勢,具有成本低廉,兼容性強,易于工程實現的特點。
【關鍵詞】FPGA FLASH 控制器
隨著數字陣列雷達的高速發展,對數字波束形成的要求越來越高,在實時處理過程中有大量數據需要存儲。由于FPGA本身存儲容量非常小,無法滿足數字波束形成處理過程中的存儲需求。為解決這一問題,采用FPGA+FLASH的硬件架構,以FPGA實現對FLASH的存儲控制,極大的擴展系統存儲容量。
本文以Altera公司FPGA芯片EP4SGX230和AMD公司AM29LV065D為例,詳細說明了基于FPGA的FLASH控制器的設計,利用Verilog HDL語言編寫同步有限狀態機實現了FPGA與FLASH存儲的接口操作。
1 FLASH控制器硬件設計
FLASH芯片選用AMD公司AMD29LV065D型號,該型號芯片的主要特點有:3.3v單電源供電,內部進行編程和擦除操作;64Mbit存儲容量,內部分為128個扇區,可讀每個扇區單獨進行讀寫和擦除操作,而不影響其他扇區的數據;超低能耗,典型讀操作只需消耗9mA,典型擦除/編程操作只需消耗26mA,典型靜態模式只需消耗200nA;操作簡單,只需按規定的時序向FLASH內部命令寄存器寫入指令序列即可。
AMD29LV065D芯片的A[22:0]為地址總線,DQ[7:0]為三態數據總線,其它信號為芯片讀寫控制和操作標志信號。FPGA的引腳除電源、時鐘和復位以及幾個配置時鐘引腳外,其余引腳均可作為通用I/O使用。因此,與FLASH連接時,只需將FPGA的普通I/O引腳與FLASH引腳相連即可。FLASH電路圖如圖1所示。
2 FLASH讀寫模塊設計
AMD公司AM29LV065D芯片有90ns,100ns和120ns等3個速度等級,可充分滿足FPGA的工作時序要求。根據芯片的數據手冊采用Verilog HDL語言設計有限同步狀態機實現FLASH控制指令序列的時序狀態轉換,以完成對FLASH的擦除、讀、寫等操作。
2.1 FLASH擦除操作
擦除操作分為扇區擦除和整個芯片擦除,整片擦除的過程為:第一個時鐘周期在地址XXXH寫入AAH數據,接著第二個時鐘周期在地址XXXH寫入55H數據,第三個時鐘周期在地址XXXH寫入80H數據,第四個時鐘周期在地址XXXH寫入AAH,第五個時鐘周期在地址XXXH寫入55H,第六個時鐘周期在地址XXXH寫入10H。扇區擦除的過程與整片擦除的過程一致,只是第六個時鐘周期在地址處寫入相應扇區地址,數據處寫入30H。然后等待芯片內部完成擦除工作即可。FLASH扇區擦除或整個芯片擦除完成后,相應扇區或整個芯片內部所有數據位全部置成‘1。
2.2 FLASH寫操作
FLASH芯片的寫操作包括擦除操作和編程操作。在對相應扇區進行寫操作之前,必須先將該扇區的數據進行擦除處理。在擦除操作后整個扇區的數據均被置為FFH,即所有數據位均處于‘1的狀態。在寫數據時僅能使對應單元的數據位由‘1變為‘0。
擦除操作如2.1節所述。編程操作過程為:第一個時鐘周期在地址XXXH寫入AAH數據,接著第二個時鐘周期在地址XXXH寫入55H數據,第三個時鐘周期在地址XXXH寫入A0H數據,第四個時鐘周期在地址相應的地址寫入相應的數據。即可完成對單個數據的寫操作,循環多次可實現對整個扇區的寫操作。
2.3 FLASH讀操作
FLASH讀操作相對較簡單,其過程為:輸入地址XXXH,讀取輸出數據XXH即可。
2.4 FLASH控制狀態設計
利用有限狀態機來實現對FLASH擦除、讀、寫等狀態的跳轉。本文共設計有17個狀態。其中,狀態0為IDLE狀態,狀態1為工作模式判斷狀態,狀態2-7完成塊擦除操作,狀態8-12為寫狀態,狀態13為寫塊結束判斷狀態,狀態14為寫結束狀態,狀態15為讀狀態,狀態16為讀結束狀態。
系統工作時,首先判斷工作方式。當工作方式為寫時,先對寫操作對象扇區進行擦除處理,然后依次寫入數據,每寫一個數據后進行寫塊結束判斷,如當前塊已寫完畢,狀態跳轉至下一待寫扇區擦除狀態,直至所有待寫塊均寫完畢,狀態跳轉至IDLE狀態。當工作方式為讀時,直接對待讀地址依次進行讀取,每讀一個數據后進行讀結束判斷,直至所有待讀地址均讀完畢,狀態跳轉至IDLE狀態。
FLASH芯片在復位和命令操作出錯后均返回讀模式,只要輸出使能信號OE#,片選信號CE#處于低電平,即可將地址總線上對應地址存儲單元的數據送出。當按照規定的命令序列向FLASH存儲器發出命令時,狀態機自動地完成相應的操作。FLASH的狀態位為RY/BY#引腳,在對FLASH操作過程中,如該引腳輸出低電平表示FLASH處于忙狀態,操作完成后變成高電平,表示FLASH回到空閑狀態。
3 結束語
本文設計了基于FPGA的FLASH控制器,詳細說明了利用同步有限狀態機實現對FLASH存儲器的讀寫控制方法,并通過modelsim時序仿真驗證了該方法的正確性。該方法已成功應用于數字波束形成系統設計中,實踐證明了該方法的正確性和可靠性。本文所介紹的設計方法普遍適用于FPGA對NOR FLASH存儲器的讀寫控制。
參考文獻
[1]夏宇聞.Verilog數字系統設計教程[M].北京:北京航空航天大學出版社,2003.
[2]魏家明.Verilog編程藝術[M].北京:電子工業出版社,2014.
[3]Altera Corporation.Stratix IV Device Handbook[Z].Alteracrop Corporation,2006.
[4]Semiconductor.AM29LV065D Data Sheet [Z].AMD,2005.
[5]吳豫,孟憲元.FLASH編程器的FPGA實現[J].半導體技術,2003(05):48-51,69.
作者簡介
劉俊(1985- )男,湖北省石首市人。碩士學位。現為南京電子技術研究所工程師。主要研究方向為雷達信號處理。
作者單位
南京電子技術研究所 江蘇省南京市 210013