新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用ispLSI實現單片機與計算機間的通信

        利用ispLSI實現單片機與計算機間的通信

        作者: 時間:2012-02-07 來源:網絡 收藏

        結構簡單、開發方便,能夠滿足各種應用領域的需求,在工業控制及自動化裝置中得到了廣泛的應用。它既可以單獨使用,也可以多片協同工作或作為的信號預處理器,在這種情況下,問題就成了限制系統性能的瓶頸。通常使用的方式有串行和并行兩種,串行方式硬件結構簡單但數據傳輸速率低,不適合大批量數據的傳送;并行方式下使用最多的中斷方式,以期提高CPU效率。但中斷方式也存在不少問題,除了具體的中斷服務外,保護、恢復斷點和寄存器的內容、查取中斷向量等也占用不少CPU時間,如果數據較長,傳送一組數據CPU會被多次中斷,大量的斷點和寄存器的保護、恢復等工作特別影響CPU 效率。為了解決這一問題,本文提出了一種新的方式,稱之為中斷查詢方式,并在系統可編程邏輯器件 ispLIS1016了通信接口。

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

        1 通信原理  

        中斷查詢方式的實質是中斷方式和查詢方式的結合:通信雙方由中斷方式進入數據傳送狀態,之后雙方在中斷內查詢方式完成數據傳送,直至一組數據傳送完畢,各自退出中斷服務。

        基于這種方式,通信接口應具有數據鎖存、狀態控制和中斷產生等功能。如圖1—1所示為接口框圖,數據鎖存由鎖存器m和鎖存器s完成,分別鎖存送往主的數據;中斷和狀態信號由狀態控制器形成,包括中斷信號(INTm和INTs),數據鎖存器m滿(FULLm)、鎖存器s滿(FULLs),以及數據傳送完畢(ENDm和ENDs)等狀態,供通信雙方查詢;通信數據和各狀態信號均通過數據總線傳送,通信雙方讀數據還是讀狀態由各自的地址譯碼器控制,通過數據選擇器選擇;數據的三態輸出由數據緩沖器。我們以發送數據為例說明數據傳送過程:當計算機將數據寫入鎖存器s時,狀態控制器產生一中斷請求信號INTs,并置狀態FULLs=1、ENDs=0;單片機響應中斷后便查詢方式接收數據,查詢狀態信息FULLs和ENDs,每次FULLs=1時讀取一個數據,同時該讀信號通過狀態控制器使FULLs清0,并產生中斷信號INTm;由于處于發送狀態,計算機進入中斷后,先檢查 FULLs,等待FULLs=0后向數據鎖存器s寫數據(僅為利用該寫信號)將ENDs置位并退出中斷,單片機查到FULLs=0但ENDs=1后停止接收數據也退出中斷,一次通信完成。

        可見,利用這種方式進行數據傳送,無論數據量多大,每次數據傳送過程中CPU只響應一次中斷,與單一的中斷方式比較,節約了CPU的中斷響應時間,對于大批量數據的傳送,不僅效率高,而且數據量可任意改變,使用非常靈活。

        68.jpg

        2 接口功能的  

        由圖1—1所示的框圖可以看出,上述中斷查詢接口不僅需要具有鎖存器和緩沖器的數據通道,還要有中斷、狀態控制及地址譯碼和數據選擇邏輯,電路是比較復雜的。但是,可編程邏輯器件和電子設計自動化工具的出現,使得復雜電路可在單片可編程邏輯器件上實現,不僅使設計簡化,而且使硬件設計象軟件一樣易于修改。針對前述中斷查詢接口,我們采用LATTICE的在系統可編程邏輯器件is-pLSI1016實現其功能。這樣,該接口的設計就轉化為對其電路描述文件的設計,可以采用原理圖或 HDL硬件描述語言。與原理圖比較,硬件描述語言不僅設計、閱讀和保存方便,而且易于仿真和進行邏輯綜合,更適合對復雜電路的描述。因此我們采用 ABEL-HDL硬件描述語言進行設計。

        在Synario環境中,對選定的器件加入ABEL-HDL資源文件,輸入相應的模塊名和文件名后,便可打開ABEL-HDL語言編輯窗口[2]。

        利用ABEL語言進行電路設計的關鍵在于各信號的定義和相應的邏輯描述。就前述接口而言,地址總線、數據總線、讀、寫及中斷信號均直接與通信雙方的 CPU相連,顯然應定義為引腳(pin);而數據鎖存器及各狀態信號通過數據選擇器與數據總線相聯,故為節點(node),如表2—1所示。其中,A、 D、RD、WR、Q分別表示地址線、數據線、讀、寫及數據鎖存器輸出信號,下標m和s分別表示主計算機和單片機;表中將數據輸出定義為緩沖器(buffer)是為了直接利用1016各I/O腳的三態輸出功能,以省去圖1—1中的數據緩沖器。另外,狀態信號FULL和END應為具有異步清零和置位功能的寄存器,以存貯數據交換過程中相應的狀態信息,但是在可編程邏輯器件中設計異步控制是復雜和浪費資源的,本文將它們設計為基本的RS 觸發器,故定義了相應的反向輸出節點FUL1和EN1。

        67.jpg

        ABEL語言設計文件中各信號的邏輯關系可以多種方式給出,本設計主要采用寄存器和RS觸發器等,故以采用邏輯方程為宜。由前述接口原理可以看出,該接口的通信雙方均需3個端口:數據輸入/輸出口、狀態口及END信號置位口。設主計算機對應的口地址為300H、308H和310H,單片機的3個口地址分別為8000H、8010H和8020H,對照圖1—1所示的框圖和接口的工作原理,電路的ABEL語言方程可以按功能塊給出。

        數據鎖存器是數據可靠傳送的基礎,對主計算機而言,向300H單元寫入數據就是將數據寫入鎖存器s中,也就是說鎖存器s的輸入信號為主計算機的數據總線,時鐘為主計算機對300H單元的寫信號,對應的ABEL語言方程可表示為:

        66.jpg

        線和數據線的集合。為減少系統的片外接線,式(2—1)將鎖存器Qs的輸入定義為三態數據輸出的引腳(.pin),在保證接口功能的前提下,實現了在is-pLSI1016片內Qs輸入端與數據總線的連接。

        數據選擇器根據通信雙方對不同地址的讀取選擇不同信號,其ABEL語言方程為:
        Ds.oe=!RDs&((ADRs==^h8000)#(ADRs==^h8010));(2—3)
        when(ADRs==^h8000)then Ds=Qs;else when(ADRs==^h8010)then Ds=STs; (2—4)

        式中,STs=[FULLs,FULLm,ENDs,ENDm,x,x,x,x,x,x,x,x,x,x,x,x],12個任意值x的引入是為了使STs與數據總線寬度匹配。由于省去了圖1—1的數據緩沖器,數據選擇器的輸出即為數據總線,故其三態控制端為單片機讀數據(8000H)和讀狀態(8010H)信號的“或”信號。

        狀態信號是數據正確傳送的保證,也是通信雙方讀寫數據的依據。從時序上講,FULLs的置位和清零由Qs的寫信號和讀信號觸發,即FULLs由方程(2—5)和(2—6)確定:
        !FULLs=(!(ADRm==^h300)#WRm)&  FUL1s;(2—5)
        !FUL1s=(!(ADRs==^h8000)#RDs)&  FULLs;(2—6)
        其中FUL1s為FULLs的反相輸出端。ENDs的清零與FULLs的置位同時產生,但其置位必須由主計算機寫310H單元觸發,故ENDs的ABEL語言方程為:
        !ENDs=(!(ADRm==^h310)#WRm)&EN1s;
        (2—7)
        !EN1s=(!(ADRm==^h300)#WRm)&ENDs;  

        顯然,無論是主計算機將數據寫入Qs,還是主計算機將數據從Qm中讀走,INTs都應置位,因此INTs=FULLs+FULLm,但這樣若FULLm為零則INTs將始終為1,無法產生中斷。為解決這一問題,我們將INTs的方程寫為:

        INTs=FULLs#!(FULLm#ENDm);(2—9)

        使其在ENDm為零時按INTs=FULLs+FULLm運算,只要由軟件上控制,保證每次通信前雙方的狀態為:ENDs=ENDm=1,FULLs=FULLm=0,即可實現正確的中斷和通信。顯然,利用同樣的方法不難寫出主計算機一方各信號的邏輯關系,本文不再累述。

        通過以上設計,我們實現了主計算機與多個80C196單片機系統之間的數據通信,將各80C196系統置于主計算機的總線擴展槽中,使整個系統不僅通信速度快,而且性能穩定可靠,效果良好。

        [參考文獻]
        [1] 劉樂善等.微型計算機接口技術原理及使用.華中理工大學出版社,1996.3
        [2] 黃正瑾.在系統編程技術及其應用[M].東南大學出版社,1997.8



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 赤壁市| 韩城市| 玉山县| 秭归县| 湘乡市| 瓮安县| 武山县| 淅川县| 洪湖市| 绵阳市| 社旗县| 内乡县| 黄梅县| 武功县| 若羌县| 清新县| 太康县| 全椒县| 黄浦区| 阿图什市| 丰台区| 柳江县| 金溪县| 滦南县| 宜宾县| 辽中县| 旬邑县| 龙泉市| 文昌市| 大洼县| 平原县| 黔南| 湘潭县| 康定县| 黔江区| 西充县| 贵州省| 宣威市| 沅陵县| 湘阴县| 鄄城县|