基于單片機(jī)的TMS320VC5402的HPI通信設(shè)計(jì)
出處:趙 俊 張朝陽(yáng) 陳文正 發(fā)布于:2011-07-21 08:01:09
本文所介紹的是我所正在研制的衛(wèi)星CDMA接收機(jī)末端DSP與微機(jī)串口通信的接口電路。由于CDMA接收機(jī)支持兩個(gè)獨(dú)立CDMA信道的接收,并將兩路解調(diào)后的數(shù)據(jù)分別經(jīng)串口送至不同的計(jì)算機(jī)做后續(xù)的處理,故接收機(jī)需要帶兩個(gè)RS232接口。
微機(jī)的異步串口與DSP處理器通信的方法通常有三種,種方法是采用異步通信芯片擴(kuò)展串口,如用TI公司的TL16C550完成數(shù)據(jù)的串/并、并/串變換。由于TL16C550提供了豐富的控制管腳和應(yīng)答信號(hào),對(duì)其只需設(shè)置一些寄存器就可進(jìn)行靈活的控制,故編程比較簡(jiǎn)單,但對(duì)其數(shù)據(jù)的讀取或?qū)懭雱t需要用到DSP的數(shù)據(jù)總線。第二種方法是將DSP的I/O口XF和
,或者將DSP的McBSP口用軟件模擬成異步串口。用這種方法,雖然DSP與微機(jī)串口之間無(wú)需串/并變換器件,硬件構(gòu)成十分簡(jiǎn)單,但DSP的編程比較復(fù)雜,用I/O口線模擬串口需要占用兩個(gè)定時(shí)器資源,并且只有在DSP操作不繁忙的情況下這種方法才可行。第三種方法是用單片機(jī)實(shí)現(xiàn)數(shù)據(jù)的串/并、并/串轉(zhuǎn)換。與種方法相比較,這種方法增加了對(duì)單片機(jī)的編程,但單片機(jī)可以作為控制器操作DSP的HPI口,對(duì)DSP存儲(chǔ)器的數(shù)據(jù)收發(fā)可完全由單片機(jī)發(fā)起,DSP幾乎無(wú)需作任何操作,也無(wú)需用到數(shù)據(jù)總線。在DSP處理過(guò)程復(fù)雜、運(yùn)算量大的情況下,這種方法特別有用。
在本系統(tǒng)中,我們采用的DSP處理器是高性能、低功耗的TMS320VC5402,用以實(shí)現(xiàn)系統(tǒng)的MAC層控制和數(shù)據(jù)的編、解碼工作,處理器的工作量很大。另外DSP數(shù)據(jù)總線需要與作為基帶處理器的FPGA芯片(APEXEP20K600E)交換數(shù)據(jù),為避免引入額外的控制邏輯實(shí)現(xiàn)與數(shù)據(jù)總線復(fù)用,采用單片機(jī)控制HPI口的方法實(shí)現(xiàn)DSP與雙串口的通信。考慮到FPGA芯片的存在及節(jié)省成本,沒(méi)有采用價(jià)格貴且需用仿真器開(kāi)發(fā)的雙串口單片機(jī)(如DS80C320),而是采用兩片AT89C2051,并借用物理層FPGA的冗余資源作為總線仲裁器來(lái)實(shí)現(xiàn)同樣的功能。
1 TMS320VC5402 簡(jiǎn)介
TMS320VC5402是TI公司C54x系列定點(diǎn)DSP芯片中的新產(chǎn)品它集中了此系列早期產(chǎn)品的優(yōu)點(diǎn),并提供了許多新的功能,開(kāi)發(fā)和使用更加方便。C5402具有靈活的指令系統(tǒng)和操作性能,它可選擇助記符指令或算術(shù)指令作為編程指令,同時(shí)支持匯編語(yǔ)言和C語(yǔ)言的單獨(dú)或混合編程。C5402采用改進(jìn)的Harvanl處理結(jié)構(gòu),指令流水線操作。計(jì)算和處理速度很高,系統(tǒng)單指令周期可達(dá)到10ns。在片內(nèi)提供16k的RAM用作程序和數(shù)據(jù)存儲(chǔ),其可擴(kuò)展尋址空間為1M字節(jié)。C5402提供的McBSP串口和DAM數(shù)據(jù)傳送方式極大地方便它在通信領(lǐng)域的應(yīng)用和開(kāi)發(fā)。C5402由于其高性能價(jià)格而成為當(dāng)前語(yǔ)言和靜態(tài)圖象處理和主流產(chǎn)品。
2 TMS320VC5402 HPI口結(jié)構(gòu)
HPI(主機(jī)接口)是主機(jī)與TMS320VC5402進(jìn)行數(shù)據(jù)交換的8 bit并行數(shù)據(jù)口。該接口在TMS320VC5402芯片上,內(nèi)部有數(shù)據(jù)寄存器(HPID),控制寄存器(HPIC)及地址寄存器(HPIA)。HPI口可用8 bit數(shù)據(jù)線傳輸16 bit的數(shù)據(jù),并可通過(guò)設(shè)置控制寄存器的相關(guān)位來(lái)控制高8位和低8位傳輸。HPI有兩種工作方式:一種是主機(jī)獨(dú)占模式 (HOM); 另一種是主機(jī)和TMS320VC5402共享模式(SAM)。其中SAM是通用方式,二者都可尋址HPI存儲(chǔ)器(DARAM)。當(dāng)二者產(chǎn)生沖突時(shí),主機(jī)具有較高的優(yōu)先權(quán),而在TMS320VC5402插人一個(gè)等周期。通過(guò)HPI傳輸?shù)臄?shù)據(jù)率是每5個(gè)CLKOUT時(shí)鐘周期傳輸1字節(jié)。
HPI通信主要是通過(guò)對(duì)HPIA、HPIC和HPID3個(gè)寄存器賦值來(lái)實(shí)現(xiàn)的。簡(jiǎn)單地說(shuō),HOST通過(guò)外部引腳HCNTL0和HCNTLl選中不同的寄存器后,就將當(dāng)前8位數(shù)據(jù)發(fā)送到該寄存器中了。由于HPIC是16位寄存器,而HPI口總是傳送8位數(shù)據(jù)寬度,所以用HOST向HPIC寫(xiě)數(shù)據(jù)時(shí),需要發(fā)送兩個(gè)一樣的8位數(shù)據(jù)。對(duì)TMS320VC5402來(lái)說(shuō),僅低8位有意義。當(dāng)?shù)刂芳拇嫫鱄PIA選擇后,直接向它寫(xiě)數(shù)據(jù)就可以了,但是要注意MSB和LSB的順序。另外,HPIA具有自動(dòng)增長(zhǎng)的特性,即在每寫(xiě)入一個(gè)數(shù)據(jù)前和每讀一個(gè)數(shù)據(jù)后HPIA都會(huì)自動(dòng)加1。這樣,如果使用了該功能,只需設(shè)定HPIA即可實(shí)現(xiàn)連續(xù)數(shù)據(jù)塊的寫(xiě)入和讀出,只是在實(shí)現(xiàn)時(shí),數(shù)據(jù)應(yīng)首先從主機(jī)發(fā)到HPID中,然后再根據(jù)HPIA指定的地址把HPID中的數(shù)據(jù)再寫(xiě)到片內(nèi)RAM的地址中。
HPI接口還提供了中斷邏輯同主機(jī)進(jìn)行軟件握手。主機(jī)可通過(guò)對(duì)控制寄存器HPIC的第二位(DSPINT)置1中斷DSP芯片;DSP芯片可通過(guò)對(duì)HPIC的第三位(HINT)置1中斷主機(jī),此時(shí)HPI的引腳
被置為低電平,從而向主機(jī)發(fā)出中斷請(qǐng)求;主機(jī)還可設(shè)置HPIC的位HINT為1使
腳回到高電平,從而清除中斷信號(hào)。
下面給出HPI口相關(guān)管腳說(shuō)明:
HD0~HD7是8位雙向數(shù)據(jù)線,與單片機(jī)P1口相連,用于交換數(shù)據(jù)。
HCNTL1/0的組合用于選擇主機(jī)所訪問(wèn)的HPI寄存器,00表明主機(jī)訪問(wèn)HPIC;10表明訪問(wèn)HPIA;01和11均表明訪問(wèn)HPID,但01還表明同時(shí)啟用HPIA自動(dòng)增長(zhǎng)的功能。
16bit數(shù)據(jù)傳送時(shí),HBIL為0表示傳送的是字節(jié),為1表明傳送的是第二字節(jié),其中高8位在第幾個(gè)字節(jié)由HPIC中的BOB位決定。

