国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

變形鏡驅(qū)動器驅(qū)動電路的設(shè)計(jì)

2018-01-02 03:31李正東周志強(qiáng)袁學(xué)文劉章文
現(xiàn)代電子技術(shù) 2017年24期
關(guān)鍵詞:硬件設(shè)計(jì)軟件設(shè)計(jì)

李正東+周志強(qiáng)+袁學(xué)文+劉章文

摘 要: 為了實(shí)現(xiàn)多通道變形鏡驅(qū)動和控制,設(shè)計(jì)由6組模塊組成的變形鏡驅(qū)動器。其中每塊模塊包括硬件部分和軟件部分,硬件部分設(shè)計(jì)包含電源設(shè)計(jì)、接口設(shè)計(jì)、D/A轉(zhuǎn)換及放大設(shè)計(jì)和FPGA設(shè)計(jì),其旨在接收驅(qū)動電壓組成的矢量數(shù)據(jù),并把這些數(shù)字信號經(jīng)D/A芯片轉(zhuǎn)換成模擬電壓,隨后經(jīng)射隨和高壓放大電路輸出,作為變形鏡陶瓷單元的驅(qū)動電壓。軟件部分設(shè)計(jì)包含F(xiàn)PGA設(shè)計(jì)和NIOS設(shè)計(jì),其中FPGA從矢量驅(qū)動數(shù)據(jù)中提取屬于該驅(qū)動模塊16個(gè)通道的驅(qū)動電壓,并把每個(gè)通道的驅(qū)動電壓,按D/A轉(zhuǎn)換芯片的時(shí)序要求,以串行方式把數(shù)據(jù)發(fā)送給對應(yīng)的D/A芯片,完成對變形鏡陶瓷單元驅(qū)動電壓的輸出。NIOS程序旨在實(shí)現(xiàn)對上位機(jī)指令的處理和反饋,完成對驅(qū)動模塊參數(shù)的配置、調(diào)試和保存以及數(shù)據(jù)源切換、通道電壓設(shè)置等功能。實(shí)驗(yàn)表明,變形鏡驅(qū)動器不僅能以200 f/s的速率對96單元變形的鏡波前校正功能進(jìn)行控制,而且能夠正確完成與上位機(jī)的信息交互。

關(guān)鍵詞: 變形鏡; 驅(qū)動電路; 硬件設(shè)計(jì); 軟件設(shè)計(jì); FPGA; NIOS系統(tǒng)

中圖分類號: TN79+2?34; TN247 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)24?0169?06

Abstract: In order to drive and control the multi?channel deformable mirror, a deformable mirror driver composed of six?group modules was designed. The each module is composed of hardware and software. The hardware design includes the power supply design, interface design, D/A conversion and amplification design, and FPGA design, which is aimed at receiving the vector data composed of drive voltage, and converting the digital signals into the analog voltage through D/A chip. And then the analog voltage output by the emitter follower and high?voltage amplifying circuit is taken as the drive voltage of the deformable mirror ceramic unit. The software design includes the FPGA design and NIOS design. The 16?channel drive voltage of the drive module is extracted in the vector drive data through FPGA, and sent to the corresponding D/A chip in the serial mode according to the time serial requirement, so as to output the drive voltage of the deformable mirror ceramic unit. The NIOS program is aimed to process and feed the command from the upper computer; and realize the configuration, debugging and saving of the drive module parameters, data source switchover and channel voltage setting. The experimental results show that the deformable mirror driver can control the wavefront correction function of the 96?unit deformable mirror with the frequency of 200 f/s, and realize the information interaction with the upper computer correctly.

Keywords: deformable mirror; driver circuit; hardware design; software design; FPGA; NIOS system

0 引 言

