chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>主機(jī)配件>cpu>

相位累加器原理及累加器代碼

2019年07月22日 08:52 lq 作者: 用戶評論(0

  在中央處理器中,累加器(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)作累加器。因?yàn)檫@個原因,“累加器” 這名詞就顯得有些老舊。這個名詞已經(jīng)幾乎不在微處理器寄存器中使用,例如,運(yùn)算寄存器的名稱中的符號以 “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ù)運(yùn)算。例如,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 正是利用了這一特點(diǎn)來產(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ù)值以二進(jìn)制的形式被送入DAC。這個相位到幅度的轉(zhuǎn)換是通過查表完成的。

  DAC 輸出代表幅度的二進(jìn)制數(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%

( 發(fā)表人:李倩 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?