HPI提供兩種鎖存方式,一種是由
(主機(jī)地址鎖存信號(hào))的下降沿鎖存各控制信號(hào);另一種是由后三者共同完成,
任何一個(gè)的下降沿鎖存各控制信號(hào)。我們采用第二種方式,
控制信號(hào)的鎖存由
的低跳變來(lái)完成。該鎖存信號(hào)還指示了HPI口操作過(guò)程的開(kāi)始。
HRDY為HPI準(zhǔn)備好指示。
為DSP向主機(jī)發(fā)出中斷的引腳。
HPIENA為HPI使能控制信號(hào),高電平使能HPI操作。
3 單片機(jī)的I/O口分配、連線和程序設(shè)計(jì)
3.1 單片機(jī)I/O口分配
在本系統(tǒng)中,考慮到板子的面積,選擇了體積小的AT89C2051單片機(jī),并省去了P0和P2口,增加了一個(gè)精密的模擬比較器,P1.0和P1.1除了作為I/O口(需外部電阻上拉)外,還同時(shí)作為比較器的正負(fù)極輸入,而P3.6則專(zhuān)門(mén)用作比較器輸出。因此AT89C2051提供了15根雙向I/O口線,除去P3.0和P3.1用作異步串口和P1.0~P1.7用作與HPI口數(shù)據(jù)總線通信外,還有5根I/O口線可用。由于還需要控制HPI口的各控制信號(hào)和與DSP的握手信號(hào),剩下的5根I/O口線顯然不夠,所以還在FPGA里設(shè)計(jì)一鎖存器,把P1口用作控制/數(shù)據(jù)復(fù)用口。具體的I/O口信號(hào)分配如下:
P1.0~P1.7接HPI口的數(shù)據(jù)線HD0~HD7。當(dāng)作控制信號(hào)復(fù)用時(shí),
P1.0接FPGA內(nèi)鎖存器的鎖存信號(hào);
P1.1經(jīng)FPGA鎖存,控制HCNTL0;
P1.2經(jīng)FPGA鎖存,控制HCNTL1;
P1.3經(jīng)FPGA鎖存,控制HBIL;
P1.4經(jīng)FPGA鎖存,控制
P3.2接HPI的
;
P3.3接HPI的XF;
P3.4接HPI的HRDY;
P3.5為單片機(jī)請(qǐng)求發(fā)送信號(hào),接FPGA的P3.5;
P3.7經(jīng)FPGA控制鎖存HPI的各控制信號(hào)