主動光學(xué)系統(tǒng)的關(guān)鍵器件是由壓電陶瓷單元組成的變形鏡,而變形鏡的工作原理是通過改變加在壓電陶瓷單元上的電壓,從而改變壓電陶瓷單元的形變,最終達(dá)到改善光束測量的目的。變形鏡驅(qū)動器[1?2]是負(fù)責(zé)將一組電壓值構(gòu)成的矢量數(shù)據(jù)施加到變形鏡上,其中每一路電壓負(fù)責(zé)驅(qū)動變形鏡的一個(gè)陶瓷單元??紤]到陶瓷單元驅(qū)動電壓較高以及電路板的散熱要求,變形鏡驅(qū)動器集成了六塊驅(qū)動模塊,其中每塊驅(qū)動模塊實(shí)現(xiàn)16通道驅(qū)動電壓的輸出,這些模塊通過CPCI物理總線集成在一個(gè)機(jī)箱內(nèi),并通過一個(gè)控制模塊實(shí)現(xiàn)整個(gè)變形鏡驅(qū)動器與上位機(jī)、圖像處理板卡等之間的通信。在系統(tǒng)工作時(shí),控制模塊首先接收來自于上位機(jī)或圖像處理板卡的驅(qū)動數(shù)據(jù)矢量,并發(fā)往所有掛在CPCI總線上的驅(qū)動模塊,每個(gè)驅(qū)動模塊根據(jù)各自的地址,提取屬于自己的驅(qū)動數(shù)據(jù),經(jīng)過D/A轉(zhuǎn)換和放大,實(shí)現(xiàn)驅(qū)動電壓的輸出,協(xié)同完成對96單元變形鏡的驅(qū)動。

具體來說,其中的總線電路板相當(dāng)于整個(gè)變形鏡驅(qū)動器的主板,其提供了整個(gè)變形鏡驅(qū)動器基本的CPCI總線,電源模塊正是通過CPCI物理總線為變形鏡驅(qū)動器的控制模塊、圖像處理模塊和六塊驅(qū)動模塊供電,控制模塊、圖像處理模塊和六塊驅(qū)動模塊之間的控制信號、數(shù)據(jù)信號以及反饋信號也是通過該CPCI總線實(shí)現(xiàn)互聯(lián)。其中的電源模塊采用一款成熟的商業(yè)化電源模塊來實(shí)現(xiàn),其有四組輸出端子,分別輸出150 V,-50 V,15 V,-15 V四種電壓,其中150 V和-50 V為六塊驅(qū)動模塊內(nèi)部的末級高壓放大器提供正、負(fù)電源,15 V電源通過CPCI物理總線為控制模塊、圖像處理模塊和六塊驅(qū)動模塊提供工作電源,-15 V結(jié)合15 V為驅(qū)動模塊內(nèi)含的前級放大器提供負(fù)、正電源;其中的圖像處理模塊對圖像數(shù)據(jù)處理完成后,得出一組驅(qū)動變形鏡所需的電壓驅(qū)動矢量數(shù)據(jù),并通過CPCI總線發(fā)送到控制模塊,再經(jīng)過控制模塊的處理,發(fā)送到驅(qū)動模塊,最終通過驅(qū)動模塊的輸出電壓控制變形鏡的形變,實(shí)現(xiàn)光束質(zhì)量的控制。變形鏡驅(qū)動器原理框圖如圖1所示。

1 變形鏡驅(qū)動器驅(qū)動模塊的硬件設(shè)計(jì)

