新聞中心

EEPW首頁 > 電源與新能源 > 設計應用 > 一種高效多串口單一中斷源的芯片設計

一種高效多串口單一中斷源的芯片設計

作者: 時間:2010-07-28 來源:網絡 收藏

  1概述

  隨著單片機技術的不斷發(fā)展,單片機的應用越來越廣泛,其中 51系列的單片機以價格低等優(yōu)勢始終占據著很大一塊市場。但是,單片機串行口的數量通常都不多,比如 8051單片機只有一個串行口,實際使用往往要進行串行口的拓展。傳統(tǒng)方法擴展多個串行口是利用多個中斷源,而在嵌入式系統(tǒng)中,花費大量的中斷源來擴展串口無疑是大量的資源浪費。

  為更好地利用原有的資源去拓展串口,本設計利用去拓展多個串行口,設計一個。該能配合單片機進行數據讀寫及傳送,并且能保證多個串口中斷的無遺漏檢測與服務。下一步,還將對設計進行一系列嚴格的仿真和仿真結果分析。結果表明,該設計具有較高的應用價值。

  2 總體設計

  2.1設計

  本設計是將幾個串行收發(fā)器模塊集成在一塊芯片上,在接收方面,利用一個中斷源向單片機提出中斷請求,再結合單片機的讀寫操作選擇查詢,當發(fā)現某個收發(fā)器有數據時就進行相應的操作;在發(fā)送方面,則由單片機選擇發(fā)送。芯片在功能上分為兩層,下層包括串行收發(fā)器﹑中斷控制管理和地址鎖存三個模塊,上層模塊負責處理模塊的調用、模塊間的信號連接和控制向外傳送數據或標志位,系統(tǒng)結構如圖 1?!?/P>

多串口單一中斷源的芯片設計

  頂層模塊:完成下層各個模塊信號連接,根據不同的地址處理好數據和標志傳送,收發(fā)器的選擇等問題。

  中斷管理模塊:儲存并管理各個收發(fā)器模塊的標志位,如果某收發(fā)器有中斷請求則定時向單片機發(fā)出中斷信號。收發(fā)器模塊:完成數據格式的轉換及數據的接收和發(fā)送,對接收到的數據進行緩存,最多可以緩存 8個字節(jié)的數據。地址寄存器模塊:在地址鎖存允許位下降沿時將地址保存起來。此模塊已放到頂層模塊里。

  2.2 芯片與單片機連接

  芯片設計的目的是為拓展單片機串口,所以如何與單片機聯合工作顯得至關重要。圖 2a是連接的示意圖(右邊為所設計的芯片,只標明了跟單片機相連的引腳及一個收發(fā)器模塊的輸入輸出引腳)。

多串口單一中斷源的芯片設計

多串口單一中斷源的芯片設計

  本設計芯片與單片機的硬件連接比較簡單,其中,并行數據端口 d_inout跟單片機 p0口相連,接收單片機發(fā)出的低 8位地址, ale與單片機地址鎖存允許信號引腳相連,odd_check為奇偶校驗結果輸出引腳,連接由使用者決定。3 模塊設計

  3.1 頂層模塊

頂層模塊在各模塊設計之前作為統(tǒng)籌規(guī)劃整個程序,是設計過程中再繼續(xù)完善和修正的重要部分。在頂層模塊里根據不同的地址輸入,選擇標志或者數據的傳送。為了更好地將兩次操作區(qū)分開來使編程更加容易,論文中還設計了一個標志寄存器rd_check_counter,在不同的操作來時,它的值不同。

  3.2中斷控制模塊

  中斷控制模塊要完成置標志位,定時輸出中斷信號和向單片機傳送標志位信息等功能。模塊接收端有中斷請求到來,中斷控制模塊即將相應收發(fā)器的標志位置 1,在數據被讀取之后,又立刻將標志位清 0。

  3.3收發(fā)器模塊

