999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應用嵌入式微控制器的數字頻率合成實現方法

2023-11-07 05:24:36陳硯圃石立春
探測與控制學報 2023年5期
關鍵詞:嵌入式信號

陳硯圃,劉 含,郭 博,石立春

(1.西京學院計算機學院,陜西 西安 710123;2.西京學院電子信息學院,陜西 西安 710123)

0 引言

波形信號生成技術在引信、遙測、通信、導航、雷達等領域的應用極其廣泛[1-4]。直接數字頻率合成(DDS)技術[5]能夠對信號的頻率、相位、幅度等參數進行精確控制,是多年來普遍采用的波形信號生成方法。基于DDS專用芯片[1-4]或FPGA[6-10]技術生成波形信號是目前最常見的兩種解決方案。另外,隨著嵌入式微控制器的主頻、CPU處理字長、存儲容量的提高以及其片上外設越來越豐富,電子裝置中更多的功能直接由嵌入式微控制器實現已成自然趨勢。為了降低電路的復雜性并提高系統的靈活性與可靠性,本文對基于嵌入式微控制器直接實現DDS而生成波形信號的方法進行研究。

基于定時中斷實現DDS生成波形信號的方法簡單、直接,但頻繁的定時中斷使生成信號的頻率范圍受限,進一步提出基于直接存儲器存取(DMA)實現DDS生成波形信號的方法,數據從信號預存區到數模轉換(DAC)的傳送由并行于CPU工作的DMA完成,DDS時鐘頻率高,因而可生成頻率范圍更寬的信號。

1 信號生成的DDS技術

基于DDS技術的信號生成,是利用預存的信號1個周期內的NTAB個離散波形值組成的信號波形表,再以一定的間隔從波形表中循環取出波形值并送至DAC而生成一定頻率的周期信號。利用DDS技術可以生成任意波形的周期信號,且輸出信號的頻率非常精確。圖1為DDS信號生成器的原理框圖,由相位累加器、信號波形表、數模轉換器與低通濾波器等部分組成。其中,Kf為頻率控制字,用于控制生成信號的頻率;fc為DDS的時鐘頻率;p為相位累加器的字長(2進制位數);r為信號波形表地址線的位數,也是相位累加器高位輸出的位數;q為信號波形表數據線的位數,對應數模轉換器的分辨率;fo為擬生成信號的頻率。

圖1 DDS信號生成器的原理框圖Fig.1 Schematic diagram of DDS signal generator

每隔1個DDS時鐘周期(Tc=1/fc),相位累加器的當前值Sp均會加入1次頻率控制字Kf,相位累加和的高r位作為地址對信號波形表尋址,查表結果為信號波形的1個離散值。在DDS時鐘的作用下,查表輸出的信號波形的離散序列經DAC轉換并通過低通濾波器而得到平滑的模擬波形。

DDS生成信號的頻率由DDS時鐘頻率和頻率控制字決定,即

(1)

通常fc的取值受限于DAC的轉換速度。1個信號周期內離散波形值的個數為

(2)

為了生成高質量的信號波形,通常Kf的取值遠小于2p。DDS生成信號的頻率分辨率為

(3)

可見,只要相位累加器的字長p足夠大,DDS生成信號的頻率就足夠精確。

2 嵌入式微處理器實現DDS

2.1 基于定時中斷實現DDS

利用嵌入式微控制器實現DDS生成波形信號,可采用串行方式依次實現圖1中的各個環節。相位累加器進行加法操作用到的DDS時鐘可由嵌入式微控制器的定時器產生。將定時器的定時時長設定為DDS的時鐘周期Tc,在定時中斷服務程序中完成相位累加,從信號波形表中查得波形值,通過DAC將波形值轉換為模擬信號等操作。以正弦波為例,采用定時中斷的方法實現DDS信號生成的具體流程如下:

1) 建立信號波形表

