山賊
2005-09-05, 11:19 PM
基本電路方塊圖
+----←----+
| +-+ +-+ | +-+
+-+加| |暫| ↑ |R|
頻率 |法+-+存+→+→+O+→D/A & LPF
數值-+器| |器| |M|
資料 +-+ +++ +-+
↑
CLK
動作說明:
ROM 內儲存 Sine-wave 的數值波形資料, 譬如以 8bits data bus 的 ROM, 波形的波峰就是 FF, 波谷就是 00, 波形解析度為 256 階; 波形的時間軸就是 ROM 的 N 條 Address bus 輸入, 以 10bits address 輸入來說, 時間軸的解析度就共有 1024 的點, 用來描述時間..
暫存器內資料一開始為 0, 頻率數值資料 P 必須大於一, 此處以 1 為例, 加法器輸出為 1 , 如此在 clk 到來時, 暫存器載入 1, 輸送到 ROM 的 Address 就變成 1, 如此週而復始, 加法器每次就加 1, rom 的位址線輸入就從 0000000000 計數到最高值 1111111111 , 共 1024 個 CLK 才完成一個 Sine wave 的週期循環, 此時 LPF 輸出頻率為 CLK 的頻率除以 1024..
倘若增加頻率數值資料 P 為 2, 加法器每次加 2, 輸送到 ROM Address 的計數只要 1024/2=512 個 CLK 便完成一個 Sine-wave 週期循環, 如此可推演隨著 P 值的增加或減少(最少必須為 1, 否則 ROM Address 不會變化, 輸出 data 不會變動, 為 0Hz), 便可以增減輸出頻率, 且其穩定度只取決於 CLK..
因此合成頻率的輸出就是 Fo = Fclk / (2^N) * P, 而依取樣原理, Fo 的上限為 Fclk / 2, 事實上大約 0.4 * Fclk..
倘若有兩顆 ROM , 另一顆內的 Wave table 資料為 Cosine, 或是降低波幅解析度為 4bits (16階),Hi-nibble 放 sine-table, Lo nibble 放 cosine-table, 如此就可以一次輸出 sin & cos 的信號..
除此之外, 也可改變線路如下:
+-----←-----+
| +-+ +-+ | +-+
+-+加| |暫| ↑ |R|
頻率 |法+-+-+存+→+→+O+→D/A & LPF
數值-+器| | |器| |M|
資料 +-+ ↓ +++ +-+
| ↑
+--←--+ clk
|
| +-+ +-+ +-+
+-+加| |暫| |R|
相位差|法+---+存+---+O+→D/A & LPF
數值-+器| |器| |M|
資料 +-+ +-+ +-+
↑
clk
如此就可以做成以數值控制相位差的兩信號源..
此外若 ROM 的容量較大, 也可以將振幅, DSB ,調頻或調相(譬如 PSK,DPSK,QPSK,QAM 等)的資料直接燒錄在 ROM 中, 達到數值調變; 調變的輸入, 就是額外的 Address, 譬如 Wave-table 為 A0~A15, 調變資料輸入為 A16~A20, ROM 內資料的波形描述僅用 2bits(僅是舉例! 實際上這樣在較低頻輸出時, 波形失真相當大), 其餘 6 bits 為調變信號變化, 如此一顆 1MB (8Mbits) 的 ROM 便可做到; 另外調頻調相的達成, 也可直接從 "頻率數值資料或相位數值資料" 以數位化達成, 如此 ROM 僅需儲存振幅 & DSB 的資料即可..
如今這類電路都已經集成 IC 化了, 有興趣的網友可到 Google 輸入 "DDS" 或全名 "Direct Digital Synthesis" 就會有相關的資料可供參考..
贊助商連結
+----←----+
| +-+ +-+ | +-+
+-+加| |暫| ↑ |R|
頻率 |法+-+存+→+→+O+→D/A & LPF
數值-+器| |器| |M|
資料 +-+ +++ +-+
↑
CLK
動作說明:
ROM 內儲存 Sine-wave 的數值波形資料, 譬如以 8bits data bus 的 ROM, 波形的波峰就是 FF, 波谷就是 00, 波形解析度為 256 階; 波形的時間軸就是 ROM 的 N 條 Address bus 輸入, 以 10bits address 輸入來說, 時間軸的解析度就共有 1024 的點, 用來描述時間..
暫存器內資料一開始為 0, 頻率數值資料 P 必須大於一, 此處以 1 為例, 加法器輸出為 1 , 如此在 clk 到來時, 暫存器載入 1, 輸送到 ROM 的 Address 就變成 1, 如此週而復始, 加法器每次就加 1, rom 的位址線輸入就從 0000000000 計數到最高值 1111111111 , 共 1024 個 CLK 才完成一個 Sine wave 的週期循環, 此時 LPF 輸出頻率為 CLK 的頻率除以 1024..
倘若增加頻率數值資料 P 為 2, 加法器每次加 2, 輸送到 ROM Address 的計數只要 1024/2=512 個 CLK 便完成一個 Sine-wave 週期循環, 如此可推演隨著 P 值的增加或減少(最少必須為 1, 否則 ROM Address 不會變化, 輸出 data 不會變動, 為 0Hz), 便可以增減輸出頻率, 且其穩定度只取決於 CLK..
因此合成頻率的輸出就是 Fo = Fclk / (2^N) * P, 而依取樣原理, Fo 的上限為 Fclk / 2, 事實上大約 0.4 * Fclk..
倘若有兩顆 ROM , 另一顆內的 Wave table 資料為 Cosine, 或是降低波幅解析度為 4bits (16階),Hi-nibble 放 sine-table, Lo nibble 放 cosine-table, 如此就可以一次輸出 sin & cos 的信號..
除此之外, 也可改變線路如下:
+-----←-----+
| +-+ +-+ | +-+
+-+加| |暫| ↑ |R|
頻率 |法+-+-+存+→+→+O+→D/A & LPF
數值-+器| | |器| |M|
資料 +-+ ↓ +++ +-+
| ↑
+--←--+ clk
|
| +-+ +-+ +-+
+-+加| |暫| |R|
相位差|法+---+存+---+O+→D/A & LPF
數值-+器| |器| |M|
資料 +-+ +-+ +-+
↑
clk
如此就可以做成以數值控制相位差的兩信號源..
此外若 ROM 的容量較大, 也可以將振幅, DSB ,調頻或調相(譬如 PSK,DPSK,QPSK,QAM 等)的資料直接燒錄在 ROM 中, 達到數值調變; 調變的輸入, 就是額外的 Address, 譬如 Wave-table 為 A0~A15, 調變資料輸入為 A16~A20, ROM 內資料的波形描述僅用 2bits(僅是舉例! 實際上這樣在較低頻輸出時, 波形失真相當大), 其餘 6 bits 為調變信號變化, 如此一顆 1MB (8Mbits) 的 ROM 便可做到; 另外調頻調相的達成, 也可直接從 "頻率數值資料或相位數值資料" 以數位化達成, 如此 ROM 僅需儲存振幅 & DSB 的資料即可..
如今這類電路都已經集成 IC 化了, 有興趣的網友可到 Google 輸入 "DDS" 或全名 "Direct Digital Synthesis" 就會有相關的資料可供參考..
贊助商連結