一套變形鏡驅(qū)動器內(nèi)含6塊驅(qū)動模塊,每塊驅(qū)動模塊都掛在CPCI總線上,其設(shè)計(jì)電路及運(yùn)行程序完全一致,不同之處,在于系統(tǒng)上電后,每塊驅(qū)動模塊讀取CPCI底板上靠近本模塊的拔碼開關(guān),用此作為自己的ID號來標(biāo)識自己。所有驅(qū)動模塊的硬件框架如圖2所示,其主要框架包括4個(gè)部分,分別為電源部分、接口部分、D/A轉(zhuǎn)換及放大部分和FPGA部分,其中電源部分包括來自CPCI總線的4組電源,其中15 V,-15 V兩組電源作為驅(qū)動模塊D/A轉(zhuǎn)換芯片的工作電壓,150 V,-50 V兩組電源作為末級放大器的供電電源。15 V電源經(jīng)過不同的電壓轉(zhuǎn)換芯片給FPGA及其他接口芯片供電,接口部分包括接收來自CPCI物理總線的輸入接口以及發(fā)往CPCI物理總線的輸出接口,A/D轉(zhuǎn)換及放大部分主要實(shí)現(xiàn)對來自對驅(qū)動矢量或者單通道指令的數(shù)字信號進(jìn)行D/A轉(zhuǎn)換及放大,F(xiàn)PGA部分實(shí)現(xiàn)對整個(gè)模塊工作流程的控制,完成驅(qū)動模塊經(jīng)由控制模塊與上位機(jī)的通信,以及控制各通道的輸出電壓對變形鏡進(jìn)行驅(qū)動。對于電源部分,15 V,-15 V,150 V,-50 V經(jīng)過濾波以及瞬態(tài)過沖抑制保護(hù)電路后,分別作為D/A轉(zhuǎn)換芯片、隔離電路和末級模擬信號放大器的工作電源,15 V電源再經(jīng)過兩片LMZ14201電壓轉(zhuǎn)換芯片,分別輸出5.0 V 和3.3 V電壓,5.0 V電壓作為通過CPCI物理總線負(fù)責(zé)與控制模塊通信的RS 485接口芯片的工作電壓,3.3 V電壓作為模塊中FPGA的I/O電壓和NIOS所需的SDRAM等其他接口芯片的工作電壓,其經(jīng)過NCP5661?1.2芯片輸出1.2 V的電壓用來作為FPGA的內(nèi)核電壓,圖3給出了3.3 V電壓的設(shè)計(jì)原理圖。

接口部分的設(shè)計(jì)分為三個(gè)部分,即來自CPCI總線的輸入接口、發(fā)往CPCI總線的輸出接口和面板接口,其中輸入接口是指并行總線設(shè)計(jì),它是采用全硬件方式,以差分信號方式接收經(jīng)由CPCI總線,來自控制模塊發(fā)送過來的驅(qū)動矢量數(shù)據(jù),并把這些驅(qū)動矢量數(shù)據(jù)發(fā)往FPGA,此功能主要由DS91M040芯片來實(shí)現(xiàn),電路設(shè)計(jì)上,與RS 485總線設(shè)計(jì)一致,即DS91M040的單端信號,包括數(shù)據(jù)信號和控制信號接入FPGA,其4對差分信號均接到CPCI總線上,從而提高總線數(shù)據(jù)傳輸?shù)乃俣群涂煽啃?,?shù)據(jù)傳輸協(xié)議自行制定,圖4僅給出總線電路的設(shè)計(jì)。輸出接口是把驅(qū)動模塊的16個(gè)高壓模擬放大器輸出端,連接到CPCI物理總線作為輸出端子,其輸出電壓在-20~150 V之間,每個(gè)端子對應(yīng)變形鏡的一個(gè)陶瓷單元。CPCI物理總線上還包含RS 485總線的I/O設(shè)計(jì),它主要用來實(shí)現(xiàn)驅(qū)動模塊和控制模塊在調(diào)試工作模式下的信息交互,即接收經(jīng)由控制模塊來自上位機(jī)的指令,或?qū)⒈掘?qū)動模塊的狀態(tài)信息經(jīng)由控制模塊回傳給上位機(jī),尤其在末級放大器輸出通道的參數(shù)進(jìn)行標(biāo)定,上位機(jī)通道切換、通道電壓設(shè)置等功能的實(shí)現(xiàn)均是通過RS 485接口發(fā)往驅(qū)動模塊的,此功能由SP485EL芯片來實(shí)現(xiàn),控制模塊為RS 485總線的主設(shè)備,驅(qū)動模塊為RS 485總線的從設(shè)備,其中SP485EL的一對差分信號,連接至CPCI總線上,其他單端信號連接到FPGA。面板接口設(shè)計(jì)則相對比較簡單,它主要用于顯示驅(qū)動模塊的工作狀態(tài),包含驅(qū)動模塊的3.3 V電源狀態(tài)顯示、通信狀態(tài)顯示、故障顯示以及蜂鳴器報(bào)警設(shè)計(jì)。