對正弦信號的1個周期進行NTAB等份離散采樣,相應的NTAB個離散波形值為

VTAB[n]=round[(2q-1-1)sin(2πn/NTAB)+2q-1]
n= 0, 1, …,NTAB-1,

(4)

式(4)中,round[·]為取最接近的整數。嵌入式微控制器的片上DAC多為單極性輸出,方括號中的第二項(直流分量)用于避免NTAB個離散波形值VTAB[n]出現小于0的情況。

2) 參數初始化

① 利用DDS時鐘頻率fc與生成信號的頻率fo,計算頻率控制字

(5)

② 復位相位累加器:Sp=0。

3) 定時器初始化

定時器設為定時中斷模式,且定時時長為DDS時鐘周期Tc。

4) 定時中斷服務

① 信號波形表的索引號:m=Sp?(p-r);

② 基于索引號m查信號波形表,得到q位的離散波形值V[m];

③ 將V[m]傳送至DAC的數據寄存器,完成離散波形值到模擬量的轉換;

④ 相位累加求和:Sp|new=Sp|old+Kf;

⑤ 結束。

以上定時中斷實現DDS生成信號的方法,過程簡單、容易實現。但每間隔1個DDS時鐘周期均須進入1次定時中斷,中斷過于頻繁并占用過多的CPU時間。特別是在中斷服務程序中,波形表索引號的獲取、波形表的查取、波形值的數模轉換、相位的累加更新等操作均需一定的時間,再計入定時中斷的響應和返回時間,完成一次定時中斷的時間較長。因此定時中斷實現DDS中的時鐘頻率fc較低,由式(1)可知生成信號的上限頻率受限。

2.2 基于DMA實現DDS

為了解決定時中斷實現DDS生成信號時上限頻率低的問題,必須設法提高DDS的時鐘頻率fc。為此將離散序列到DAC的傳送工作交給DMA完成,而CPU只負責離散序列的更新。近年來嵌入式技術的發展突飛猛進,多數嵌入式微控制器已經集成了片上DMA。利用DMA可以將預存于存儲器中的離散序列自動、高速地傳送至DAC生成模擬信號,而且DMA與CPU在時間上并行工作,工作效率高。但是,DMA所傳送的數據并非源于信號波形表,而是依據DDS原理從信號波形表中查得的離散序列。信號頻率不同,相應的離散序列也不相同,而且該序列通常不具備周期性,不能構成一個有限長的連續存儲區供DMA循環傳送。為此,在SRAM中開辟1個由上、下半區組成的連續存儲區作為信號預存區,用于預存待傳送的離散序列。當DMA完成上半區的傳送并開始傳送下半區時,由CPU更新上半區的預存序列;同樣,當DMA完成下半區的傳送并開始傳送上半區時,由CPU更新下半區的預存序列。序列的更新在上、下半區DMA結束中斷中完成,由于每次中斷CPU更新的是一批波形離散值,而不是一次中斷只更新一個波形離散值,因此能夠大大減少中斷的次數以及中斷響應和返回的累計時間,因而可以顯著提高DDS時鐘頻率。

以正弦信號的生成為例,設對信號的1個周期進行NTAB等份采樣,采樣得到的NTAB個離散波形值VTAB[n]組成信號的波形表。信號波形表中的內容不會因為生成信號頻率的不同而變化,為了節省SRAM的開銷,該表通常預存于Flash中。由式(5)給出的頻率控制字對相位進行累加求和,再以相位作為索引從信號波形表中查得用于生成信號的離散序列。由NRAM個波形值組成的離散序列預存于信號預存區,在定時器的定時觸發下DMA將離散序列傳送至DAC而生成信號,而CPU并行完成信號預存區的動態更新。DMA實現DDS生成信號的具體流程如下:

1) 初始化

① 定時器初始化:定時時長設為DDS時鐘周期;DMA初始化:數據傳送的源區與目標分別為信號預存區和DAC,工作模式為半程與全程中斷、循環發送;

