陳國童,廖建慶 (寧德師范學院物理與電氣工程系,福建 寧德 352100)
可編程邏輯器件具有器件規模大、工作速度快、可編程的硬件特點,同時它的開發可借助EDA的支持,這使得它適合用來實現DDS技術[1-2]。因此,以單片機+CPLD (復雜可編程邏輯器件)為硬件載體可實現DDS直接數字頻率合成技術。下面,筆者進行基于單片機+CPLD相位可調的低頻信號源設計。利用單片機軟件控制的靈活性,用單片機STC89C52實現信號的控制部分。利用CPLD硬件上的高速、高集成度和可編程性,由CPLD (EPM7128S)和EPROM (2716)、D/A (DAC0832)構成信號產生部分,最后,用匯編語言和VHDL硬件描述語言分別對其編程。

圖1 系統原理框圖
系統主要由如下模塊組成:MCU系統模塊;CPLD系統模塊;波形查表模塊;幅度調節模塊;D/A波形產生模塊;低通濾波模塊;相位差檢測模塊;7279鍵盤顯示模塊。系統原理框圖如圖1所示。
MCU信號控制部分主要通過7279鍵盤顯示模塊獲取數值實現輸出信號的頻率、相位差和幅度的設置,并通過7279鍵盤顯示模塊實現輸出信號的頻率、相位和幅度的顯示,還實現計算頻率控制字、相位差控制字和幅度控制字,并向CPLD提供頻率控制字、相位控制字和向幅度調節模塊提供幅度控制字,幅度調節模塊把輸入的單片機產生的幅度控制字轉換成D/A波形產生模塊輸出波形的參考電壓,從而控制輸出信號的幅度;DDS信號產生部分主要用來實現DDS技術,產生2路同頻正弦波信號。
為了檢測系統產生信號相位差效果,系統還設計了信號相位差檢測部分。系統首先把2路正弦波信號轉換為脈沖信號送至單片機的INT0、INT1,通過產生中斷開始定時器T1計時和停止定時器T1計時,算出信號之間的時間差和周期,從而計算出兩同頻信號的相位差。
系統硬件電路設計包括CPLD電路、波形查表電路、D/A波形產生電路、幅度調節電路、低通濾波電路、相位差檢測電路、7279鍵盤顯示電路等電路設計。
設計中選用EPM7128SLC84-15型號的CPLD為芯片,其屬于Altera公司推出的MAX7000S系列。該芯片采用CMOS E2PROM工藝,傳輸延遲僅為5ns,內部具有豐富的資源,包括128個觸發器、2500個用戶可編程門;具有68個用戶可編程的IO口,為系統定義輸入、輸出和雙向口提供了極大的方便;通過配置,輸入引腳可以兼容3.3V/5V邏輯電平,輸出可以配置為3.3V/5V邏輯電平輸出。EPM7128同時還提供了JTAG接口,可進行ISP編程,極大地方便了用戶[3-6]。
設計中,CPLD電路實現DDS技術,生成2路11位的地址掃描信號,主要由EPM7128SLC84-15及相應的無源時鐘振蕩電路和JTAG接口下載電路組成。
首先要解決正弦信號在一個周期內的采樣問題,采樣值的個數根據相位差要求 (相位差范圍為0~359°,相位差步進為0.2°),而該設計考慮到實現更高的移相精度,擬采用2048個采樣點,且波形查找表設計為8位數字量輸出。這樣便可以確定正弦查找表為2048×8位結構,存儲了正弦波在一個周期內波形的2048個采樣點。由此相位差分辨率實際可達到360°÷2048=0.1757°。可以通過C語言編程來獲得正弦查找表的采樣值,并將8bit的采樣值分別存放在2塊8bit的2716存儲器中。另外,對于D/A轉換器的選擇,首先要考慮到D/A轉換器的轉換速率,然后根據D/A轉換器字長所帶來的誤差,決定D/A的位數。由此選擇D/A轉換器的型號為美國數據公司的8位高速數/模轉換器DAC0832,片內帶數據鎖存器,輸出電流穩定時為1μs,功耗為20mW。波形查找和D/A波形產生電路圖如圖2所示。

圖2 波形查找和D/A波形產生電路圖
為了可以調節輸出信號的幅度大小,選用DAC0832(2個電流輸出端Iout1和Iout2)構成幅度調節電路,其原理是通過控制DAC0832的VREF來控制輸出信號的幅度。幅度調節電路如圖3所示。
在圖3中,Iout1為輸入數字全為 “1”時,輸出電流最大,約為255VREF/256RFB。當輸入數字全為 “0”時,輸出電流為0。輸出端V0=-Iout1×RFB,當輸入數字全為 “1”時,V0=-255VREF/256。