A/D轉(zhuǎn)換及放大部分用來實(shí)現(xiàn)驅(qū)動電壓的數(shù)字信號的D/A轉(zhuǎn)換和放大,此功能主要由AD5360,ADG5434和PA343三類芯片來實(shí)現(xiàn),其中AD5360為串行工作方式的16通道D/A轉(zhuǎn)換芯片,數(shù)據(jù)輸入為16 b的數(shù)字信號,輸出為-10~10 V的模擬電壓。D/A轉(zhuǎn)換時(shí),F(xiàn)PGA程序?qū)⑿酒? b模式標(biāo)識,6 b通道地址,以及16 b電壓數(shù)據(jù)組成一個(gè)數(shù)據(jù)包,按照AD5360芯片要求的時(shí)序串行寫入,由此實(shí)現(xiàn)通道的電壓輸出,其中通道地址的改變可以實(shí)現(xiàn)通道的切換;ADG5434芯片相當(dāng)于集成了4個(gè)通道的射隨器芯片,它主要用來實(shí)現(xiàn)前后電路的隔離功能,防止后級高壓放大電路對前級電路造成干擾,由于每塊芯片含有4個(gè)通道,所以每塊驅(qū)動模塊設(shè)計(jì)了4塊ADG5434芯片;另外,驅(qū)動模塊還設(shè)計(jì)了16塊PA343芯片,每塊PA343芯片的輸出端通過CPCI端子直接接入變形鏡的陶瓷單元,它是一款高精度、高電壓的模擬信號放大器,其容許的最大輸出電壓可到300 V以上,這里將PA343的放大倍數(shù)設(shè)置為12倍,由于D/A轉(zhuǎn)換芯片輸出的最高模擬電壓為10 V,所以PA343輸出的最大電壓為120 V,其放大電路如圖5所示。

FPGA是整個(gè)控制模塊的核心部件,用于實(shí)現(xiàn)對驅(qū)動模塊所有指令和數(shù)據(jù)的控制和交互,F(xiàn)PGA部分的設(shè)計(jì)主要包含F(xiàn)PGA電源設(shè)計(jì)、時(shí)鐘設(shè)計(jì)、JTAG口設(shè)計(jì)、配置芯片設(shè)計(jì)和存儲器設(shè)計(jì),其中存儲器包含一片SDRAM芯片和一片EPCS16,而這里的EPCS16作為EPROM不同于FPGA的配置芯片,它主要存儲本驅(qū)動模塊所有末級高壓放大器的配置參數(shù)等。上電后,NIOS系統(tǒng)先要從該EPROM中讀取參數(shù),并利用這些參數(shù)進(jìn)行系統(tǒng)的初始化,這些工作完成后,矢量數(shù)據(jù)通道都切換正常后,系統(tǒng)才進(jìn)入工作模式。

2 變形鏡驅(qū)動器驅(qū)動模塊的軟件設(shè)計(jì)

驅(qū)動模塊的軟件設(shè)計(jì)包含兩個(gè)部分:一部分是FPGA程序的設(shè)計(jì);另一部分是NIOS程序設(shè)計(jì)。FPGA程序的主要目的是當(dāng)變形鏡驅(qū)動器工作在運(yùn)行模式時(shí),接收經(jīng)由CPCI總線來自驅(qū)動模塊的驅(qū)動矢量數(shù)據(jù),一幀驅(qū)動矢量接收完畢后,并根據(jù)本模塊的地址,從96個(gè)驅(qū)動矢量數(shù)據(jù)中提取屬于本模塊的16個(gè)輸出通道的電壓數(shù)據(jù),再根據(jù)AD5360芯片的時(shí)序要求,依次把不同通道的數(shù)據(jù)包串行輸出到AD5360芯片,實(shí)現(xiàn)16通道模擬電壓的輸出,以供后續(xù)放大電路放大使用。NIOS程序的主要目的是當(dāng)變形鏡驅(qū)動器工作在調(diào)試模式時(shí),通過RS 485總線,接收并解析來自控制模塊的指令或數(shù)據(jù),實(shí)現(xiàn)對驅(qū)動模塊相關(guān)硬件的切換,或者單個(gè)通道輸出電壓的設(shè)置,以及放大器通道參數(shù)的保存等,同時(shí)還根據(jù)上位機(jī)的指令,收集本驅(qū)動模塊的狀態(tài)信息并回傳,下面分別介紹FPGA和NIOS程序的設(shè)計(jì)。

