<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP+FPGA在高速高精運(yùn)動(dòng)控制器中的應(yīng)用

          DSP+FPGA在高速高精運(yùn)動(dòng)控制器中的應(yīng)用

          作者:朱顯新 黃濤 鄧啟輝 盧珞先 武漢理工大學(xué)智能信息系統(tǒng)研究所 時(shí)間:2008-06-05 來(lái)源:今日電子 收藏

            卡已經(jīng)在數(shù)控機(jī)床、工業(yè)機(jī)器人、醫(yī)用設(shè)備、繪圖儀、IC電路制造設(shè)備、IC封裝等領(lǐng)域得到了廣泛運(yùn)用,取得了良好的效果。目前卡大部分采用8051系列的8位單片機(jī),雖然節(jié)省了開發(fā)周期但缺乏靈活性,難以勝任高要求運(yùn)作環(huán)境,而且運(yùn)算能力有限。 

            的數(shù)據(jù)運(yùn)算處理功能強(qiáng)大,即使在很復(fù)雜的控制中,采樣周期也可以取得很小,控制效果更接近于連續(xù)系統(tǒng)。把與PC的各自優(yōu)勢(shì)結(jié)合將是高性能數(shù)控系統(tǒng)的發(fā)展趨勢(shì)。本器采用TI公司的高性能浮點(diǎn)作為主控芯片,通過(guò)ISA接口與PC協(xié)調(diào)并進(jìn)行數(shù)據(jù)交換,以PC計(jì)算機(jī)作為基本平臺(tái),以DSP高速運(yùn)動(dòng)控制卡作細(xì)、控制的核心,對(duì)直線電機(jī)的運(yùn)動(dòng)進(jìn)行控制,取得了良好的實(shí)際應(yīng)用效果。 

            1 高速高精運(yùn)動(dòng)控制卡的主要硬件構(gòu)成  

            本運(yùn)動(dòng)控制系統(tǒng)的任務(wù)是控制直線電機(jī)的運(yùn)動(dòng),要求4軸輸入和4軸輸出,采用光柵尺對(duì)輸入計(jì)數(shù),16位并行高速DA輸出,運(yùn)動(dòng)定位精度要求達(dá)到10nm,響應(yīng)時(shí)間<100ns。 

            高速直線電機(jī)是本系統(tǒng)的控制對(duì)象,它具有加速快(a>10g),運(yùn)動(dòng)速度高(v>300mm/s)的特點(diǎn)。要求控制系統(tǒng)有足夠短的響應(yīng)時(shí)間(<100ns)和足夠高的定位精度(10nm級(jí)),因而系統(tǒng)的核心CPU的處理能力及運(yùn)算能力必須滿足高速要求;此外,直線電機(jī)運(yùn)動(dòng)定位的核心是高精度的反饋控制裝置。直線電機(jī)的反饋控制裝置是光柵尺和高精度脈沖計(jì)數(shù)器,光柵尺發(fā)出與運(yùn)動(dòng)距離成線性關(guān)系的脈沖數(shù),脈沖計(jì)數(shù)器的計(jì)數(shù)值表示直線電機(jī)當(dāng)前的運(yùn)動(dòng)位置。經(jīng)計(jì)算,計(jì)數(shù)長(zhǎng)度為28位的計(jì)數(shù)器才能滿足定位的精度要求,同時(shí)計(jì)數(shù)頻率很高。一般的通用計(jì)數(shù)器參數(shù)無(wú)法達(dá)到,所以設(shè)計(jì)一個(gè)特殊計(jì)數(shù)器是必要的。為了方便設(shè)置目標(biāo)點(diǎn)的運(yùn)動(dòng)參數(shù),使運(yùn)動(dòng)控制卡具有比較好的人機(jī)交互功能,系統(tǒng)必須具有與PC機(jī)通信的功能。 

            綜合考慮上述要求,系統(tǒng)的設(shè)計(jì)采用DSP+的形式,由DSP主控芯片作為中央處理模塊,作為反饋計(jì)數(shù)模塊且負(fù)責(zé)板上的部分邏輯譯碼工作,PC通信接口模塊采用雙口RAM,輸出模塊用D/A轉(zhuǎn)換器實(shí)現(xiàn),如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/83798.htm



            1.1 DSP模塊
           

            基于DSP的運(yùn)動(dòng)控制系統(tǒng)一般采用TI公司的TMS320C24x系列芯片,但24x系列是16位定點(diǎn)處理器,運(yùn)算能力有限。不能滿足本系統(tǒng)規(guī)劃的高速高精要求,為此,我們選用了TI公司的TMS320C32 DSP作為主控芯片。 

            TMS320C3X系列芯片是美國(guó)TI公司推出的第一代浮點(diǎn)DSP芯片,具有豐富的指令集、很高的運(yùn)算速度、較大的尋址空間和較高的性價(jià)比,在各領(lǐng)域得到了廣泛的應(yīng)用。TMS320C32是TMS320系列浮點(diǎn)數(shù)字信號(hào)處理器的新產(chǎn)品,在TMS320C30和TMS320C31的基礎(chǔ)上進(jìn)行了簡(jiǎn)化和改進(jìn)。在結(jié)構(gòu)上的改進(jìn)主要包括可變寬度的存儲(chǔ)器接口、更快速的指令周期時(shí)間、可設(shè)置優(yōu)先級(jí)的雙通道DMA處理器、靈活的引導(dǎo)程序裝入方式、可重新定位的中斷向量表以及可選的邊緣/電平觸發(fā)中斷方式等。 

            對(duì)TMS320C32的開發(fā)可以用匯編語(yǔ)言,也可以用C語(yǔ)言。使用匯編語(yǔ)言的優(yōu)點(diǎn)在于運(yùn)行速度快、可以充分利用芯片的硬件特性,但開發(fā)速度較慢,程序的可讀性差;而C語(yǔ)言的優(yōu)勢(shì)在于編程容易、調(diào)試快速、可讀性好,可以大大縮短開發(fā)周期,但C語(yǔ)言對(duì)于其片內(nèi)的沒(méi)有映射地址的特殊功能寄存器不能操作,如IF和IE,AR0~AR7等。 

            1.2 模塊
           

            該部分主要功能為一個(gè)4通道的針對(duì)光柵尺的脈沖計(jì)數(shù)器,此外,還承擔(dān)部分地址譯碼的工作。但由于脈沖計(jì)數(shù)頻率高,計(jì)數(shù)量大,所以必須選擇高容量、高性能的可編程邏輯器件。 

            ALTERA FLEX(Flexible Logic Element Matrix)10K 系列FPGA,規(guī)模從一萬(wàn)門到十萬(wàn)門,可提供720~5392個(gè)觸發(fā)器及6144~24576位RAM,提供30ns、40ns及50ns等幾個(gè)速率等級(jí),可適應(yīng)18~105MHz的信號(hào)處理速率。ALTERA FLEX10K系列FPGA主要由輸入輸出單元IOE、掩埋陣列EAB、邏輯陣列LAB及內(nèi)部連線組成。EAB是在輸入和輸出端口加有寄存器的RAM塊,其容量可靈活變化。所以,EAB不僅可以用于存儲(chǔ)器,還可以事先寫入查表值來(lái)用它構(gòu)成如乘法器、糾錯(cuò)邏輯等電路。當(dāng)用于RAM時(shí),EAB可配制成多種形式的字寬和容量。 

            LAB主要用于邏輯電路設(shè)計(jì),一個(gè)LAB包括8個(gè)邏輯單元LE,每一個(gè)LAB提供4個(gè)控制信號(hào)及其反相信號(hào),其中兩個(gè)  
          可用于時(shí)鐘信號(hào)。每一個(gè)LE包括組合邏輯及一個(gè)可編程觸發(fā)器。觸發(fā)器可被配成D,T,JK,RS等各種形式。IOE提供全局的時(shí)鐘及清零信號(hào)輸入端口,還提供具有可編程性的各種輸入輸出端口,如低噪聲端口、高速端口等。 

            FLEX10K系列芯片是ALTERA公司新近推出的PLD產(chǎn)品。與ALTERA公司先前推出的MAX7000系列EPLD相比,F(xiàn)LEX10K(以下簡(jiǎn)稱10K)系列具有更加豐富的內(nèi)部資源(最多可達(dá)10萬(wàn)門),更加充裕的可配置的I/O管腳(最多達(dá)406條)。再加上其低廉的價(jià)格,使得10K系列芯片受到越來(lái)越多用戶的歡迎。 

            基于以上原因,我們?cè)诒痉桨钢胁捎肁LTERA FLEX10K10,并且考慮到以后設(shè)計(jì)的連續(xù)性,我們可以無(wú)需更改硬件電路,就可以更換性能更高的、相同尺寸、相同管腳配置的ALTERA FLEX10K20。 

            1.3 PC通信接口模塊 

            該模塊選用16位的ISA總線與PC相連,CY7C133雙口RAM用作數(shù)據(jù)緩沖。 

            ISA總線的使用十分靈活、方便,而且I/O操作比較簡(jiǎn)單。雖然ISA總線的引腳多但并不是都要用到的,關(guān)鍵是幾個(gè)固定引腳的應(yīng)用,例如:I/O CH RDY、I/OR、I/OW、ALE、數(shù)據(jù)線和地址線,結(jié)合起來(lái)實(shí)現(xiàn)通信。

            在本系統(tǒng)中,雙口RAM的 PC端地址線并沒(méi)有直接采用ISA過(guò)來(lái)的地址線,而是由FPGA內(nèi)部地址計(jì)數(shù)器給定。這是因?yàn)?,ISA總線上大部分地址都已經(jīng)被PC系統(tǒng)分配好,直接把2K的雙口RAM數(shù)據(jù)空間映射到ISA總線上并不現(xiàn)實(shí);而且控制系統(tǒng)與PC交換的數(shù)據(jù)基本上是一系列加工點(diǎn)的坐標(biāo)參數(shù),采用順序訪問(wèn)對(duì)性能沒(méi)有影響。因此采用地址計(jì)數(shù)器方式的順序訪問(wèn),完全能夠達(dá)到設(shè)計(jì)的要求。 
            
            具體做法是:ISA地址線的A2~A9接到地址比較器74LS688,與設(shè)定好的地址作比較,74LS688的片選信號(hào)由ISA的IOR和IOW的“與”提供(IOR和IOW在ISA總線訪問(wèn)端口時(shí)低有效),A0,A1接到FPGA,用于選擇FPGA內(nèi)部4個(gè)功能不同的寄存器。ISA的ALE用于觸發(fā)FPGA 內(nèi)部邏輯功能,鎖存ISA總線過(guò)來(lái)的信號(hào),如圖2所示。 


            
            當(dāng)訪問(wèn)地址清零寄存器時(shí),地址計(jì)數(shù)值清零;當(dāng)訪問(wèn)地址增加寄存器時(shí),地址計(jì)數(shù)值增加“1”。如此類推,訪問(wèn)不同的寄存器就對(duì)地址計(jì)數(shù)值完成不同的操作,把地址計(jì)數(shù)值直接作為地址送給雙口RAM,就可以實(shí)現(xiàn)ISA總線訪問(wèn)雙口RAM了。

            1.4 輸出模塊  

            輸出模塊采用模擬輸出,經(jīng)外部放大驅(qū)動(dòng)電機(jī)的方案。D/A轉(zhuǎn)換芯片選擇DAC7744。 
           
            DAC7744是高性能的4通道16位高速D/A,主要特點(diǎn)如下:

            ● 輸出通道:獨(dú)立4 路 
            ● 輸出信號(hào)范圍:0~5V;0~10V;±5V;±10V 
            ● 輸出阻抗:≤2Ω 
            ● D/A轉(zhuǎn)換器件:DAC7744 
            ● D/A轉(zhuǎn)換分辨率:16位 
            ● D/A轉(zhuǎn)換碼制:二進(jìn)制原碼(單極性) 二進(jìn)制偏移碼(雙極性) 
            ● D/A轉(zhuǎn)換時(shí)間:≤1μs 
            ● D/A轉(zhuǎn)換綜合誤差:≤0.02% FSR 
            ● 電壓輸出方式負(fù)載能力:5mA/路 

          pid控制器相關(guān)文章:pid控制器原理



          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();