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