基于SoC的PSTN短消息終端系統(tǒng)的軟硬件設計
1 概述
本文引用地址:http://m.butianyuan.cn/article/148301.htmPSTN短消息終端SoC是為固定電話網(wǎng)短消息業(yè)務而設計的一種數(shù)字終端處理芯片。片上集成了微控制器、RAM、FSK/DTMF調制解調器、 LCD接口、鍵盤掃描、數(shù)據(jù)存儲器擴展頁面尋址接口以及線路狀態(tài)控制接口;可以完成FSK和DTMF格式的短消息上傳、下傳,CID(Calling IdenTIty Delivery,主叫識別信息傳送)號碼的接收,振鈴信號檢測,話機狀態(tài)控制等功能[1],提供了PSTN短消息終端的單芯片解決方案。其中,使用了 DW8051_core IP核作為SoC的微控制器核心。
SoC(System on chip,片上系統(tǒng))不僅指它的硬件平臺,還包括運行在其上的軟件成分。如果系統(tǒng)采用全硬件設計的方案,優(yōu)點是速度快、效率高,但是研制周期長,從而成本也高;用軟件實現(xiàn)則更為靈活,研制周期短。缺點是速度慢,效率比較低。因此,SoC設計必須在硬件與軟件功能劃分上有一個合理的權衡,并進行協(xié)同設計 [2]。
系統(tǒng)任務按功能可以分為通信、人機交互、Flash存儲器管理和外設管理四部分。通信的物理層功能即DTMF/FSK信號的調制解調,涉及插值、加權、相關等DSP運算??紤]到通信的實時性要求和所使用8位微控制器的數(shù)據(jù)處理能力,這些運算由專門設計的Modem硬件邏輯實現(xiàn);而在數(shù)據(jù)鏈路層,比如建立和釋放與服務器的連接、超時控制、接收FSK數(shù)據(jù)幀、拆包、差錯控制、提取返回消息層的信息和相應標志位的建立等,都交給微處理器由軟件實現(xiàn)。人機交互中的鍵盤掃描要不斷判斷是否有按鍵動作發(fā)生,用軟件實現(xiàn)效率低,這里也用專門的硬件邏輯實現(xiàn)。其他人機交互功能,如菜單操作、短信編輯等,則都由軟件實現(xiàn)。Flash存儲器管理和外設管理在硬件提供了接口寄存器的情況下,由軟件實現(xiàn)。
把實時性強、運算量大和重復性強的功能交給硬件去實現(xiàn),然后在滿足系統(tǒng)性能要求的情況下,把盡可能多的任務留給片上的微控制器用軟件實現(xiàn)。這樣降低了SoC的硬件復雜度以及制造成本,同時系統(tǒng)也可以獲得最大的靈活性。
3 SoC的軟硬件協(xié)同設計
3.1 對微控制器核的配置和擴展
DW8051_core是Synopsys公司提供的一個與8051指令兼容的8位微控制器IP核。它采用4個時鐘周期為1個指令周期的模式,在時鐘周期相同的情況下,處理能力是標準8051的3倍。DW8051_core訪問程序存儲器和數(shù)據(jù)存儲器的MEM地址總線是16位總線,避免了傳統(tǒng) 8051結構中數(shù)據(jù)總線和地址總線低位的時分復用問題。
由于DW8051_core是一個IP軟核(soft core),所以可以對它進行配置和擴展。在綜合(synthesis)的時候,通過對參數(shù)文件的設置,可以選擇配置內部RAM是128字節(jié)還是256字節(jié);可以選擇是否使用定時/計數(shù)器2,使用1個串口還是2個串口等。用戶還可以按照DW8051_core手冊的要求使用硬件描述語言編寫硬件邏輯,擴展 SFR總線和中斷系統(tǒng)(最多可以擴展到13級中斷)[3]。
在SoC設計中,只使用到了微控制器核的1個硬件定時器(Timer0),1個外部中斷(Interrupt0),1個串行口(UART),并沒有使用DW8051_core的全部功能。那些冗余的功能只會增加系統(tǒng)的硬件負擔,所以按照最精簡的原則配置DW8051_core:使用內部128字節(jié)RAM,不使用定時/計數(shù)器2,不使用內部ROM,只使用1個串口,不擴展中斷。在DW8051_parameter.vhd文件中,作如下的參數(shù)設定 [3]可以完成上述配置:
package DW8051_parameter is
constant ram_256 : integer := 0;
constant timer2 : integer := 0;
constant rom_addr_size : integer := 0;
constant serial : integer := 0;
constant extd_intr : integer := 0;
end DW8051_parameter;
SoC中的FSK/DTMF調制解調器、LCD接口、鍵盤掃描、數(shù)據(jù)存儲器擴展頁面尋址接口以及線路狀態(tài)控制接口等,都作為片內外設連接在 DW8051_core所特有的SFR內部總線上。8 KB的片上RAM和片外512 KB的Flash存儲器AM29LV040都連接在DW8051_core的MEM總線上,如圖1所示。
圖1 經(jīng)過擴展的DW8051_core SFR總線以及SoC系統(tǒng)結構
3.2 外設在SFR總線上的地址映射
DW8051_core通過SFR地址總線sfr_addr[0:7],SFR讀信號sfr_rd,SFR寫信號sfr_wr,SFR數(shù)據(jù)輸出總線sfr_data_out[0:7],數(shù)據(jù)輸入總線sfr_data_in[0:7]來訪問映射到SFR總線上的片上外設。每一個外設都通過SFR地址映射成SFR總線上的一個寄存器,如圖2所示。
對這些擴展SFR寄存器的訪問和對普通寄存器的訪問在形式上并沒有區(qū)別。當應用程序使用Keil的C51編譯器時,修改reg51.h文件可以讓編譯器確認用戶所擴展的SFR寄存器。對擴展SFR外設地址的分配可以根據(jù)設計需要而不同,但是只能使用DW8051_core沒有保留和占用的地址,否則會發(fā)生沖突。在reg51.h文件中添加以下語句讓編譯器確認擴展的寄存器:
sfr SEND_MODEM_DATA = 0xf1;/* 擴展,發(fā)送Modem數(shù)據(jù),只寫 */
sfr READ_FSK_DECODE = 0xf1;/* 擴展,讀FSK解調數(shù)據(jù),只讀 */
sfr READ_DTMF_DECODE = 0xf2;/* 擴展,讀DTMF解調數(shù)據(jù),只讀 */
sfr MODEM_STATUS = 0xf3;/* 擴展,Modem狀態(tài),只讀 */
評論