摘要:用ALTERA公司MAX7000系列CPLD芯片實現(xiàn)單片機與PC104 ISA總線接口之間的并行通信,給出系統(tǒng)設(shè)計方法及程序源代碼。包括通信軟件和AHDL設(shè)計部分。
CPLD(Complex Programmable Logic Device)是一種復(fù)雜的用戶可編程邏輯器件,由于采用連續(xù)連接結(jié)構(gòu)。這種結(jié)構(gòu)易于預(yù)測延時,從而電路仿真更加準確。CPLD是標準的大規(guī)模集成電路產(chǎn)品,可用于各種數(shù)字邏輯系統(tǒng)的設(shè)計。近年來,由于采用先進的集成工藝和大批量生產(chǎn),CPLD器件成本不斷下降,集成密度、速度和性能大幅度提高,一個芯片就可以實現(xiàn)一個復(fù)雜的數(shù)字電路系統(tǒng);再加上使用方便的開發(fā)工具,使用CPLD器件可以極大地縮短產(chǎn)品開發(fā)周期,給設(shè)計、修改帶來很大方便[1]。本文以ALTERA公司的MAX7000系列為例,實現(xiàn)MCS51單片機與PC104 ISA總線的并行通信。采用這種通信方式,數(shù)據(jù)傳輸準確、高速,在12 MHz晶振的MCS51單片機控制的數(shù)據(jù)采集系統(tǒng)中,可以滿足與PC104 ISA總線接口實時通信的要求,通信速率達200 Kbps。
1 系統(tǒng)總體設(shè)計方案
本系統(tǒng)用CLPD實現(xiàn)單片機與PC104 ISA總線接口的并行通信。由于PC104主要完成其它方面的數(shù)據(jù)采集工作,只是在空閑時才能接收單片機送來的數(shù)據(jù),所以要求雙方通信的實時性很強,但數(shù)據(jù)量不是很大。因此,在系統(tǒng)設(shè)計中單片機中斷方式接收數(shù)據(jù),PC104采用查詢方式接收數(shù)據(jù)。系統(tǒng)設(shè)計方案如圖1所示。
在圖1單片機部分,D[0..7]是數(shù)據(jù)總線,A[0..15]是地址總線,RD和WR分別是讀寫信號線,INT0是單片機的外部中斷。當單片機的外部中斷信號有效時,單片機接收數(shù)據(jù)。
在CPLD部分,由一片MAX7000系列中的EPM7128LSC84來實現(xiàn),用來完成MCS51與PC104ISA總線接口之間的數(shù)據(jù)傳輸、狀態(tài)查詢及延時等待。
在PC104 ISA部分,只用到ISA的8位數(shù)據(jù)總線D[0..7],A[0..9]是PC104的地址總線;IOW和IOR是對指定設(shè)備的讀寫信號;AEN是允許DMA控制地址總線、數(shù)據(jù)總線及讀寫命令線進行DMA傳輸,及對存儲器和I/O設(shè)備的讀寫;IOCHRDY是I/O就緒信號,I/O通道就緒為高,此時處理機產(chǎn)生的存儲器讀寫周期為4個時鐘周期,產(chǎn)生的I/O讀寫周期和DMA字節(jié)傳輸均需5個時鐘周期,MCS51通過置此信號為低電平來使CPU插入等待周期,從而延長I/O周期;SYSCLK是系統(tǒng)時鐘信號,是為了與外部設(shè)備保持同步;RESETDR是上電復(fù)位或系統(tǒng)初始化邏輯,是系統(tǒng)總清信號。
2 基于MAX+plus II的硬件實現(xiàn)
本系統(tǒng)是用ALTERA公司的CPLD開發(fā)工具MAX+plusII。它支持多種輸入方式,給設(shè)計開發(fā)提供了極大的方便。系統(tǒng)的主體部分仍是用原理圖輸入方式。由于庫中提供了現(xiàn)在的芯片,所以使用很方便。原理圖輸入部分如圖2和圖3所示。圖2主要完成單片機與ISA接口通信中的數(shù)據(jù)傳輸和握手判斷。
D[0..7] 單片機的8位雙向數(shù)據(jù)總線;
PCD[0..7] ISA接口的8位雙向數(shù)據(jù)總線;
PCRD ISA接口的讀有效信號;
PCWR ISA接口的寫有效信號;
判斷單片機已寫數(shù)據(jù)或讀走數(shù)據(jù);
PCSTATE 單片機用此查詢ISA接口已取走數(shù)據(jù);
MSCRD 單片機的讀有效信號;
MCSWR 單片機的寫有效信號;
INT0 單片機的外部中斷信號;
當MCUWR信號有效后,單片機把數(shù)據(jù)鎖存于74LS374(1)中,此時,PCSTATE變?yōu)楦唠娖?。PC104用STATE信號選通74LS244來判斷數(shù)據(jù)位PCD0是否為高電平,如果為高,說明單片機送來了數(shù)據(jù),那么使PCRD有效,從數(shù)據(jù)存器74LS374(1)中取走數(shù)據(jù)。此時,PCSTATE變?yōu)榈碗娖?,單片機通過判斷此信號為低電平來判定PC104已取走了數(shù)據(jù),可以發(fā)下一個數(shù)據(jù)。
當PCWR信號有效后,PC104把數(shù)據(jù)鎖存于74LS374(2)中,此時,INT0變?yōu)榈碗婇c,單片機產(chǎn)生外部中斷,使MCSRD信號有效,從數(shù)據(jù)鎖存器74LS374(2)中取走裝飾,INT0變?yōu)楦唠娖?。PC104用STATE信號選通74LS244判斷數(shù)據(jù)位PCD1是否為高電平,如果為高電平,說明單片機取走了數(shù)據(jù),可以發(fā)送下一個數(shù)據(jù)。 PC104與單片機進行通信,最關(guān)鍵的就是速度匹配問題。由于PC104的速度快,而單片機的速度較慢,所以,要在PC104的IOCHRDY處插入等待周期,如圖3所示。
IOCHRDY 用來使ISA接口等待5個時鐘周期;
DLY_D 延時輸入信號;
DLY_CK 延時等待時鐘信號;
DLY_CLR 等待清除信號,為開始下一次送數(shù)周期作準備;
DELAY 延時5個時鐘周期后的輸出信號,作為DLY_CLR信號的輸入;
SYSCLK ISA接口的系統(tǒng)時鐘信號。
在MCS51與PC104進行通信的過程中,DLY_D信號一直有效(高電平)。在信號SYSCLK的作用下,每5個時鐘周期DELAY信號有效一次,即為高電平。此時DLY_CLR信號有效(低電平),IOCHRDY信號變?yōu)楦唠娖?,PC104可以讀寫數(shù)據(jù)。
地址譯碼部分采用文本輸入方式,用ALTERA公司的硬件設(shè)計開發(fā)語言AHDL(Altera Hardware Description Language)。AHDL是一種模塊化的高級語言,完全集成于MAX+plusII系統(tǒng)中,特別適合于描述復(fù)雜的組合邏輯、狀態(tài)機和真值表,地址譯碼部分用文本輸入方式,這充分體現(xiàn)了文本輸入方式的優(yōu)點。文本輸入內(nèi)容如下:
(
PCA[9..0] : INPUT;
AEN,IOR,IOW : INPUT;
RESETDR,DELAY : INPUT;
A[15..14] :INPUT;
RD,WR : INPUT;
DLY_D : OUTPUT;
DLY_CK : OUTPUT;
DLY_CLR : OUTPUT;
STATE : OUTPUT;
PCRD : OUTPUT;
PCWR : OUTPUT;
MCURD : OUTPUT;
MCUWR : OUTPUT;
)
BEGIN
!DLY_CLR=RESETDR#DELAY;
DLY_D=!AEN & (PCA[9..1]= =H"110");
DLY_CK=!AEN & (PCA[9..1]= =H"110")&(!IOR # ! IOW);
!PCWR=!AEN&(PCA[9..0]= =H"220")& !IOW;
!PCRD=!AEN&(PCA[9..0]= =H"220")& !IOR;
!STATE=!AEN&(PCA[9..0]= =H"221")&!IOR;
!MCSRD=([15..14]= =H"1")& !RD;
!MCSWR=(A[15..14]= =H"2"& !WR;
END;
說明:PCA[9..0]是PC104的地址信號,A[15..14]是單片機的地址信號,PC104用到端口地址220H和221H。
3 通信軟件設(shè)計
PC104是基于ISA總線的,在系統(tǒng)軟件設(shè)計中要防止地址沖突。PC104中使用A0~A9地址位來表示I/O端口地址,即可有1024個口地址:前512個供系統(tǒng)板使用,后512個供擴充槽使用。當A9=0時表示為系統(tǒng)板上的口地址;A9=1時,表示擴充插槽接口卡上的口地址[2]。因此,采用保留的口地址220H和221H,保證不會發(fā)生地址沖突。
本程序中PC104采用查詢方式接收數(shù)據(jù),單片機用中斷方式接收數(shù)據(jù)。
#define pcreadwrite 0x220 /*PC104讀寫數(shù)據(jù)口地址*/
#define pcrdstate 0x221 /*PC104查詢狀態(tài)口地址*/
PC104寫數(shù)據(jù)函數(shù):
Void pcwrite(int port,unsigned char ch)
{ outportb(pcreadwrite,ch);
while ((inportb(pcrdstate)&0x02)!=0x02); /*等待單片機讀走數(shù)據(jù)*/
{ }
}
單片機讀子程序:
MCUWR:MOV DPTR,#4000H
MOVX A,@DPTR
RETI
PC104讀數(shù)據(jù)函數(shù):
Unsigned char pcread(int port)
{ while((inportb(pcrdstate)&0x01)!=0x01);/*等待單片機寫數(shù)據(jù)*/
{}
return inportb(pcreadwrite);
}
單片機寫子程序:
MCUWR:MOV DPTR,#8000H
MOVX @DPTR,A
;等待PC104讀走數(shù)據(jù)
RET
4 結(jié)論
用CPLD實現(xiàn)單片機與ISA總線接口的并行通信,電路結(jié)構(gòu)簡單、體積小,1片CPLD芯片足夠,并且控制方便,實時性強,通信效率高。本設(shè)計方法已成功地應(yīng)用于作者開發(fā)的各種數(shù)據(jù)采集系統(tǒng)中,用作單片機與PC104之間的并行數(shù)據(jù)通信,效果非常理想。
- 并行通信(10746)
- 用CPL(6194)
相關(guān)推薦
51單片機實現(xiàn)spi通信
51單片機并行I/O口的工作原理是什么
8051單片機應(yīng)用實例
89C52單片機和EPM240T100C5的CPLD能直連嗎?
89C52單片機和EPM240T100C5的CPLD能直連嗎?
CPLD加51單片機讓系統(tǒng)更高效
單片機總線與系統(tǒng)擴展
單片機通信的相關(guān)資料分享
單片機通信的相關(guān)資料推薦
單片機P口接PCI/ISA數(shù)據(jù)總線
單片機中各種通信方式的分類
單片機串口通信畢業(yè)論文
單片機控制的總線型彩色晶顯示模塊
單片機控制的總線型彩色晶顯示模塊
單片機控制的總線型液晶控制模塊
單片機控制的總線型液晶控制模塊
單片機控制的總線型液晶控制模塊
單片機的并行I/O口與工作模式介紹
單片機的總線
并行通信和串行通信的相關(guān)資料分享
用單片機實現(xiàn)溫度遠程顯示設(shè)計
用ARM與FPGA并行總線通信該如何去實現(xiàn)呢
用NRF24L01實現(xiàn)電腦和單片機的通信
用VC實現(xiàn)PC機與單片機的通信
用串口怎么能夠實現(xiàn)與多個單片機通信?
FPGA/CPLD與單片機相比有哪些優(yōu)勢?
LONWORKS控制模塊與MCS-51單片機的并行通信
labview實現(xiàn)PC 與單片機通信
【轉(zhuǎn)】單片機總線概述,單片機的三總線結(jié)構(gòu)
【轉(zhuǎn)】不同單片機之間的通信方式
分享一款不錯的基于CPLD和ISA總線的數(shù)據(jù)采集系統(tǒng)設(shè)計
基于CPLD的單片機與ISA總線接口并行通信
基于MCS51系列單片機法人雙機并行互連實現(xiàn)
基于PCI總線的CPLD實現(xiàn)
如何實現(xiàn)單片機與CPLD通訊呢?
如何實現(xiàn)多個單片機之間通信
如何利用CPLD實現(xiàn)單片機PCI接口設(shè)計
如何利用CPLD幫助單片機完成與PCI設(shè)備間的通信任務(wù)
如何利用單片機高效地并行處理多個外設(shè)通信?
如何去實現(xiàn)51單片機串行通信呢
如何采用CPLD和單片機實現(xiàn)任意波形發(fā)生器的設(shè)計?
請教串口通信實現(xiàn)PC和單片機通信的問題
單片機多機并行通訊的一種方法

PC機與單片機的并行通信協(xié)議

基于CPLD的單片機PCI接口設(shè)計

用CPLD 實現(xiàn)單片機與ISA 總線并行通信

用87C196NT單片機實現(xiàn)CAN總線通信

用CPLD 實現(xiàn)單片機與ISA 總線并行通信

單片機應(yīng)用系統(tǒng)的CPLD 應(yīng)用設(shè)計

單片機與FPGA CPLD總線接口邏輯設(shè)計

基于單片機的CPLD/FPGA被動串行下載配置的實現(xiàn)

基于單片機和CPLD的頻率測量研究

單片機應(yīng)用系統(tǒng)的CPLD應(yīng)用設(shè)計

基于ISA總線的計算機與DSP的通信

基于DSP與CPLD的I2C總線接口的設(shè)計與實現(xiàn)


ISA總線和Futurebus+總線


用VHDL語言在CPLD上實現(xiàn)串行通信


基于CPLD的單片機PCI接口設(shè)計


用CPLD實現(xiàn)單片機與ISA總線并行通信


基于CPLD的單片機與PCI接口設(shè)計解決方案


單片機并行口,單片機并行口結(jié)構(gòu)原理是什么?


I2C總線在并行口擴展方面的應(yīng)用

基于單片機與FPGA的總線接口邏輯設(shè)計

AVR單片機與CPLD的通信設(shè)計

單片機中并行是什么意思

評論