《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 用CPLD實現單片機與ISA總線接口的并行通信

用CPLD實現單片機與ISA總線接口的并行通信

2009-01-04
作者:肖小鋒 盛 文 李演仁

??? 摘? 要: 介紹了用ALTERA公司MAX7000系列CPLD芯片實現單片機與PC104ISA總線接口之間的并行通信。給出了系統設計方法及程序源代碼。?

??? 關鍵詞: CPLD? ISA總線? 并行通信

?

??? CPLD(Complex Programmable Logic Device)是一種復雜的用戶可編程邏輯器件,由于采用連續連接結構,易于預測延時,從而使電路仿真更加準確。CPLD是標準的大規模集成電路產品,可用于各種數字邏輯系統的設計。近年來,由于采用先進的集成工藝和大批量生產,CPLD器件成本不斷下降,集成密度、速度和性能大幅度提高,一個芯片就可以實現一個復雜的數字電路系統;再加上使用方便的開發工具,使用CPLD器件可以極大地縮短產品開發周期,給設計修改帶來很大方便[1]。本文以ALTERA公司的MAX7000系列為例,實現MCS51單片機與PC104ISA總線接口的并行通信。采用這種通信方式,數據傳輸準確高速,在12MHz晶振的MCS51單片機控制的數據采集系統中,可以滿足與PC104 ISA總線接口實時通信的要求,通信速率達200Kbps。?

1 系統總體設計方案?

??? 用CPLD實現單片機與PC104ISA總線接口的并行通信,由于PC104主要完成其它方面的數據采集工作,只是在空閑時才能接收單片機送來的數據,所以要求雙方通信的實時性很強,但數據量不是很大。因此在系統設計中,單片機用中斷方式接收數據,PC104采用查詢方式接收數據。系統設計方案如圖1所示。?

?

?

??? 在單片機部分,D[0..7]是數據總線,A[0..15]是地址總線,RD和WR分別是讀寫信號線,INT0是單片機的外部中斷,當單片機的外部中斷信號有效時,單片機接收數據。?

??? 在CPLD部分,用一片MAX7000系列中的PM7128?ESLC84來實現,用來完成MCS51與PC104ISA總線接口之間的數據傳輸、狀態查詢及延時等待。?

??? 在PC104ISA部分,只用到PC104的8位數據總線D[0..7],A[0..9]是PC104的地址總線;/IOW和/IOR是對指定設備的讀寫信號;AEN是允許DMA控制地址總線、數據總線和讀寫命令線進行DMA傳輸以及對存儲器和I/O設備的讀寫;IOCHRDY是I/O就緒信號,I/O通道就緒為高,此時處理機產生的存儲器讀寫周期為4個時鐘周期,產生的I/O讀寫周期和DMA字節傳輸均需5個時鐘周期,MCS51通過置此信號為低電平使CPU插入等待周期,從而延長I/O周期;SYSCLK是系統時鐘信號,使系統與外部設備保持同步;RESETDR是上電復位或系統初始化邏輯信號,是系統總清信號。?

2 基于MAX+plusII的硬件實現?

??? ALTERA公司的CPLD開發工具MAX+plusII,支持多種輸入方式,給設計開發提供了極大的方便,因此本系統采用MAX+plusII進行設計。系統的主體部分用原理圖輸入方式,由于庫中提供了現成的芯片,所以使用很方便。原理圖輸入部分如圖2和圖3所示。圖2主要完成單片機與ISA接口通信中的數據傳輸和握手判斷。在圖2中,各信號說明如下:?

??? D[0..7]???? 單片機的8位雙向數據總線;?

??? PCD[0..7]?? ISA接口的8位雙向數據總線;?

??? PCRD??????? ISA接口的讀有效信號;?

??? PCWR??????? ISA接口的寫有效信號;?

??? STATE?????? ISA接口的查詢選通信號,用來判斷單片機已寫數據或讀走數據;?

??? PCSTATE 單片機用此查詢ISA接口已取走數據;?

??? MCURD?????? 單片機的讀有效信號;?

??? MCUWD?????? 單片機的寫有效信號;?

??? INT0??????? 單片機的外部中斷信號。?

??? 當MCUWR信號有效時,單片機把數據鎖存于74LS374(1)中,此時PCSTATE變為高電平;PC104用STATE信號選通74LS244來判斷數據位PCD0是否為高電平,如果為高,說明單片機送來了數據,則使PCRD有效,從數據鎖存器74LS374(1)中取走數據,此時PCSTATE變為低電平,單片機通過判斷此信號為低電平來判定PC104已取走了數據,此時可以發下一個數據。?

?

?

?

??? 當PCWR信號有效時,PC104把數據鎖存于74LS374(2)中,此時INT0變為低電平;單片機產生外部中斷,使MCURD信號有效,從數據鎖存器74LS3734(2)中取走數據。此時INT0變為高電平,PC104用STATE信號選通74LS244判斷數據位PCD1是否為高電平,如果為高電平,則說明單片機取走了數據,可以發送下一個數據。?

