?

基于MSP430和FPGA的三線串行接口測試儀的設計

2013-12-07 06:18楊亭粘偉
電子技術應用 2013年2期
關鍵詞:狀態機寄存器時序

楊亭,粘偉

(北京空間機電研究所,北京 100076)

三線串行接口是一種廣泛應用在航天工程領域的簡單串行通信接口,是航天單機產品遙測遙控通信鏈路的重要環節。三線串行接口具有電路簡單、時序便于實現、波特率可調等諸多優點[1]。

傳統三線串行接口的設計一般是采用數字電路搭接而成,雖然能滿足工程設計要求,但是體積較大,耗費資源過多,而且靈活性欠佳。為了對三線串行接口電路進行優化,同時對三線串行通信進行測試,本設計采用FPGA技術設計了三線串行接口的時序電路,將三線時序功能集成到單片FPGA中,大大減小了電路單元體積。同時,采用單片機MSP430來控制FPGA中產生的三線串行時序,單片機通過RS232C通信方式與PC進行通信,進而在上位機軟件中直接配置三線串行接口的時序參數和通信數據,使得測試三線串行接口通信的方便性和靈活性大大增強。

1 三線串行通信原理

三線串行接口通信是一種主從同步串行通信,其數據發送端和接收端有共同的時鐘源,數據接收端采用光耦隔離,一般時鐘頻率在100 kHz~1 MHz之間。三線串行接口有門控信號EN、時鐘信號CLK、串行數據信號DATA三根信號線。三線串行接口包括發送和接收兩種工作模式,圖1給出了三線串行通信發送模式的一種時序圖。

門控信號EN的下降沿表明一次數據傳輸的開始,之后保持低電平有效,數據在時鐘信號的下降沿采樣,每個時鐘周期接收或者發送一位串行數據,直到數據發送完成。在數據發送或接收的整個過程中,門控信號一直處于低電平不變[2]。

2 三線串行接口測試儀的總體方案設計

圖2 三線串行接口測試系統組成框圖

本設計將三線串行接口測試儀劃分為三大功能單元:FPGA時序產生單元、MSP430控制單元、上位機軟件單元。圖2是三線串行接口測試儀的總體方案設計框圖。

FPGA時序單元主要用于產生三線串行時序,選用Xilinx公司的Spartan-3A系列FPGA,其上電配置由一片PROM來實現。FPGA時序單元通過Verilog語言編寫的有限狀態機來實現各種時序,有限狀態機屬于一種時序邏輯電路,是協調相關信號動作、完成特定操作的控制中心[3]。有限狀態機一般由三部分組成:當前狀態、下一狀態和輸出邏輯。本設計采用摩爾型有限狀態機來實現各種模式的三線接口時序,所謂摩爾型狀態機指輸出值與當前的狀態有關,與當前的輸入無關。

MSP430控制單元主要用于對FPGA的各種功能模塊進行控制,通過APB總線的方式訪問FPGA內部的寄存器來實現。單片機通過C語言編程的方式靈活地修改各個時序參數,并和上位機軟件進行通信。

上位機軟件采用微軟公司的VC++集成開發環境開發,本設計將軟件劃分成幾個小功能模塊,并將部分模塊做成動態鏈接庫的形式供主程序調用。上位機軟件主要包括主接收程序、數據發送程序、三線串行接口配置程序、RS232通信動態鏈接庫。

此外,電路中用到了多組電源,FPGA供電電壓為1.2 V,單片機供電電壓為3.3 V,三線串行接口的數據接收端一般需要光耦隔離,本設計選用的是5 V供電的光耦,RS232通信芯片也是5 V供電,所有這些電壓都由相應的電源芯片直接產生。

3 三線串行接口測試儀設計方案的實現

3.1 三線串行接口時序產生單元的FPGA實現

設計的三線串行接口電路要求能夠實現三線串行時序,同時要求具備時序參數(比如時鐘頻率、采樣方式等)可調、數據收發等功能,根據上述目標,本設計將FPGA時序產生單元劃分成以下幾個模塊:three-wire register interface(三線寄存器接口模塊)、three-wire send(三線發送模塊)、three-wire receive(三線接收模塊)和three-wire clock(三線時鐘產生模塊)。

Three-wire register interface:該模塊主要用于FPGA與單片機MSP430的通信。本設計將FPGA當作一個外部設備掛接在MSP430的I/O端口,MSP430控制 I/O端口通過特定的總線時序來訪問FPGA內部的配置寄存器??偩€時序采用APB總線時序。APB總線是ARM體系結構里片內芯片互聯的一種高性能總線,其控制信號線包括:復位信號RST、系統時鐘SYSCLK、讀信號READ、寫信號 WRITE、片選信號 PSEL、使能信號 PEN,另外還包括一個8位的地址總線ADDR[7:0]和8位數據總線DATA[7:0][4]。圖3給出了三線寄存器接口APB總線連接圖。

Three-wire send:該模塊主要用于三線串行接口發送數據時的時序產生,三線發送模塊時序采用摩爾型狀態機實現,該狀態機共有7個狀態:IDLE狀態、START狀態、DELAY1狀態、SEND狀態、DELAY2狀態、END狀態和DELAY3狀態,各個具體狀態轉換如圖4所示。

圖3 三線寄存器接口APB總線連接圖

圖4 FPGA三線串行接口時序控制軟件狀態機轉換圖

每個狀態都有一個狀態指示控制信號,以SEND狀態為例,其指示控制信號為send_run。當狀態機進入SEND狀態后,send_run變為1,然后SEND狀態的電路開始工作。當該電路執行完畢后會將send_run變為0時,表明退出SEND狀態,狀態機進入下一狀態。其余狀態類似。各狀態定義如下:

IDLE狀態,為空閑等待狀態,即系統上電后的狀態機的初始狀態,當系統完成初始化或者完成一次完整的時序功能后狀態機都會返回IDLE狀態。

START狀態,表示三線串行通信開始,在檢測到三線串行接口的使能數據線EN有效后狀態機進入到START狀態。

DELAY1狀態,表示三線串行通信數據使能后,時鐘信號相對使能信號的延遲時間,該狀態實際上起到一個延時的作用。

SEND狀態,表示三線串行通信數據開始發送,該狀態下三線串行數據將開始移位發送。

DELAY2狀態,表示三線串行通信數據發送完一個字節后的間隔時間,該狀態實際上起到一個延時的作用。

END狀態,這是表示三線串行通信數據發送結束。

DELAY3狀態,這是表示三線串行通信數據發送結束后,使能信號變成無效后相對最后一個時鐘觸發沿的延遲時間。

Three-wire receive:當三線串行接口的使能信號線有效后(高電平有效或低電平有效),在同步時鐘的觸發下(上升沿或下降沿)對數據信號線進行采樣,采樣得到的數據位經過一個8位移位寄存器實現串/并轉換,轉換后的8位并行數據存放到接收FIFO中。接收FIFO的大小為128 B,接收FIFO的使用使得三線串行接口具備了數據緩存功能,不必擔心單片機和FPGA接口速度匹配問題導致的數據丟失。當三線串行接口的使能信號由有效變成無效時,接收模塊向系統發送“三線數據接收結束”中斷,該中斷信號直接與單片機的外部中斷連接,從而單片機可以快速響應該中斷通過APB總線讀取接收FIFO中的數據。圖5是三線接收模塊的構成框圖。

Three-wire clock三線時鐘模塊:該模塊實際上是一個時鐘分頻模塊。由于FPGA系統采用的系統時鐘頻率為50 MHz,本設計需要的三線串行模塊的時鐘頻率是由系統時鐘頻率經分頻得到[5]。為了實現可調的三線時鐘頻率,要求分頻系數可調。分頻系數存儲于一個32 bit的分頻寄存器中,通過三線串行接口模塊中的寄存器配置能修改該分頻系數。

圖5 三線接收模塊的構成框圖

通過ISE自帶的ISim仿真器對三線串行接口時序產生單元做了功能仿真,仿真圖如圖6所示。

3.2 單片機控制三線串行接口寄存器

圖6 三線串行接口時序產生單元的仿真圖

MSP430單片機在測試儀中起到控制和配置三線串行通信參數的作用,這是通過單片機讀寫APB總線上掛接的三線串行接口配置寄存器組來實現的。本設計自行定義了配置寄存器的地址和功能。以三線串行接口LINE1寄存器組為例來介紹配置寄存器:LINE1寄存器組包括了發送相關的7個寄存器,分別用于控制三線串行接口的發送參數。如表1所示,LINE1_CLK寄存器是一個32位的寄存器,其訪問地址為0x14,屬于LINE1寄存器組,通過配置LINE1_CLK寄存器可以很容易調整三線串行接口的時鐘頻率,其調整范圍可以從0~1 MHz,這可以通過調整分頻系數寄存器來計算。

表1 三線串行接口LINE1寄存器組

3.3 上位機軟件設計

上位機軟件主要劃分成幾個模塊:數據收發單元、配置文件、RS232通信動態鏈接庫、圖形用戶接口。其中圖形用戶接口是軟件的主程序,在該程序中可以調用其他程序[6]。比如可以調用數據發送程序來發送三線串行數據,也可以調用配置程序來配置三線串行接口的通信參數等。圖7是上位機軟件的系統架構圖。

三線串行接口配置軟件功能包括調整三線串行總線頻率 f、調整三線時序中的 t1、t2、t3以及總線信息設置等。三線發送軟件功能包括數據發送的模式和方式,如手動發送、自動發送等模式,以ASCII或HEX方式發送等。

本文通過介紹三線串行接口通信原理,給出了三線串行通信接口測試儀的硬件電路和軟件設計。針對傳統三線串行接口電路資源占用過多且不夠靈活的缺點,構建了基于MSP430單片機和FPGA的三線串行通信測試儀,詳述了其組成模塊及工作方式。本方案設計合理可行,優點突出,滿足了實際應用要求。目前,此測試儀已研制出樣機并成功應用于某航天型號項目的通信測試平臺中。

圖7 三線串行接口軟件系統架構圖

[1]楊承富,徐志軍.SPI總線接口的FPGA設計與實現[J].現代電子技術,2004,27(2):73-74.

[2]馮春陽,張遂南,王瑋,等.基于 FPGA的三線制同步串行通信控制器設計[J].電子技術應用,2009,35(9):54-56.

[3]田耘,徐文波.Xilinx FPGA開發實用教程[M].北京:清華大學出版社,2008.

[4]MAXIM Corp.SPI/I2C Bus Lines Control Multiple Peripherals[EB/OL].http://www.maxim-ic.com/an4042.2007.

[5]HUANG R W,HUANG H W.Development of real time monitoring system using controller area network[J].Materials Science Forum,2006(1):505-507.

[6]夏宇聞.Verilog數字系統設計教程[M].北京:北京航空航天大學出版社,2003.

猜你喜歡
狀態機寄存器時序
清明
STM32和51單片機寄存器映射原理異同分析
Lite寄存器模型的設計與實現
基于不同建設時序的地鐵互聯互通方案分析
基于有限狀態機的交會對接飛行任務規劃方法
基于FPGA 的時序信號光纖傳輸系統
基于模體演化的時序鏈路預測方法
雙口RAM讀寫正確性自動測試的有限狀態機控制器設計方法
高速數模轉換器AD9779/AD9788的應用
基于反熔絲FPGA的有限狀態機加固設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合