沈?yàn)t波 閆法鋼
(第七一五研究所,杭州,310023)
FPGA與TMS320C67XX的McBSP接口設(shè)計(jì)
沈?yàn)t波 閆法鋼
(第七一五研究所,杭州,310023)
多通道緩沖串行口McBSP(Multichannel Buffered Serial Port)是TI公司DSP產(chǎn)品中標(biāo)準(zhǔn)串行口的增強(qiáng)版本[1]。提出一種采用FPGA模擬McBSP接口的方法,基于Verilog HDL語言實(shí)現(xiàn)了McBSP接口的基本功能;通過與TMS320C67XX系列DSP的對(duì)接測(cè)試證明了設(shè)計(jì)的有效性和實(shí)用性。
串行接口;McBSP接口;對(duì)接測(cè)試;DSP;FPGA
在許多數(shù)字信號(hào)處理應(yīng)用系統(tǒng)中,DSP擔(dān)任的工作是快速而復(fù)雜的核心運(yùn)算,但是對(duì)于運(yùn)算結(jié)果的輸出控制不夠靈活;而DSP與FPGA相結(jié)合的設(shè)計(jì)則可以有效彌補(bǔ)這種不足。本文從實(shí)際項(xiàng)目需求出發(fā),設(shè)計(jì)了一種基于FPGA的McBSP接口協(xié)議,與TI公司的TMS320C67XX系列DSP進(jìn)行數(shù)據(jù)通信。DSP接收ADC采樣后信號(hào),經(jīng)過一系列運(yùn)算處理后,通過McBSP接口發(fā)送至FPGA,最終由FPGA通過以太網(wǎng)UDP/IP協(xié)議發(fā)送至上位機(jī);同時(shí),F(xiàn)PGA接收上位機(jī)的控制命令,解析后通過McBSP接口發(fā)送至DSP響應(yīng)執(zhí)行,從而完成雙向通信任務(wù)。
McBSP接口是TI公司DSP產(chǎn)品中標(biāo)準(zhǔn)串行口的增強(qiáng)版本,提供了以下功能:全雙工通信;允許連續(xù)數(shù)據(jù)流的雙緩沖數(shù)據(jù)寄存器;接收與發(fā)送使用獨(dú)立幀同步脈沖和時(shí)鐘信號(hào);提供與工業(yè)標(biāo)準(zhǔn)編碼器、模擬接口芯片及其他串口連接的ADC、DAC器件的標(biāo)準(zhǔn)接口;支持用來進(jìn)行數(shù)據(jù)傳送的外部偏移時(shí)鐘,或內(nèi)部可編程的頻率偏移時(shí)鐘;另外,McBSP還具有以下能力:寬范圍的數(shù)據(jù)字長選擇,包括8位、12位、16位、20位、24位和32位字長;對(duì)幀同步和數(shù)據(jù)時(shí)鐘的可編程電平表示;高度可編程的內(nèi)部幀與時(shí)鐘發(fā)送器[2]。
圖1 系統(tǒng)框圖
由圖1可以看出,McBSP接口通過數(shù)據(jù)發(fā)送(DX)引腳和數(shù)據(jù)接收(DR)引腳,與連接到McBSP接口的設(shè)備進(jìn)行數(shù)據(jù)通信??刂菩畔ⅲ〞r(shí)鐘和幀同步)通過CLKX、CLKR、FSX和FSR引腳進(jìn)行通信。
DSP端的McBSP接口通過配置相應(yīng)寄存器實(shí)現(xiàn),本文直接給出配置結(jié)果:發(fā)送與接收均固定幀長為32位;接收數(shù)據(jù)(DR)在周期時(shí)鐘(CLKR)的下降沿采樣,發(fā)送數(shù)據(jù)在(DX)上升沿定時(shí);使用高電平幀同步信號(hào);數(shù)據(jù)位與幀同步不延時(shí);接收和發(fā)送時(shí)序如圖2。
圖2 McBSP收發(fā)時(shí)序
每幀數(shù)據(jù)32位,用同步信號(hào)(FSX/FSR)作為幀起始標(biāo)志,即幀同步與緊接的31個(gè)時(shí)鐘周期構(gòu)成一個(gè)完整的幀傳輸周期;幀內(nèi)32位數(shù)據(jù),收發(fā)遵循高位在前、低位在后原則。
經(jīng)DSP運(yùn)算處理后的報(bào)文長度為固定1 024 Byte,而McBSP接口每幀發(fā)送長度為4 Byte(32位);因此,每個(gè)報(bào)文需拆分成256幀發(fā)送。同時(shí),1 024 Byte的報(bào)文有如下特征:以每4 Byte為單位,高8位(D31~D24)為D23位的符號(hào)擴(kuò)展,即每4 Byte的高9位相同。設(shè)計(jì)DSP至FPGA的McBSP接口傳輸協(xié)議如下:在1 024 Byte的報(bào)文前面增加3幀(12 Byte)首部信息,如圖3。
· 4 Byte發(fā)方地址:C0B90182H,表示信息發(fā)送方的地址,不與有效數(shù)據(jù)沖突;
· 4 Byte收方地址:EAB90111H,表示信息接收方的地址,不與有效數(shù)據(jù)沖突;
· 1 Byte 00H,1 Byte報(bào)文標(biāo)識(shí)(83H),2 Byte報(bào)文長度(0410H),4 Byte組成一幀;且高9位為:0000_0000_1,不與有效數(shù)據(jù)沖突。
圖3 發(fā)送報(bào)文格式
FPGA通過UDP/IP協(xié)議接收上位機(jī)的控制命令,也為固定長度20 Byte,格式同樣包含12 Byte的首部(C0B90150H,EAB9010BH,00E30014H,首部字段內(nèi)容固定,但區(qū)分于DSP至FPGA的首部信息)及8 Byte命令內(nèi)容。20 Byte的控制命令,拆分成5幀McBSP數(shù)據(jù)依次發(fā)送至DSP。
收發(fā)過程中,首部信息的添加,即保證其不會(huì)與數(shù)據(jù)部分內(nèi)容重合,也方便報(bào)文同步信息的提取,確保報(bào)文有效傳輸。
由于McBSP串口支持全雙工通信,F(xiàn)PGA內(nèi)部結(jié)構(gòu)劃分為“接收”和“發(fā)送”兩個(gè)獨(dú)立的設(shè)計(jì)單元?!敖邮铡焙汀鞍l(fā)送”單元在各自時(shí)鐘信號(hào)驅(qū)動(dòng)下,實(shí)現(xiàn)與DSP的報(bào)文通信。
3.1 “接收”過程
FPGA端“接收”對(duì)應(yīng)于DSP端的發(fā)送引腳DX、CLKX、FSX,“接收”單元根據(jù)McBSP協(xié)議約定,在接收到完整的報(bào)文后,通過以太網(wǎng)UDP/IP協(xié)議發(fā)送至上位機(jī)。
“接收”單元分為“數(shù)據(jù)通路”和“控制邏輯”兩部分,“數(shù)據(jù)通路”如圖4。
圖4 McBSP“接收”數(shù)據(jù)通路
數(shù)據(jù)DX和同步信號(hào)FSX在時(shí)鐘CLKX的下降沿存入各自對(duì)應(yīng)的32位移位寄存器;FSX所對(duì)應(yīng)的移位寄存器用作判斷,當(dāng)其對(duì)應(yīng)32位并行數(shù)據(jù)為8000_0000H時(shí),表明一個(gè)有效的McBSP數(shù)據(jù)幀被接收到;此時(shí),將DX所對(duì)應(yīng)的32位并行數(shù)據(jù)通過寫指針存入DPRAM;當(dāng)判斷完整的McBSP報(bào)文接收完畢時(shí),從DPRAM中讀取數(shù)據(jù),與以太網(wǎng)IP首部、UDP首部合并后,經(jīng)MAC(Media Access Control)層后,由以太網(wǎng)物理層芯片發(fā)送至上位機(jī)。
“控制邏輯”用于McBSP協(xié)議過濾,確保接收到正確的McBSP報(bào)文后,轉(zhuǎn)發(fā)至上位機(jī);狀態(tài)轉(zhuǎn)移關(guān)系如圖5。
圖5 McBSP“接收”狀態(tài)轉(zhuǎn)移圖
觸發(fā)狀態(tài)跳轉(zhuǎn)的信號(hào):
· Rcv:表示接收到一幀(32位)McBSP數(shù)據(jù);
· hdr1_flag:表示當(dāng)前所接收的幀為C0B90182H;
· hdr2_flag:表示當(dāng)前所接收的幀為EAB90111H;
· hdr3_flag:表示當(dāng)前所接收的幀為00830410H;
· Rcv_done:表示當(dāng)前接收到McBSP幀數(shù)達(dá)到256幀,即完整的McBSP報(bào)文接收完畢;
· frame_vld:表示當(dāng)前所接收的幀為有效McBSP報(bào)文的數(shù)據(jù)部分,即高9位相同。
狀態(tài)轉(zhuǎn)移邏輯描述:
· IDLE:初始化或復(fù)位后狀態(tài);當(dāng)接收到“Rcv&hdr1_flag”時(shí),跳轉(zhuǎn)至HDR_1;否則保持原狀態(tài);
· HDR_1:表示當(dāng)前處于已接收到“C0B90182H”幀狀態(tài);若接收到“Rcv&hdr2_flag”時(shí),跳轉(zhuǎn)至HDR_2;若接收到“Rcv&hdr1_flag”時(shí),保持原狀態(tài);若接收的McBSP幀“!hdr1_flag&!hdr2_flag”,返回IDLE;
· HDR_2:表示當(dāng)前處于已接收到“EAB90111H”幀狀態(tài);若接收到“Rcv& hdr3_flag”時(shí),跳轉(zhuǎn)至HDR_3;若接收到“Rcv&hdr1_flag”時(shí),返回HDR_1;若接收的McBSP幀 “!hdr1_flag&!hdr3_flag”,返回IDLE;
· HDR_3:表示當(dāng)前處于已接收到“00830410H”幀狀態(tài),此時(shí),無條件跳轉(zhuǎn)至FRAME準(zhǔn)備接收McBSP報(bào)文的數(shù)據(jù)部分;
· FRAME:表示持續(xù)接收McBSP報(bào)文的數(shù)據(jù)部分狀態(tài);若接收到“Rcv&!Rcv_done&frame_vld”時(shí),保持原狀態(tài);若接收到“Rcv& hdr1_flag”時(shí),跳轉(zhuǎn)至HDR_1;若接收到“Rcv&!hdr1_flag&! Rcv_done&!frame_vld”時(shí),表示當(dāng)前McBSP報(bào)文的數(shù)據(jù)部分未完整接收,返回IDLE;若接收到“Rcv_done”,表示完整的McBSP報(bào)文接收完成,跳轉(zhuǎn)至DONE;
· DONE:完整的McBSP報(bào)文接收完畢,觸發(fā)以太網(wǎng)UDP/IP發(fā)送流程,同時(shí)返回IDLE,等待下一幀McBSP數(shù)據(jù)。
3.2 “發(fā)送”過程
FPGA的“發(fā)送”過程是在完整接收以太網(wǎng)UDP/IP報(bào)文(20 Byte)后,對(duì)前12 Byte內(nèi)容作“協(xié)議過濾”,若為有效控制命令,拆分成5幀McBSP數(shù)據(jù)依次發(fā)送至DSP;若前12 Byte不符合McBSP協(xié)議首部格式,則丟棄該報(bào)文。
圖6 McBSP“發(fā)送”數(shù)據(jù)通路
FPGA的發(fā)送“時(shí)鐘”,由內(nèi)部分頻器產(chǎn)生。時(shí)鐘CLKR由該“時(shí)鐘”直接驅(qū)動(dòng);數(shù)據(jù)DR及同步信號(hào)FSR根據(jù)“時(shí)鐘”節(jié)拍產(chǎn)生。當(dāng)接收到完整有效控制命令后,單次從DPRAM讀取32位數(shù)據(jù),按照高位在前規(guī)則,由移位寄存器輸出至DR引腳;同時(shí),在每個(gè)32位數(shù)據(jù)的最高位(D31)置高FSR;重復(fù)五次,完成一個(gè)控制命令報(bào)文的發(fā)送流程。
3.3 硬件驗(yàn)證
McBSP協(xié)議的接收與發(fā)送邏輯用Verilog HDL語言描述實(shí)現(xiàn),經(jīng)編譯、布局、布線后,下載至Xilinx公司XC5VLX30T器件。該設(shè)計(jì)調(diào)用了一個(gè)器件內(nèi)嵌的 MAC硬核用于網(wǎng)絡(luò)傳輸,McBSP協(xié)議占用30%器件邏輯資源,實(shí)現(xiàn)了設(shè)計(jì)預(yù)期的傳輸功能。
經(jīng)DSP處理后的報(bào)文速率為6.144 Mbps,DSP配置時(shí)鐘CLKX頻率10 MHz;上位機(jī)發(fā)送的控制命令速率小于1 Mbps,CLKR由FPGA內(nèi)部分頻器產(chǎn)生的7.8 MHz時(shí)鐘提供。系統(tǒng)上電工作,上位機(jī)對(duì)接收到的以太網(wǎng)UDP/IP報(bào)文解析處理后,結(jié)果符合設(shè)計(jì)預(yù)期;同時(shí)DSP能快速有效響應(yīng)上位機(jī)發(fā)出的控制命令;McBSP接口協(xié)議保證通信的有效性和實(shí)用性。
基于FPGA的McBSP接口設(shè)計(jì),可以根據(jù)TMS320C67XX的配置模式,有效實(shí)現(xiàn)全雙工通信。本文針對(duì)具體項(xiàng)目設(shè)計(jì)了定長報(bào)文傳輸,設(shè)計(jì)簡潔,性能可靠;將來可以設(shè)計(jì)變長報(bào)文的傳輸協(xié)議,具備更好的通用性。
[1] Texas Instruments.TMS320C6000 DSP Multichannel Buffered Serial Port (McBSP)Reference Guide[Z].2004.
[2] 于鳳芹.TMS320 C6000 DSP 結(jié)構(gòu)原理與硬件[M] 北京: 北京航空航天大學(xué)出版社, 2008.
[3] Xilinx.Virtex–5 FPGA User Guide[Z].2012.
[4] Xilinx.Virtex–5 FPGA Embedded Tri-mode Ethernet MAC User Guide[Z].2012.