收發(fā)器模塊結構圖如圖 2b。在接收方面,收發(fā)器模塊實現接收數據,并將數據串轉并,儲存到寄存器里等待單片機的讀取。在發(fā)送方面,收發(fā)器將單片機數據總線送過來的并行數據串行輸出。

  數據接收時數據經過格式轉換后便被放入 8字節(jié)的緩存里面,該緩存在每次數據存入后就啟動計數器,當過一段時間還沒有新的數據存入時,收發(fā)器即可以向中斷控制模塊提出中斷請求并且等待單片機對數據的讀取。發(fā)送數據時,收發(fā)器接收到單片機送來的數據并將其存儲起來,在串行數據發(fā)送設備準備好的情況(txrdy為 1)下再進行格式轉換并發(fā)送,無論接收還是發(fā)送串行數據都是通過外部時鐘進行計數控制的。

  3.4地址寄存器模塊 .

  地址鎖存模塊在 ale信號(單片機地址鎖存允許信號)到來時將地址低 8位鎖存起來,并送給中斷控制和上層模塊使用。

  3.5芯片端口

  上述幾個模塊合成后的芯片外觀及其端口特征描述如下圖 3所示: 1、set_mode(0,1):兩位信號輸入引腳,用于模式的選擇,模式 1和模式 2分別用 01和 10來選擇。2、ale:地址鎖存允許信號輸入引腳,與單片機的 ale相連,在 ale下降沿的時候將地址低 8位鎖存到地址鎖存模塊。3、clk:時鐘信號輸入引腳,時鐘的頻率定為串行數據傳輸頻率的 4倍,如串行通信的波特率是9600bps,則 clk的頻率是 9600×4=38400Hz。

  4、cs:芯片總片選信號輸入引腳,低電平有效。

  5、rd,wr:單片機向芯片讀寫的控制引腳,低電平有效。

  6、rxd1,rxd2,rxd3,rxd4:串行輸入引腳。

  7、INT0:中斷信號輸出引腳,下降沿有效。

  8、odd_check1_o,odd_check2_o,odd_check3_o,odd_check4_o:送給單片機的奇偶校驗標志信號輸出引腳。

  9、rdfull:數據緩沖器標志信號輸出引腳,該信號用‘1’和‘0’表明是否有收發(fā)器的緩存了數據尚未被提取。

  10、rdrdy1,rdrdy2,rdrdy3,rdrdy4:引腳分別用于表明各個收發(fā)器是否正忙,從該收發(fā)器開始接收數據到數據被單片機讀取整個過程,其相應的rdrdy引腳輸出‘1’。

  11、txd1,txd2,txd3,txd4:串行數據輸出引腳。

  12、tdempty:該引腳輸出為‘1’時表明芯片已沒有正在發(fā)送或者是將要發(fā)送的數據。

  13、txrdy1,txrdy2,txrdy3,txrdy4:分別為收發(fā)器 1、2、3和 4可否進行發(fā)送控制輸入端,輸入為‘1’表示可以進行串行數據的發(fā)送。

  14、d_inout(7:0):雙向數據總線。應與單片機 p0口相連。

  15、addr_h(7:0):地址高 8位。

4程序的綜合及仿真

4.1 設計綜合及實現

  本設計綜合使用的工具是 Xilinx公司的 XST,它是內嵌在 ISE7.2i里面的。綜合過程將把軟件設計的 HDL描述與硬件結構掛鉤,是將軟件轉化為硬件電路的關鍵步驟。本設計綜合時選用的芯片是Spartan-ⅡE系列的xc2s100e。

  綜合工具生成網表文件后,就可以實現設計,實現的步驟有:轉換(將多個設計文件合并為一個網表),映射(將網表中的邏輯符號(門)整合到物理元件中),布局布線(將元件放到器件中,并將它們連接起來,同時提取出時序數據,并生成各種報告)。

4.2 綜合布線結果及分析

多串口單一中斷源的芯片設計

多串口單一中斷源的芯片設計

  圖 4為資源利用結果圖表,由圖可見,slices的占用量為 722個,占該芯片 slices總數的 60%。slice registers的使用數量為 591個,占該芯片總數的 24%。4輸入查找表的使用總量是 915個,占該芯片查找表總數的 38%。

  4.3 布線后仿真

  本文中所舉出的測試均為布線后的仿真測試,該仿真的仿真延時文件包含的延時信息最全,不僅包含了門延時,還包含了實際布線延時,所以布局布線后仿真最準確,能夠較好的反映芯片的實際工作情況。

多串口單一中斷源的芯片設計

多串口單一中斷源的芯片設計

  4.4測試結果及分析

  上面已經對各模塊的各種功能進行了很多測試,為了更好地驗證所設計的芯片在實際中使用的可靠性,我們有必要進行一次總體的測試,本次仿真測試共包括單片機 5次讀標志,4次提取數據,1

  次發(fā)送數據。測試結果及分析如下圖 5g所示:

多串口單一中斷源的芯片設計

  測試結果我們還可以看到:

  1)芯片各收發(fā)器模塊可以同時工作

  2)發(fā)送與接收可以同時進行

  3)接收緩存正常,并且在接收數據不足 8字節(jié)超時后時會自動停止緩存,然后向芯片中斷管理模塊提出中斷請求

  4)中斷信號能夠正常輸出

  5)各收發(fā)器的中斷請求無遺漏

  6)收發(fā)器模塊的數據被讀取完畢之后,中斷標志自動清除,芯片不再發(fā)出中斷請求信號。

  5 結 論

  本文設計了一種實現高效的芯片。本設計的功能特點:在中斷管理方面,利用單一的中斷源來管理多個擴展串口,并保證多個串口中斷的無漏檢測與服務;在數據傳送方面,實現串行數據的接收和發(fā)送,并且按照數據傳送是否有奇偶校驗位分為兩種工作模式,在接收時具有數據緩存的功能。并且上述各個功能模塊在單一的可編程邏輯器件芯片就能實現。

  上述整個過程設計均采用 VHDL編程實現,比以往電路手工設計的方法更加靈活,具有比較大的發(fā)展空間。文中分別利用 ModelSim和 ISE對程序進行仿真和綜合布線,在仿真平臺上驗證了設計的可行性,具有較好的應用前景。

  本文作者創(chuàng)新點:單一中斷源的芯片,利用單一的中斷源來管理多個擴展串口,各個功能模塊在單一的可編程邏輯器件芯片就能實現。



評論


相關推薦

技術專區(qū)

關閉