2.1 FPGA的程序設(shè)計(jì)

驅(qū)動模塊利用NIOS程序接收來自RS 485接口的上位機(jī)指令,而通過FPGA的高速并行接口接收來自控制模塊的驅(qū)動矢量數(shù)據(jù),F(xiàn)PGA程序的邏輯框圖如圖6所示。

CPCI總線上驅(qū)動矢量數(shù)據(jù)的傳輸,利用高速并行接口的四對差分線來實(shí)現(xiàn),其中一對差分線作為時(shí)鐘信號,另外三對差分線作為數(shù)據(jù)信號,傳輸過程以字節(jié)為單位進(jìn)行傳輸,即在每個(gè)字節(jié)的最高位前填一個(gè)0,組成9 b數(shù)據(jù),依據(jù)高位先傳,低位后傳的原則實(shí)現(xiàn)傳輸,這樣一個(gè)字節(jié)的數(shù)據(jù)需要3個(gè)時(shí)鐘周期完成傳輸。在1幀數(shù)據(jù)傳輸時(shí),首先在最先的6個(gè)時(shí)鐘周期傳輸兩組同步信號,即“111_111_111”和“111_010_101”,然后再開始以字節(jié)為單位傳輸1幀的驅(qū)動矢量數(shù)據(jù),其中每幀驅(qū)動矢量數(shù)據(jù)包含96個(gè)字,每個(gè)字包含2 B,其數(shù)值大小代表變形鏡對應(yīng)陶瓷單元的驅(qū)動電壓值,其傳輸過程采用小端方式傳輸。

驅(qū)動矢量數(shù)據(jù)的來源有兩個(gè):一個(gè)來源為矢量數(shù)據(jù)接收和傳輸模塊發(fā)送過來的;另一個(gè)來源為NIOS系統(tǒng)發(fā)出的16個(gè)字組成的驅(qū)動矢量。在系統(tǒng)工作于調(diào)試模式時(shí),驅(qū)動矢量數(shù)據(jù)由NIOS系統(tǒng)給出,此時(shí)NIOS系統(tǒng)只給出16個(gè)字的數(shù)據(jù),由NIOS系統(tǒng)直接寫入存儲容量為16個(gè)字的DPRAM2。當(dāng)系統(tǒng)工作于運(yùn)行模式時(shí),驅(qū)動矢量數(shù)據(jù)由驅(qū)動矢量接收和存儲模塊提供,這種情況下,為了提高系統(tǒng)的帶寬,圖6中的DPRAM1設(shè)計(jì)為512 B的雙口RAM,即256個(gè)字,劃分為A,B兩個(gè)半?yún)^(qū),分別為128個(gè)字,讀寫操作均采用乒乓操作。當(dāng)系統(tǒng)開始工作時(shí),驅(qū)動矢量接收和存儲模塊首先檢查是否存在幀同步信號,如果幀同步信號正確,則連續(xù)接收隨后的96個(gè)驅(qū)動矢量數(shù)據(jù),并把這些數(shù)據(jù)寫入A區(qū)。當(dāng)A區(qū)數(shù)據(jù)寫操作完成時(shí),驅(qū)動矢量接收和存儲模塊通知后續(xù)相關(guān)模塊A區(qū)寫操作完成,同時(shí)等待并準(zhǔn)備將下一幀的驅(qū)動矢量數(shù)據(jù)寫入B區(qū),后續(xù)相關(guān)模塊收到驅(qū)動矢量接收和存儲模塊A區(qū)寫完成信號后,從A區(qū)讀取驅(qū)動矢量數(shù)據(jù),再進(jìn)行后續(xù)操作,其FPGA接口設(shè)計(jì)如圖7所示。

