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