摘要:通過研究三線串行接口的構(gòu)成原理, 設(shè)計了一種基于MSP430 單片機和FPGA 的三線串行接口測試儀。該測試儀利用MSP430 單片機來控制三線傳輸功能,由FPGA 產(chǎn)生三線傳輸時序,由相應(yīng)的上位機軟件來測試數(shù)據(jù)通信。經(jīng)測試,該測試儀具有使用方便、功能齊全、性能穩(wěn)定等特點, 能夠較好應(yīng)用于航天領(lǐng)域的三線串行接口通信測試中。
三線串行接口是一種廣泛應(yīng)用在航天工程領(lǐng)域的簡單串行通信接口, 是航天單機產(chǎn)品遙測遙控通信鏈路的重要環(huán)節(jié)。三線串行接口具有電路簡單、時序便于實現(xiàn)、波特率可調(diào)等諸多優(yōu)點。
傳統(tǒng)三線串行接口的設(shè)計一般是采用數(shù)字電路搭接而成, 雖然能滿足工程設(shè)計要求, 但是體積較大, 耗費資源過多, 而且靈活性欠佳。為了對三線串行接口電路進行優(yōu)化, 同時對三線串行通信進行測試, 本設(shè)計采用FPGA 技術(shù)設(shè)計了三線串行接口的時序電路, 將三線時序功能集成到單片F(xiàn)PGA中, 大大減小了電路單元體積。同時, 采用單片機MSP430 來控制FPGA 中產(chǎn)生的三線串行時序, 單片機通過RS232C 通信方式與PC 進行通信, 進而在上位機軟件中直接配置三線串行接口的時序參數(shù)和通信數(shù)據(jù), 使得測試三線串行接口通信的方便性和靈活性大大增強。
1 三線串行通信原理
三線串行接口通信是一種主從同步串行通信, 其數(shù)據(jù)發(fā)送端和接收端有共同的時鐘源, 數(shù)據(jù)接收端采用光耦隔離, 一般時鐘頻率在100 kHz~1 MHz 之間。三線串行接口有門控信號EN、時鐘信號CLK、串行數(shù)據(jù)信號DATA 三根信號線。三線串行接口包括發(fā)送和接收兩種工作模式, 圖1 給出了三線串行通信發(fā)送模式的一種時序圖。
門控信號EN 的下降沿表明一次數(shù)據(jù)傳輸?shù)拈_始,之后保持低電平有效, 數(shù)據(jù)在時鐘信號的下降沿采樣,每個時鐘周期接收或者發(fā)送一位串行數(shù)據(jù), 直到數(shù)據(jù)發(fā)送完成。在數(shù)據(jù)發(fā)送或接收的整個過程中, 門控信號一直處于低電平不變。
2 三線串行接口測試儀的總體方案設(shè)計
本設(shè)計將三線串行接口測試儀劃分為三大功能單元:FPGA 時序產(chǎn)生單元、MSP430 控制單元、上位機軟件單元。圖2 是三線串行接口測試儀的總體方案設(shè)計框圖。
FPGA 時序單元主要用于產(chǎn)生三線串行時序, 選用Xilinx 公司的Spartan-3A 系列FPGA, 其上電配置由一片PROM 來實現(xiàn)。FPGA 時序單元通過Verilog 語言編寫的有限狀態(tài)機來實現(xiàn)各種時序, 有限狀態(tài)機屬于一種時序邏輯電路, 是協(xié)調(diào)相關(guān)信號動作、完成特定操作的控制中心[ 3]。有限狀態(tài)機一般由三部分組成: 當(dāng)前狀態(tài)、下一狀態(tài)和輸出邏輯。本設(shè)計采用摩爾型有限狀態(tài)機來實現(xiàn)各種模式的三線接口時序, 所謂摩爾型狀態(tài)機指輸出值與當(dāng)前的狀態(tài)有關(guān), 與當(dāng)前的輸入無關(guān)。
MSP430 控制單元主要用于對FPGA 的各種功能模塊進行控制, 通過APB 總線的方式訪問FPGA 內(nèi)部的寄存器來實現(xiàn)。單片機通過C 語言編程的方式靈活地修改各個時序參數(shù), 并和上位機軟件進行通信。
上位機軟件采用微軟公司的VC++ 集成開發(fā)環(huán)境開發(fā), 本設(shè)計將軟件劃分成幾個小功能模塊, 并將部分模塊做成動態(tài)鏈接庫的形式供主程序調(diào)用。上位機軟件主要包括主接收程序、數(shù)據(jù)發(fā)送程序、三線串行接口配置程序、RS232 通信動態(tài)鏈接庫。
此外, 電路中用到了多組電源,F(xiàn)PGA 供電電壓為1.2 V, 單片機供電電壓為3.3 V, 三線串行接口的數(shù)據(jù)接收端一般需要光耦隔離, 本設(shè)計選用的是5 V 供電的光耦,RS232 通信芯片也是5 V 供電, 所有這些電壓都由相應(yīng)的電源芯片直接產(chǎn)生。
3 三線串行接口測試儀設(shè)計方案的實現(xiàn)
3.1 三線串行接口時序產(chǎn)生單元的FPGA 實現(xiàn)
設(shè)計的三線串行接口電路要求能夠?qū)崿F(xiàn)三線串行時序, 同時要求具備時序參數(shù)( 比如時鐘頻率、采樣方式等) 可調(diào)、數(shù)據(jù)收發(fā)等功能, 根據(jù)上述目標(biāo), 本設(shè)計將FPGA 時序產(chǎn)生單元劃分成以下幾個模塊:three -wireregister interface ( 三線寄存器接口模塊)、three-wire send( 三線發(fā)送模塊)、three -wire receive ( 三線接收模塊) 和three-wire clock( 三線時鐘產(chǎn)生模塊)。
Three-wire register interface : 該模塊主要用于FPGA與單片機MSP430 的通信。本設(shè)計將FPGA 當(dāng)作一個外部設(shè)備掛接在MSP430 的I/O 端口,MSP430 控制I/O 端口通過特定的總線時序來訪問FPGA 內(nèi)部的配置寄存器??偩€時序采用APB 總線時序。APB 總線是ARM 體系結(jié)構(gòu)里片內(nèi)芯片互聯(lián)的一種高性能總線, 其控制信號線包括: 復(fù)位信號RST、系統(tǒng)時鐘SYSCLK、讀信號READ、寫信號WRITE、片選信號PSEL、使能信號PEN,另外還包括一個8 位的地址總線ADDR[7:0] 和8 位數(shù)據(jù)總線DATA[7:0]。圖3 給出了三線寄存器接口APB總線連接圖。
Three-wire send : 該模塊主要用于三線串行接口發(fā)送數(shù)據(jù)時的時序產(chǎn)生, 三線發(fā)送模塊時序采用摩爾型狀態(tài)機實現(xiàn), 該狀態(tài)機共有7 個狀態(tài):IDLE 狀態(tài)、START狀態(tài)、DELAY1 狀態(tài)、SEND 狀態(tài)、DELAY2 狀態(tài)、END 狀態(tài)和DELAY3 狀態(tài), 各個具體狀態(tài)轉(zhuǎn)換如圖4 所示。
每個狀態(tài)都有一個狀態(tài)指示控制信號, 以SEND 狀態(tài)為例, 其指示控制信號為send_run 。當(dāng)狀態(tài)機進入SEND 狀態(tài)后,send_run 變?yōu)? , 然后SEND 狀態(tài)的電路開始工作。當(dāng)該電路執(zhí)行完畢后會將send_run 變?yōu)?時, 表明退出SEND 狀態(tài), 狀態(tài)機進入下一狀態(tài)。其余狀態(tài)類似。各狀態(tài)定義如下:
IDLE 狀態(tài), 為空閑等待狀態(tài), 即系統(tǒng)上電后的狀態(tài)機的初始狀態(tài), 當(dāng)系統(tǒng)完成初始化或者完成一次完整的時序功能后狀態(tài)機都會返回IDLE 狀態(tài)。
START 狀態(tài), 表示三線串行通信開始, 在檢測到三線串行接口的使能數(shù)據(jù)線EN 有效后狀態(tài)機進入到START 狀態(tài)。
DELAY1 狀態(tài), 表示三線串行通信數(shù)據(jù)使能后, 時鐘信號相對使能信號的延遲時間, 該狀態(tài)實際上起到一個延時的作用。
SEND 狀態(tài), 表示三線串行通信數(shù)據(jù)開始發(fā)送, 該狀態(tài)下三線串行數(shù)據(jù)將開始移位發(fā)送。
DELAY2 狀態(tài), 表示三線串行通信數(shù)據(jù)發(fā)送完一個字節(jié)后的間隔時間,該狀態(tài)實際上起到一個延時的作用。
END 狀態(tài), 這是表示三線串行通信數(shù)據(jù)發(fā)送結(jié)束。
DELAY3 狀態(tài), 這是表示三線串行通信數(shù)據(jù)發(fā)送結(jié)束后, 使能信號變成無效后相對最后一個時鐘觸發(fā)沿的延遲時間。
評論
查看更多