??? PC104與單片機進行通信,最關鍵的就是速度匹配問題。由于PC104的速度快,而單片機的速度較慢,所以要在PC104的IOCHRDY處插入等待周期。如圖3所示,各信號說明如下:?

??? IOCHRDY 用來使ISA接口等待5個時鐘周期;?

??? DLY_D?????? 延時輸入信號;?

??? DLY_CK????? 延時等待時鐘信號;?

??? DLY_CLR 等待清除信號,為開始下一次送數周期做準備;?

??? DELAY?????? 延時5個時鐘周期后的輸出信號,作為DLY_CLR信號的輸入;?

??? SYSCLK????? ISA接口的系統時鐘信號。?

??? 在MCS51與PC104進行通信的過程中,DLY_D信號一直有效(高電平),在信號SYSCLK的作用下,每5個時鐘周期DELAY信號有效一次,即為高電平。此時DLY_CLR信號有效(低電平),IOCHRDY信號變為高電平,PC104可以讀寫數據。?

??? 地址譯碼部分采用文本輸入方式,用ALTERA公司的硬件設計開發語言AHDL(Altera Hardware Description Language)實現。AHDL是一種模塊化的高級語言,完全集成于MAX+plus II系統中,特別適合于描述復雜的組合邏輯、狀態機和真值表,地址譯碼部分采用文本輸入方式充分體現了文本輸入方式的優點。文本輸入內容如下:?

??? SUBDESIGN Address?

??? (?

??? 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;?

??? ?選MCSWR=(A[15..14]==H″2″)&?選WR;?

??? END;?

??? 說明:PCA[9..0]是PC104的地址信號,A[15..14]是單片機的地址信號,PC104用到端口地址220H和221H。?

3 通信軟件設計?

??? PC104是基于ISA總線的,在系統軟件設計中要防止地址沖突。PC104中使用A0~A9地址位來表示I/O端口地址,即可有1024個口地址,前512個供系統板使用,后512個供擴充插槽使用,當A9=0時表示為系統板上的口地址;當A9=1時表示擴充插槽接口卡上的口地址[2]。因為本設計中采用保留的口地址220H和221H,保證不會發生地址沖突。?

??? 在本程序中,PC104采用查詢方式接收數據,單片機采用中斷方式接收數據。?

??? #define pcreadwrite 0x220?? ;PC104讀寫數據口地址?

??? #define pcrdstate 0x221???? ;PC104查詢狀態口地址?

??? PC104寫數據函數:?

??? void pcwrite(int port,unsigned char ch)?

??? outportb(pcreadwrite,ch);?

??? while((inportb(pcrdstate)&0x02)?選=0x02);等待單片機讀走數據?

??? {? }?

??? }?

??? 單片機讀子程序:?

??? MCUR: MOV DPTR,#400H?

??????? MOVX? A,@DPTR?

????????? RETI?

??? PC104讀數據函數:?

??? unsigned char pcread(int port)?

??? {? while ((inportb(pcrdstate)&0x0)?選=0x01);等待單片機寫數據?

????? {? }?

??? ? return inportb(pcreadwrite);?

??? }?

??? 單片機寫子程序:?

??? MCUWR: MOV DPTR,#8000H?

?????????? MOVX? @DPTR,A?

??? ; 等待PC104讀寫數據?

??? RET?

參考文獻?

1 李冬梅.PLD器件與EDA技術.北京:北京廣播學院出版社,?

? 2000?

2 王士元.C高級實用程序設計.北京:清華大學出版社,?

