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