|
|
| <!--插入廣告JS代碼--> |
摘要:簡要介紹串行通信口芯片的接口、功能,詳細討論了串行通信口的系統級、行為級、RTL級的設計過程,并在RTL級設計中提出了幾種實現資源共享的方法,精簡了系統設計結構,有效地減小了芯片的面積。
關鍵詞:串行通信;幀同步;行為級;寄存器級;資源共享1 引言
數字信號處理的技術已經廣泛地用到許多方面。基于DSP的基本運算而設計的通用DSP和面向語言的計算機相比有幾個特點:具有適應數字信號處理算法基本運算的指令;有適應信號處理數據結構的尋址機構;充分利用算法中的并行性。因此,通用DSP在數字信號處理技術應用中具有很高性能[6]。
串行通信接口8251A以其較齊全功能和靈活的配置得到廣泛的應用。但當它工作在同步方式下,發送開始,需要搜索同步信號,而內部同步信號由一、二同步字符的匹配來觸發,這樣勢必會降低其通信速率;同時傳輸的字長相對較短,而且在異步方式下,其波特率相對固定,因此從總體來說,其整體性能不高,適合應用在較低端的微處理器串行通信。
在通用DSP中,作為整機性能的考慮,要求有高性能的串行通信口匹配。
2 總體功能的考慮
在32位浮點DSP中,將高性能的串行通信口和內部基于數值RISC體系的高性能微處理器(MPU)集成在同一芯片上構成一個片上系統[1~3,7],接口和片上系統的MPU部分以及和外圍通信設備的接口關系如圖1所示。
發送時鐘(TCLK)、接收時鐘(RCLK)、發送幀同步信號(TFS)和接收幀同步信號(RFS) 各引腳的功能顯然,它們可配置成串行通信口方式和通用的I/O方式,在串行通信口方式下,它們可由內部產生,也可由外部設備給出,因此是雙向的;在通用的 I/O方式,它們可作為通用的輸入和輸出口,因此也是雙向的。
發送端口(TD)、接收端口(RD)也可配置成串行通信口方式和通用的I/O方式,在串行通信口方式下分別作為數據的發送和接收端口,是單向的;在通用的I/O方式,它們可作為通用的輸入和輸出口,因此是雙向的。
與MPU輸入輸出控制接口相連的信號有地址總線、數據總線、時鐘及復位信號,而發送中斷、接收中斷信號則是作為串行通信口向CPU的中斷請求信號,用來指示CPU可以向發送緩沖器加載和讀取接收緩存器的數據中斷標志。
基于32位浮點DSP芯片的RISC體系結構的考慮,以硬件空間的并行性來達到執行速度的大幅度提高,在此確定串行通信口的整體要求如下:① 僅設計同步工作和握手方式,可以傳輸的字長為8、16、24、32位的數據;② 串行通信口可以工作于串行接口方式和通用的I/O方式;③ 硬件上發送部分和接收部分并行,構成全雙工通信;④ 本設計中的變量寄存器均采用小端序排列,且發送端口和發送移位寄存器的高端相連,而接收操作則是將接收端口和接收移位寄存器的LSB相連,在DSP上可集成兩個相同的串行通信口,這樣一個串行通信口發送的數據,可以被另外一個串行通信口按原來的順序接收,反之也成立,這樣傳輸的數據在兩個串行通信口形成通路,可以很方便地驗證其數據傳輸的正確性。
3 串行通信口的設計
3.1 系統級設計
為了實現上述要求,串行通信口在系統級上由與MPU接口電路、 波特率發生器、發送電路和接收電路四部分構成。
3.1 .1 MPU接口模塊
MPU接口電路實現內部CPU對串行通信口寫控制字,讀狀態字、讀取接收來的數據和加載待發送的數據;設計了總體控制寄存器、發送端口(TCLK、 TFS、TD)配置寄存器、接收端口(RCLK、RFS、RD)配置寄存器、波特率發生器控制寄存器、波特率發生器計數器、波特率發生器周期寄存器來構成控制和狀態寄存器,設計了發送緩沖器和接收緩沖器構成數據寄存器。
3.1.2 波特率發生器模塊
波特率發生器模塊給發送器和接收器提供發送數據和接收數據的比特時鐘,包括提供標準波特率和各種非標準波特率的比特時鐘,標準波特率一般式用作通信雙方進行異步串行通信,而非標準波特率一般用作高速同步通信。要實現上述功能,首先需要一個60MHz的主時鐘,主時鐘先經過2分頻,再通過2^n分頻器,n值最大為16,根據n值的不同能得到28.6bps~ 1.875M bps的各種標準波特率。
3.1.3 發送和接收電路模塊[3]
發送和接收電路的框圖如圖2所示,包括數據通道和控制邏輯兩部分的設計。數據通道部分實現的數據發送和接收,同時實現必要的并串和串并轉換。
發送通道:32位發送緩沖寄存器TRR、32位發送移位寄存器TSR、發送端口TD;
接收通道:接收口RD、32位接收移位寄存器RSR、32位接收緩沖寄存器DRR;
在字長計數器控制下可以傳輸8、16、24或32位/字符的數據。
控制邏輯實現數據通道按配置的工作方式進行發送和接收數據,控制字和狀態字分別由控制寄存器和狀態寄存器給出,這樣可有效地實現其時鐘同步。
3.2 行為級設計
行為級設計是將硬件的系統級自然語言描述轉換為真值表、狀態圖或算法模型的過程,其實質對應著進程的劃分。因發送和接收電路構成串行通信口的主體,故本部分較為詳細地闡述發送和接收部分的行為級設計[4,5]。
3.2.1 數據發送
數據發送電路可由如下兩個進程組成,如圖3所示。

