基于FPGA的數(shù)字積分法插補(bǔ)控制器設(shè)計(jì)與實(shí)現(xiàn)
(2)位置計(jì)數(shù)器
位置計(jì)數(shù)器有3個(gè)寄存器,分別對應(yīng)于三個(gè)軸。其初始值為需要插補(bǔ)的脈沖數(shù)目。當(dāng)積分器每輸出一個(gè)脈沖,計(jì)數(shù)器便做減“1”。當(dāng)位置計(jì)數(shù)器為零時(shí),則表示到達(dá)終點(diǎn)坐標(biāo)位置,插補(bǔ)結(jié)束。
(3)插補(bǔ)積分器
插補(bǔ)積分器是直線插補(bǔ)的核心模塊,由余數(shù)寄存器和被積函數(shù)寄存器構(gòu)成。被積函數(shù)寄存器中存放由數(shù)據(jù)緩存器提供的終點(diǎn)坐標(biāo)值,每當(dāng)脈沖源發(fā)出1個(gè)插補(bǔ)迭代脈沖時(shí),被積函數(shù)寄存器與余數(shù)寄存器的值累加1次,并將累加結(jié)果存放余數(shù)寄存器中,當(dāng)累加結(jié)果超出余數(shù)寄存器容量(216)時(shí),溢出1個(gè)脈沖。經(jīng)過N=216次累加后,每個(gè)坐標(biāo)軸的溢出脈沖總數(shù)就等于該坐標(biāo)的被積函數(shù)值。在余數(shù)寄存器的容量一定的情況下,其輸出脈沖頻率與終點(diǎn)坐標(biāo)值的大小成正比??刂破鞑捎萌S聯(lián)動,則同時(shí)有3個(gè)積分器同時(shí)進(jìn)行插補(bǔ)運(yùn)算。在該插補(bǔ)控制器的設(shè)計(jì)中,采用有限狀態(tài)機(jī)的原理完成直線插補(bǔ)的實(shí)現(xiàn),如圖2所示,共有3個(gè)狀態(tài)存在:本文引用地址:http://m.butianyuan.cn/article/190545.htm
(1)狀態(tài)IDLE:空閑狀態(tài),等待插補(bǔ)信號;
(2)狀態(tài)S1:剩余插補(bǔ)脈沖數(shù)寄存;
(3)狀態(tài)S2:積分累加狀態(tài)。
其工作過程為:當(dāng)沒有啟動信號時(shí),系統(tǒng)繼續(xù)保持在空閑狀態(tài)IDLE;當(dāng)有啟動信號start時(shí),系統(tǒng)則從數(shù)據(jù)緩存器中讀入初始數(shù)據(jù),將插補(bǔ)脈沖數(shù)寄存在狀態(tài)S1中,若插補(bǔ)脈沖數(shù)不為零則轉(zhuǎn)至積分累加狀態(tài)S2中,在此狀態(tài)中將被積函數(shù)寄存器的值與余數(shù)寄存器的值進(jìn)行累加,結(jié)果送余數(shù)寄存器,若有脈沖溢出,則轉(zhuǎn)入狀態(tài)S1,此時(shí)輸出插補(bǔ)脈沖,且狀態(tài)S1中剩余脈沖數(shù)減“1”;若無脈沖溢出,則狀態(tài)S2繼續(xù)進(jìn)行積分累加。最終,狀態(tài)S1中的剩余脈沖為零時(shí),返回空閑狀態(tài),插補(bǔ)結(jié)束。
數(shù)字積分法直線插補(bǔ)運(yùn)用硬件描述語言VerilogHDL進(jìn)行程序編寫的流程圖如圖3所示。
fpga相關(guān)文章:fpga是什么
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
評論