本文所介紹的是我所正在研制的衛星CDMA接收機末端DSP與微機串口通信的接口電路。由于CDMA接收機支持兩個獨立CDMA信道的接收,并將兩路解調后的數據分別經串口送至不同的計算機做后續的處理,故接收機需要帶兩個RS232接口。
微機的異步串口與DSP處理器通信的方法通常有三種,第一種方法是采用異步通信芯片擴展串口,如用TI公司的TL16C550完成數據的串/并、并/串變換。由于TL16C550提供了豐富的控制管腳和應答信號,對其只需設置一些寄存器就可進行靈活的控制,故編程比較簡單,但對其數據的讀取或寫入則需要用到DSP的數據總線。第二種方法是將DSP的I/O口XF和,或者將DSP的McBSP口用軟件模擬成異步串口。用這種方法,雖然DSP與微機串口之間無需串/并變換器件,硬件構成十分簡單,但DSP的編程比較復雜,用I/O口線模擬串口需要占用兩個定時器資源,并且只有在DSP操作不繁忙的情況下這種方法才可行。第三種方法是用單片機實現數據的串/并、并/串轉換。與第一種方法相比較,這種方法增加了對單片機的編程,但單片機可以作為控制器操作DSP的HPI口,對DSP存儲器的數據收發可完全由單片機發起,DSP幾乎無需作任何操作,也無需用到數據總線。在DSP處理過程復雜、運算量大的情況下,這種方法特別有用。
在本系統中,我們采用的DSP處理器是高性能、低功耗的TMS320VC5402,用以實現系統的MAC層控制和數據的編、解碼工作,處理器的工作量很大。另外DSP數據總線需要與作為基帶處理器的FPGA芯片(APEXEP20K600E)交換數據,為避免引入額外的控制邏輯實現與數據總線復用,采用單片機控制HPI口的方法實現DSP與雙串口的通信。考慮到FPGA芯片的存在及節省成本,沒有采用價格貴且需用高級仿真器開發的雙串口單片機(如DS80C320),而是采用兩片AT89C2051,并借用物理層FPGA的冗余資源作為總線仲裁器來實現同樣的功能。
1 TMS320VC5402 簡介
TMS320VC5402是TI公司C54x系列定點DSP芯片中的新產品它集中了此系列早期產品的優點,并提供了許多新的功能,開發和使用更加方便。C5402具有靈活的指令系統和操作性能,它可選擇助記符指令或算術指令作為編程指令,同時支持匯編語言和C語言的單獨或混合編程。C5402采用改進的Harvanl處理結構,指令流水線操作。計算和處理速度很高,系統單指令周期可達到10ns。在片內提供16k的RAM用作程序和數據存儲,其最大可擴展尋址空間為1M字節。C5402提供的McBSP串口和DAM數據傳送方式極大地方便它在通信領域的應用和開發。C5402由于其高性能價格而成為當前語言和靜態圖象處理和主流產品。
2 TMS320VC5402 HPI口結構
HPI(主機接口)是主機與TMS320VC5402進行數據交換的8 bit并行數據口。該接口在TMS320VC5402芯片上,內部有數據寄存器(HPID),控制寄存器(HPIC)及地址寄存器(HPIA)。HPI口可用8 bit數據線傳輸16 bit的數據,并可通過設置控制寄存器的相關位來控制高8位和低8位傳輸。HPI有兩種工作方式:一種是主機獨占模式 (HOM); 另一種是主機和TMS320VC5402共享模式(SAM)。其中SAM是通用方式,二者都可尋址HPI存儲器(DARAM)。當二者產生沖突時,主機具有較高的優先權,而在TMS320VC5402插人一個等周期。通過HPI傳輸的數據率是每5個CLKOUT時鐘周期傳輸1字節。
HPI通信主要是通過對HPIA、HPIC和HPID3個寄存器賦值來實現的。簡單地說,HOST通過外部引腳HCNTL0和HCNTLl選中不同的寄存器后,就將當前8位數據發送到該寄存器中了。由于HPIC是16位寄存器,而HPI口總是傳送8位數據寬度,所以用HOST向HPIC寫數據時,需要發送兩個一樣的8位數據。對TMS320VC5402來說,僅低8位有意義。當地址寄存器HPIA選擇后,直接向它寫數據就可以了,但是要注意MSB和LSB的順序。另外,HPIA具有自動增長的特性,即在每寫入一個數據前和每讀一個數據后HPIA都會自動加1。這樣,如果使用了該功能,只需設定一次HPIA即可實現連續數據塊的寫入和讀出,只是在實現時,數據應首先從主機發到HPID中,然后再根據HPIA指定的地址把HPID中的數據再寫到片內RAM的地址中。
HPI接口還提供了中斷邏輯同主機進行軟件握手。主機可通過對控制寄存器HPIC的第二位(DSPINT)置1中斷DSP芯片;DSP芯片可通過對HPIC的第三位(HINT)置1中斷主機,此時HPI的引腳被置為低電平,從而向主機發出中斷請求;主機還可設置HPIC的位HINT為1使腳回到高電平,從而清除中斷信號。
下面給出HPI口相關管腳說明:
HD0~HD7是8位雙向數據線,與單片機P1口相連,用于交換數據。
HCNTL1/0的組合用于選擇主機所訪問的HPI寄存器,00表明主機訪問HPIC;10表明訪問HPIA;01和11均表明訪問HPID,但01還表明同時啟用HPIA自動增長的功能。
16bit數據傳送時,HBIL為0表示傳送的是第一字節,為1表明傳送的是第二字節,其中高8位在第幾個字節由HPIC中的BOB位決定。
HPI提供兩種鎖存方式,一種是由(主機地址鎖存信號)的下降沿鎖存各控制信號;另一種是由后三者共同完成,任何一個的下降沿鎖存各控制信號。我們采用第二種方式,控制信號的鎖存由的低跳變來完成。該鎖存信號還指示了一次HPI口操作過程的開始。
HRDY為HPI準備好指示。
為DSP向主機發出中斷的引腳。
HPIENA為HPI使能控制信號,高電平使能HPI操作。
3 單片機的I/O口分配、連線和程序設計
3.1 單片機I/O口分配
在本系統中,考慮到板子的面積,選擇了體積小的AT89C2051單片機,并省去了P0和P2口,增加了一個精密的模擬比較器,P1.0和P1.1除了作為I/O口(需外部電阻上拉)外,還同時作為比較器的正負極輸入,而P3.6則專門用作比較器輸出。因此AT89C2051提供了15根雙向I/O口線,除去P3.0和P3.1用作異步串口和P1.0~P1.7用作與HPI口數據總線通信外,還有5根I/O口線可用。由于還需要控制HPI口的各控制信號和與DSP的握手信號,剩下的5根I/O口線顯然不夠,所以還在FPGA里設計一鎖存器,把P1口用作控制/數據復用口。具體的I/O口信號分配如下:
P1.0~P1.7接HPI口的數據線HD0~HD7。當作控制信號復用時,
P1.0接FPGA內鎖存器的鎖存信號;
P1.1經FPGA鎖存,控制HCNTL0;
P1.2經FPGA鎖存,控制HCNTL1;
P1.3經FPGA鎖存,控制HBIL;
P1.4經FPGA鎖存,控制
P3.2接HPI的;
P3.3接HPI的XF;
P3.4接HPI的HRDY;
P3.5為單片機請求發送信號,接FPGA的P3.5;
P3.7經FPGA控制鎖存HPI的各控制信號
圖1給出了HPI接口與兩片AT89C2051之間的連接圖。
3.2 單片機程序設計要點
上面講到,P3.5作為單片機的發送請求信號,當無數據發送時為高電平,當為低電平時則表示單片機想要發送數據,向總線仲裁器申請使用總線,總線仲裁器判斷當前誰可以使用總線,然后通過外中斷0中斷DSP處理器,同時通過口告知DSP當前可以使用總線的單片機,最終由DSP通過XF管腳集中控制單片機的總線使用權。單片機在獲取總線使用權并發送完數據后,向HPI的控制寄存器的DSPINT位寫1,用中斷通知DSP。在單片機需接收數據時,DSP首先設置XF腳,選擇由哪個單片機接收,然后設置腳為低,通過中斷告知單片機進行接收。單片機從HPI口接收時也應置P3.5為低,以便保持總線仲裁器的單片機選擇信號與XF腳一致。
在對單片機編程時需要注意以下幾點:(1)由于兩個單片機共享總線,為保證相互之間不會干擾,沒有使用總線的單片機P1口必須處于高阻態。根據P1口的內部結構,單片機不使用總線時,往P1口寫入0xFF即可達到這一目的。(2)由于P1口作為控制/數據信號復用口,故編程時,對每次HPI口操作,先在P1口送出控制信號,接著設置P1.0產生低→高的跳變,把控制HPI口的P1.1~P1.4信號鎖存到FPGA內部的鎖存器,這時P1口才能作為數據端口,在P3.7產生一低跳變后,發起一次數據傳遞。(3)編程時,應防止單片機被同時要求對HPI口進行收、發操作。這可以依據實際情況,靈活地進行處理,限于篇幅,不再贅述。
4 總線仲裁器的設計
總線仲裁器的功能主要是根據單片機P3.5的總線請求信號,選擇當前可以使用總線的單片機,仲裁器的設計需做到單片機能夠公平競爭總線使用權。在兩個單片機競爭總線的情況下,用一個簡單的狀態機即可達到目的。狀態機state僅有兩個狀態S0和S1,P3.5為高電平時,不申請總線,狀態機保持原狀態;P3.5為低電平時,則根據當前請求總線的單片機,狀態機轉換到相應的狀態。如單片機同時申請使用總線,則保持當前的狀態不變。下面給出狀態轉換表(S0表示選擇單片機1,S1表示選擇單片機2):
state, MCU1_P3.5, MCU2_P3.5 =》 state;
S0, 0, x =》 S0;
S0, 1, 0 =》 S1;
S0, 1, 1 =》 S0;
S1, x, 0 =》 S1;
S1, 0, 1 =》 S0;
S1, 1, 1 =》 S1;
當狀態機有狀態變換時,用FPGA產生一個脈寬約為1μs的低電平脈沖。這一信號接DSP外中斷腳,用于中斷DSP,并且將狀態機的當前狀態通過腳告知DSP,指明正在請求使用總線的單片機。
此外,如前所述,FPGA內部還設置一鎖存器,由P1.0的高跳變將P1口送出的HPI口控制信號鎖存。至于控制的兩個P3.7信號,在FPGA內部只需將兩信號相與即可。
5 單片機與微機串口的硬件連線
在IBM PC/XT微機系統中,其串口符合RS-232C接口標準。為提高抗干擾能力,RS-232C標準采用負邏輯,低電平在-5V~-15V之間(通常用-12V表示)為邏輯“1”,高電平在+5V~+15V之間(通常用+12V表示)為邏輯“0”。上述電平稱為EIA電平,它與TTL電平和CMOS電平不同。為了使AT89C2051能與微機進行串行通信,可以利用MAX232完成RS-232C電平與TTL電平的相互轉換。圖2給出了硬件連線圖。
單片機程序在完成對串口的工作模式和波特率設置等初始化過程后,即可開始與串口通信。通信方式有查詢方式和中斷方式兩種。由于查詢方式需CPU不斷查詢標志位,程序效率不高,故在單片機操作比較繁忙時通常采用中斷方式,具體的編程應用這里不再介紹。
介紹了通過FPGA芯片作為總線仲裁器,實現微機雙串口各自通過AT89C2051與DSP HPI口通信的設計方法。該電路與采用專用芯片的電路相比,并不顯得復雜,比較實用。由于與DSP存儲器之間的數據交換完全由單片機發起,DSP就可以從數據的傳遞中解脫出來,去完成更復雜的控制和運算。實踐證明,這一電路能很好地達到我們的設計要求,在異步數據傳輸速率為9600bps情況下,可以可靠地實現微機雙串口與DSP之間的通信。
評論
查看更多