① 發送緩沖器加載進程。如果發送移位寄存器為空,且是時鐘的上升沿,發送緩沖器的數據加載到發送移位寄存器,同時TRDY信號置位,從而使發送中斷信號TINT置位,以作為請求CPU加載發送緩沖寄存器的中斷信號。
等待擴展總線對發送緩存器加載,如一旦加載,則TRDY='0' ,如果幀同步信號由內部產生,則在TDRY的下降沿2.5個發送時鐘周期后,幀同步信號TFS被置位。
② 移位以及數據的發送進程。設計中考慮串行通信口能夠工作于標準和連續方式。
在標準方式下,由幀同步信號TFS來啟動發送移位寄存器的移位以實現數據的發送,同時字長計數器也被啟動以控制發送的字長。
在連續的方式下,當連續方式控制位置位,則由TRR_TO_TSR ='1' 來啟動器移位進程;當該位不置位的情況,早于一個發送字的最后三位之前加載發送緩存器,這樣在TRR_TO_TSR='1'時,TFS也已經置位,從而連續方式亦可建立。下面是它的部分VHDL程序:
Run_loop:loop
Load_TSR: Process ( empty ) --加載移位寄存器進程
begin
Wait until TCLK'event and TCLK='1' and empty='1';
TRR_to_TSR<='1'; --實現對發送移位寄存器的加載
TRDY<='1';
TINT<='1';
End processs;
Load_TRR:process( write ) --加載發送緩沖器進程
begin
Wait until TCLK'event and TCLK='1' and write ='1'; --利用write對發送緩沖器的加載
TRDY<='0';
TINT<='0';
Wait until TCLK'event and CLK='1';
Wait until TCLK'event and TCLK='1';
Wait until TCLK'event and TCLK='0'; --幀同步信號在加載TRR后的2.5個TCLK
TFS<='1'; --自動產生(標準方式)
End process;
Transmitt:Process --移位及串行發送進程
Variable count :integer:=0 ;
begin
If (count<=wordsize)
Wait until TRR_to_TSR='1'and TFS'lastvalue='1'and TFS'event and TCLK'event and TCLK='1';
TSR[wordsize-1:0]=TSR[worsize-2:0]&
'0'; --左移
TD<=TSR[wordsize-1];--從高位發送
count:=count+1;
empty<='0';
elsif
empty<='1';
end if;
end process;
end loop;
3.2.2 數據接收
數據接收部分的串并轉化電路,在設計中可由 Huffman式Moore 狀態機或者微代碼控制單元來實現其控制單元的設計。圖4給出8位數據的狀態轉換圖。
當RSR_to_DRR='1'時,即出現接收移位寄存器對接收緩沖器的加載,則RRDY='1',從而使RINT='1' 置位,作為指示CPU可通過擴展數據總線將接收緩存器的數據讀走的信號;同時設計中需要另外考慮CPU內部數據總線是32位的,當接收的數據是8位、16 位時,需將移位寄存器中的數據拼接成32位,再一起將其加載到DRR中,這樣可以減小對擴展總線帶寬的要求和不必要的總線沖突。
3.3 寄存器傳輸級的設計
根據結構化的設計方法,在寄存器傳輸級的設計中[4],首先將行為級的算法描述進一步分解成數據流和控制流,在硬件上對于其數據通道和控制通道;同時將算子調度后不在同一控制步執行的同類運算及路徑,盡量共用同一個功能部件。本設計重點考慮了其資源共享問題。以下以發送過程為例,進行闡述。
通過擴展數據總線對發送緩存器的數據加載,到發送移位緩沖器被加載以及移位寄存的數據移位到發送端口,這些構成了數據發送的路徑。在移位過程中,字長計數器執行對字長的計數。這部分構成發送過程的數據通道。
本串行通信口是基于RISC面向寄存器堆的體系結構,因此其控制字、狀態字和外圍通信設備接口信號的配置、發送時鐘的設置,都是通過對和用戶接口寄存器的加載和讀取來實現的。在設計中通過設定工作方式、控制字等寄存器變量,利用這些變量,通過硬布線邏輯實現對數據通道的控制。
發送時鐘的生成也是設置了三組變量寄存器:16位預置周期大小的寄存器、16位行波計數器構成的數據通道、16位發送時鐘配置的變量寄存器,且通過硬布線邏輯構成控制通道來實現所需配置的功能。此設計考慮的資源共享主要有以下五種情況:
① 串行通信口可以配置成固定發送時鐘頻率的標準、連續方式、可變發送頻率的標準、連續方式以及握手方式五種不同方式,但都共用同一個數據通道。
② 對發送時鐘引腳、發送幀同步信號引腳以及發送端口,可以配置成串行通信口方式和通用I/O方式,也是分別共用一個數據路徑,利用選擇器對不同情況進行選擇來實現資源的共享。
③ 對于字長計數器而言,分別有8、16、24和32位的情況,應用6位的計數器加和一個四端口選擇器來實現其資源共享。
④ 共用一個內部總線緩沖器,當CPU需要讀取相關寄存器中的內容時,由讀信號將其內容讀到內部緩存器中加以寄存,等到外部總線為空閑時,才將其內容讀到外部總線,因為同一控制步中不可能同時有兩個或兩個以上的讀寄存器的操作發生,故可以共享同一內部總線緩沖器。
⑤ 地址譯碼的資源共用,對不同寄存器的訪問,因為其高位相同,可共用其高位的地址譯碼;對于上述第四種情況的內部總線緩存器的讀出,因其低位不同在此由高位來構成譯碼即可將讀信號選中的寄存器的內容讀出。
4 仿真結果
下面給出串行通信口兩種工作方式的RTL級靜態功能仿真波形。
圖5所示是串行通信口工作于握手方式,發送8位數據下的波形圖,由TFS的下降沿啟動數據的發送,TD首先發送一個前導"1"作為發送的請求位,而接收端口RD在接收數據之后發送一個"0"作為發送請求的回應位,TCNT為發送的字長計數器的滿標記。
圖6所示為串行通信口配置成固定標準方式,發送8位數據下的波形圖,其中TFS的電平極性為負,由TFS的上升沿啟動數據的發送,且它在發送數據的最后一位已被觸發,因此可實現連續發送數據,即可實現連續工作方式,TCNT為發送的字長計數器的滿標記。
5 設計結果
在整個設計過程中,首先用C語言實現串行通信口的算法級,然后用VHDL設計RTL級電路,在View logic 系統中進行模擬驗證;接著用Synopsys 工具綜合得到門級電路,設計采用0.6μm CMOS工藝庫;最后,采用Cadence 軟件中的 Silicon Ensemble 進行版圖設計。電路規模為 6000 門左右,此電路目前正在進行驗證。串行通信口模塊總面積約為 7mm.2 ,同時,經過32位浮點DSP系統級的總體功能仿真驗證和版圖寄生參數提取后時序性能仿真驗證,串行通信口模塊邏輯功能和性能設計可以滿足系統的總體要求。
6 結束語
前端設計是獲得高性能串行通信口電路的前提。本文較為詳細地討論了串行通信口系統級、行為級和寄存器傳輸級設計。在此基礎上,根據其工作特點,即算子調度后結果的特點,提出資源共享的五種方案,可大大優化硬件資源的分配,并有效減小芯片面積和功耗。
參考文獻:
[1] MONTANARO J, et al. A 160MHz 32b 0.5W CMOS RISC microprocessor [A]. Int Solid-state Circuits Conf, Digest of Technical Papers[C]. Itami,Japan 1996,214-215.
[2] DOLLE M, JHAND S, LEHNER W, et al. A 32bit RISC/DSP microprocessor with reduced complexity [J]. IEEE Solid-state Circuit, 1997, 32,1056-1065.
[3] TMS320C3X User's guide[M]. Texas Instruments,1997.
[4] 王志華. 數字集成系統的結構化設計與高層次綜合[M]. 北京:清華大學出版社, 2000.
[5] 夏宇聞. 復雜數字電路與系統的Verilog HDL設計技術[M]. 北京:北航出版社,1998.
[6] 沈緒榜. 數字信號處理計算機[M]. 北京:宇航出版社, 1991.
[7] 沈緒榜. RISC 及后編譯技術[M]. 廣西出版社, 1994.