相位累加器原理及累加器代碼
在中央處理器中,累加器(accumulator) 是一種寄存器,用來儲存計算產(chǎn)生的中間結(jié)果。如果沒有像累加器這樣的寄存器,那么在每次計算 (加法,乘法,移位等等) 后就必須要把結(jié)果寫回到內(nèi)存,也許馬上就得讀回來。然而存取主存的速度是比從算術(shù)邏輯單元到有直接路徑的累加器存取更慢。
標(biāo)準(zhǔn)的例子就是把一列的數(shù)字加起來。一開始累加器設(shè)定為零,每個數(shù)字依序地被加到累加器中,當(dāng)所有的數(shù)字都被加入后,結(jié)果才寫回到主存中。
現(xiàn)今的 CPU 通常有很多寄存器,所有或多數(shù)都可以被用來當(dāng)作累加器。因為這個原因,“累加器” 這名詞就顯得有些老舊。這個名詞已經(jīng)幾乎不在微處理器寄存器中使用,例如,運算寄存器的名稱中的符號以 “A” 開頭的表示是從 “accumulator” 這個歷史因素得來的 (有時候認(rèn)為并非 “arithmetic”)。也可能混淆的是寄存器的名字前置 “A” 也表示 “address”,比如說像是Motorola 68000家族。
早期的 4 位、8 位微處理器,典型具有單個累加器。8051微控制器有兩個累加器:主累加器與從累加器,其中的從累加器只用于乘法(MUL AB)與除法(DIV AB)。乘法的 16 位結(jié)果放入兩個 8 位累加器中。除法時,商放入主累加器,余數(shù)放入從累加器。8008的直接后繼產(chǎn)品——8080與8086,開創(chuàng)了x86指令集體系結(jié)構(gòu),仍然使用兩個累加器:主累加器 EAX 與從累加器 EDX 用于乘法與除法的大數(shù)運算。例如,MUL ECX 將把兩個 32 位寄存器 ECX 與 EAX 相乘,64 位結(jié)果放入 EAX 與 EDX。但是 MUL 與 DIV 之外的其他算術(shù)——邏輯指令(ADD、SUB、CMP、AND、OR、XOR、TEST)可以使用 8 個寄存器:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI 作為目的操作數(shù)(即存儲結(jié)果的位置)。
相位累加器原理
一個正弦波,雖然它的幅度不是線性的,但是它的相位卻是線性增加的。
DDS 正是利用了這一特點來產(chǎn)生正弦信號。如圖 2,根據(jù)DDS 的頻率控制字的位數(shù)N,把360° 平均分成了2的N次等份。
圖2,相位累加器原理
假設(shè)系統(tǒng)時鐘為Fc,輸出頻率為Fout。每次轉(zhuǎn)動一個角度360°/2N, 則可以產(chǎn)生一個頻率為Fc/2N 的正弦波的相位遞增量。那么只要選擇恰當(dāng)?shù)念l率控制字M,使得 Fout / Fc= M / 2N,就可以得到所需要的輸出頻率Fout,
Fout = Fc*M / 2N,相位幅度轉(zhuǎn)換通過相位累加器,我們已經(jīng)得到了合成Fout 頻率所對應(yīng)的相位信息,然后相位幅度轉(zhuǎn)換器把0°~360°的相位轉(zhuǎn)換成相應(yīng)相位的幅度值。比如當(dāng)DDS 選擇為2V p-p 的輸出時,45°對應(yīng)的幅度值為0.707V,這個數(shù)值以二進制的形式被送入DAC。這個相位到幅度的轉(zhuǎn)換是通過查表完成的。
DAC 輸出代表幅度的二進制數(shù)字信號被送入DAC 中,并轉(zhuǎn)換成為模擬信號輸出。注意DAC 的位數(shù)并不影響輸出頻率的分辨率。輸出頻率的分辨率是由頻率控制字的位數(shù)決定的。
累加器代碼
module counter (co, reset, data, ci, clk);
parameter N=4;
output co;
input reset, ci, clk;
input[N-1:0]data;
reg [N-1:0] q ;
// ???-1|?ü?èê?
always @(posedge clk)
begin
if (reset) q《=0;//
else
if(ci) q《=q + 1;
end
assign co=(q==data-1) && ci; //
endmodule
非常好我支持^.^
(28) 80%
不好我反對
(7) 20%
相關(guān)閱讀:
- [電子說] 學(xué)習(xí)STM32F103的ADC功能 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的DAC功能 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的定時器功能 2023-10-24
- [電子說] STM32基礎(chǔ)知識:定時器的PWM輸出功能 2023-10-24
- [電子說] 既然ODR能控制管腳高低電平,為什么還需要BSRR寄存器呢? 2023-10-24
- [電子說] ARM系列-P Channel簡析 2023-10-24
- [控制/MCU] 基于STM32F429芯片的單片機芯片內(nèi)存映射圖 2023-10-23
- [電子說] 軟硬件交互的角度將中斷的知識梳理 2023-10-22
( 發(fā)表人:李倩 )