圖6中的數(shù)據(jù)源切換模塊,是依據(jù)NIOS系統(tǒng)發(fā)出的指令,在兩種驅(qū)動矢量數(shù)據(jù)源之間進(jìn)行切換,從而實(shí)現(xiàn)數(shù)據(jù)通道選擇,并把本模塊需要的16字驅(qū)動數(shù)據(jù)寫入DPRAM5中,尤其當(dāng)選擇來自高速并行接口的驅(qū)動矢量時(shí),數(shù)據(jù)源切換模塊還要根據(jù)本模塊的地址映射,從96個(gè)字的驅(qū)動矢量中,選擇屬于本驅(qū)動模塊的16個(gè)字的驅(qū)動矢量。當(dāng)然NIOS系統(tǒng)發(fā)出什么指令又依賴于經(jīng)由控制模塊、RS 485接口來自上位機(jī)的指令,缺省情況下,系統(tǒng)工作于運(yùn)行模式。D/A轉(zhuǎn)換控制模塊接收到數(shù)據(jù)源切換模塊發(fā)出的寫完成信號后,每次從DPRAM5中讀出驅(qū)動矢量,并按照芯片AD5360的時(shí)序要求,寫入本芯片,依次對本模塊的每個(gè)通道實(shí)現(xiàn)D/A轉(zhuǎn)換,其程序設(shè)計(jì)使用狀態(tài)機(jī)實(shí)現(xiàn),具體的流程圖如圖8所示。

圖6中的DPRAM3用來存儲需要監(jiān)視的通道,通過NIOS系統(tǒng),可以利用DPRAM3存儲數(shù)據(jù)的數(shù)值,將相關(guān)通道的電壓信號輸出,供示波器顯示。DPRAM4用來存儲本驅(qū)動模塊的地址映射數(shù)據(jù),即用來定位并提取本驅(qū)動模塊16個(gè)通道的電壓數(shù)據(jù)在96個(gè)驅(qū)動矢量中的具體位置。

2.2 NIOS的設(shè)計(jì)

NIOS的設(shè)計(jì)包括QSYS組件定制和程序設(shè)計(jì)[3?4],QSYS組件定制如圖9所示。其中除了一些必要的JTAG、定時(shí)器、配置存儲器等內(nèi)核外,還包含其他一些內(nèi)核,具體介紹如下。

在NIOS系統(tǒng)中,clk_0為處理器內(nèi)核,onchip_ram_descriptor為片內(nèi)存儲器內(nèi)核,用于存儲程序代碼,在系統(tǒng)中設(shè)置其為復(fù)位地址,sdram_0為SDRAM控制器內(nèi)核,它用于實(shí)現(xiàn)和外部SDRAM的通信,從而為應(yīng)用程序提供運(yùn)行空間,po_0為32位的并行輸入/輸出類型內(nèi)核,它用于實(shí)現(xiàn)對輸入、輸出I/O的電平控制,它不僅通過FPGA,在面板顯示系統(tǒng)通信、報(bào)警等工作狀態(tài),而且還通過FPGA,實(shí)現(xiàn)對驅(qū)動矢量數(shù)據(jù)源的選通切換、中斷禁止等功能。epcs_flash_controller_0為EPCS內(nèi)核,在系統(tǒng)中作為EPROM使用,用于存儲程序的配置參數(shù),如通道映射等,dpram_ChMap,dpram_DavMonitor和dpram_DAV均為雙口RAM內(nèi)核,其中dpram_ChMap實(shí)現(xiàn)與FPGA中DPRAM4的通信,NIOS系統(tǒng)借此將本驅(qū)動模塊的通道映射數(shù)據(jù)寫入到DPRAM4中,F(xiàn)PGA程序再據(jù)此從幀驅(qū)動矢量數(shù)據(jù)中讀取對應(yīng)本模塊的16通道的驅(qū)動電壓數(shù)據(jù)。dpram_DavMonitor實(shí)現(xiàn)與FPGA中DPRAM3的通信,NIOS系統(tǒng)借此把本驅(qū)動模塊中所要監(jiān)控的通道寫入到DPRAM3中,F(xiàn)PGA程序以此把相關(guān)通道的狀態(tài)和數(shù)據(jù)控制輸出給外界示波器監(jiān)視。dpram_DAV實(shí)現(xiàn)與FPGA中DPRAM2的通信,在調(diào)試狀態(tài)下,NIOS系統(tǒng)借此將本驅(qū)動模塊的16個(gè)通道電壓值,寫入到DPRAM2中,F(xiàn)PGA程序從DPRAM2中讀出這些數(shù)據(jù),并驅(qū)動本驅(qū)動模塊的16個(gè)輸出通道,uart_0為串口內(nèi)核。NIOS系統(tǒng)借此實(shí)現(xiàn)和RS 485接口芯片的通信,并經(jīng)由CPCI物理總線,實(shí)現(xiàn)與控制模塊的通信,并將本驅(qū)動模塊的狀態(tài)參數(shù)返回給上位機(jī),以上構(gòu)成了NIOS系統(tǒng)的內(nèi)核設(shè)計(jì)。NIOS程序首先利用HardwareInit()函數(shù)進(jìn)行硬件初始化,其中包括對po_0的初始化,將部分連接到FPGA中的PIO引腳電平設(shè)置成禁止外部中斷的狀態(tài),對uart_0的初始化、定時(shí)器的初始化以及dpram_ChMap,dpram_DavMonitor和dpram_DAV三個(gè)雙口RAM的初始化等,再利用SoftwareInit()函數(shù)進(jìn)行系統(tǒng)的軟件初始化,讀取EPROM中存儲各個(gè)末級高壓放大器參數(shù)進(jìn)行配置,并從CPCI主板讀取本驅(qū)動模塊的板卡號。然后生成地址映射,且寫入DPRAM4中,供FPGA程序使用,使能外部中斷,程序進(jìn)入主循環(huán)。由于NIOS系統(tǒng)主要用于調(diào)試模式,所以程序主循環(huán)體內(nèi),主要是檢查是否新的有來自串口uart_0的字符串指令,若有新的字符串指令,則調(diào)用procNetCommand()對新的字符串指令進(jìn)行處理。

