基于FPGA技術(shù)高頻疲勞試驗(yàn)機(jī)控制器的設(shè)計(jì)
1簡(jiǎn)介
現(xiàn)場(chǎng)可編程門陣列FPGA(FieldProgrammable Gate Array)是美國(guó)Xilinx公司于1984年首先開(kāi)發(fā)的一種通用型用戶可編程器件。FPGA既具有門陣列器件的高集成度和通用性,又有可編程邏輯器件用戶可編程的靈活性。
FPGA由可編程邏輯單元陣列、布線資源和可編程的I/O單元陣列構(gòu)成,一個(gè)FPGA包含豐富的邏輯門、寄存器和I/O資源。一片F(xiàn)PGA芯片就可以實(shí)現(xiàn)數(shù)百片甚至更多個(gè)標(biāo)準(zhǔn)數(shù)字集成電路所實(shí)現(xiàn)的系統(tǒng)。
FPGA的結(jié)構(gòu)靈活,其邏輯單元、可編程內(nèi)部連線和I/O單元都可以由用戶編程,可以實(shí)現(xiàn)任何邏輯功能,滿足各種設(shè)計(jì)需求。其速度快,功耗低,通用性強(qiáng),特別適用于復(fù)雜系統(tǒng)的設(shè)計(jì)。使用FPGA還可以實(shí)現(xiàn)動(dòng)態(tài)配置、在線系統(tǒng)重構(gòu)(可以在系統(tǒng)運(yùn)行的不同時(shí)刻,按需要改變電路的功能,使系統(tǒng)具備多種空間相關(guān)或時(shí)間相關(guān)的任務(wù))及硬件軟化、軟件硬化等功能。
鑒于高頻疲勞試驗(yàn)機(jī)控制器控制規(guī)模比較大,功能復(fù)雜,故我們?cè)谘兄七^(guò)程中,在傳統(tǒng)試驗(yàn)機(jī)控制器的基礎(chǔ)上,通過(guò)FPGA技術(shù)及微機(jī)技術(shù)兩者的結(jié)合,來(lái)全面提升控制器系統(tǒng)的性能,使整機(jī)的工作效率、控制精度和電氣系統(tǒng)可靠性得到了提高,且操作方便而又不乏技術(shù)的先進(jìn)性。
2 控制器結(jié)構(gòu)及內(nèi)容
本控制系統(tǒng)的總體結(jié)構(gòu),下位機(jī)是整個(gè)高頻疲勞試驗(yàn)機(jī)控制器的核心。用于實(shí)現(xiàn)產(chǎn)生控制試驗(yàn)機(jī)的控制信號(hào)和數(shù)據(jù),反饋信號(hào)的處理,以及和上位機(jī)進(jìn)行數(shù)據(jù)通信。其控制功能強(qiáng)弱也直接影響著整個(gè)控制器性能的好壞。圖中波形發(fā)生器是用于激勵(lì)和保持電磁激振器的振動(dòng)。在此,波形發(fā)生器應(yīng)輸出正弦波。
3 系統(tǒng)采取的技術(shù)路線
系統(tǒng)在實(shí)現(xiàn)技術(shù)參數(shù)、功能要求的基礎(chǔ)上,結(jié)合目前微機(jī)及FPGA等微電子技術(shù),采取了以下主要技術(shù)路線:
(1)下位機(jī)是系統(tǒng)控制的核心。由于本系統(tǒng)控制規(guī)模相對(duì)比較復(fù)雜,控制對(duì)象具一定特殊性(如高頻率,高負(fù)荷等),且牽涉到控制電機(jī),故不采用傳統(tǒng)的8位機(jī),而是考慮采用功能相對(duì)更強(qiáng)大,速度更快的16位機(jī)—87C196系列。
(2)激振器要求輸入波形為正弦波,試驗(yàn)的頻率范圍為80~250Hz。另外,系統(tǒng)還應(yīng)該能夠進(jìn)行掃頻試驗(yàn)。在掃頻試驗(yàn)中,系統(tǒng)以1Hz為步長(zhǎng)進(jìn)行掃頻(粗調(diào)),再在粗調(diào)的基礎(chǔ)上進(jìn)行微調(diào)(以0.1Hz為步長(zhǎng)),以確定系統(tǒng)的共振點(diǎn)??梢钥闯?,能產(chǎn)生精度為0.1Hz波形的電路模塊是整個(gè)系統(tǒng)設(shè)計(jì)中很關(guān)鍵的一部分,也是設(shè)計(jì)難點(diǎn)之一。這部分如通過(guò)單片機(jī)或其它專用芯片則不能或很難實(shí)現(xiàn)。系統(tǒng)采用FPGA作波形發(fā)生器,見(jiàn)圖1中虛線框所示部分。這樣做的優(yōu)點(diǎn)是:高速(一般芯片頻率至少幾十兆,甚至上百兆)且能滿足上述精度要求;采用數(shù)字電路實(shí)現(xiàn),抗干擾性好;能把其它邏輯電路也集成至該芯片中,省掉了許多分立元件,同時(shí)也減少了體積;能夠按需改變波形。
(3)直流調(diào)速通過(guò)變壓實(shí)現(xiàn),而變壓則通過(guò)采用晶閘管的可控整流器來(lái)完成。通過(guò)單片機(jī)輸出可變電壓給移相觸發(fā)器,觸發(fā)器輸出可控導(dǎo)通角給可控整流器,實(shí)現(xiàn)電機(jī)速度的調(diào)整。有利于提高系統(tǒng)的可靠性。
(4)系統(tǒng)部分重要信號(hào)用數(shù)字濾波器濾波,該數(shù)字濾波器用FPGA實(shí)現(xiàn)。與軟件濾波相比,此方法有利于改善信號(hào)的濾波效果,且濾波速度得到很大提高。
4 部分模塊設(shè)計(jì)
FPGA部分可劃分成兩個(gè)模塊,其中正弦波發(fā)生器模塊又可細(xì)分成幾個(gè)小模塊,如圖2所示。
4.1 鎖存器設(shè)計(jì)
鎖存器用來(lái)將單片機(jī)送來(lái)的頻率數(shù)據(jù)鎖存穩(wěn)定在FPGA中,可以用片內(nèi)的鎖存器資源(或用觸發(fā)器)來(lái)構(gòu)成。
4.2 運(yùn)算器設(shè)計(jì)
運(yùn)算器是用來(lái)將頻率數(shù)據(jù)轉(zhuǎn)換成正弦波點(diǎn)與點(diǎn)之間的定時(shí)數(shù)據(jù)。該運(yùn)算器實(shí)際上最終可轉(zhuǎn)換成一除法器。該除法器描述如下:
—VECTOR(WIDTH— R-1 DOWNTO 0));
END COMPONENT;
上述描述實(shí)際上是調(diào)用了Altera公司的參數(shù)化模塊庫(kù)(LPM)中的一個(gè)元件。元件描述后,只要在程序中用Generic map和port map語(yǔ)句映射該元件即可。所要注意的是,上述口信號(hào)remainder是numerator和denominator模運(yùn)算的結(jié)果,所以應(yīng)將remainder與denominator/2相比較,實(shí)際結(jié)果應(yīng)在比較的基礎(chǔ)上決定加1還是不加1。
4.3 定時(shí)器設(shè)計(jì)
定時(shí)器根據(jù)運(yùn)算器傳來(lái)的定時(shí)數(shù)據(jù)定時(shí)。它可以通過(guò)對(duì)基準(zhǔn)時(shí)鐘計(jì)數(shù)來(lái)實(shí)現(xiàn),當(dāng)定時(shí)時(shí)間一到,就觸發(fā)波形的輸出。
設(shè)計(jì)中采用了兩個(gè)計(jì)數(shù)模塊來(lái)同時(shí)計(jì)數(shù),一個(gè)模塊計(jì)數(shù)時(shí)鐘的上邊沿,而另一模塊則計(jì)數(shù)時(shí)鐘的下邊沿。這樣相當(dāng)于使系統(tǒng)時(shí)鐘頻率提高了一倍,充分利用了系統(tǒng)資源。
4.4 波形輸出
波形輸出是當(dāng)定時(shí)器滿足定時(shí)要求觸發(fā)后就輸出此時(shí)的正弦值,多個(gè)點(diǎn)的觸發(fā)輸出就形成了一個(gè)正弦波。
為節(jié)省芯片資源,這部分求某時(shí)正弦值的功能不采用構(gòu)造運(yùn)算器來(lái)算出正弦值,而是利用查表結(jié)構(gòu)。象Xilinx公司FPGA芯片則可以利用CLB塊來(lái)配置RAM或直接利用Logiblox來(lái)生成。還有象Altera公司的Flex10k系列就用查找表結(jié)構(gòu)(LUT)來(lái)構(gòu)建片內(nèi)ROM或RAM。在工程文件中創(chuàng)建RAM或ROM塊以后,可以通過(guò)將各時(shí)刻的正弦值(以ASCII字符表示)寫進(jìn)MIF文件(初始化文件)中,從而存儲(chǔ)在RAM或ROM塊中。在定時(shí)器觸發(fā)后生成該時(shí)的地址,通過(guò)查詢?cè)揜AM或ROM塊就可輸出該時(shí)得正弦值。
5 芯片的具體實(shí)現(xiàn)
本系統(tǒng)的FPGA采用Altera公司的Flex10k系列芯片。芯片利用開(kāi)發(fā)軟件Max+plusII將各個(gè)模塊(圖1虛線框部分)用VHDL語(yǔ)言描述并輸入,由軟件自動(dòng)編譯、綜合、布局和布線,生成編程用的數(shù)據(jù)文件,加載到FPGA的配置存儲(chǔ)單元。對(duì)FPGA芯片進(jìn)行配置可有多種模式,由于本系統(tǒng)中有單片機(jī),所以采用串行從模式,省掉了用一片EPROM來(lái)存儲(chǔ)編程數(shù)據(jù)。當(dāng)系統(tǒng)上電時(shí),單片機(jī)自動(dòng)將存在其內(nèi)部的配置數(shù)據(jù)送到FPGA內(nèi)部存儲(chǔ)單元中。
這個(gè)技術(shù)基本上多運(yùn)用于電路方面.
參考文獻(xiàn):[1].87C196datasheethttp://www.dzsc.com/datasheet/87C196_105004.html.
[2].Flex10kdatasheethttp://www.dzsc.com/datasheet/Flex10k_328755.html.
[3].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[4].MIFdatasheethttp://www.dzsc.com/datasheet/MIF_2043409.html.
[5].EPROMdatasheethttp://www.dzsc.com/datasheet/EPROM_1128137.html.