<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于EPM7064的多串口管理系統(tǒng)設(shè)計(jì)

          基于EPM7064的多串口管理系統(tǒng)設(shè)計(jì)

          ——
          作者:湯少維 (電子科技大學(xué)通信與信息工程學(xué)院 四川成都 610054) 時(shí)間:2007-01-26 來(lái)源:《現(xiàn)代電子技術(shù)》 收藏

          1 概述

          本文引用地址:http://www.ex-cimer.com/article/20971.htm

          串行接口在數(shù)據(jù)通信中一直扮演著重要角色。他不僅沒(méi)有因?yàn)闀r(shí)代的進(jìn)步被淘汰,反而在性能上越來(lái)向其極限挑戰(zhàn)。usb接口是當(dāng)前pc機(jī)上的主流接口,但仍然有許多外設(shè)使用串口與pc機(jī)通信,尤其是在工業(yè)控制領(lǐng)域。普通pc機(jī)所提供的串口資源往往是不夠的。

          傳統(tǒng)擴(kuò)展多個(gè)串行口的方法是利用多個(gè)中斷源,每個(gè)中斷通常被分配給單一的設(shè)備。這是因?yàn)楫?dāng)多于1個(gè)的設(shè)備被設(shè)置成使用同一個(gè)特定中斷時(shí),系統(tǒng)不能辨認(rèn)哪個(gè)設(shè)備使用中斷線,所以就會(huì)產(chǎn)生混亂。但在嵌入式系統(tǒng)中,花費(fèi)大量的中斷源來(lái)擴(kuò)展串口無(wú)疑是資源的浪費(fèi)。針對(duì)這種情況,為了節(jié)省緊張的系統(tǒng)資源,本方案通過(guò)對(duì)cpld的設(shè)計(jì),采用1個(gè)中斷源高效管理多個(gè)串口的有效方法實(shí)現(xiàn)了將pc主機(jī)上的一個(gè)usb接口擴(kuò)展為8個(gè)通用串口接口,同時(shí)保證了多個(gè)串口中斷的無(wú)漏監(jiān)測(cè)與服務(wù)。

          2 系統(tǒng)硬件設(shè)計(jì)

          本設(shè)計(jì)方案(參見圖1)采用atmel公司的89c52單片機(jī)來(lái)控制串口到usb接口之間的數(shù)據(jù)收發(fā)工作,選用philips公司的usb接口芯片pdiusbd12實(shí)現(xiàn)單片機(jī)與usb器件之間的連接,多串口擴(kuò)展以tl16c554芯片實(shí)現(xiàn),并由一片cpld(altera的epm7064)實(shí)現(xiàn)高效多串口中斷源管理,利用單一的中斷源來(lái)管理多個(gè)擴(kuò)展串口。在pc主機(jī)端,設(shè)計(jì)開發(fā)了wdm設(shè)備驅(qū)動(dòng)程序?qū)sb口進(jìn)行虛擬管理,從而使得windows應(yīng)用程序能以訪問(wèn)普通串口的方式訪問(wèn)串口服務(wù)器上的多個(gè)串口。

          3 cpld設(shè)計(jì)

          本設(shè)計(jì)中用cpld設(shè)計(jì)了譯碼電路、鎖存電路、邏輯或電路、三態(tài)門電路、狀態(tài)機(jī)電路。由于對(duì)宏單元和管腳的要求不是很多,因此選用altera epm7064,44腳,plcc封裝。

          3.1 譯碼電路

          用cpld進(jìn)行pdiusbd12的選址,2片tl16c554共8個(gè)口的選址,以及對(duì)cpld中一位寄存器的選址,共用到a3~a7以及do進(jìn)行譯碼,譯碼設(shè)計(jì)圖如圖2所示。

          (1) pdiusbd12的選址

          由于po口為數(shù)據(jù)地址線,所以要經(jīng)過(guò)地址鎖存器,以及a7,a6一起連到一個(gè)138譯碼器上。因?yàn)閜diusbd12奇地址表示命令,偶地址表示數(shù)據(jù),所以把2個(gè)地址接異或非門后再接到pdiusbd12的片選端。如圖2上的cs2,其地址為0x7000,0x7001。

          (2) tl16c554的選址

          為了選中擴(kuò)展的8個(gè)串口,將a3~a5連入另一個(gè)138譯碼器,將其譯碼為8個(gè)選通端連到每個(gè)芯片的片選上,然后用a6,a7,do的譯碼cs0(見圖2)作為第二個(gè)138譯碼器的低使能端。其8個(gè)口的地址依次為0x0c000,0x0c800,0x0d000,0x0d800,0x0e000,0x0e800,0x0f000,0x0f800。

          (3) 一位寄存器的選址

          cpld內(nèi)的一位寄存器的地址設(shè)定為0x0c001。

          3.2 多串口中斷源解決方案

          其基本原理如圖3所示。

          rs232串口通過(guò)驅(qū)動(dòng)芯片max202或max232轉(zhuǎn)化成ttl電平,通過(guò)串口異步通信器件16c554輸出中斷請(qǐng)求,通過(guò)或門獲得多個(gè)串口的中斷請(qǐng)求,再通過(guò)cpld與中斷控制器相連接。中斷控制線intreq通過(guò)cpld主要是在cpld中做一個(gè)一位寄存器inten(如圖4所示),用作中斷允許位,并根據(jù)16c554的中斷請(qǐng)求intreq和inten的狀態(tài)來(lái)最終生成中斷dly_irq,cpu將實(shí)時(shí)響應(yīng)該中斷請(qǐng)求。

          在中斷服務(wù)過(guò)程中,cpu按順序逐個(gè)檢查多個(gè)擴(kuò)展口的串口中斷源,有中斷請(qǐng)求的就給予服務(wù)。當(dāng)剛剛檢測(cè)過(guò)的中斷又出現(xiàn)時(shí),一方面靠cpld中的移位寄存器intreq鎖存,另一方面,當(dāng)上一中斷服務(wù)完成時(shí),cpld中的8位狀態(tài)機(jī)(如圖7)保證了一定的延時(shí)。此延時(shí)中,中斷控制程序把堆棧中的內(nèi)容返回給cpu的寄存器,恢復(fù)能獲得的響應(yīng)。這樣,即使在多個(gè)串口中斷密集發(fā)生的環(huán)境下,擴(kuò)展的多個(gè)串口仍可獲得實(shí)時(shí)性和可靠性較高的中斷。具體做法如下:

          (1) intreq為n個(gè)中斷的或結(jié)果。

          (2) cpu對(duì)inten只寫,操作過(guò)程分3步:

          ①中斷安裝后設(shè)置inten=1;

          ②進(jìn)入中斷服務(wù)程序后cpu設(shè)置inten=0;

          ③退出中斷服務(wù)程序的最后指令再將inten=1。

          (3)中斷響應(yīng)的時(shí)序圖,如圖5所示。

          在isr置位期間,有中斷請(qǐng)求intreq產(chǎn)生時(shí),此時(shí)如果觸發(fā)了中斷,則會(huì)使上次中斷服務(wù)無(wú)法完成,因而造成中斷丟失。因此,在isr配置期間,將中斷允許inten設(shè)置為o,防止其他中斷請(qǐng)求觸發(fā)中斷,并用intreq鎖存未被響應(yīng)的中斷請(qǐng)求。退出中斷服務(wù)后,得中斷允許inten設(shè)置為1,保證其他中斷請(qǐng)求被響應(yīng),并延遲50μs,以確保此次中斷服務(wù)完全退出。

          (4)中斷控制寄存器的狀態(tài)圖(描述8位狀態(tài)機(jī)的轉(zhuǎn)換)如圖6所示。

          3.3 epm7064的接口電路圖

          本設(shè)計(jì)支持epm7064在線下載功能,其接口圖如圖8所示。


          4 虛擬串口驅(qū)動(dòng)程序設(shè)計(jì)

          為實(shí)現(xiàn)主機(jī)可以如操作本機(jī)串口一樣通過(guò)主機(jī)usb口對(duì)串口設(shè)備進(jìn)行數(shù)據(jù)讀取,主機(jī)端設(shè)備驅(qū)動(dòng)程序需將串口服務(wù)器的8個(gè)串口對(duì)應(yīng)到主機(jī)的8個(gè)虛擬串口上。在wdm設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)中,這樣的功能可以通過(guò)在usb功能驅(qū)動(dòng)程序上層加上一個(gè)過(guò)濾驅(qū)動(dòng)層來(lái)實(shí)現(xiàn)。應(yīng)用程序發(fā)送數(shù)據(jù)到虛擬串口,而過(guò)濾驅(qū)動(dòng)程序則將虛擬串口中的數(shù)據(jù)轉(zhuǎn)發(fā)給usb功能驅(qū)動(dòng)程序,反之亦然?;趙dm的usb設(shè)備驅(qū)動(dòng)程序分層結(jié)構(gòu)如圖9所示。




          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();