字符串指令大體分為三類:一類為set類命令,包括配置參數(shù)中電壓極值設(shè)置、通道映射設(shè)置、單通道電壓設(shè)置與驅(qū)動矢量數(shù)據(jù)切換等;一類為get類指令,這類指令主要是為了確認(rèn)set類命令執(zhí)行結(jié)果是否正確而設(shè)置的,基本對應(yīng)著set指令;最后一類指令為其他指令,如save指令,這個(gè)指令的主要目的是因?yàn)轵?qū)動模塊每個(gè)通道的末級電壓放大器含有兩個(gè)參數(shù),這些參數(shù)需在單通道電壓調(diào)試模式下通過調(diào)試獲得,并最終通過控制模塊的save命令將這些參數(shù)固化到相應(yīng)驅(qū)動模塊的EPROM中。例如<0.0/set_vec_source:0>指令,其中:“<>”為字符串指令的首尾標(biāo)志;“0.0”表示指令接收方為所有驅(qū)動模塊;“set_vec_source”表示本指令是設(shè)置驅(qū)動矢量數(shù)據(jù)的來源;“0”表示驅(qū)動矢量源來自圖像處理模塊;“1”表示驅(qū)動矢量源來自NIOS系統(tǒng)的DPRAM3。又如<0.2/set_DA:12=43 525>,其中:“0.2”表示操作的對象為第1個(gè)機(jī)箱的第2個(gè)驅(qū)動模塊;“set_DA”表示本指令是設(shè)置單通道的電壓值;“12=43 525”表示將本驅(qū)動模塊的12通道的電壓設(shè)置為43 525(65 535對應(yīng)電壓最大值),這個(gè)通道映射為驅(qū)動器系統(tǒng)的第28號通道,即(2-1)×16+12=28。相反<0.0/get_ vec _source>表示獲取驅(qū)動矢量的數(shù)據(jù)源,<0.2/get_DA:12>表示獲取第28號通道的設(shè)置電壓值。這些指令執(zhí)行完成后,再將相關(guān)的反饋信息打包,再利用sendCommandUpper()函數(shù),通過RS 485接口反饋給控制模塊,NIOS系統(tǒng)的主函數(shù)流程圖如圖10所示。

