• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    數字波形產生:近似正弦波

    這個例子展示了設計和評估正弦波數據表所需的一些主要步驟,這些數據表可用于嵌入式系統和任意波形產生儀器的數字波形合成應用。

    東西/原料

    • 電腦
    • simulink軟件

    方式/步調

    1. 1

      在雙精度浮點中建立表

      號令行鍵入:

      N     = 256;

      angle =  2*pi * (0:(N-1))/N;


      s     = sin( angle )';

      thd_ref_1    = ssinthd( s,   1,   N, 1, 'direct' )

      thd_ref_2p5  = ssinthd( s, 5/2, 2*N, 5, 'linear' )


      cs    = cordicsin( angle, 50 )';

      thd_ref_1c   = ssinthd(cs,   1,   N, 1, 'direct' )

      thd_ref_2p5c = ssinthd(cs, 5/2, 2*N, 5, 'linear' )

    2. 2

      如圖1所示。

    3. 3

      將正弦波近似應用于模子中

      號令行鍵入:

      open_system('sldemo_tonegen');

      set_param('sldemo_tonegen', 'StopFcn','');

      sim('sldemo_tonegen');

      currentFig = figure('Color',[1,1,1]);

      subplot(3,1,1), plot(tonegenOut.time, tonegenOut.signals(1).values); grid

      title('Difference between direct look-up and reference signal');

      subplot(3,1,2), plot(tonegenOut.time, tonegenOut.signals(2).values); grid

      title('Difference between interpolated look-up and reference signal');

      subplot(3,1,3), plot(tonegenOut.time, tonegenOut.signals(3).values); grid

      title('Difference between CORDIC sine and reference signal');

    4. 4

      如圖2所示。

    5. 5

      運行這個模子。

      如圖3所示。

    6. 6

      細心不雅察波形精度

       號令行鍵入:

      ax = get(currentFig,'Children');

      set(ax(3),'xlim',[4.8, 5.2])

      set(ax(2),'xlim',[4.8, 5.2])

      set(ax(1),'xlim',[4.8, 5.2])

    7. 7

      如圖4所示。

    8. 8

      統一表,固定點實現

      號令行鍵入:

      bits = 24;

      is   = num2fixpt( s, sfrac(bits), [], 'Nearest', 'on');


      thd_direct1 = ssinthd(is, 1, N, 1, 'direct')

      thd_direct2 = ssinthd(is, 2, N, 2, 'direct')

      thd_direct3 = ssinthd(is, 3, N, 3, 'direct')


      thd_linterp_2p5 = ssinthd(is, 5/2, 2*N, 5, 'fixptlinear')

    9. 9

      如圖5所示。

    10. 10

      比力分歧表格和方式的成果

      號令行鍵入:

      thd_double_direct  = ssinthd( s, 33/4, 4*N, 33, 'direct') 

      thd_sfrac24_direct = ssinthd(is, 33/4, 4*N, 33, 'direct')  

      thd_double_linear  = ssinthd( s, 33/4, 4*N, 33, 'linear') 

      thd_sfrac24_linear = ssinthd(is, 33/4, 4*N, 33, 'fixptlinear')

    11. 11

      如圖6所示。

    12. 12

      利用預先設置裝備擺設的正弦波塊

      號令行鍵入:

      open_system('sldemo_tonegen_fixpt');

      set_param('sldemo_tonegen_fixpt', 'StopFcn','');

      sim('sldemo_tonegen_fixpt');

      figure('Color',[1,1,1]);

      subplot(3,1,1), plot(tonegenOut.time, tonegenOut.signals(1).values); grid

      title('Difference between direct look-up and reference signal');

      subplot(3,1,2), plot(tonegenOut.time, tonegenOut.signals(2).values); grid

      title('Difference between interpolated look-up and reference signal');

      subplot(3,1,3), plot(tonegenOut.time, tonegenOut.signals(3).values); grid

      title('Difference between CORDIC sine and reference signal');

    13. 13

      如圖7、8所示。

    14. 14

      帶時鐘輸入的正弦函數的利用

      號令行鍵入:

      subplot(1,1,1), plot(tonegenOut.time, tonegenOut.signals(4).values); grid

      title('Difference between time based sin() and reference signal');

    15. 15

      如圖9所示。

    16. 16

      直接查找和線性插值的行為綜述

      號令行鍵入:

      figure('Color',[1,1,1])

      tic, sldemo_sweeptable_thd(24, 256), toc

    17. 17

      如圖10所示。

      END
    原作者:simulink教程舉報
    • 發表于 2020-02-23 18:28
    • 閱讀 ( 1342 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