② 頻率控制字Kf=fo·2p/fc;

③ 信號波形表索引號、信號預存區索引號與相位累加和的初始化,即n=0;m=0;Sp=0;

④n=Sp?(p-r);

⑤VRAM[m]=VTAB[n];

⑥m++,Sp+=Kf;

⑦ 若m

⑧ 結束。

其中④~⑦完成信號預存表的初始化。

2) 在DMA中斷中完成動態更新VRAM[m]

上半區傳送結束:

①m=0;

②n=Sp?(p-r);

③VRAM[m]=VTAB[n];

④m++;

⑤Sp+=Kf;

⑥ 若m

⑦ 結束。

下半區傳送結束:

①m=NRAM/2

②n=Sp?(p-r);

③VRAM[m]=VTAB[n];

④m++;

⑤Sp+=Kf;

⑥ 若m

⑦ 結束。

3 實驗與結果分析

為了生成頻率精準、上限頻率高以及波形質量好的信號,應盡可能選擇片上嵌有大容量靜態存儲器(SRAM)、DMA數據傳送單元、高頻定時器以及分辨率高、轉換速度快的DAC的嵌入式微控制器。實驗采用國內使用較為普遍的STM32系列中的中高端嵌入式微控制器STM32F407,其主要特色有:頻率為168 MHz的系統時鐘,192 KB的SRAM,17個各類定時器,2路支持多達64 K個數據循環數傳的DMA,2路12位的高速DAC。

首先對定時中斷實現DDS算法生成正弦信號進行實驗測試。定時器選用基本定時器TIM6,其輸入時鐘頻率為84 MHz。TIM6工作于定時中斷模式,每中斷一次,中斷服務程序均完成一次波形表取值、DAC轉換、相位累加求和等操作。TIM6的定時中斷頻率就是DDS的時鐘頻率fc。CPU完成一次中斷處理的時間為中斷響應時間、中斷返回時間與中斷服務時間之和,其實測值大約為0.5 μs。留出1倍的余量,DDS時鐘周期取1 μs,相應的DDS時鐘頻率為fc=1 MHz。考慮到該微控制器片上DAC的分辨率為12位,在正弦信號的1周期內取NTAB=4 096個采樣值構成信號波形表。如果直接采用由式(4)建立的信號波形表,生成信號的幅度最大,峰峰值約為3.3 V。實際中需根據生成信號的幅度調整式(4)的峰峰值。測試中將生成信號的峰峰值統一設定為Vpp=1.0 V,則式(4)的峰峰值大約應調整為1 256。在實現DDS的過程中,相位累加和Sp與頻率控制字Kf的字長均取32位,由式(3)可知生成信號頻率的理論誤差約為0.000 2 Hz。

實驗中,生成信號的頻率分別預設為10、20、30和100 kHz時,數字示波器的實測波形如圖2所示,同時也是頻率和峰峰值的測量值。可以看出,生成信號的頻率非常準確,頻率為10、20和30 kHz時信號的波形非常好,但當頻率為100 kHz時,在信號的波峰和波谷附近的波形不再光滑,明顯由分段直線組成。其實由于DDS時鐘頻率fc是固定的,隨著信號頻率fo的升高,1個信號周期內離散值的個數Ns=fc/fo會減少。fo=100 kHz時,生成信號的1個周期僅用到10個離散值(Ns=10),生成信號的波形畸變明顯。為了使生成信號有較好的波形,通常要求Ns不小于32。Ns=32時對應的信號頻率fo大約為30 kHz,因而如果采用STM32F407,要想得到高質量的信號波形,生成信號的頻率應設在30 kHz以下。

圖2 基于定時中斷實現DDS生成正弦信號的實測波形Fig.2 The measured waveform of sine signal generated by DDS algorithm of timing interrupt method