3 驅(qū)動器驅(qū)動模塊的實(shí)驗(yàn)

根據(jù)上述設(shè)計(jì)原理,研制了6塊變形鏡驅(qū)動器驅(qū)動模塊,并結(jié)合控制模塊,完成了系統(tǒng)集成,并進(jìn)行了帶陶瓷負(fù)載的集成實(shí)驗(yàn),軟件功能如與上位機(jī)的通信功能、通道切換等均達(dá)到設(shè)計(jì)目的,通道輸出電壓的實(shí)驗(yàn)結(jié)果如圖11所示。由圖11可知,驅(qū)動模塊在滿程驅(qū)動陶瓷單元,即加載電壓峰峰值接近150 V(-30~120 V)的情況下,陶瓷單元的往復(fù)形變頻率接近200 Hz,上升沿時(shí)間僅2.94 ms,滿足了系統(tǒng)的要求。

4 結(jié) 論

根據(jù)上述設(shè)計(jì)原理,研制了集成在96通道變形鏡驅(qū)動器內(nèi)的控制電路板。該電路板不僅能夠以200 f/s的速率正確接收并發(fā)送來自SPI的驅(qū)動矢量數(shù)據(jù),而且能夠正確收發(fā)來自上位機(jī)網(wǎng)口或者串口的控制指令,實(shí)現(xiàn)單通道與驅(qū)動矢量的切換、驅(qū)動矢量數(shù)據(jù)源的切換、單通道電壓設(shè)置、放大器參數(shù)調(diào)試和保存以及通道數(shù)據(jù)讀取、回傳等功能,達(dá)到了預(yù)定的設(shè)計(jì)目標(biāo)。當(dāng)然,相對變形鏡的響應(yīng)速度而言,如何在后續(xù)工作中進(jìn)一步提高系統(tǒng)帶寬,提高數(shù)據(jù)頻率仍有許多工作要做。

參考文獻(xiàn)

[1] 李正東,袁學(xué)文,周志強(qiáng),等.變形鏡驅(qū)動器參數(shù)自動標(biāo)定系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2016,24(10):150?153.

[2] 劉章文,李正東,周志強(qiáng),等.基于模糊控制的自適應(yīng)光學(xué)校正技術(shù)[J].物理學(xué)報(bào),2016,65(1):131?138.

[3] 盧毅,賴杰.VHDL與數(shù)字電路設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2001.

[4] 李蘭英.NIOS嵌入式SOPC設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.

[5] 朱曉錦,曹浩,陸美玉,等.基于PA95功放芯片的壓電功率放大器開發(fā)[J].壓電與聲光,2008,30(5):561?563.

[6] 王慧,宮赤坤,王宏峰.基于PA95的新型壓電陶瓷驅(qū)動電源[J].微計(jì)算機(jī)信息,2011,27(12):58?59.

[7] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS[M].邵貝貝,宮輝,譯.北京:北京航空航天大學(xué)出版社,2012.

[8] 鄭宇軍,石海鵬,王衛(wèi)紅,等.C#語言程序設(shè)計(jì)基礎(chǔ)[M].3版.北京:清華大學(xué)出版社,2014.

猜你喜歡
硬件設(shè)計(jì)軟件設(shè)計(jì)
基于STM8S903K3的序列打螺絲夾具的軟件設(shè)計(jì)
基于中藥自動配藥PLC系統(tǒng)的設(shè)計(jì)方案的研究
一種VHDL語言代碼重用的方法
乐都县| 赣榆县| 方山县| 洛南县| 新干县| 南城县| 体育| 兴文县| 如东县| 墨竹工卡县| 吉木萨尔县| 绍兴县| 英山县| 托克逊县| 南宁市| 紫阳县| 手机| 汉沽区| 定襄县| 锡林郭勒盟| 阆中市| 开封市| 泰来县| 阿拉善右旗| 屯留县| 游戏| 汉中市| 新安县| 北川| 云浮市| 高尔夫| 固镇县| 屏东市| 屯昌县| 抚宁县| 巫山县| 定州市| 天台县| 常熟市| 托克托县| 林口县|