• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 牛人業話 > 提高開發效率和質量?用SPICE仿真音效

    提高開發效率和質量?用SPICE仿真音效

    作者:EEPW編譯 時間:2014-10-27 來源:電子產品世界 收藏

      我在網上查找原理圖時想到,如果能在出圖前先用通用模擬電路仿真器()進行模擬檢驗,可能會提高開發效率和質量。但由于任何電子模擬器都無法讀取并輸出音頻文件,所以我用模塊編寫程序,實現讀取波形文件并且輸出一段時間--電壓點的序列。的文件源裝置能夠讀取這一大串點序列,并輸出和音頻信號相匹配的電壓波形,之后作為效果電路的輸入。

    本文引用地址:http://www.czjhyjcfj.com/article/264466.htm

      為了能聽到輸出音頻,還需另外一個程序將輸出跟蹤轉換成波形文件,這里我還是借助于這個模塊來實現。

      

    過載效果器250

      過載效果器250是最簡單的之一,以吉他效果而廣為人知。原理圖如圖所示。工作原理很簡單,首先需要一個交流耦合電容和偏置電路,因為供電采用單向電壓。

      運算放大器被用作非反相放大器放大微弱的輸入信號。R5電位計控制增益。輸出位置有另外一個交流耦合電容器和兩個削波信號二極管。信號幅值越大,二極管的削波和畸變就越明顯。

      測試音頻信號是一段純凈的吉他聲響,來源于用戶Khoon命名的freesound.org組織,沒有專利許可費用,從根本上說這個屬于公用的。

      首先是經過500千歐R5電阻輸出較為緩和的畸變。考慮到運算放大器的放大效應,輸入幅值的選擇尤為重要。這段錄音中輸入幅值為10 毫伏。從波形上我們發現,削波作用相當明顯,因此在播放前需要檢查輸出音量。

      如下圖所示,逐漸減小R5的阻值會提高增益和畸變:

      音頻編輯器顯示的失真的頻譜效應:

    原始純凈吉他聲信號頻譜


    刺耳畸變信號頻譜


      以上分別是原始純凈吉他聲信號和刺耳畸變信號的頻譜,區別不是很明顯。一些低頻信號被交流耦合電容器過濾,由于畸變新增了高頻信號。能量增加超出了整個帶寬,但這只是到wav格式聲音文件轉換過程中的過渡表象。為了避免削波,這里選擇最大信號增益來獲取最大樣本值,從而改變信號音量。

      實際電路與之相比略有不同,不過這種模擬本身仍然很能說明問題。

      在所需時間上,仿真與實際存在差別。在44100赫茲的采樣頻率下,大約需要5秒來仿真1秒的音頻文件。如需要長時間的仿真并記錄數據,可以使用聲明記錄下輸出波形。

      模糊效應

    模糊電路


      第二部分為模糊電路,除了運算放大器部分被分立晶體管所取代外,其余與之前的失真電路非常相似。

      輸入電壓幅值對這部分電路的輸出影響也很明顯。

      下面是1毫伏輸入幅值下的仿真結果:

      10毫伏輸入幅值仿真結果為:

      由于相似的二極管削波結構,其仿真結果與畸變電路相差不大。

      二極管削波器

      二極管削波器的波形比預想的要平滑得多。當然這也取決于信號電壓和二極管參數。

    用一對1N4148進行削波之后的1V 400Hz信號仿真


    二極管削波之后的正弦波頻譜


      但即便如此,這個相對平滑的削波信號也包含許多高頻諧波。

      源碼

      源碼參見這里:

      README

      SPICE audio tools

      This repository has two programs for importing wav file to SPICE and

      exporting the output as a wav file.

      1. wavtospice.py

      - This tool converts a wav file with a list of values, which can be read

      using ngspices file source. If wav file has multiple channels only the values

      of the first channel are returned.

      - Usage: python wavtospice.py

      - must have been compiled with xspice support. File source can be used

      like follows:

      a1 %v([in]) filesrc

      .model filesrc filesource (file="values" amploffset=[0] amplscale=[1]

      + timeoffset=0 timescale=1

      + timerelative=false amplstep=false)

      See ngspice manual for possible options.

      2. spicetowav.py

      - This tool converts ngspice output to wav file. Compatibility with other

      simulators is untested.

      - Simulation must be setup to print the output values.

      Run the ngspice in batch mode using the command line flag -b and direct

      output to a file.

      - Usage: python spicetowav.py [clipping voltage].

      Clipping voltage is optional and if it's unspecified wav is written

      with maximum amplitude such that clipping doesn't occur.

      # Example

      Following commands can be used to get output from lowpass filter example file

      when run on Linux:

      $ python wavtospice.py file.wav inputvalues

      $ ngspice -b examples/lowpass.cir > spice_output

      $ python spicetowav.py spice_output output.wav


    模擬信號相關文章:什么是模擬信號




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 措美县| 青岛市| 呼伦贝尔市| 灵寿县| 贡觉县| 鄂托克旗| 合川市| 江源县| 秦皇岛市| 耒阳市| 兴义市| 句容市| 修水县| 扬州市| 新巴尔虎左旗| 连云港市| 措勤县| 信阳市| 武冈市| 和田县| 宁德市| 游戏| 富民县| 广平县| 扬州市| 磐石市| 大安市| 怀来县| 宁波市| 陵水| 仁怀市| 上饶市| 泽州县| 应城市| 佳木斯市| 龙州县| 河间市| 廊坊市| 宿州市| 理塘县| 白河县|