圖1給出了HPI接口與兩片AT89C2051之間的連接圖。

3.2 單片機(jī)程序設(shè)計(jì)要點(diǎn)
上面講到,P3.5作為單片機(jī)的發(fā)送請(qǐng)求信號(hào),當(dāng)無(wú)數(shù)據(jù)發(fā)送時(shí)為高電平,當(dāng)為低電平時(shí)則表示單片機(jī)想要發(fā)送數(shù)據(jù),向總線仲裁器申請(qǐng)使用總線,總線仲裁器判斷當(dāng)前誰(shuí)可以使用總線,然后通過(guò)外中斷0中斷DSP處理器,同時(shí)通過(guò)
口告知DSP當(dāng)前可以使用總線的單片機(jī),終由DSP通過(guò)XF管腳集中控制單片機(jī)的總線使用權(quán)。單片機(jī)在獲取總線使用權(quán)并發(fā)送完數(shù)據(jù)后,向HPI的控制寄存器的DSPINT位寫(xiě)1,用中斷通知DSP。在單片機(jī)需接收數(shù)據(jù)時(shí),DSP首先設(shè)置XF腳,選擇由哪個(gè)單片機(jī)接收,然后設(shè)置
腳為低,通過(guò)中斷告知單片機(jī)進(jìn)行接收。單片機(jī)從HPI口接收時(shí)也應(yīng)置P3.5為低,以便保持總線仲裁器的單片機(jī)選擇信號(hào)
與XF腳一致。
在對(duì)單片機(jī)編程時(shí)需要注意以下幾點(diǎn):(1)由于兩個(gè)單片機(jī)共享總線,為保證相互之間不會(huì)干擾,沒(méi)有使用總線的單片機(jī)P1口必須處于高阻態(tài)。根據(jù)P1口的內(nèi)部結(jié)構(gòu),單片機(jī)不使用總線時(shí),往P1口寫(xiě)入0xFF即可達(dá)到這一目的。(2)由于P1口作為控制/數(shù)據(jù)信號(hào)復(fù)用口,故編程時(shí),對(duì)每次HPI口操作,先在P1口送出控制信號(hào),接著設(shè)置P1.0產(chǎn)生低→高的跳變,把控制HPI口的P1.1~P1.4信號(hào)鎖存到FPGA內(nèi)部的鎖存器,這時(shí)P1口才能作為數(shù)據(jù)端口,在P3.7產(chǎn)生一低跳變后,發(fā)起數(shù)據(jù)傳遞。(3)編程時(shí),應(yīng)防止單片機(jī)被同時(shí)要求對(duì)HPI口進(jìn)行收、發(fā)操作。這可以依據(jù)實(shí)際情況,靈活地進(jìn)行處理,限于篇幅,不再贅述。
4 總線仲裁器的設(shè)計(jì)
總線仲裁器的功能主要是根據(jù)單片機(jī)P3.5的總線請(qǐng)求信號(hào),選擇當(dāng)前可以使用總線的單片機(jī),仲裁器的設(shè)計(jì)需做到單片機(jī)能夠公平競(jìng)爭(zhēng)總線使用權(quán)。在兩個(gè)單片機(jī)競(jìng)爭(zhēng)總線的情況下,用一個(gè)簡(jiǎn)單的狀態(tài)機(jī)即可達(dá)到目的。狀態(tài)機(jī)state僅有兩個(gè)狀態(tài)S0和S1,P3.5為高電平時(shí),不申請(qǐng)總線,狀態(tài)機(jī)保持原狀態(tài);P3.5為低電平時(shí),則根據(jù)當(dāng)前請(qǐng)求總線的單片機(jī),狀態(tài)機(jī)轉(zhuǎn)換到相應(yīng)的狀態(tài)。如單片機(jī)同時(shí)申請(qǐng)使用總線,則保持當(dāng)前的狀態(tài)不變。下面給出狀態(tài)轉(zhuǎn)換表(S0表示選擇單片機(jī)1,S1表示選擇單片機(jī)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;
當(dāng)狀態(tài)機(jī)有狀態(tài)變換時(shí),用FPGA產(chǎn)生一個(gè)脈寬約為1μs的低電平脈沖。這一信號(hào)接DSP外中斷
腳,用于中斷DSP,并且將狀態(tài)機(jī)的當(dāng)前狀態(tài)通過(guò)
腳告知DSP,指明正在請(qǐng)求使用總線的單片機(jī)。
此外,如前所述,FPGA內(nèi)部還設(shè)置一鎖存器,由P1.0的高跳變將P1口送出的HPI口控制信號(hào)鎖存。至于控制
的兩個(gè)P3.7信號(hào),在FPGA內(nèi)部只需將兩信號(hào)相與即可。
4 單片機(jī)與微機(jī)串口的硬件連線
在IBM PC/XT微機(jī)系統(tǒng)中,其串口符合RS-232C接口標(biāo)準(zhǔn)。為提高抗干擾能力,RS-232C標(biāo)準(zhǔn)采用負(fù)邏輯,低電平在-5V~-15V之間(通常用-12V表示)為邏輯“1”,高電平在+5V~+15V之間(通常用+12V表示)為邏輯“0”。上述電平稱(chēng)為EIA電平,它與TTL電平和CMOS電平不同。為了使AT89C2051能與微機(jī)進(jìn)行串行通信,可以利用MAX232完成RS-232C電平與TTL電平的相互轉(zhuǎn)換。圖2給出了硬件連線圖。

單片機(jī)程序在完成對(duì)串口的工作模式和波特率設(shè)置等初始化過(guò)程后,即可開(kāi)始與串口通信。通信方式有查詢(xún)方式和中斷方式兩種。由于查詢(xún)方式需CPU不斷查詢(xún)標(biāo)志位,程序效率不高,故在單片機(jī)操作比較繁忙時(shí)通常采用中斷方式,具體的編程應(yīng)用這里不再介紹。
介紹了通過(guò)FPGA芯片作為總線仲裁器,實(shí)現(xiàn)微機(jī)雙串口各自通過(guò)AT89C2051與DSP HPI口通信的設(shè)計(jì)方法。該電路與采用專(zhuān)用芯片的電路相比,并不顯得復(fù)雜,比較實(shí)用。由于與DSP存儲(chǔ)器之間的數(shù)據(jù)交換完全由單片機(jī)發(fā)起,DSP就可以從數(shù)據(jù)的傳遞中解脫出來(lái),去完成更復(fù)雜的控制和運(yùn)算。實(shí)踐證明,這一電路能很好地達(dá)到我們的設(shè)計(jì)要求,在異步數(shù)據(jù)傳輸速率為9600bps情況下,可以可靠地實(shí)現(xiàn)微機(jī)雙串口與DSP之間的通信。
參考文獻(xiàn):
[1]. AT89C2051 datasheet http://hbjingang.com/datasheet/AT89C2051_810086.html.
[2]. RS232 datasheet http://hbjingang.com/datasheet/RS232_585128.html.
[3]. TL16C550 datasheet http://hbjingang.com/datasheet/TL16C550_650881.html.
[4]. TTL datasheet http://hbjingang.com/datasheet/TTL_1174409.html.
[5]. MAX232 datasheet http://hbjingang.com/datasheet/MAX232_1074207.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機(jī)技術(shù)特性與嵌入式開(kāi)發(fā)實(shí)踐指南2026/1/7 10:00:02
- 單片機(jī)(MCU)與數(shù)字信號(hào)處理器(DSP)分類(lèi)及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級(jí)DSP信號(hào)處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機(jī)專(zhuān)用SoC單片機(jī)2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類(lèi)型擴(kuò)充定義2025/10/27 13:59:22
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- 高速PCB阻抗控制核心實(shí)操規(guī)范
- 高速數(shù)字系統(tǒng)(如DDR、SerDes)中的信號(hào)完整性濾波
- MOSFET在UPS電源中的應(yīng)用解析
- 電源管理IC在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用
- SMT連接器焊接缺陷分析
- MOSFET在汽車(chē)電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理









