基于PC機(jī)的模擬信號(hào)發(fā)生器的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:本文介紹了一種利用PC機(jī)設(shè)備來設(shè)計(jì)模擬信號(hào)發(fā)生器的方案。該方案通過利用PC機(jī)內(nèi)的充分資源來產(chǎn)生各種所需波形,然后通過USB2.0接口輸出。在PC機(jī)外采用DAC8580對(duì)數(shù)字信號(hào)進(jìn)行DA轉(zhuǎn)換,并用CPLD對(duì)整個(gè)電路進(jìn)行控制。
關(guān)鍵詞:CPLD;DAC;并串行轉(zhuǎn)換;數(shù)字濾波器
1 引言
在實(shí)際研發(fā)各種控制器、顯示器等涉及到數(shù)據(jù)采集的電子儀器的時(shí)候,對(duì)這些產(chǎn)品進(jìn)行性能測試是必不可少的。購買專用的信號(hào)發(fā)生器不但價(jià)格昂貴,而且可擴(kuò)展性能較差;把研發(fā)的產(chǎn)品放到實(shí)際工作環(huán)境,不但不便于調(diào)試,而且很多工業(yè)現(xiàn)場也不允許??紤]到PC機(jī)的普及程度,可以利用現(xiàn)有的資源來設(shè)計(jì)一個(gè)模擬信號(hào)發(fā)生器,同時(shí)運(yùn)用CPLD進(jìn)行電路控制,可以方便的實(shí)現(xiàn)電路擴(kuò)展。
2 模擬信號(hào)發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)
2.1 設(shè)計(jì)思想
在PC機(jī)上產(chǎn)生波形信號(hào)通過USB2.0接口傳入U(xiǎn)SB接收模塊。USB接收模塊將接收到的波形信號(hào)傳輸給CPLD。由于DAC8580是16位串行輸入的DA轉(zhuǎn)換器,CPLD需要對(duì)波形信號(hào)的數(shù)據(jù)格式進(jìn)行并行到串行的轉(zhuǎn)換。DAC8580對(duì)從CPLD傳輸過來的串行數(shù)據(jù)進(jìn)行DA轉(zhuǎn)換,輸出所需的模擬信號(hào)。
模擬信號(hào)發(fā)生器整體框圖如圖一所示。
圖一 整體框圖
2.2 基于CPLD的數(shù)據(jù)并串行轉(zhuǎn)換
DAC8580是串行輸入的DA轉(zhuǎn)換器,而從USB模塊中傳出的是并行數(shù)據(jù),所以需要在CPLD中進(jìn)行數(shù)據(jù)的并串行轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換器的工作原理圖如圖二所示,其中TXD[7:0]是并行數(shù)據(jù)輸入信號(hào),TCLK是數(shù)據(jù)轉(zhuǎn)換器的時(shí)鐘信號(hào),RESET是數(shù)據(jù)轉(zhuǎn)換器控制模塊內(nèi)部復(fù)位信號(hào),MWDSL是電平敏感鎖存器使能信號(hào),TRST是一位鎖存器模塊復(fù)位信號(hào),TXDATA是串行數(shù)據(jù)輸出信號(hào)。當(dāng)數(shù)據(jù)轉(zhuǎn)換器開始工作的時(shí)候,電平敏感鎖存器使能信號(hào)(MWDSL)有效,并行數(shù)據(jù)被送入鎖存器,之后,控制模塊產(chǎn)生并入串出移位寄存器裝入信號(hào)(STLD),以在時(shí)鐘信號(hào)(TCLK)的作用下,將并行數(shù)據(jù)裝入并入串出移位寄存器,然后,控制模塊再產(chǎn)生并入串出移位寄存器移位信號(hào)(STLD),并在時(shí)鐘信號(hào)(TCLK)的作用下,將并行數(shù)據(jù)移出。
圖二 數(shù)據(jù)并串行轉(zhuǎn)換器工作原理圖
本設(shè)計(jì)中采用Altera的CPLD(FLEX EPF10K20RC240)來實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換器的硬件電路功能,并用Quartus Ⅱ軟件進(jìn)行源文件設(shè)計(jì)。在電路頂層,我們采用原理圖和結(jié)構(gòu)圖的形式進(jìn)行數(shù)據(jù)轉(zhuǎn)換器的整體框架設(shè)計(jì)。Quartus Ⅱ?yàn)閷?shí)現(xiàn)不同的邏輯功能提供了大
量的基本單元符號(hào)和宏功能模塊,這些符號(hào)與模塊的管腳定義與功能一般都是默認(rèn)的,而在結(jié)構(gòu)圖輸入方式中,我們可以根據(jù)自行定義模塊的管腳與功能。結(jié)構(gòu)圖定義的模塊上只是一些自行定義的方框和管腳符號(hào), 沒有涉及其內(nèi)部具體邏輯, 因而這種模塊稱之為頂層模塊。頂層模塊的內(nèi)部具體邏輯可以通過硬件描述語言來編寫,也可以通過底層模塊來充實(shí)和支持頂層模塊。底層模塊是與頂層模塊相對(duì)的概念,一個(gè)源文件可以包涵多級(jí)模塊,但是最底層的模塊必然是一種由各種門和觸發(fā)器等基本邏輯器件組成的基本原理圖或者是用硬件描述語言描述的電路邏輯,可以說它是頂層原理圖的內(nèi)核所在。
電平敏感鎖存器、一位鎖存器模塊以及控制模塊部分調(diào)用系統(tǒng)庫內(nèi)的宏模塊, 因?yàn)檫@一部分硬件電路已很成熟, 而且并不是很復(fù)雜。并入串出移位寄存器采用結(jié)構(gòu)圖方式輸入,其內(nèi)部具體邏輯通過VHDL硬件描述語言來實(shí)現(xiàn),其VHDL 源文件如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY parrial IS
PORT
(
STLD : IN STD_LOGIC;
CLK : IN STD_LOGIC;
Q1 : IN STD_LOGIC;
Q2 : IN STD_LOGIC;
Q3 : IN STD_LOGIC;
Q4 : IN STD_LOGIC;
Q5 : IN STD_LOGIC;
Q6 : IN STD_LOGIC;
Q7 : IN STD_LOGIC;
Q8 : IN STD_LOGIC;
shiftout : OUT STD_LOGIC
);
END parrial;
ARCHITECTURE parrial_architecture OF parrial IS
signal latch : std_logic_vector (7 downto 0) ;
begin
process (CLK,STLD,Q1 ,Q2 ,Q3,Q4 ,Q5 ,Q6 ,Q7,Q8)
begin
if (CLK’event and CLK=‘1’) then
if (STLD =‘1’) then
latch(7) <= Q8;
latch(6) <= Q7;
latch(5) <= Q6;
latch(4) <= Q5;
latch(3) <= Q4;
latch(2) <= Q3;
latch(1) <= Q2;
latch(0) <= Q1;
else
latch(0) <= latch(1) ;
latch(1) <= latch(2) ;
latch(2) <= latch(3) ;
latch(3) <= latch(4) ;
latch(4) <= latch(5) ;
latch(5) <= latch(6) ;
latch(6) <= latch(7) ;
latch(7) <= ‘1’;
end if ;
end if ;
end process;
shiftout<=latch(0);
END parrial_architecture;
通過調(diào)試、編譯,最后得出仿真結(jié)果,接收的并行數(shù)據(jù)為:D0=‘1’,D1=‘0’,D2=‘1’,D3=‘0’,D4=‘0’,D5=‘1’,D6=‘1’,D7=‘0’,仿真圖如圖三所示。
圖三 數(shù)據(jù)轉(zhuǎn)換器仿真圖
2.3 基于CPLD的DA轉(zhuǎn)換
DAC8580是16位串行輸入、電壓輸出,高速低噪聲DA轉(zhuǎn)換器,可以實(shí)現(xiàn)2~16倍內(nèi)部插值。最高數(shù)據(jù)更新率為16MSPS。其內(nèi)部邏輯電路如圖四所示。
圖四 DAC8580內(nèi)部邏輯電路
DAC8580通過3條信號(hào)線與CPLD進(jìn)行通信,這3跟信號(hào)線分別是:FSYNC(字節(jié)時(shí)鐘信號(hào))、SLCK(位時(shí)鐘信號(hào))、SDIN(串行數(shù)據(jù)輸入)。輸入數(shù)據(jù)在SCLK的上升沿被鎖存在輸入移位寄存器中(最高有效位最先輸入),F(xiàn)SYNC的下降沿將最后一次接收到的一個(gè)16位的輸入數(shù)據(jù)(被認(rèn)證為有效的數(shù)據(jù))從移位寄存器鎖存到暫時(shí)存儲(chǔ)器。暫時(shí)存儲(chǔ)器可以通過管腳控制來選擇連接到數(shù)字濾波器或者連接到DAC鎖存器。在FSYNC的下降沿后的第二個(gè)SCLK的上升沿,數(shù)據(jù)被轉(zhuǎn)移到DAC鎖存器(數(shù)字濾波器關(guān)閉),或是轉(zhuǎn)移到數(shù)字濾波器(數(shù)字濾波器開啟)。數(shù)字濾波器的工作也需要一個(gè)持續(xù)的SCLK信號(hào)。
CPLD通過控制OSR2、OSR1、BPB、RSTB四個(gè)管腳的信號(hào)值,可以實(shí)現(xiàn)對(duì)DAC8580中的數(shù)字濾波器的設(shè)置??梢酝ㄟ^在CPLD中集成一個(gè)CASE結(jié)構(gòu)來實(shí)現(xiàn)多頻率的DA轉(zhuǎn)換,串行數(shù)據(jù)輸入頻率與經(jīng)過DAC內(nèi)部數(shù)字濾波器插值后的數(shù)據(jù)頻率關(guān)系如圖五所示。
圖五 插值后數(shù)據(jù)頻率與輸入頻率的關(guān)系圖
3 結(jié)束語
本文利用CPLD的邏輯控制技術(shù)和DAC8580高效的DA轉(zhuǎn)換能力,完成了對(duì)PC機(jī)內(nèi)產(chǎn)生的數(shù)字波形到模擬信號(hào)的轉(zhuǎn)換。最后,通過軟件仿真,得到了預(yù)期目標(biāo)。
本文的創(chuàng)新點(diǎn)在于對(duì)傳統(tǒng)的模擬信號(hào)發(fā)生器進(jìn)行了創(chuàng)造性重構(gòu), 利用PC機(jī)和數(shù)模轉(zhuǎn)換技術(shù)實(shí)現(xiàn)了模擬信號(hào)發(fā)生器的基本功能;并且由于CPLD可以以任意位寬實(shí)現(xiàn)運(yùn)算,所以該設(shè)計(jì)可以方便的進(jìn)行擴(kuò)展,實(shí)現(xiàn)更高的系統(tǒng)精度。
參考文獻(xiàn)
[1] Altera Corporation. University Program Design Laboratory Package. http://www.altera.com
[2] 李永軍,胡昌林,胡文華. 基于CPLD的某BIT系統(tǒng)研制,微計(jì)算機(jī)信息[J], 2006,3: 177-178
[3] Altera Corporation. Quartus Ⅱ Handbook. http://www.altera.com
[4] Texas Instruments Incorporated. DAC8580 Data Sheet. http://www.ti.com
[5] Uwe Meyer-Baese. 數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn). 北京:清華大學(xué)出版社,2003