新聞中心

        EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 使用LPC1700的IEC 60601-1-8音頻警報發(fā)生器

        使用LPC1700的IEC 60601-1-8音頻警報發(fā)生器

        作者: 時間:2010-02-08 來源:網(wǎng)絡(luò) 收藏
        音符發(fā)生器功能

        對于音符發(fā)生器,存在許多需要處理的數(shù)據(jù),它們涉及到多重頻率和多重正弦波發(fā)生器。如果將與每個頻率相關(guān)的數(shù)據(jù)變量和常數(shù)組織在具有相同尺寸的矩陣中,那么就能恰好使用簡單遞歸函數(shù)來“走”過這些矩陣數(shù)據(jù)。



        音符發(fā)生器定義

        定義若干個定點和浮點常數(shù),以及定義結(jié)構(gòu)標(biāo)簽和兩個矩陣。它們當(dāng)中之一是結(jié)構(gòu)的一個矩陣。

        算法中使用的變量和系數(shù)之結(jié)構(gòu)的優(yōu)點是:它允許我們在結(jié)構(gòu)矩陣和頻率常數(shù)矩陣中具有類似的矩陣組織。常數(shù)頻率矩陣和算法結(jié)構(gòu)矩陣之間的一一對應(yīng)關(guān)系使得在初始化每個頻率時,容易使用兩個矩陣的類似索引。

        音符發(fā)生器初始化

        上文提到為了使Goertzel算法能振蕩,除了系數(shù)以外,y[-1]和y[-2]值也必須初始化。必須針對對應(yīng)于每個頻率的結(jié)構(gòu)變量而完成此工作。下面顯示了用于初始化的代碼。一排5個結(jié)構(gòu)中的每一個被初始化,然后每一個另外的排被初始化,直到整個結(jié)構(gòu)矩陣都被初始化。在這個演示應(yīng)用程序中,這些計算是在復(fù)位初始化期間完成的。不過,如果你正在最優(yōu)化它,可以通過事先進行這些計算而將代碼保存起來,并且將結(jié)果作為常數(shù)儲存在快速存儲器中。這是因為,如果數(shù)學(xué)程序庫需要浮點和正弦/余弦算法,那么預(yù)先計算好的初始化值則不需要。這些程序庫例行程序使用大約一半本應(yīng)用程序中使用的代碼空間。系數(shù)和初始化值是通過32768(帶符號的短值)定標(biāo)的。還有,系數(shù)計算不包括公式(18)中顯示的2X系數(shù)。其目的是使系數(shù)的規(guī)模保持在帶符號的短值,以最小化儲存要求。2X被包括在最終Goertzel計算中;此處,輸出的定標(biāo)是通過>>14(而不是>>15)乘以2。



        多重正弦波發(fā)生、求和及DAC輸出

        一旦算法變量和系數(shù)都已經(jīng)被初始化,那么,讓Goertzel計算來生成基本音符和4個諧波就變得很容易。方法是簡單地遞增通過結(jié)構(gòu)矩陣中的一排,并且求五個值的和。正如上文所述,第204行包括通過>>14、而不是>>15定標(biāo)到2X中的系數(shù),而這些系數(shù)在初始化時不予考慮。



        一旦函數(shù)已經(jīng)完成了矩陣排中所有5個結(jié)構(gòu)的計算,相加的值就被定標(biāo)、格式化、并從帶符號的值轉(zhuǎn)化為不帶符號的值,然后被送到DAC。由于這些計算是在每個25kHz定時器中斷處執(zhí)行的(當(dāng)音符活躍時),所以DAC輸出速率就是25 kHz。這允許使用便宜的輸出濾波器,因為相對于正在生成的最高正弦波頻率,這大約是9X的過度取樣。



        關(guān)鍵詞: 60601 1700 LPC IEC

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 九江市| 郴州市| 宣化县| 杨浦区| 原平市| 巢湖市| 元谋县| 旬阳县| 邯郸市| 玛曲县| 葵青区| 肇州县| 闵行区| 工布江达县| 潢川县| 北宁市| 合川市| 黄浦区| 鄯善县| 海林市| 聂荣县| 永和县| 亳州市| 通城县| 耿马| 读书| 崇礼县| 买车| 乐东| 读书| 阜康市| 华亭县| 崇信县| 凌云县| 濮阳市| 绥化市| 承德市| 潞西市| 宜都市| 大名县| 资兴市|