新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于EPM7064的多串口管理系統設計

        基于EPM7064的多串口管理系統設計

        ——
        作者:湯少維 (電子科技大學通信與信息工程學院 四川成都 610054) 時間:2007-01-26 來源:《現代電子技術》 收藏

        1 概述

        本文引用地址:http://www.104case.com/article/20971.htm

        串行接口在數據通信中一直扮演著重要角色。他不僅沒有因為時代的進步被淘汰,反而在性能上越來向其極限挑戰。usb接口是當前pc機上的主流接口,但仍然有許多外設使用串口與pc機通信,尤其是在工業控制領域。普通pc機所提供的串口資源往往是不夠的。

        傳統擴展多個串行口的方法是利用多個中斷源,每個中斷通常被分配給單一的設備。這是因為當多于1個的設備被設置成使用同一個特定中斷時,系統不能辨認哪個設備使用中斷線,所以就會產生混亂。但在嵌入式系統中,花費大量的中斷源來擴展串口無疑是資源的浪費。針對這種情況,為了節省緊張的系統資源,本方案通過對cpld的設計,采用1個中斷源高效管理多個串口的有效方法實現了將pc主機上的一個usb接口擴展為8個通用串口接口,同時保證了多個串口中斷的無漏監測與服務。

        2 系統硬件設計

        本設計方案(參見圖1)采用atmel公司的89c52單片機來控制串口到usb接口之間的數據收發工作,選用philips公司的usb接口芯片pdiusbd12實現單片機與usb器件之間的連接,多串口擴展以tl16c554芯片實現,并由一片cpld(altera的epm7064)實現高效多串口中斷源管理,利用單一的中斷源來管理多個擴展串口。在pc主機端,設計開發了wdm設備驅動程序對usb口進行虛擬管理,從而使得windows應用程序能以訪問普通串口的方式訪問串口服務器上的多個串口。

        3 cpld設計

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

        3.1 譯碼電路

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

        (1) pdiusbd12的選址

        由于po口為數據地址線,所以要經過地址鎖存器,以及a7,a6一起連到一個138譯碼器上。因為pdiusbd12奇地址表示命令,偶地址表示數據,所以把2個地址接異或非門后再接到pdiusbd12的片選端。如圖2上的cs2,其地址為0x7000,0x7001。

        (2) tl16c554的選址

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

        (3) 一位寄存器的選址

        cpld內的一位寄存器的地址設定為0x0c001。

        3.2 多串口中斷源解決方案

        其基本原理如圖3所示。

        rs232串口通過驅動芯片max202或max232轉化成ttl電平,通過串口異步通信器件16c554輸出中斷請求,通過或門獲得多個串口的中斷請求,再通過cpld與中斷控制器相連接。中斷控制線intreq通過cpld主要是在cpld中做一個一位寄存器inten(如圖4所示),用作中斷允許位,并根據16c554的中斷請求intreq和inten的狀態來最終生成中斷dly_irq,cpu將實時響應該中斷請求。

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

        (1) intreq為n個中斷的或結果。

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

        ①中斷安裝后設置inten=1;

        ②進入中斷服務程序后cpu設置inten=0;

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

        (3)中斷響應的時序圖,如圖5所示。

        在isr置位期間,有中斷請求intreq產生時,此時如果觸發了中斷,則會使上次中斷服務無法完成,因而造成中斷丟失。因此,在isr配置期間,將中斷允許inten設置為o,防止其他中斷請求觸發中斷,并用intreq鎖存未被響應的中斷請求。退出中斷服務后,得中斷允許inten設置為1,保證其他中斷請求被響應,并延遲50μs,以確保此次中斷服務完全退出。

        (4)中斷控制寄存器的狀態圖(描述8位狀態機的轉換)如圖6所示。

        3.3 epm7064的接口電路圖

        本設計支持epm7064在線下載功能,其接口圖如圖8所示。


        4 虛擬串口驅動程序設計

        為實現主機可以如操作本機串口一樣通過主機usb口對串口設備進行數據讀取,主機端設備驅動程序需將串口服務器的8個串口對應到主機的8個虛擬串口上。在wdm設備驅動程序設計中,這樣的功能可以通過在usb功能驅動程序上層加上一個過濾驅動層來實現。應用程序發送數據到虛擬串口,而過濾驅動程序則將虛擬串口中的數據轉發給usb功能驅動程序,反之亦然。基于wdm的usb設備驅動程序分層結構如圖9所示。




        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通化市| 玉环县| 苏尼特右旗| 克东县| 治县。| 罗甸县| 出国| 上饶市| 宁南县| 璧山县| 汉阴县| 伊金霍洛旗| 郑州市| 陆丰市| 遵义市| 济阳县| 兰西县| 左贡县| 双辽市| 沅陵县| 九龙城区| 凯里市| 奈曼旗| 隆回县| 和顺县| 如东县| 广昌县| 天峨县| 砚山县| 温泉县| 宝坻区| 辽阳县| 准格尔旗| 临武县| 日照市| 拜泉县| 台湾省| 邛崃市| 邓州市| 额尔古纳市| 肥东县|