在功能上,,單片機與大規(guī)模CPLD有很強的互補性。單片機具有性能價格比高,、功能靈活,、易于人機對話、良好的數(shù)據(jù)處理能力濰點,;CPLD/FPGA則具有高速,、高可靠以及開發(fā)便捷,、規(guī)范等優(yōu)點,。以此兩類器件相結合的電路結構在許多高性能儀器儀表和電子產(chǎn)品中仍將被廣泛應用。本文就單片機與CPLD/FPGA的接口方式作一簡單介紹,,希望對從事單片機和CPLD/FPGA研發(fā)的朋友能有所啟發(fā),。
單片機與CPLD/FPGA的接口方式一般有兩種,即總線方式與獨立方式,,分別說明如下:
一,、總線方式
單片機以總線方式與CPLD/FPGA進行數(shù)據(jù)與控制信息通信有許多優(yōu)點。
(1)速度快,。如圖一所示,,其通信工作時序是純硬件行為,對于MCS-51單片機,,只需一條單字節(jié)指令就能完成所需的讀/寫時序,,如:
MOV @DPTR,A ;MOV A,@DPTR
圖1 總線
(2)節(jié)省CPLD芯片的I/O口線。如圖二所示,,如果將圖中的譯碼器DECODER設置足夠的譯碼輸出,,并安排足夠的鎖存器,就能僅通過19根o口線在FPGW與單片機之間進行各種類型的數(shù)據(jù)與控制信息交換,。
圖2 CPLD芯片I/O口線
(3)相對于非總線方式,,單片機編程簡捷,,控制可靠。
(4)在CPLD/FPGA中通過邏輯切換,,單片機易于與SRAM或ROM接口,。這種方式有許多實用之處,如利用類似于微處理器系統(tǒng)的DMA的工作方式,,首先由CPLD/FPGA與接口的高速A/D等器件進行高速數(shù)據(jù)采樣,,并將數(shù)據(jù)暫存于SRAM中,采樣結束后,,通過切換,,使單片機與SRAM以總線方式進行數(shù)據(jù)通信,以便發(fā)揮單片機強大的數(shù)據(jù)處理能力,。
單片機與CPLD/FPGA以總線方式通信的邏輯設計,,重要的是要詳細了解單片機的總線讀寫時序,根據(jù)時序圖來設計邏輯結構,。圖一是MCS-51系列單片機的時序圖,,其時序電平變化速度與單片機工作時鐘頻率有關。圖中,,ALE為地址鎖存使能信號,,可利用其下降沿將低8位地址鎖存于CPLD/FPGA中的地址鎖存器(LATCH_ADDR ES)中;當ALE將低8位地址通過P0鎖存的同時,,高8位地址已穩(wěn)定建立于P2口,,單片機利用讀指令允許信號PSEN的低電平從外部ROM中將指令從P0口讀入,由時序圖可見,,其指令讀入的時機是在PSEN的上升沿之前,。接下來,由P2口和P0口分別輸出高8位和低8位數(shù)據(jù)地址,,并由ALE的下降沿將P0口的低8位地址鎖存于地址鎖存器,。若需從CPLD/FPGA中讀出數(shù)據(jù),單片機則通過指令“MOVXA,,@DPTR”使RD信號為低電平,,由P0口將圖二中鎖存器LATCH_IN1中的數(shù)據(jù)讀入累加器A;但若欲將累加器A的數(shù)據(jù)寫進CPLD/FPGA,,則需通過指令“MOVX ·DPTR,,A”和寫允許信號WR。這時,,DPTR中的高8位和低8位數(shù)據(jù)作為高,、低8位地址分別向P2和P0口輸出,然后由WR的低電平并結合譯碼,將累加器A的數(shù)據(jù)寫入圖中相關的鎖存器,。
二,、獨立方式
與總線接口方式不同,幾乎所有單片機都能以獨立接口方式與CPLD/FPGA進行通信,,其通信的時序方式可由所設計的軟件自由決定,,形式靈活多樣。其最大的優(yōu)點是CPLD/FPGA中的接口邏輯無需遵循單片機內固定總線方式的讀/寫時序,。CPLD/FPGA的邏輯設計與接口的單片機程序設計可以分先后相對獨立地完成,。事實上,目前許多流行的單片機已無總線工作方式,,如89C2051,、97C2051、Z84系列,、PICI 6C5X系列等,。
獨立方式的接口設計方法比較簡單,在此不擬做詳細介紹,。下面介紹圖二所示的總線接口邏輯設計,,其外部接口如圖三所示。
這是一個CPLD/FPGA與MCS-51系列單片機接口的VHDL電路設計,。MCS-51以總線方式工作,,例如,由8031將數(shù)據(jù)#5AH寫入目標器件中的第一個寄存器LATCH_OUT1的批令是:
MOV A,,#5AH
MOV DPTR,,#6FF5H
MOVX @DPTR,A
當READY為高電平時,,8031從目標器件中的寄存器LATCH_IN1將數(shù)據(jù)讀入的指令是:
MOV DPTR,,#9F7EH
MOVX A,,@DPTR
以上介紹了MCS-51單片機與CPLD/FPGA接口邏輯設計的兩種接口方式,,希望對從事單片機和CPLD/FPGA研發(fā)的朋友能有所啟發(fā)。