目前,許多廠商都提供通用的串行通信芯片,其傳輸方式分為同步方式和異步方式。其中,異步芯片大多與INTEL的8250芯片兼容;而同步方式,由于一般涉及到所支持的傳輸協(xié)議(BSC、HDLC、SDLC等),所以當用戶要求應用特定的同步傳輸協(xié)議時,往往需要設計專用的SRT(同步收發(fā)器)。以前,大多采用通用的邏輯元器件進行設計,這導致了設計和調試過程冗長、系統(tǒng)穩(wěn)定性不高,非常不便。如今,隨著以FPGA和CPLD為代表的可編程ASIC技術的日趨成熟和完善,用戶完全可以根據自己的要求,以EDA技術作為開發(fā)手段,用一塊FPGA或CPLD設計出符合自己需要的芯片。本文以開發(fā)統(tǒng)計時分復用器中的專用同步收發(fā)芯片為例,介紹整個芯片的開發(fā)流程。
1 統(tǒng)計時分復用器系統(tǒng)功能及模塊組成
統(tǒng)計時分復用器完成7路異步數據和1路同步數據的復接工作,其功能框圖如圖1所示,同步串口傳輸協(xié)議如圖2所示。由于傳輸距離較近且路數不多,功能相對簡單。出于系統(tǒng)功耗和成本的考慮,將這個專用的SRT和整個接口控制單元集成到一塊CPLD(XC95144)中。
2 CPLD內部功能框圖及設計
CPLD 內部結構主要由接口控制單元和SRT組成,這里主要介紹一下SRT的結構和功能模塊(見圖3)。由于選用的UART(通用異步收發(fā)器)與INS8250兼容,為簡化主控單元訪問外部通信芯片的程序的編寫,統(tǒng)一操作流程,在SRT的設計上盡量模仿INS8250的結構。
本設計采用模塊化設計。按功能將SRT內部結構發(fā)分為5個模塊,每一個模塊對應一個VHDL的設計文件。這樣設計的好處是有利于各功能模塊的編寫和調試,從而降低了整個SRT的調試難度,提高了軟件的可維護性及可讀性。下面給出各個設計文件的外功能簡介(對于其中幾個重要的模塊還列出了端口描述和部分實現代碼):
?。?)SRTCRTL.VHD
SRTCRTL.VHD 作為SRT的控制模塊,負責地址譯碼,當片選信號有效時將數據線上的數據寫入相應的寄存器。SRT芯片內部共設有接收緩存器、發(fā)送保持器、線路控制寄存器、除數寄存器(高低8位各1個)、自環(huán)控制寄存器等6個控制寄存器,每個寄存器都被分配了1個地址,通過對相應地址進行讀寫,CPU可完成數據發(fā)送、接收、自環(huán)及芯片參數設置等操作。
(2)LOOP.VHD
本模塊的功能是根據用戶的指令,對芯片本身功能進行測試。用戶首先將芯片設置為自環(huán)狀態(tài),使芯片內部發(fā)送數據線與直接接收數據線短接;再通過向發(fā)送保持器寫入特定的數據,與接收緩存器中讀出的數據進行比較,看兩者是否相同,用戶即可判斷芯片是否工作正常。
(3)CLKGEN.VHD
CLKGEN.VHD是波特率發(fā)生器模塊,用來產生發(fā)送同步的時鐘信號doclk。它將除數寄存器高低各8位共16位數據作為除數,對外部2MHz的時鐘源進行分頻。用戶可通過修改除數寄存器的值動態(tài)地改變數據傳輸速率,因此操作方便、靈活。
?。?)RBR.VHD
RR.VHD作為整個芯片的接收模塊,其中包括接收緩存器、接收數據同步、串/并轉換。
端口描述如下:
當接收緩存器中無數據時,ren信號有效,通知發(fā)送方傳數據。然后根據dilck對di信號采樣,一旦緩存器滿,ren無效,dr有效,通知CPU讀數。