? 1996

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品一区二区三区不| 亚洲欧美999| 国产欧美二区| 国产精品videosex极品| 欧美经典一区二区三区| 欧美成人一区在线| 欧美 日韩 国产精品免费观看| 久久久精品国产免费观看同学| 欧美一区二视频| 欧美在线影院在线视频| 欧美一区二区三区在线视频| 亚洲欧美日韩一区二区| 亚洲欧美激情精品一区二区| 亚洲综合日韩在线| 亚洲女同在线| 午夜精品福利视频| 欧美一区二区观看视频| 欧美亚洲午夜视频在线观看| 午夜伦理片一区| 欧美一区二区三区在线播放| 久久不射2019中文字幕| 久久久噜噜噜久久人人看| 久久青青草综合| 久久最新视频| 欧美高清视频一区| 欧美日韩不卡在线| 欧美午夜在线一二页| 国产精品久久久久一区二区三区| 国产精品视频一区二区三区| 国产日韩亚洲欧美精品| 国产在线视频欧美| 亚洲二区在线观看| 亚洲精品美女91| 亚洲视频你懂的| 欧美一级免费视频| 久久精品国产亚洲高清剧情介绍| 亚洲三级视频| 亚洲最新视频在线| 亚洲欧美久久久久一区二区三区| 香蕉久久夜色精品| 久久男女视频| 欧美日韩国产高清| 国产精品免费在线| 好吊日精品视频| 亚洲精选国产| 欧美一区午夜视频在线观看| 亚洲国产综合在线看不卡| 亚洲免费久久| 香蕉成人久久| 免费观看在线综合| 欧美色综合网| 国产一区自拍视频| 亚洲美女中文字幕| 午夜精品一区二区三区在线播放| 亚洲国产天堂久久综合网| 一本色道久久88亚洲综合88| 亚洲欧美日韩国产成人精品影院| 久久一区二区精品| 欧美午夜国产| 国内成+人亚洲+欧美+综合在线| 亚洲人成绝费网站色www| 中文一区在线| 亚洲黄色成人久久久| 亚洲一区免费| 免费不卡在线视频| 国产精品久久久久久久午夜片| 狠狠做深爱婷婷久久综合一区| 亚洲免费av片| 久久精品三级| 亚洲一二区在线| 久久综合九色综合网站| 国产精品ⅴa在线观看h| 狠狠色噜噜狠狠狠狠色吗综合| 99re热这里只有精品视频 | 久久精品日产第一区二区| 一区二区成人精品| 久久国产福利| 欧美日韩在线播放三区四区| 国内视频一区| 亚洲一区日韩在线| 亚洲免费观看高清完整版在线观看熊 | 在线一区二区三区四区| 新片速递亚洲合集欧美合集| 亚洲精品无人区| 久久久久久国产精品mv| 欧美视频手机在线| 在线视频观看日韩| 性色一区二区三区| 亚洲欧美激情在线视频| 欧美区在线观看| 伊人久久噜噜噜躁狠狠躁| 亚洲欧美资源在线| 午夜国产不卡在线观看视频| 欧美日韩伦理在线| 影音先锋久久精品| 久久爱www久久做| 久久精品国产一区二区电影 | 欧美福利在线| 国产一区自拍视频| 亚洲女人av| 亚洲综合第一页| 欧美调教视频| 亚洲精品乱码| 亚洲人成网站777色婷婷| 久久久久一区二区三区| 国产伦精品一区二区三区高清| 一区二区欧美在线观看| 日韩亚洲精品电影| 免费成人高清| 在线精品视频一区二区| 欧美在线免费看| 亚洲精选在线| 你懂的国产精品永久在线| 国产在线不卡| 欧美一区二区三区婷婷月色| 欧美在线日韩精品| 国产精品一区视频| 亚洲女女女同性video| 午夜精品免费| 国产精品午夜电影| 亚洲影院免费| 性欧美大战久久久久久久久| 国产精品国产三级欧美二区 | 欧美亚洲一区二区在线观看| 国产精品久久久久一区二区三区 | 一本色道久久加勒比88综合| 一区二区三区精品| 欧美三级视频在线观看| 99亚洲视频| 亚洲综合视频网| 国产精品腿扒开做爽爽爽挤奶网站| 一区二区三区鲁丝不卡| 亚洲一区二区三区色| 欧美日韩视频在线一区二区 | 另类欧美日韩国产在线| 在线观看亚洲一区| 亚洲九九爱视频| 欧美无乱码久久久免费午夜一区 | 日韩视频在线观看国产| 欧美日韩精品福利| 亚洲色图综合久久| 欧美与黑人午夜性猛交久久久| 国产亚洲欧美一区| 亚洲激情在线播放| 欧美日韩精品免费观看视一区二区 | 亚洲一二三区精品| 亚洲在线电影| 国产欧美不卡| 亚洲高清视频一区| 欧美激情aaaa| 一二三四社区欧美黄| 欧美一区二区三区在线观看视频| 国产在线精品自拍| 亚洲免费av片| 国产精品成人一区| 欧美一区二区三区在线免费观看| 老司机午夜精品| 亚洲看片网站| 欧美自拍偷拍| 亚洲国产一区二区a毛片| 亚洲视频精选| 国产一区二区欧美日韩| 日韩一二三区视频| 国产日韩欧美精品综合| 亚洲精品网站在线播放gif| 国产精品久久久久婷婷| 亚洲国产一区二区精品专区| 欧美色图麻豆| 亚洲国产精品t66y| 欧美亚一区二区| 亚洲国产欧洲综合997久久| 欧美日韩午夜在线| 午夜欧美视频| 欧美日韩精品不卡| 欧美在线观看天堂一区二区三区| 欧美日韩成人精品| 欧美在线首页| 欧美午夜一区二区| 亚洲国产精品一区二区第一页 | 国产精品久久久久免费a∨| 久久精品国产久精国产一老狼| 欧美日韩一区成人| 久久精品视频va| 国产精品精品视频| 亚洲美女电影在线| 国产一区二区三区最好精华液| 一区二区三区视频在线播放| 国产偷国产偷精品高清尤物| 一本色道久久综合一区| 国产一区导航| 亚洲小视频在线| 亚洲国产成人久久综合一区| 欧美中日韩免费视频| 99精品99久久久久久宅男| 老巨人导航500精品| 亚洲女性裸体视频| 欧美三级电影网| 亚洲精品一区二区三区樱花| 国产一区二区三区电影在线观看| 亚洲图片你懂的|