摘 要:現在分離元件在很多電路設計中還在普遍使用,完成邏輯轉換、地址譯碼、數據鎖存等任務,在PLD技術相當成熟的今天,采用PLD代替傳統分離元器件,將會極大地減小PCB尺寸,節約成本。對CPLD器件和開發工具進行研究,提出一種單片機與CPLD總線接口方案。運用該方案設計單片機系統實現A/D,D/A,LCD等多種外設的接口,電路簡潔,并給出CPLD電路設計方案,總體電路原理圖和關鍵程序代碼。
關鍵詞:CPLD;分離元件;PLD;EDA
中圖分類號:TP331.1 文獻標識碼:B 文章編號:1004-373X(2008)02-034-03
Design of Single Chip Computer Interface Based on CPLD
TIAN Kaikun,XU Haixia
(Electrician and Electronics Experiment Center,Hubei Normal University,Huangshi,435002,China)
Abstract:Many circuit design still use separative components in nowadays,completes the logic to transform,the address decoding,the data lock saves and so on.Today the PLD technology has become more and more mature,using the PLD technology instead of tradational separative components not only reduce the PCB size,but also save the cost.This paper researches CPLD devices and the reference tools,proposes a bus interface between single chip computer and CPLD.The single chip computer system contain A/D,D/A,LCD and something else,adopting this way,making the circuit more easy and clear.This paper also gives CPLD circuit design scheme,circuit theory graphic and the main program code.
Keywords:CPLD;separative components;PLD;EDA
1 引 言
隨著PLD(可編程器件)技術的成熟,應用越來越廣泛。單片機系統中,例如RAM,A/D,D/A,LED等常需要一些門電路作為接口,通常采用諸如74系列、40系列等分離元件實現,往往電路龐大復雜,不便集成。PLD以可編程特性受到設計者的青睞,成為替代分離元件的最佳選擇。
復雜可編程邏輯器件(Complex Programable Logic Device,CPLD),其內部有大量的門電路,組合邏輯的功能很強,能完成任何數字器件的功能。高性能CPU,簡單的74 電路,都可以用CPLD 實現。CPLD 如同一張白紙或是一堆積木,工程師可以通過傳統的原理圖輸入法,或是硬件描述語言自由地設計一個數字系統。用戶可以反復編程、擦除、使用或在外圍電路連接不變的情況下用不同軟件實現不同的功能。
CPLD基本都是由E2PROM和FLASH工藝制造,一上電就可以工作,無需其他芯片配合,使用方便,容易設計。
2 CPLD開發工具
CPLD器件的設計與開發離不開EDA工具軟件,現在有很多支持CPLD/FPGA設計的軟件。
在眾多的開發工具中,Xilinx的ISE軟件是非常流行的一種。ISE集成開發軟件是Xilinx公司最新的EDA開發工具,他支持所有的Xilinx芯片,如XC9500,XC9500XL等。
Ateral公司的MaxplusⅡ,QuartusⅡ,也是業界最著名的CPLD/FPGA開發工具,支持所有的Ateral芯片,如MAX3000,MAX7000,MAX-Ⅱ系列。
由于EDA軟件已經發展得相當完善,用戶甚至可以不用詳細了解CPLD的內部結構,也可以用自己熟悉的方法:如原理圖輸入或HDL語言來完成相當優秀的CPLD設計。
3 單片機與CPLD接口設計
單片機與CPLD之間可以根據需要,采用多種不同的接口方式,這里提出一種總線接口方案,采用三總線(數據、控制、地址)結構,如圖1所示。雙向數據總線完成數據傳輸,單向控制總線和地址總線通過CPLD對外圍對象控制。
這里以經典51系列單片機和Ateral公司的EPM7064接口為例,設計單片機通過CPLD實現地址鎖存、地址譯碼譯碼、LCD,ADC0809,DAC0832的接口設計,實現靈活可擴展地址編碼。
單片機P0口為雙向數據總線,該P0口與CPLD的通用I/O口連接,完成數據和低8位地址傳送;控制總線包括單片機讀寫控制總線Rd和Wr,以及地址鎖存信號(Address Lock Enable,ALE),地址總線A15(P2.7)??刂瓶偩€和地址線通過CPLD的全局輸入信號引腳輸入,包括全局時鐘Globle Clk、全局清零輸入Global Clear、全局使能輸入Global OE、特定輸入Ded.Input。這些全局信號與CPLD里面的每一個單元相連,當用外部的時鐘觸發時,用這些信號比用普通管腳速度快,保證信號到每個宏單元的延時相同并且延時最短。
4 應用系統設計
CPLD擴展接口系統結構框圖如圖2所示。CPLD實現地址鎖存,地址譯碼,并產生滿足A/D,D/A,LCD時序的控制邏輯電路。系統不需要任何分離元件,電路簡潔緊湊、極大的縮小PCB尺寸、增強系統可靠性。由于CPLD是硬件編程設計,還可以在CPLD當中設計硬件加密邏輯,有效防止產品復制。
4.1 電路設計
CPLD內部電路如圖3所示,在Max+Plus Ⅱ環境中,直接調用集成庫74373B,實現地址鎖存,74138完成地址譯碼,地址編排如表1所列;用與門和或非門設計LCD帶地址使能控制信號;DIV_CLK模塊對ALE信號8分頻后提供ADC時鐘;或非門設計ADC帶地址讀寫控制信號;ADC轉換完成EOC信號經非門轉換實現與單片機外部中斷電平匹配;或門實現DAC編址寫信號。
module counter(clkin,clkout);
input clkin;
output clkout;
reg [1:0]i;
reg clkout;
always@(posedge clkin)
begin
i<=i+1;
if(i==3)clkout=!clkout;
end
endmodule
電路圖如圖5所示,CPLD通用I/O與外設連接可以根據實際PCB布線需要,靈活選擇。
4.2 單片機程序設計
4.2.1 ADC0809編程控制
設定通道并啟動一次A/D轉換
MOV DPTR,#8001H[JY];此處地址由硬件決定
MOV A,#CH[JY];設定通道CH,0~7有效
MOVX @DPTR,A[JY];鎖定通道同時啟動1次A/D轉換
4.2.2 LCD編程控制
LCD接口如圖3所示,RS接P2.0,RW接P2.1,得LCD命令、數據讀寫驅動如下:
MOV DPTR,#8000H;
MOV A,#CMD
MOVX @DPTR,A[JY];寫命令#CMD
MOV DPTR,#8100H;
MOV A,#DATA
MOVX @DPTR,A[JY];寫數據#DATA
MOV DPTR,#8200H;
MOVX A,@DPTR[JY];讀命令
MOV DPTR,#8300H;
MOVX A,@DPTR[JY];讀數據
4.2.3 ADC0832編程控制
MOV DPTR,#8002H[JY];此處地址由硬件決定
MOV A,#DATA[JY];#DATA為DAC數據
MOVX @DPTR,A[JY];將數據寫入ADC0832
通過CPLD擴展單片機接口,電路簡潔靈活,為二次開發提供了便利,節省了PCB面積。
參 考 文 獻
[1]程耕國,劉濤.CPLD擴展51 單片機尋址范圍[J].微計算機信息,2006(5):185-186.
[2]周立功.單片機與CPLD 綜合應用技術[M].北京:北京航空航天大學出版社,2005.
[3]王淑文.基于CPLD的數字系統設計\\[J\\].現代電子技術,2007,30,(12):184-185,188.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。