劉宇成 李金鳳



摘 要:雖然FPGA速度快,但由于FPGA對采集到的數據的處理能力和控制能力比較差,故需要將其采集到的數據送到單片機系統上來實現數據的處理功能,這就使得FPGA系統與單片機系統之間的數據通信提到日程上。本文給出部分VHDL源程序,并用Quartus II進行仿真。
關鍵詞:FPGA;VHDL;單片機;通信
單片機具有性價比高、功能靈活、易于人機對話、良好的數據處理能力的特點;FPGA則具有高速、可靠以及開發便捷等優點。系統設計中將單片機數據處理的優勢與FPGA、執行快速的特點相結合,能夠設計出既有強大控制功能又能使各項功能快速執行的系統。因此,單片機與FPGA之間的通信便顯得尤為重要本文介紹利用VHDL語言實現FPGA與單片機的并行通信接口設計。本文主要由以下三個部分組成:FPGA接收ADC0809數據;FPGA發送數據和單片機接收數據模塊,VHDL程序及仿真結果。本文著重對FPGA數據發送模塊實現進行說明,原理圖如圖1所示:
1 FPGA接收ADC0809數據
ADC0809是美國國家半導體公司生產的CMOS工藝8通道,8位逐次逼近式A/D模數轉換器。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。本系統用ADC0809把傳感器采集的模擬信號變成數字信號,然后用FPGA控制數據流進程,并用外圍LED電路顯示。FPGA與ADC0809接口電路圖如圖2所示。為了實現對ADC0809精確地控制,所以本系統采用FPGA特有的狀態機來進行時序上的控制,引腳說明如下:
(1)ALE信號(引腳):高電平時把三個地址信號送入地址鎖存器,并經譯碼器得到地址數據,以選擇相應的模擬輸入通道。
(2)OE信號(引腳)EN使能信號:電平由低變高時,打開數據輸出鎖存器,將轉換數據送到數據總線上。
(3)EOC信號(引腳):EOC為高電平時完成轉換,為低電平時正在轉換。
(4)STAT信號(引腳):要給STAT線送一個100ns寬的啟動正脈沖,STAT下跳沿時, 開始進行A/D轉換,在轉換期間STAT以保持低電平。
ADC0809狀態機工作原理:在S0狀態,初始化;在S1狀態,ALE、STAT控制引腳拉高;在S2狀態,ALE、STAT產生下降沿,鎖存地址,啟動轉換,并對EOC引腳進行檢測,若引腳為低,則回到S2狀態,若引腳為高,則說明轉換完成;在S3狀態,OE為高,,允許ADC輸出;在S4狀態,此時觸發LOCK上升沿,FPGA輸出轉化后的數字量。狀態機原理圖如圖3所示。
2 FPGA發送信息與單片機接收信息
單片機與FPGA以總線方式通信的邏輯設計,重要的是要詳細了解單片機的總線讀寫時序,根據時序圖來設計邏輯結構,其通信的時序必須遵循單片機內固定的總線方式讀寫時序 。單片機以總線方式與FPGA進行數據通信與控制時,其通信工作時序是純硬件行為,速度很快。51單片機的時序圖如下圖4所示:
單片機的P0口為一個8位漏極開路雙向I/O口,每腳可吸收8TTL門電流。當P2口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。/WR為外部數據寫選通,/RD為外部數據讀選通。RST為單片機的復位信號。ALE為地址鎖存允許的輸出電平,用于鎖存地址的低位字節。在該接口模塊的通訊中,用單片機的P0口傳送與FPGA通訊的地址和數據。該系統中,在FPGA成功加載程序后由FPGA控制單片機復位信號。
3 VHDL的部分程序及仿真結果
在接口設計中,采用了VHDL語言實現其接口邏輯。51單片機與FPGA的通信讀寫電路的部分程序如下:
4 結束語
雖然現在一些公司推出了內嵌微處理器FPGA,但由于價格、開發手段等因素的影響,在未來一段較長的時間里,還是會更多的采用單片機與FPGA配合的方式設計系統,以發揮單片機的靈活性和FPGA的高速性。因此,單片機與FPGA之間的通信就尤為重要。
參考文獻
[1]潘松,黃繼業..EDA技術與VHDL[M].北京:清華大學出版社.
2009.
[2]潘松,潘明.現代計算機組成原理[M].北京:科學出版社.2007.
[3]潘松,王國棟.VHDL實用教程(修訂版)[M].成都:成都電子科技大學出版社.2001
[4]栗彩霞,武一,于海江,高炎萃.MCS一51單片機與FPGA接口的邏輯設計[M].山西電子技術,2009,1674-4578(2009)05—0026—02.
[5]李景華,杜玉遠.可編程邏輯器件及EDA技術[M].沈陽:東北大學出版社,2000.
[6]徐志軍,徐光輝.cPLD/FPGA的開發與應用[M].北京:電子工業出版社,2002.