摘要:介紹實現(xiàn)單片機與Xilinx公司XC9500系列可編程邏輯器件的讀寫邏輯功能模塊的接口設計,以及Xilinx公司的XC9500系列可編程邏輯器件的開發(fā)流程。
關(guān)鍵詞:復雜可編程邏輯電路 微處理器 在系統(tǒng)編程 現(xiàn)場可編程門陣列
1 概述
CPLD(復雜可編程邏輯電路)是一種具有豐富的可編程I/O引腳的可編程邏輯器件,具有在系統(tǒng)可編程、使用方便靈活的特點;不但可實現(xiàn)常規(guī)的邏輯器件功能,還可實現(xiàn)復雜的時序邏輯功能。把CPLD應用于嵌入式應用系統(tǒng),同單片機結(jié)合起來,更能體現(xiàn)其在系統(tǒng)可編程、使用方便靈活的特點。CPLD同單片機接口,可以作為單片機的一個外設,實現(xiàn)單片機所要求的功能。例如,實現(xiàn)常用的地址譯碼、鎖存器、8255等功能;也可實現(xiàn)加密、解密及擴展串行口等單片機所要求的特殊功能。實現(xiàn)嵌入式應用系統(tǒng)的靈活性,也提高了嵌入式應用系統(tǒng)的性能。
CPLD(復雜可編程邏輯電路)是一種具有豐富的可編程I/O引腳的可編程邏輯器件,具有在系統(tǒng)可編程、使用方便靈活的特點;不但可實現(xiàn)常規(guī)的邏輯器件功能,還可實現(xiàn)復雜的時序邏輯功能。把CPLD應用于嵌入式應用系統(tǒng),同單片機結(jié)合起來,更能體現(xiàn)其在系統(tǒng)可編程、使用方便靈活的特點。CPLD同單片機接口,可以作為單片機的一個外設,實現(xiàn)單片機所要求的功能。例如,實現(xiàn)常用的地址譯碼、鎖存器、8255等功能;也可實現(xiàn)加密、解密及擴展串行口等單片機所要求的特殊功能。實現(xiàn)了嵌入式應用系統(tǒng)的靈活性,也提高了嵌入式應用系統(tǒng)的性能。]