基于DMA實現DDS生成信號旨在提高信號的上限頻率,同時解決定時中斷實現DDS時進入中斷過于頻繁的問題。嵌入式微控制器的基本定時器TIM6工作于非中斷定時模式,DMA1工作于將信號預存區中的離散序列循環發送至DAC1的工作模式。TIM6的定時溢出信號用于連續觸發DMA1,而TIM6的定時溢出率就是DDS的時鐘頻率。雖然為了提高生成信號的上限頻率須盡可能提高DDS的時鐘頻率,但其最高頻率根本上受到DAC1轉換速率的限制。實驗表明,數據傳送到DAC1的時間間隔不小于8/84 μs時,數模轉換能夠正常、有效工作。信號的波形表和預存區均由正弦信號1個周期內的4 096個波形離散構成,生成信號的峰峰值仍取1.0 V。完全不占用CPU時間,DMA1不斷將信號預存區中的波形值循環傳送至DAC1。使能DMA1的半程中斷和全程中斷,每完成2 048個波形值到DAC1的傳送,CPU將進入1次中斷并在中斷服務程序中基于DDS原理和信號波形表對信號預存區進行更新。半程中斷時更新信號預存區上半區的2 048個波形值,全程中斷時更新信號預存區下半區的2 048個波形值。由于每完成2 048個波形值的數模轉換后才產生1次中斷,平均而言CPU用于中斷的響應和返回時間可以忽略,而且DMA1將波形值傳送到DAC1的操作不占用CPU的時間,因此可以有效提高DDS的時鐘頻率。實測表明,1次中斷服務的用時大約為120 μs,平均到1個波形值的中斷服務時間大約為0.06 μs,遠小于DAC1所需的轉換時間。因此實驗中將TIM6的定時長度設為8/84 μs,對應的DDS時鐘頻率fc=10.5 MHz。DDS過程中的相位累加和Sp與頻率控制字Kf的字長仍取32位,由式(3)可知生成信號頻率的理論誤差約為0.002 Hz。

實驗中,正弦信號的頻率分別預設為100、300、600和1.0 MHz時,生成信號的示波器實測波形如圖3所示。可以看出,生成信號的頻率非常精確;頻率為100、300 kHz時信號的波形很好,但300 kHz時信號的峰峰值有所下降(850 mV);頻率為600 kHz時,信號的波形已接近三角波,信號的峰峰值進一步下降(670 mV);頻率為1.0 MHz時,信號的波形畸變明顯,信號的峰峰值繼續下降(434 mV)。

圖3 基于DMA實現DDS生成正弦信號的實測波形Fig.3 The measured waveform of sine signal generated by DDS algorithm of DMA method

實驗表明,基于DMA實現DDS所生成的正弦信號,當頻率高達數百kHz時信號的波形依舊很好,信號的上限頻率得到了顯著提高。顯然,在保證波形質量的基礎上,生成信號頻率的提高主要是DDS時鐘頻率的提高,進而1周期內離散波形值的個數增多的自然結果。但是,隨著頻率的不斷提高(大于100 kHz),信號幅度出現持續下降,而且當頻率高至一定程度時,信號的波形由正弦波逐漸向三角波演變。分析表明,片上DAC放大器的壓擺率不足是這一現象的直接起因。實驗還表明,當信號的幅度較小時,信號的幅度和波形質量隨頻率的提高而下降的現象明顯減弱。實際上,當信號幅度減小時,信號波形的斜率會隨之減小,壓擺率對波形的影響自然也隨之減弱。

總之,DMA實現DDS所生成信號的性能主要決定于片上DAC及其放大器的性能。為了獲得頻率高、幅度穩定且波形畸變小的生成信號,要求嵌入式微控制器的片上DAC的轉換速度及其放大器的壓擺率均須足夠高。

4 結論

