張 繼,楊萌兮,謝 達(dá)
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214035)
在工業(yè)控制領(lǐng)域,絕大部分DSP/MCU系列產(chǎn)品都包含用于通信的串行接口電路(Serial Communications Interface,SCI),以滿足工業(yè)控制高度集成、高性能解決方案的嚴(yán)格要求。本文提出了一種將串口收/發(fā)送器速率與串口接收器采樣速率配置成一定配比關(guān)系,可以實(shí)現(xiàn)用于測(cè)試串口接收器的任意幀結(jié)構(gòu)數(shù)據(jù)的方法,以驗(yàn)證串行通信接口相應(yīng)功能的正確性,提高芯片測(cè)試的良品率。
一般DSP芯片都包含至少一個(gè)SCI接口,用于支持CPU與其他異步外設(shè)之間使用標(biāo)準(zhǔn)非歸零碼(NRZ)格式的數(shù)字通信。通常每個(gè)SCI包含一個(gè)波特率發(fā)生器、數(shù)據(jù)發(fā)送器、數(shù)據(jù)接收器以及數(shù)據(jù)存儲(chǔ)映射控制和狀態(tài)寄存器,如圖1所示。
由于SCI是串行異步通信方式,因此在通信過(guò)程中每次只能傳輸1位(bit),若干位組成一個(gè)數(shù)據(jù)幀(frame),幀是通信中最基本的單元,它主要包括起始位、數(shù)據(jù)位、校驗(yàn)位(如果使能了數(shù)據(jù)校驗(yàn),要包括校驗(yàn)位)和停止位,幀結(jié)構(gòu)如圖2所示。
圖1 SCI內(nèi)部結(jié)構(gòu)
圖2 SCI數(shù)據(jù)幀格式
SCI在通信之前要在發(fā)送端和接收端約定好幀結(jié)構(gòu),也就是約定好傳輸數(shù)據(jù)幀格式:
(1)起始位:必須包含在數(shù)據(jù)幀中,表示一個(gè)幀的開始;(2)數(shù)據(jù)位:可選的1~8位,該位長(zhǎng)度可由編程人員指定;(3)校驗(yàn)位:如果在使能了數(shù)據(jù)校驗(yàn)時(shí),該位必須指定;(4)停止位:可選的1~2位,該位長(zhǎng)度可由編程人員指定。
為了確保數(shù)據(jù)完整性,SCI在中斷檢測(cè)錯(cuò)誤位(BRKDT)、奇偶校驗(yàn)錯(cuò)誤位(PE)、過(guò)載錯(cuò)誤位(OE)和組幀錯(cuò)誤位(FE)方面對(duì)接收到的數(shù)據(jù)進(jìn)行檢查。
SCI數(shù)據(jù)通信速率指設(shè)備在一秒鐘內(nèi)發(fā)送(或接收)了多少比特的數(shù)據(jù),即傳輸時(shí)的波特率。通信雙方在約定好幀格式后,通過(guò)指定一個(gè)16位波特率選擇寄存器的值(BR),可將波特率設(shè)定為65536個(gè)不同的速度。波特率的計(jì)算公式如下:
Baud rate =LCLK/[(BR+1)×8],when BR≠0;
Baud rate =LCLK/16,when BR=0。
指定同一波特率,數(shù)據(jù)通信的雙方便可以進(jìn)行數(shù)據(jù)傳輸了。
在數(shù)據(jù)通信時(shí),每一位的信號(hào)占用N個(gè)SCI內(nèi)部生成的串行時(shí)鐘(SCLK)周期,該內(nèi)部時(shí)鐘SCLK的頻率可以通過(guò)波特率寄存器(BR)來(lái)控制,一般計(jì)算公式為:SCLK =LCLK/(BR+1)。SCLK與起始位以及其他數(shù)據(jù)位間的關(guān)系如圖3所示。
圖3 SCI接收器信號(hào)采樣
如圖3所示,有效的起始位判別為在串行通信總線拉低后滿足連續(xù)采樣到4個(gè)SCLK周期的0位信號(hào),如果有任何一位不為0,則處理器將重新開始尋找其他的起始位。在識(shí)別了起始位后,后續(xù)的數(shù)據(jù)位采樣采用多數(shù)仲裁機(jī)制:采樣判決信號(hào)為采樣數(shù)據(jù)信號(hào)的4、5、6位上,且其中滿足有2個(gè)或3個(gè)為邏輯1,則該位的采樣值判定為邏輯1; 若其中有2個(gè)或3個(gè)為邏輯0,則該位的采樣值判定為邏輯0。
通過(guò)一個(gè)功能正確的SCI可以設(shè)計(jì)驗(yàn)證另一個(gè)SCI的功能正確性,并且可以量化生產(chǎn)測(cè)試,從而提高測(cè)試自動(dòng)化效率。本文的設(shè)計(jì)假設(shè)在SCI采樣信號(hào)為8個(gè)。SCI模塊的功能驗(yàn)證主要包括:數(shù)據(jù)幀格式驗(yàn)證、通信速率(即波特率)驗(yàn)證、數(shù)據(jù)發(fā)送和接收深度驗(yàn)證、數(shù)據(jù)有效性檢測(cè)邏輯驗(yàn)證以及SCI中斷響應(yīng)驗(yàn)證等方面。
以上需要驗(yàn)證的方面,只有通信速率(即波特率)需要實(shí)際測(cè)算波特率配置,其他都可以通過(guò)設(shè)計(jì)好的兩兩間相互通信的數(shù)據(jù)來(lái)驗(yàn)證。這些驗(yàn)證方面的設(shè)計(jì)分為通信速率的計(jì)算和通信格式的配置。
SCI功能驗(yàn)證數(shù)據(jù)格式的設(shè)計(jì)本質(zhì)上是要實(shí)現(xiàn)輸入特定的測(cè)試數(shù)據(jù),通過(guò)檢測(cè)對(duì)應(yīng)的邏輯功能是否工作(即檢測(cè)響應(yīng)數(shù)據(jù))。利用SCI來(lái)構(gòu)造滿足要求的測(cè)試數(shù)據(jù),需要克服SCI通信格式上的束縛,即測(cè)試數(shù)據(jù)的格式能夠向下兼容SCI的通信數(shù)據(jù)格式。
在圖3所示的例子中,接收器1位采樣占用8個(gè)SCI內(nèi)部時(shí)鐘周期,由此可推斷出:只要滿足發(fā)送器的發(fā)送速率Baud rate TX是接收器的接收速率Baud rate RX的8倍,即可滿足測(cè)試數(shù)據(jù)的格式能夠向下兼容SCI的通信數(shù)據(jù)格式,即Baud rate TX = 8×Baud rate RX;又由Baud rate公式可知,發(fā)送器的BR TX和接收器BR RX間滿足BR TX+1=(BR RX+1)/8。
如前文所述,SCI的數(shù)據(jù)通信格式包括起始位、數(shù)據(jù)位、空閑線模式/地址位模式位、校驗(yàn)位(如果使能了數(shù)據(jù)校驗(yàn),要包括校驗(yàn)位)和停止位??紤]到校驗(yàn)位的值與數(shù)據(jù)位以及校驗(yàn)?zāi)J接嘘P(guān),為了簡(jiǎn)化設(shè)計(jì),發(fā)送器采用如下設(shè)計(jì)的幀格式:1個(gè)起始位為邏輯0,6個(gè)數(shù)據(jù)位為邏輯0或邏輯1,不使能校驗(yàn)位,以及一個(gè)停止位為邏輯1。
發(fā)送需要針對(duì)3種類型的數(shù)據(jù)位進(jìn)行設(shè)計(jì)約束(也即對(duì)發(fā)送數(shù)據(jù)的有效數(shù)據(jù)位進(jìn)行設(shè)計(jì)):起始位配置、接收器邏輯0配置以及接收器邏輯1配置。
3.2.1 起始位配置
在圖3所示的例子中,接收器的起始位判決邏輯在第1、2、3、4位采樣信號(hào)上,因此發(fā)送數(shù)據(jù)的第5、6、7、8位對(duì)采樣信號(hào)的判決沒有影響。且接收器的起始位是邏輯0,因此發(fā)送器的8位數(shù)據(jù)可以配置為:1個(gè)起始位為邏輯0,6個(gè)數(shù)據(jù)位為邏輯0,不使能校驗(yàn)位,以及一個(gè)停止位為邏輯1,也即配置寄存器SCITXBUF = 0x01。
3.2.2 接收器邏輯0配置
在圖3所示的例子中,接收器的數(shù)據(jù)位判決邏輯在第4、5、6位采樣信號(hào)上,因此發(fā)送數(shù)據(jù)的第1、2、3位以及第7、8位對(duì)采樣信號(hào)的判決沒有影響。發(fā)送端的8位數(shù)據(jù)配置可以配置為:1個(gè)起始位為邏輯0, 6個(gè)數(shù)據(jù)位為邏輯0,不使能校驗(yàn)位,以及一個(gè)停止位為邏輯1,也即配置寄存器SCITXBUF = 0x00。
3.2.3 接收器邏輯1配置
在圖3所示的例子中,接收器的數(shù)據(jù)位判決邏輯在第4、5、6位采樣信號(hào)上,因此發(fā)送數(shù)據(jù)的第1、2、3位以及第7、8位對(duì)采樣信號(hào)的判決沒有影響。發(fā)送端的8位數(shù)據(jù)配置可以配置為:1個(gè)起始位為邏輯0, 6個(gè)數(shù)據(jù)位為邏輯1,不使能校驗(yàn)位,以及一個(gè)停止位為邏輯1,也即配置寄存器SCITXBUF= 0x3F。
綜上所述,發(fā)送器發(fā)送起始位數(shù)據(jù)和邏輯0數(shù)據(jù)可以統(tǒng)一采用發(fā)送數(shù)據(jù)SCITXBUF = 0x01。TI針對(duì)小數(shù)據(jù)量多機(jī)通信而設(shè)計(jì)的地址/數(shù)據(jù)識(shí)別也只是在接收器端完成的,利用設(shè)計(jì)的8倍速率進(jìn)行數(shù)據(jù)傳輸,同樣可以實(shí)現(xiàn)相關(guān)邏輯的驗(yàn)證,只要配置發(fā)送器的第7位為相應(yīng)的狀態(tài)即可。
在Linux環(huán)境下,利用Candence的NC-Verilog軟件對(duì)某款DSP芯片進(jìn)行仿真。配置好仿真參數(shù)后,加載采用了基于8倍通信速率設(shè)計(jì)的測(cè)試代碼,對(duì)SCI通信模塊進(jìn)行仿真驗(yàn)證。設(shè)計(jì)實(shí)現(xiàn)仿真用的主要配置的偽代碼如下[3]:
在上面的代碼中,前面初始化部分包括SCI的LCLK時(shí)鐘配置,GPIO引腳功能復(fù)用配置以及SCI模塊使能等;之后便是配置SCI收發(fā)數(shù)據(jù)的雙方配置為所設(shè)計(jì)的幀格式以及相應(yīng)的波特率配置,最重要的配置為幀格式配置寄存器和波特率寄存器的配置,發(fā)送器的波特率配置為1,接收器的波特率配置為15(即0xF),從而滿足公式:BR TX+1 =(BR RX+1)/8。發(fā)送數(shù)據(jù)的高兩位(第7、8位)不會(huì)發(fā)送,可以為任意值,代碼中統(tǒng)一配置為1或者0。
配置好軟硬件環(huán)境和代碼后進(jìn)行仿真,得到仿真實(shí)驗(yàn)結(jié)果如圖4所示。從仿真結(jié)果可以看到,SCI接口A發(fā)送數(shù)據(jù)速率是SCI接口B接收速率的8倍,SCI接口A每發(fā)送8個(gè)數(shù)據(jù),對(duì)應(yīng)完成SCI接口B接收到的1位數(shù)據(jù);SCI接口A每發(fā)送8位數(shù)據(jù),SCI接口B接收到完整的1幀數(shù)據(jù)。
圖4 仿真實(shí)驗(yàn)結(jié)果
本文重在如何簡(jiǎn)化并快速進(jìn)行串口模塊的功能驗(yàn)證,在研究了模塊自身功能特性的基礎(chǔ)上,提出了一種具有一定通用性的設(shè)計(jì)思想,即利用通信速率和采樣速率之間的關(guān)系,將串口收/發(fā)送器速率與串口接收器采樣速率配置成一定配比關(guān)系,從而實(shí)現(xiàn)用于測(cè)試串口接收器的任意幀結(jié)構(gòu)數(shù)據(jù)。
本文的設(shè)計(jì)方法的主要思路是:首先,依據(jù)設(shè)計(jì)的幀格式應(yīng)該能夠向下兼容SCI的通信格式,即要實(shí)現(xiàn)發(fā)送器發(fā)送數(shù)據(jù)可以實(shí)現(xiàn)任意所需要接收端測(cè)試數(shù)據(jù),從而設(shè)計(jì)了通信速率上8倍的關(guān)系;其次,根據(jù)接收器采樣信號(hào)的判決位置,設(shè)計(jì)了長(zhǎng)度為8個(gè)位的發(fā)送器數(shù)據(jù)幀結(jié)構(gòu),并選擇了最簡(jiǎn)的位配置,定義了用于確定接收器起始位、邏輯0和邏輯1的發(fā)送數(shù)據(jù)。利用所設(shè)計(jì)的幀格式配置進(jìn)行仿真驗(yàn)證,證明該設(shè)計(jì)方法確實(shí)可以實(shí)現(xiàn)滿足任意要求的測(cè)試數(shù)據(jù),并完成了接收數(shù)據(jù)正確性檢驗(yàn)標(biāo)識(shí)(OE、PE、FE、BRKDT)、多處理器通信地址位模式、SCI中斷控制以及16級(jí)數(shù)據(jù)緩沖等相關(guān)功能的驗(yàn)證。
利用該方法,可以簡(jiǎn)化對(duì)DSP芯片中SCI接口功能的測(cè)試設(shè)備要求,從而提高測(cè)試自動(dòng)化效率。
[1] Texas Instruments.TMS320F28335 Digital Signal Controllers (DSCs) Data Manual[P]. 2007.
[2] 張雄偉,等. DSP芯片的原理與開發(fā)應(yīng)用(第二版)[M].北京:電子工業(yè)出版社,2000.
[3] 汪安民,程昱. DSP應(yīng)用開發(fā)實(shí)用子程序[M]. 北京:清華大學(xué)出版社,2009.