2 Xilinx公司的可編程邏輯器件
Xilinx公司的XC9500系列可編程邏輯器件是一款高性能、有特點的可編程邏輯器件。它的系統(tǒng)結(jié)構(gòu)如圖1所示。從結(jié)構(gòu)上看,它包含三種單元:宏單元、可編程I/O單元和可編程的內(nèi)部連線。它的主要特點是:
①在所有可編程引腳之間pin-pin延時最短可為5ns;系統(tǒng)的時鐘速度可達到100MHz。
②XC9500系列的容量范圍為36~288個宏單元
③5V在系統(tǒng)可編程??梢跃幊?0000次。
④具有強大的強腳鎖定能力。
⑤每個宏單元都有可編程低功耗模式。
⑥沒有用的引腳有編程接地能力。
Xilinx的XC9500系列可編程邏輯器件的主要性能如表1所列。
表1 Xilinx XC9500系列器件
| 項? 目 | XC9536 | XC9572 | XC95108 | XC95144 | XC95216 | XC95288 |
| 寄存器/個 | 36 | 72 | 108 | 144 | 216 | 288 |
| 可用門數(shù)/個 | 800 | 1600 | 2400 | 3200 | 4800 | 6400 |
| 宏單元數(shù)/個 | 36 | 72 | 108 | 144 | 216 | 288 |
| fPD/ns | 5 | 7.5 | 7.5 | 7.5 | 10 | 10 |
| tSU/ns | 3.5 | 4.5 | 4.5 | 4.5 | 6.0 | 6.0 |
| tCO/ns | 4.0 | 4.5 | 4.5 | 4.5 | 6.0 | 6.0 |
| fCNT/MHz | 100 | 125 | 125 | 125 | 111.1 | 111.1 |
| fSYSTEM/MHz | 100 | 83.3 | 83.3 | 83.3 | 66.7 | 66.7 |
注:fCNT=16位計數(shù)器最高工作頻率;fSYSTEM=整個系統(tǒng)的最高工作效率。
?
3 CPLD同單片機接口設計
CPLD同單片機接口原理如圖2所示。
CPLD同單片機接口設計中,單片機采用Atmel公司的AT89C52,CPLD采用Xilinx公司的XC95216。該CPLD芯片結(jié)構(gòu)及性能見圖1和表1。AT89C52通過ALE、CS、RD、WE、P0口(數(shù)據(jù)地址復用)同XC95216芯片相連接。
?
ALE:地址鎖存信號。
CS:片選信號。
RD:讀信號。 WR:寫信號。
AD0~AD7:數(shù)據(jù)地址復用信號。
本例的設計思想是,在XC95216設置兩個控制寄存器,通過單片機對兩個控制寄存器的讀寫來完成對其它過程的控制。
XC95216設置的兩個控制寄存器,可以作內(nèi)部寄存器,也可以直接是映射為I/O口。
圖2 XC9516同單片機接口原理圖
?
4 CPLD同單片機接口設置結(jié)果
本例中,使用Xilinx公司提供的Fundation ISE 4.2i+Modelsim 5.5f軟件實現(xiàn)設計。實現(xiàn)設計的源文件模塊如下:
/**************************
//MCU和XC95216接口程序
//目的:MCU讀寫XC95216
/**************************/
module mcurw(MCU_DATA,ALE,CS,RD,WE,CONREG1,CONREG2);
inout[7:0]MCU_DATA;//單片機的地址數(shù)據(jù)復用信號
output[7:0]CONREG1,CONREG2;//內(nèi)部控制寄存器
input ALE; //單片機的地址鎖存信號
input CS; //單片機的片選信號
input RD; //單片機的讀信號
input WE; //單片機的寫信號
reg[7:0]LAMCU_DATA; //內(nèi)部控制寄存器
reg[7:0]ADDRESSREG; //內(nèi)部地址鎖存寄存器
reg[7:0]CONREG1; //內(nèi)部控制寄存器
reg[7:0]CONREG2; //內(nèi)部控制寄存器
assign MCU_DATA=RD?8'bzzzzzzzz:LAMCU_DATA;
initial //寄存器初始化
begin
LAMCU_DATA<=0;
ADDRESSREG<=0;
CONREG1<=0;
CONREG2<=0;
end
always@(negedge ALE)
begin
ADDRESSREG<=MCU_DATA; //地址鎖存
End
always@(posedge WE)
begin
if(!CS &&ADDRESSREG[0]= =0)) LAMCU_DATA
<=CONREG1; //從地址為0的CONREG1寄存器讀數(shù)據(jù)
else if(!CS&&(ADDRESSREG[0]= =1))LAMCU_DATA<=CONREG2;
//從地址為1的CONREG2寄存器讀數(shù)據(jù)
else LAMCU_DATA<=8'bzzzzzzzz;
end
else
LAMCU_DATA<=8'bzzzzzzzz;
End
Endmodule
使用Modelsim 5.5f仿真結(jié)果如圖3和圖4所示。圖中ALE、CS、RD、WE、MCU_DATA是測試激勵源信號,代表AT89C52接口信號;CONREG1和CONREG2的內(nèi)部寄存器;ADDRESSREG是內(nèi)部地址鎖存寄存器。
圖3 CONREG1寫過程 圖4 CONREG1讀過程
圖3是CONREG1寫過程。首先,在ALE信號的下降沿,鎖存MCU_DATA的數(shù)據(jù)到ADDRESSREG內(nèi)部地址鎖存寄存器。然后,在WE信號的上升沿,把MCU_DATA(0XAA)的數(shù)據(jù)鎖存到寄存器CONREG1。
圖4是CONREG1讀過程。首先,在ALE信號的下降沿,鎖存MCU_DATA(0X00)的數(shù)據(jù)到ADDRESSREG內(nèi)部地址鎖存寄存器。然后,在RD信號的低電平期間,把MCU_DATA(0XAA)的數(shù)據(jù)鎖存到寄存器CONREG1。
從圖3和圖4可以看出,對CONREG1寄存器的讀、寫過程完全滿足進序要求,CONREG2的讀寫過程同CONREG1一樣,也完全滿足時序要求,實現(xiàn)了期望的功能。
結(jié)語
本文實現(xiàn)CPLD與單片機接口設計是筆者設計的高速采樣設備的一部分,經(jīng)實際驗證完全正確。簡單地修改該模塊,筆者已成功地將其應用于多個CPLD或FPGA與單片機接口的項目中。
電子發(fā)燒友App





















評論