馮春陽,張遂南
摘 要:為解決沒有三線制同步串口的微處理器與外圍串行設備通信困難的問題,通過研究三線制同步串行通信的機理,首先構建基于傳統設計所實現的硬件電路接口,然后利用可編程邏輯器件PLD,設計基于CPLD/FPGA的三線制同步串行通信控制器通用接口。通過對各功能模塊的詳細介紹,實現硬件電路的小型化和靈活移植性,減小了整個系統的體積和功耗。經實際項目使用,結果表明基于該接口結構實現了微處理器與外圍串行設備間的三線制同步串行通信的功能。
關鍵詞:三線制;同步串行通信;接口;PLD;CPLD/FPGA
中圖分類號:TP336文獻標識碼:A
文章編號:1004-373X(2009)19-080-03
Design of Three-wire Synchronous Serial Communication Interface
FENG Chunyang,ZHANG Suinan
(Xi′an Microelectronic Technology Institute,Xi′an,710054,China)
Abstract:In order to resolve difficulty of the communication between processor without three-wire synchronous serial interface and peripheral serial equipment,after studying the principle of three-wire synchronous serial communication,hardware circuit based on traditional method is introduced.Adopting PLD technology,universal interface of three-wire synchronous serial communication based on CPLD/FPGA,particularly each functional module are introduced,the miniaturization and flexible transplant of hardware function are realized,and the volume and power of the system are reduced.In practical projects,the architecture based on CPLD/FPGA has realized function of the synchronous serial communication between the processor and peripheral equipment.
Keywords:three-wire principle;synchronous serial communication;interface;PLD;CPLD/FPGA
0 引 言
航天工程領域中,星地通訊等遠距離遙測遙控是嵌入式衛星數管計算機重要功能之一,利用三線制同步串行[1]遙測遙控通道對指令和數據進行收發操作是通信鏈路的重要環節。
目前許多處理器芯片都已集成了同步串行接口,但基于三線制同步串行[2]接口的處理器并不多。利用傳統設計方法[3]所實現的三線制同步通信硬件電路接口雖然能滿足一般工程設計要求,但在“低成本、小體積、低功耗和靈活性”設計理念的推動下,傳統設計顯然弊大于利。采用可編程邏輯器件CPLD/FPGA技術[4],對三線制同步串行通信接口電路進行結構設計與實現,可以大幅度減小系統體積,降低功耗,提高設計的靈活度。同時,還可以在其中增加其他邏輯功能模塊,并能很方便地應用到相關的嵌入式系統中。
1 三線制同步串行通信機理
三線制同步串行通信[5]時,發送端和接收端必須使用共同的時鐘源才能保持它們之間的準確同步。為達到準確同步的目的,其中一個方法就是采用編碼和解碼的原理,即在發送端利用編碼器把要發送的數據和發送時鐘組合在一起,通過傳輸線發送到接收端,在接收端再用解碼器從數據流中分離出接收時鐘。常用的編碼解碼器有曼徹斯特編碼解碼及NRZ-L碼。本文中收發信號采用的碼型是NRZ-L碼。
三線制同步串行通信主要包括三個信號:采樣信號(也叫幀同步信號)、時鐘信號和串行數據信號,其時序邏輯關系如圖1所示。
從圖1可看出,數據接收或發送時,首先幀同步信號先觸發一個瞬時啟動脈沖,之后保持低電平有效,時鐘信號緊隨其后,數據在時鐘信號的上升沿保持穩定,并開始采樣和傳輸,每個時鐘周期收發一位字符數據,串行數據成批連續發送和接收。
圖1 三線制同步串行通信時序關系圖
2 三線制同步串行通信控制器接口結構設計
2.1 基于傳統設計的硬件電路接口實現
在三線制同步串行通信控制器接口的傳統硬件電路設計[6]中,需使用多片元器件來實現其功能,包括:異步四位計數器、移位寄存器、8位D觸發器、與門、與非門和反相器等主要功能器件,接口電路原理圖在Protel 99 SE[7]中實現。
三線制同步串行通信控制器接收接口硬件電路如圖2所示。
從圖2中可看到,通過復位信號rstn、片選信號CS、門控信號strobe和讀寫信號RW等的不同組合,實現邏輯控制功能。通過異步四位計數器SN54HC161的計數功能,使得移位寄存器SN54HC164順利進行數據的串/并轉換,將8位并行數據通過8位D觸發器SN54HC374鎖存在內部總線上等待系統接收。在輸出端,通過雙D觸發器SN54HC74產生中斷信號int,通知系統內的微處理器進行數據接收操作。
三線制同步串行通信控制器發送接口硬件電路如圖3所示。
從圖3可知,系統時鐘start-clk通過分頻電路模塊產生發送時鐘原始信號code-clk,用于電路的時鐘狀態控制。系統內的微處理器將要發送的8位并行數據通過8位D觸發器SN54HC377,將數據鎖存在其Q端口等待發送,然后在異步四位計數器SN54HC161的計數功能控制下,移位寄存器SN54HC165進行數據的并/串轉換操作。在輸出端,通過雙D觸發器SN54HC74產生中斷信號,然后開始通過單向總線驅動器SN54HC244進行幀同步信號、時鐘信號及數據的發送操作。
2.2 基于CPLD/FPGA的接口結構設計
為解決傳統硬件電路元器件多,功耗大,體積大等缺點,利用CPLD/FPGA[4]技術,同時結合VHDL[8]硬件描述語言設計三線制同步串行通信控制器接口已成為一種必然,結合三線制同步串行通信機理,設計出了基于CPLD/FPGA [9,10]的三線制同步串行通信控制器接口內部結構[11],其功能結構如圖4所示。
整個三線制同步串行通信控制器接口的內部結構主要由時鐘分頻模塊、系統接口控制邏輯、數據接收模塊、數據發送模塊等四大模塊構成。
圖2 三線制同步串行通信控制器接收電路
圖3 三線制同步串行通信控制器發送電路
時鐘分頻模塊主要用于數據收/發模塊產生同步時鐘信號。系統接口控制邏輯主要用于各種邏輯功能信號的控制,同時還可以接收中斷仲裁邏輯模塊產生的中斷信號,控制數據的接收或者發送操作。
數據接收模塊是三線制同步串行通信控制器接口進行數據接收的核心部分,其模塊結構如圖5所示。
圖4 三線制同步串行通信控制器接口結構圖
圖5 數據接收模塊結構圖
數據接收流程:在幀同步脈沖信號觸發下,串行數據在時鐘信號rclk上升沿到來時保持穩定,并通過rdata信號線進入數據接收模塊。在該模塊內部,串行數據經過串/并變換,接收FIFO作為數據緩沖器,將接收到的數據鎖存在VHDL程序指定的兩個地址寄存器中,一個地址單元存儲數據的高八位,另外一個地址單元存儲數據的低八位,當數據存滿這兩個地址單元后,接口向系統發出一個“接收緩存滿”的接收中斷標志int,系統微處理器響應后,數據被全部取出,并行數據被送往系統的數據總線上,重復進行相同操作,直至連續接收完所有數據,數據接收過程結束。
數據發送模塊也是三線制同步串行通信接口進行數據發送的核心部分,其模塊結構如圖6所示。
圖6 數據發送模塊結構圖
數據發送流程:在sgate幀同步脈沖信號觸發下,系統數據總線上的并行數據在時鐘信號sclk上升沿到來時保持穩定,并通過數據發送模塊開始數據發送。在模塊內部,首先發送FIFO數據緩沖器,當并行數據存滿該緩存單元后,數據發送模塊向系統發出一個“發送緩存滿”的發送中斷標志int,系統微處理器響應后,并行數據從發送FIFO內讀出,經過并/串變換成串行數據,最高位MSB最前,最低位LSB最后,并被送往發送數據信號線Sdata上,發送至外圍設備接口,重復進行相同操作,直至發送完畢所有數據,數據發送過程結束。
3 結 語
本文在介紹了三線制同步串行通信機制基礎上,首先對三線制同步串行通信接口進行了硬件電路設計,然后針對傳統電路設計方式的不足,構建了基于CPLD/FPGA的三線制同步串行通信控制器接口結構,詳述了各個功能模塊及其工作原理,設計合理,并且滿足了實際應用要求。目前,此接口結構模塊已作為FPGA設計中的關鍵子模塊被成功應用于某航天項目及其配套的硬件測試平臺中。
參考文獻
[1]張德民.數據通信[M].北京:科學技術文獻出版社,1997.
[2]楊承富,徐志軍.SPI總線接口的FPGA設計與實現[J].現代電子技術,2004,27(2):73-74.
[3]侯伯亨,李伯成.十六位微型計算機原理及接口技術[M].西安:西安電子科技大學出版社,1992.
[4]任曉東.CPLD/FPGA高級應用開發指南[M].北京:電子工業出版社,2003.[5]MAXIM Corp.SPI/I2C Bus Lines Control Multiple Peripherals[EB/OL].http://www.maxim-ic.com/an4024.2007.
[6]李伯成.基于MCS-51單片機的嵌入式系統設計[M].西安:西安電子科技大學出版社,2005.
[7]趙晉.電路設計與制版Protel 99 SE高級應用[M].北京:人民郵電出版社,2000.
[8]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2001.
[9]王彥.基于FPGA的工程設計與應用[M].西安:西安電子科技大學出版社,2000.
[10]李玉山,來新泉.電子系統集成設計技術[M].北京:電子工業出版社,2002.
[11]張樹剛.基于FPGA的智能通信控制器設計[D].西安:西安微電子技術研究所,2007.
[12]廖彬彬,張福洪,尚俊娜.SPI總線接口的SoPC模塊設計與實現[J].現代電子技術,2008,31(2):13-16.