圖3 幅度調節電路圖
通過單片機發出的數字量 (用X表示)不同,來控制調幅的DAC0832的Iout1。其輸出端V0=-X·VREF/256=-X·5/256(該0832的VREF固定為5V),從而使DAC0832的輸出端V0作為后2塊D/A轉換器的DAC0832的VREF,即通過VREF的大小可以控制后2塊DAC0832輸出端V0的大小,由此實現幅度調節的功能。
相位檢測可以用來檢測2路輸入正弦波的相位差。該電路由同相放大電路和遲滯比較器和一個反向器組成。相位檢測電路圖如圖4所示。
同相放大電路具有使輸入信號放大的功能,其由運放LF353P構成。該同相放大電路的放大倍數Au=1+R31/R11=1+100/10=11。遲滯比較器是一個具有遲滯回環傳輸特性的比較器,在反相輸入門限電壓比較器的基礎上引入了正反饋網絡,由此構成了具有雙門限的反相輸入遲滯比較器。由于正反饋作用,這種比較器的門限電壓是隨輸出電壓Vom改變的。該遲滯比較器由LM393N構成。Vom是經遲滯比較器輸出后的電壓,V1是經同相放大電路輸出后的電壓,Vb是經R17輸出后那點的電壓,由于Vb的比較電壓為0,所以,Vb=V1-(V1-Vom)/(R17+R21)×R17=0,得到V1-(V1-Vom)/11=0,即(10V1+Vom)/11=0,10V1+Vom=0,從而當Vom=-5V時,V1=0.5V,即V+i=0.5V;當Vom=+5V時,V1=-0.5V,即V-i=-0.5V。該反向器采用的是高速的HD74HC14反向器,由于輸入信號變化較快,低速的反向器不能滿足要求。

圖4 相位檢測電路圖
系統軟件設計通過匯編語言和VHDL硬件描述語言來編寫程序,完成信號的產生和控制設計。采用Altera公司的可編程邏輯器件和器件的軟件開發平臺MAX+plusⅡ進行VHDL編程。匯編語言則主要完成單片機對信號的控制功能的編制。
為了使系統軟件設計條理清楚,方便調試和使用,依照系統功能模塊規劃進行相應設計。軟件則由2個不同的工具來編程。系統模塊框圖如圖5所示。
MCU信號控制模塊通過人機對話 (HD7279鍵盤顯示模塊)生成頻率控制字、相位差控制字送CPLD信號產生模塊、生成幅度控制字送DAC0832控幅模塊,并顯示相關頻率、相位差、幅度值。相位差檢測模塊檢測CPLD信號產生模塊生成的2路信號的相位差。CPLD信號產生模塊接收MCU發送的頻率控制字和相位差控制字并通過寄存器拓展到相應位數。24位相位加法器生成信號地址并通過寄存器壓縮為11位地址送2716波形存儲器;相位加法器在Address1的基礎上加上相位差控制字生成的地址增量,生成了第二路波形的掃描地址Address2并送2716波形存儲器。

圖5 軟件結構設計框圖
主程序的功能包括對系統的初始化及提供對鍵盤的掃描和信號頻率、相位差、幅度及信號檢測相位差值的顯示等功能。主程序流程如圖6所示。
當上電或復位時進入主程序,首先進行MCU的初始化:堆棧棧頂的設置;定時器T0、T1和中斷INT0、INT1的初始化,接著是8s定時器的復位清零和顯緩區、恢復數據暫存區的初始化及相關的標志位,然后調用顯示程序將所有的參數 (頻率、相位差、幅度)顯示出來,同時發送相應控制字到CPLD信號產生模塊和DAC0832信號幅度控制模塊。當MCU初始化后,在主程序中做一閉路的循環。循環開始設置堆棧棧頂,防止程序跑飛堆棧地址混亂;之后調用鍵盤處理子程序SUB_KEY,使鍵盤始終處于查詢狀態。若有鍵按下則做相應處理,無鍵按下則返回到循環開始處。

圖6 主程序流程圖
設計了一種相位、頻率、幅度都可調的2路波形輸出的低頻信號源,采用單片機和CPLD來設計信號源的控制部分,一方面能利用單片機軟件控制的靈活性,另一方面又能利用CPLD硬件上的高速、高集成度和可編程性。使用上述方法可以充分利用軟件支持方便地實現對信號參數的控制和修改,同時又能保證信號產生的高速和靈活可控,使系統能夠滿足設計要求的精度。
[1]張迎新.單片微型計算機原理、應用及接口技術 [M].北京:國防工業出版社,2004.
[2]廖日坤 .CPLD/FPGA嵌入式應用開發技術白金手冊 [M].北京:中國電力出版社,2005.
[3]劉雁飛,赫建國,鄭燕 .一種基于DDS技術的信號源及其CPLD實現 [J].西安郵電學院學報,2005,10(1):49-52.
[4]李小波,孫志勇,劉春生 .基于CPLD和單片機的低頻信號源設計 [J].儀表技術與傳感器,2005,15(11):46-48.
[5]王慶,劉滌塵 .基于CPLD的高精度可程控多路信號源 [J].儀表技術與傳感器,2005,15(3):36-38.
[6]王永濤,韓建,牟海維,等 .基于單片機與AD9852的信號源設計 [J].電測與儀表,2006,43(7):39-41.