FPGA在激光測(cè)距機(jī)電路檢測(cè)系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
針對(duì)部隊(duì)各類(lèi)激光測(cè)距機(jī)的維修保障,我所研制出了一套便攜式激光測(cè)距機(jī)電路檢測(cè)儀,能實(shí)現(xiàn)對(duì) 85手持式、 88式、88對(duì)海式等五類(lèi)激光測(cè)距機(jī)電路系統(tǒng)的快速檢測(cè)和維修指導(dǎo),極大地提高了維修效率。由于要完成對(duì)光信號(hào)的接收和處理,測(cè)距機(jī)的電路系統(tǒng)涉及到許多窄脈寬信號(hào),而且具有嚴(yán)格的信號(hào)時(shí)序。其中的 AGC信號(hào)、觸發(fā)信號(hào)等脈寬均只有幾十個(gè) uS,主波和回波信號(hào)的脈寬均只有 1~2uS,信號(hào)時(shí)間間隔精確到 nS級(jí),為信號(hào)檢測(cè)增加了難度;同時(shí),電路系統(tǒng)的控制信號(hào)繁多,各類(lèi)裝備的接口各異,這些都為檢修儀的設(shè)計(jì)提出了挑戰(zhàn),僅采用傳統(tǒng)的單片機(jī)和常規(guī) IC難以實(shí)現(xiàn)。隨著大規(guī)模集成電路技術(shù)的飛速發(fā)展,CPLD和 FPGA等可編程邏輯器件在結(jié)構(gòu)、工藝、集成度、功能、速度和靈活性等方面都有了很大的改進(jìn)和提高,從而為高效率、高質(zhì)量、靈活地設(shè)計(jì)嵌入式單片機(jī)系統(tǒng)提供了可能??删幊踢壿嬈骷募用芄δ芤彩巩a(chǎn)品開(kāi)發(fā)者的權(quán)利得到保障。因此,本文基于 FPGA邏輯器件設(shè)計(jì)了激光測(cè)距機(jī)的電路檢測(cè)系統(tǒng)。
2檢測(cè)系統(tǒng)硬件組成 脈沖信號(hào)
通信MCU 數(shù)據(jù)采集處理
500)this.style.width=500;" border="0" />
如圖 1所示,檢測(cè)系統(tǒng)由 MCU數(shù)據(jù)處理、 FPGA及其配置器件、被測(cè)信號(hào)調(diào)理、激勵(lì)信號(hào)驅(qū)動(dòng)適配、液晶顯示等功能模塊組成。其工作原理是: MCU根據(jù)用戶操作向 FPGA發(fā)送測(cè)試相應(yīng)命令, FPGA模塊產(chǎn)生激勵(lì)信號(hào),為被測(cè)電路提供工作時(shí)序,采集電路信號(hào)測(cè)量其特征參量,并將測(cè)試結(jié)果傳送給 MCU,MCU處理測(cè)量結(jié)果,進(jìn)行故障分析判斷,并在液晶屏上實(shí)時(shí)顯示測(cè)試波形和數(shù)據(jù)信息??梢?jiàn), FPGA是整個(gè)檢測(cè)系統(tǒng)的關(guān)鍵部分,整合了與 MCU的通信、測(cè)試命令的解釋及決策、測(cè)試激勵(lì)信號(hào)的產(chǎn)生和輸入信號(hào)檢測(cè)等功能。
通過(guò)對(duì)檢測(cè)對(duì)象中所有被測(cè)信號(hào)的分析,根據(jù)測(cè)試功能、處理速度和芯片容量的需求,本檢測(cè)系統(tǒng)中FPGA芯片選用 ALTERA公司Cyclone系列的EP1C3T144。該器件采用 0.13um工藝制造、TPFQ封裝,擁有104個(gè)I/O口和2910個(gè)邏輯單元,可直接由外部晶振提供 100MHz的時(shí)鐘輸入,也可經(jīng)片內(nèi) PLL倍頻,工作在更高的頻率。采用 Verilog HDL硬件描述語(yǔ)言來(lái)實(shí)現(xiàn) FPGA各功能模塊,然后通過(guò) EDA開(kāi)發(fā)平臺(tái),對(duì)設(shè)計(jì)文件進(jìn)行邏輯編譯、邏輯化簡(jiǎn)、綜合及優(yōu)化、邏輯布局布線、邏輯仿真,最后對(duì) FPGA芯片進(jìn)行編程,實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)要求。FPGA的配置采用了專(zhuān)用配置芯片 EPCS1,用 ByteBlaster II對(duì)其進(jìn)行下載編程。
3 FPGA功能模塊劃分及實(shí)現(xiàn)
在 FPGA的功能實(shí)現(xiàn)上,首先構(gòu)建整體方案,然后劃分功能模塊,再針對(duì)每個(gè)功能模塊進(jìn)行編程、波形仿真,最后進(jìn)行整體功能的仿真和實(shí)驗(yàn)測(cè)試。根據(jù)上節(jié)分析,可將 FPGA的作用分成 SPI通信接口、命令解釋與決策、時(shí)鐘分頻、激勵(lì)信號(hào)產(chǎn)生、電路信號(hào)測(cè)試等功能模塊,如圖 2所示。
500)this.style.width=500;" border="0" />
3.1 SPI通信接口的實(shí)現(xiàn)
SPI接口是一個(gè)同步、全雙工串行接口,最大數(shù)據(jù)位速率為時(shí)鐘速率的1/8,只要遵循同一時(shí)刻只有一個(gè)主機(jī)和從機(jī)通信的原則,在同一條總線上可以有多個(gè)主機(jī)和從機(jī)。SPI口因接口簡(jiǎn)潔擴(kuò)展方便等優(yōu)良特性,廣泛應(yīng)用于串行存儲(chǔ)器(如DataFlash、3線 E 2PROM)、串行外設(shè)(如ADC、DAC、LCD控制器、CAN控制器)和外部協(xié)處理器中。
在第三方軟件 Altera SOPC Builder中可直接定制 SPI接口的 IP核,在本系統(tǒng)中采用 Verilog HDL來(lái)描述實(shí)現(xiàn)。 在設(shè)計(jì)中,MCU作為 SPI通信的主機(jī),F(xiàn)PGA的SPI接口作為從機(jī)。SPI口有四種不同的數(shù)據(jù)傳輸格式的時(shí)序,這里通過(guò)設(shè)置 SPCR寄存器選擇CPOL=0、CPHA=0模式,以下是其實(shí)現(xiàn)代碼:
always @(posedge sck or posedge cs)
begin:chy
integer i;
if(cs) begin data=0;i=0;miso=1”b’Z; end
else begin
if(sck)
begin
data= data<<1;
data= data+mosi;
miso=(send_data>>(7-i))& 8'h01;
i=i+1;
if(i==8) begin
rev_byte= data;
end end end end
3.2時(shí)鐘分頻的實(shí)現(xiàn)
Verilog HDL所描述的所有組合邏輯或時(shí)序邏輯電路的功能都是在各自輸入時(shí)鐘的節(jié)拍下工作的,而對(duì)于不同的功能模塊,因其電路精度要求不同對(duì)輸入時(shí)鐘的要求也不同,時(shí)鐘頻率越低,對(duì) FPGA綜合、布局布線的要求也越低,所設(shè)計(jì)出的電路也越穩(wěn)定。在本設(shè)計(jì)中,系統(tǒng)時(shí)鐘由外部 100MHz晶振提供,系統(tǒng)內(nèi)部模塊要用到的時(shí)鐘有 100MHz、1MHz、 1KHz、10Hz和 1Hz五種,由計(jì)數(shù)器分頻實(shí)現(xiàn),限于篇幅不詳述。
3.3命令解釋與決策的實(shí)現(xiàn) FPGA要完成與 MCU的數(shù)據(jù)交換,又要指揮各測(cè)試模塊對(duì)指定通道信號(hào)的特定參量的測(cè)試,還要執(zhí)行成百上千組時(shí)序信號(hào)激勵(lì)和開(kāi)關(guān)量信號(hào)激勵(lì),任務(wù)錯(cuò)綜復(fù)雜,需要一個(gè)對(duì)命令的解釋和決策執(zhí)行機(jī)制。在具體實(shí)現(xiàn)上,首先對(duì) MCU的命令號(hào)進(jìn)行區(qū)間劃分,決策模塊收到從 SPI接口模塊的命令后,判斷命令的類(lèi)別,分別針對(duì)握手聯(lián)絡(luò)命令、復(fù)位命令、測(cè)試命令(包括通道號(hào)、測(cè)試指標(biāo)、時(shí)鐘輸入的選擇)、激勵(lì)發(fā)生命令(包括通道號(hào)、時(shí)序信息)、發(fā)送測(cè)試結(jié)果命令(通過(guò) SPI接口將測(cè)試結(jié)果發(fā)送給MCU)等去觸發(fā)相應(yīng) FPGA內(nèi)部模塊動(dòng)作。
3.4信號(hào)測(cè)試的實(shí)現(xiàn)
信號(hào)測(cè)試功能包括對(duì)輸入信號(hào)的脈寬測(cè)試、周期測(cè)試、特殊類(lèi)型信號(hào)的測(cè)試等內(nèi)容,限于篇幅,下面對(duì)比較典型的脈寬測(cè)試進(jìn)行闡述。例如對(duì)于負(fù)脈沖信號(hào),測(cè)試其脈寬即是測(cè)量其在某時(shí)段低電平的維持時(shí)間,可以通過(guò)計(jì)算時(shí)標(biāo)信號(hào)的個(gè)數(shù)來(lái)實(shí)現(xiàn)。設(shè)時(shí)標(biāo)信號(hào)周期為T(mén)s,時(shí)標(biāo)個(gè)數(shù)為N,則脈寬為W=Ts*N,其主要部分是計(jì)數(shù)功能,并將得到的數(shù)予以鎖存。計(jì)數(shù)模塊與鎖存模塊由控制信號(hào)發(fā)生模塊控制,其邏輯框圖如圖 3所示。
500)this.style.width=500;" border="0" />
其中 CLKX為被測(cè)脈沖,CLK為時(shí)標(biāo)信號(hào),RST為系統(tǒng)復(fù)位信號(hào),WIDTH為脈寬計(jì)算結(jié)果。圖中有三個(gè)控制信號(hào):計(jì)數(shù)允許信號(hào)CNT_EN、計(jì)數(shù)清零信號(hào) CNT_CLR和鎖存信號(hào)LOAD,分別控制計(jì)數(shù)模塊和鎖存模塊。
在實(shí)際測(cè)試中發(fā)現(xiàn),由于外界干擾的影響,在被測(cè)信號(hào)出現(xiàn)正常脈沖前會(huì)出現(xiàn)多個(gè)窄帶
干擾脈沖,這個(gè)脈沖的短暫低電平會(huì)讓計(jì)數(shù)模塊產(chǎn)生誤動(dòng)作,從而得出錯(cuò)誤的計(jì)算結(jié)果。本文采取前級(jí)窄帶脈沖過(guò)濾的方法,有效地消除了外界的干擾。其具體做法是外加一個(gè)計(jì)數(shù)模塊判斷輸入信號(hào)的低電平時(shí)間是否超過(guò)一定門(mén)限,超過(guò)則觸發(fā)其后的控制信號(hào)發(fā)生模塊動(dòng)作,否則不觸發(fā)。 值得注意的是在后面的計(jì)數(shù)模塊里要加上前級(jí)的門(mén)限值。
3.5激勵(lì)信號(hào)的實(shí)現(xiàn)
檢測(cè)系統(tǒng)所要產(chǎn)生的激勵(lì)信號(hào)包括時(shí)序信號(hào)和開(kāi)關(guān)量信號(hào),時(shí)序信號(hào)的產(chǎn)生相對(duì)復(fù)雜,其實(shí)現(xiàn)機(jī)理如圖 4所示。其中,START是啟動(dòng)信號(hào),控制時(shí)序產(chǎn)生模塊的啟動(dòng)與停止;EX_SYNC是外同步信號(hào),在某些場(chǎng)合下,時(shí)序信號(hào)的產(chǎn)生需要與外界信號(hào)的同步,此信號(hào)用于控制信號(hào)發(fā)生的時(shí)基;計(jì)數(shù)模塊負(fù)責(zé)在 CNT_EN和 CNT_CLR等控制信號(hào)下計(jì)數(shù),實(shí)時(shí)觸發(fā)相應(yīng)的時(shí)序序列輸出;LOCK信號(hào)用于鎖定末態(tài)時(shí)序序列的狀態(tài)。
500)this.style.width=500;" border="0" />
4 設(shè)計(jì)中應(yīng)注意的問(wèn)題及解決辦法
4.1電源干擾
檢測(cè)電路,尤其是高精度測(cè)頻、測(cè)脈寬的 FPGA電路,電源部分性能起著舉足輕重的作用。電源一般由 220V交流經(jīng)變壓、整流后獲得,為防止引入交變干擾,需要對(duì)其進(jìn)行加去耦電容和屏蔽處理。由于在設(shè)計(jì)時(shí)對(duì)電源、地線的考慮不周而引起的干擾也會(huì)使 FPGA測(cè)試性能的下降,甚至影響到功能的實(shí)現(xiàn)。為此在設(shè)計(jì)整機(jī)印制板時(shí)要盡量增加電源和地線的寬度,最好是地線比電源線寬。它們的寬度關(guān)系是:地線最寬,電源線次之,信號(hào)線最窄。在每個(gè)集成電路電源處加一個(gè)去耦電容,每個(gè)電解電容邊上都要加一個(gè)小的高頻旁路電容。另外本系統(tǒng)在檢驗(yàn)中發(fā)現(xiàn),由于在測(cè)試中整機(jī)電流的突然增大,會(huì)使 FPGA復(fù)位芯片的電壓產(chǎn)生抖動(dòng),進(jìn)而引起 FPGA的復(fù)位動(dòng)作,最后采取在 FPGA的 3.3V端并接一個(gè) 470uF的電容的方法解決了此問(wèn)題。
4.2數(shù)?;_
由于整個(gè)系統(tǒng)是由數(shù)字電路和模擬電路混合構(gòu)成的,在布線時(shí)需要考慮它們之間互相干擾的問(wèn)題,特別是地線上的噪聲干擾。數(shù)字電路的頻率高,模擬電路的敏感度強(qiáng),對(duì)信號(hào)線來(lái)說(shuō),高頻的信號(hào)線應(yīng)盡可能遠(yuǎn)離敏感的模擬電路器件;對(duì)地線來(lái)說(shuō),整個(gè) PCB對(duì)外界只有一個(gè)結(jié)點(diǎn),所以必須在 PCB內(nèi)部處理數(shù)模共地的問(wèn)題。具體做法是在板內(nèi)數(shù)字地和模擬地分開(kāi),只在 PCB與外界連接的接口處(如插頭等),數(shù)字地與模擬地通過(guò)一點(diǎn)來(lái)短接。
5結(jié)束語(yǔ)
本文采用 FPGA芯片實(shí)現(xiàn)了檢測(cè)系統(tǒng)中的測(cè)試命令解釋及決策、測(cè)試激勵(lì)信號(hào)的產(chǎn)生、輸入信號(hào)特征參量的測(cè)量等多個(gè)功能模塊,并通過(guò) SPI接口與 MCU配合,完成對(duì)各類(lèi)電路板的檢測(cè)功能。分析了在實(shí)際應(yīng)用中會(huì)出現(xiàn)的干擾,并采用了有效的解決方法。實(shí)驗(yàn)證明,采用 FPGA的設(shè)計(jì)方案解決了測(cè)試中的難點(diǎn)問(wèn)題,達(dá)到了測(cè)試精度要求,并具有很強(qiáng)的擴(kuò)展性。目前,此項(xiàng)目產(chǎn)品已在多家單位推廣使用。