本文研究了僅借助嵌入式微控制器的定時器、DMA與DAC等片上外設,無需引入DDS專用集成電路,基于定時中斷或DMA實現DDS直接生成波形信號的方法。基于定時中斷實現DDS生成信號的方法,適用于片上未嵌入DMA的嵌入式微控制器,但CPU頻繁地出入定時中斷限制了生成信號的上限頻率;基于DMA實現DDS生成信號的方法,從信號預存區到DAC的傳送由獨立于CPU并行工作的DMA完成,支持較高的DDS時鐘頻率,生成信號的頻率范圍更寬。采用STM32系列的嵌入式微控制器STM32F407,以正弦信號為例對兩種方法均進行了實驗測試,結果表明要生成高質量的信號波形,定時中斷實現法所生成信號的頻率上限為數十kHz,而DMA實現法所生成信號的頻率上限達數百kHz。實驗還發現,對DDS時鐘頻率較高的DMA實現法,生成信號的上限頻率主要受DAC放大器壓擺率的限制。為了獲得更高頻率的信號,在選擇嵌入式微控制器時,不僅要求片上DAC的轉換速率足夠高,其放大器的壓擺率也須足夠高。

猜你喜歡
嵌入式信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
孩子停止長個的信號
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
基于LabVIEW的力加載信號采集與PID控制
一種基于極大似然估計的信號盲抽取算法
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 在线国产毛片| 国产91色| 久久久久久久97| 美臀人妻中出中文字幕在线| 色婷婷成人网| 欧美色视频在线| 波多野结衣一区二区三区四区视频| 亚洲swag精品自拍一区| 午夜成人在线视频| 色婷婷天天综合在线| 无码精品福利一区二区三区| 中文字幕无码制服中字| 欧美曰批视频免费播放免费| A级毛片高清免费视频就| 欧美激情视频一区| 久久中文字幕不卡一二区| 亚洲自偷自拍另类小说| 国产草草影院18成年视频| 日韩性网站| 国产高清色视频免费看的网址| 日韩欧美中文在线| 久久国产精品影院| 色综合久久88| 色综合天天视频在线观看| 成人午夜亚洲影视在线观看| 国产黄在线观看| 欧美精品影院| 国产精品女人呻吟在线观看| 国产欧美精品午夜在线播放| 亚洲精品无码在线播放网站| 麻豆精选在线| 麻豆精品在线| 国产日本视频91| 91麻豆国产视频| 久久久久久久久亚洲精品| 久久精品视频一| 久久这里只有精品2| 老汉色老汉首页a亚洲| 亚洲精品第一页不卡| 99热免费在线| 欧美激情视频一区| 亚洲系列中文字幕一区二区| 在线日韩日本国产亚洲| 日韩成人免费网站| 视频二区国产精品职场同事| 亚洲天堂免费| 啪啪国产视频| 国产精品va免费视频| 国产午夜精品鲁丝片| 欧美午夜在线视频| 国产成人免费视频精品一区二区 | 女高中生自慰污污网站| 欧美人在线一区二区三区| 成人综合网址| 成人午夜视频网站| a毛片在线播放| 97影院午夜在线观看视频| 人人爽人人爽人人片| 中文字幕无线码一区| 亚洲视频免费在线看| 亚洲男人的天堂久久香蕉 | 国产成人高清精品免费5388| 在线中文字幕日韩| 久久狠狠色噜噜狠狠狠狠97视色 | 国产一区二区三区免费观看| 成人永久免费A∨一级在线播放| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 欧美成人一级| 久久精品娱乐亚洲领先| 久久国产毛片| 欧美成人综合在线| 国产18在线播放| 91香蕉国产亚洲一二三区| 国产资源站| 欧美成人综合在线| 人人艹人人爽| 这里只有精品在线播放| 亚洲成人网在线观看| 人人爽人人爽人人片| 久久国产香蕉| 成年女人a毛片免费视频| 久久香蕉国产线看观看精品蕉|