累加器的概念
在中央處理器中,累加器(accumulator)是一種寄存器,用來(lái)儲(chǔ)存計(jì)算產(chǎn)生的中間結(jié)果。如果沒(méi)有像累加器這樣的寄存器,那么在每次計(jì)算(加法,乘法,移位等等)后就必須要把結(jié)果寫回到內(nèi)存,也許馬上就得讀回來(lái)。然而存取主存的速度是比從算術(shù)邏輯單元到有直接路徑的累加器存取更慢。
相位累加器原理
一個(gè)正弦波,雖然它的幅度不是線性的,但是它的相位卻是線性增加的。
DDS正是利用了這一特點(diǎn)來(lái)產(chǎn)生正弦信號(hào)。如圖2,根據(jù)DDS的頻率控制字的位數(shù)N,把360°平均分成了2的N次等份。
圖2.相位累加器原理
假設(shè)系統(tǒng)時(shí)鐘為Fc,輸出頻率為Fout。每次轉(zhuǎn)動(dòng)一個(gè)角度360°/2N,則可以產(chǎn)生一個(gè)頻率為Fc/2N的正弦波的相位遞增量。那么只要選擇恰當(dāng)?shù)念l率控制字M,使得Fout/Fc=M/2N,就可以得到所需要的輸出頻率Fout,
Fout=Fc*M/2N,相位幅度轉(zhuǎn)換通過(guò)相位累加器,我們已經(jīng)得到了合成Fout頻率所對(duì)應(yīng)的相位信息,然后相位幅度轉(zhuǎn)換器把0°~360°的相位轉(zhuǎn)換成相應(yīng)相位的幅度值。比如當(dāng)DDS選擇為2Vp-p的輸出時(shí),45°對(duì)應(yīng)的幅度值為0.707V,這個(gè)數(shù)值以二進(jìn)制的形式被送入DAC。這個(gè)相位到幅度的轉(zhuǎn)換是通過(guò)查表完成的。
DAC輸出代表幅度的二進(jìn)制數(shù)字信號(hào)被送入DAC中,并轉(zhuǎn)換成為模擬信號(hào)輸出。注意DAC的位數(shù)并不影響輸出頻率的分辨率。輸出頻率的分辨率是由頻率控制字的位數(shù)決定的。
累加器的作用
1、在運(yùn)算器中,累加器是專門存放算術(shù)或邏輯運(yùn)算的一個(gè)操作數(shù)和運(yùn)算結(jié)果的寄存器。能進(jìn)行加、減、讀出、移位、循環(huán)移位和求補(bǔ)等操作。是運(yùn)算器的主要部分。
2、在中央處理器CPU中,累加器(accumulator)是一種暫存器,它用來(lái)儲(chǔ)存計(jì)算所產(chǎn)生的中間結(jié)果。如果沒(méi)有像累加器這樣的暫存器,那么在每次計(jì)算(加法,乘法,移位等等)后就必須要把結(jié)果寫回到內(nèi)存,然后再讀回來(lái)。然而存取主內(nèi)存的速度是比從數(shù)學(xué)邏輯單元(ALU)到有直接路徑的累加器存取更慢。
3、在匯編語(yǔ)言程序中,累加器——AX是一個(gè)非常重要的寄存器,但在程序中用它來(lái)保存臨時(shí)數(shù)據(jù)時(shí),最后將其轉(zhuǎn)存到其它寄存器或內(nèi)存單元中,以防止在其它指令的執(zhí)行過(guò)程中使其中的數(shù)據(jù)被修改,從而得到不正確的結(jié)果,為程序的調(diào)試帶來(lái)不必要的麻煩。
流水線相位累加器的設(shè)計(jì)
相位累加器是DDS的重要組成部分,在基準(zhǔn)時(shí)鐘控制下,它用來(lái)實(shí)現(xiàn)線性數(shù)字信號(hào)的逐級(jí)累加,信號(hào)范圍從0加到累加器的滿偏值,由此得到相應(yīng)的相位數(shù)據(jù),而相位累加器的頻率就是DDS輸出信號(hào)的頻率。在通常的電路優(yōu)化設(shè)計(jì)中,累加器模塊采用超前進(jìn)位加法器,這種結(jié)構(gòu)克服了串行進(jìn)位引起的時(shí)間滯后,很大程度上提高了加法器的運(yùn)算速度,但仍有不足。為了提高DDS頻率轉(zhuǎn)換速度和實(shí)時(shí)性,本文提出了一種流水線結(jié)構(gòu)來(lái)優(yōu)化DDS的相位累加器。
FPGA的結(jié)構(gòu)特點(diǎn)很適合采用流水線設(shè)計(jì),以ALTEra低成本系列CycloneⅡ?yàn)槔粌H有最多達(dá)68416個(gè)邏輯單元(LE),每個(gè)LE均含有1個(gè)四輸入查找表LUT、1個(gè)可編程觸發(fā)器等。設(shè)計(jì)中可將1個(gè)算術(shù)操作分解成一些小規(guī)模的基本操作配置到LUT中,將進(jìn)位和中間值存儲(chǔ)在寄存器中,在下一個(gè)時(shí)鐘內(nèi)繼續(xù)運(yùn)算,整個(gè)系統(tǒng)只需要極少或不需要額外的資源成本。
流水線結(jié)構(gòu)的基本原理是將整個(gè)電路劃分為若干個(gè)流水線級(jí),每級(jí)之間設(shè)置寄存器鎖存上一級(jí)輸出的數(shù)據(jù);每一級(jí)只完成數(shù)據(jù)處理的一部分,一個(gè)時(shí)鐘周期完成一級(jí)數(shù)據(jù)處理,然后在下一個(gè)時(shí)鐘到來(lái)時(shí)將處理后的數(shù)據(jù)傳遞給下一級(jí)。第一組數(shù)據(jù)進(jìn)入流水線后,經(jīng)過(guò)1個(gè)時(shí)鐘周期傳到第二級(jí),同時(shí)第二組數(shù)據(jù)進(jìn)入第一級(jí),數(shù)據(jù)隊(duì)列依次前進(jìn)。每組數(shù)據(jù)都要經(jīng)過(guò)所有的流水線級(jí)后才能得到最后的計(jì)算結(jié)果,但對(duì)整個(gè)流水線而言,每個(gè)時(shí)鐘都能計(jì)算出一組結(jié)果,所以平均計(jì)算一組數(shù)據(jù)只需要一個(gè)時(shí)鐘周期的時(shí)間,這樣就大大提高了數(shù)據(jù)處理速度。圖2為在QuartusⅡ開發(fā)環(huán)境下用原理圖輸入法搭建的流水線相位累加器結(jié)構(gòu)圖。該結(jié)構(gòu)由四級(jí)流水線構(gòu)成,每一級(jí)流水線的輸入字節(jié)為8位,分別由8位數(shù)據(jù)鎖存器,8位數(shù)據(jù)全加器,1位數(shù)據(jù)鎖存器構(gòu)成,整個(gè)系統(tǒng)可實(shí)現(xiàn)32位輸入控制字的相位累加功能。根據(jù)流水線相位累加器的工作原理,首先將32位輸入控制字a由低位到高位平均分為4段,每一段為8位,分別以a[0..7]到a[24..32]來(lái)命名。將a[0..7]作為第一級(jí)的輸入控制字輸入到8位數(shù)據(jù)鎖存器reg8中,在時(shí)鐘信號(hào)clk上升沿到來(lái)之時(shí),reg8暫存的控制字會(huì)送入到8位數(shù)據(jù)全加器adder8中與另一個(gè)加法數(shù)和進(jìn)位信號(hào)進(jìn)行全加運(yùn)算。另一個(gè)加法數(shù)是來(lái)自本級(jí)運(yùn)算結(jié)果的反饋,為保持時(shí)鐘節(jié)拍的一致性,該反饋先輸入到另一個(gè)reg8中暫存,然后在時(shí)鐘上升沿到來(lái)之時(shí)輸入到全加器進(jìn)行運(yùn)算;進(jìn)位信號(hào)來(lái)自第四級(jí),該信號(hào)也是先暫存在一個(gè)1位數(shù)據(jù)鎖存器reg1中再輸入到全加器中進(jìn)行運(yùn)算。
累加定時(shí)器在PLC控制程序中的應(yīng)用
1、累加定時(shí)器
在系統(tǒng)采用的歐姆龍PLC中,TTIM(087)定時(shí)器以0.1s為單位作增量計(jì)時(shí),其功能趨勢(shì)如圖2所示。
當(dāng)定時(shí)器輸入為ON時(shí),TTIM(087)使PV遞增;當(dāng)定時(shí)器輸入變OFF時(shí),定時(shí)器停止使PV遞增,但PV的值將保持;當(dāng)定時(shí)器輸入再次變ON時(shí),PV將重續(xù)計(jì)時(shí);當(dāng)PV到達(dá)SV時(shí),定時(shí)器完成標(biāo)志將變ON。定時(shí)器的PV和完成標(biāo)志的狀態(tài)在定時(shí)器計(jì)時(shí)完成后將保持。重啟定時(shí)器的方法有3種:將定時(shí)器的PV改為非零值(如通過(guò)MOV(021)指令)、使復(fù)位輸入變ON、執(zhí)行CNR(545)/CNRX(547)指令。定時(shí)器的精度為0~0.01s。
TIM之類的典型定時(shí)器使計(jì)數(shù)器減量計(jì)數(shù),其PV表示到定時(shí)器計(jì)時(shí)結(jié)束前剩余的時(shí)間。而TTIM(087)的PV則表示已經(jīng)過(guò)的時(shí)間,可在許多計(jì)算和顯示輸出中使用。
2、TTIM在內(nèi)部堵料判斷程序中的應(yīng)用
內(nèi)部堵料部分程序如圖3所示,D101的數(shù)據(jù)為記錄進(jìn)入清洗機(jī)內(nèi)的輪轂數(shù)量,累加定時(shí)器(TTIM)只有在D101大于0和1號(hào)、2號(hào)輥道電機(jī)運(yùn)行情況下才開始計(jì)時(shí)。該計(jì)時(shí)值不會(huì)因?yàn)榍靶驐l件斷開而復(fù)位,而是通過(guò)2號(hào)光電檢測(cè)(I:0.01)檢測(cè)到有輪轂來(lái)復(fù)位T61的計(jì)時(shí)值,此作用可以避免中斷電流而復(fù)位計(jì)時(shí)值,起到了等同于電機(jī)光電編碼器實(shí)時(shí)采集累加數(shù)值的效果。另外,通過(guò)變頻器設(shè)定的輥道電機(jī)運(yùn)行頻率,計(jì)算出輪轂從進(jìn)入到清洗完成需要的時(shí)間,賦給TTIM設(shè)置值,以此判斷進(jìn)入清洗機(jī)內(nèi)部的輪轂在規(guī)定的時(shí)間內(nèi),有無(wú)卡在集中噴淋室內(nèi)部。
3、TTIM在烘干定位程序中的應(yīng)用
烘干定位程序如圖4所示,中間軟繼電器W33.0為自動(dòng)運(yùn)行中3號(hào)輥道電機(jī)的啟動(dòng)保持位,在沒(méi)有堵料的情況下,取2號(hào)光電檢測(cè)的下降沿信號(hào)置位W40.00,接通累加定時(shí)器T50,T50的設(shè)置值為3號(hào)輥道電機(jī)按照變頻器設(shè)置的頻率輸送到第一次吹風(fēng)烘干點(diǎn)所用的時(shí)間。T50計(jì)時(shí)完成,則判斷輪轂到達(dá)第一個(gè)烘干點(diǎn),停止3號(hào)輥道電機(jī),同時(shí)接通延時(shí)導(dǎo)通計(jì)時(shí)器T51;T51為輪轂在第一個(gè)烘干點(diǎn)的停止時(shí)間,當(dāng)T51計(jì)時(shí)完成復(fù)位掉T50的值及W40.00,接通第二次運(yùn)行啟動(dòng)保持位W40.01;依次循環(huán),完成輪轂在3個(gè)固定位置的定位烘干。在此定位過(guò)程中,累加定時(shí)器的計(jì)時(shí)值不會(huì)因后續(xù)堵料或者急停事件的發(fā)生而復(fù)位,這樣可以精確地計(jì)算出輪轂在輥道上到達(dá)的位置,再次接通后繼續(xù)執(zhí)行剩余運(yùn)行時(shí)間,把輪轂準(zhǔn)確地送到定位烘干點(diǎn)。
評(píng)論
查看更多