在實際研發各種控制器、顯示器等涉及到數據采集的電子儀器的時候,對這些產品進行性能測試是必不可少的。購買專用的信號發生器不但價格昂貴,而且可擴展性能較差;把研發的產品放到實際工作環境,不但不便于調試,而且很多工業現場也不允許??紤]到PC機的普及程度,可以利用現有的資源來設計一個模擬信號發生器,同時運用CPLD進行電路控制,可以方便的實現電路擴展。
2 模擬信號發生器設計與實現
2.1 設計思想
在PC機上產生波形信號通過USB2.0接口傳入USB接收模塊。USB接收模塊將接收到的波形信號傳輸給CPLD。由于DAC8580是16位串行輸入的DA轉換器,CPLD需要對波形信號的數據格式進行并行到串行的轉換。DAC8580對從CPLD傳輸過來的串行數據進行DA轉換,輸出所需的模擬信號。
模擬信號發生器整體框圖如圖一所示。
圖一 整體框圖
DAC8580是串行輸入的DA轉換器,而從USB模塊中傳出的是并行數據,所以需要在CPLD中進行數據的并串行轉換。數據轉換器的工作原理圖如圖二所示,其中TXD[7:0]是并行數據輸入信號,TCLK是數據轉換器的時鐘信號,RESET是數據轉換器控制模塊內部復位信號,MWDSL是電平敏感鎖存器使能信號,TRST是一位鎖存器模塊復位信號,TXDATA是串行數據輸出信號。當數據轉換器開始工作的時候,電平敏感鎖存器使能信號(MWDSL)有效,并行數據被送入鎖存器,之后,控制模塊產生并入串出移位寄存器裝入信號(STLD),以在時鐘信號(TCLK)的作用下,將并行數據裝入并入串出移位寄存器,然后,控制模塊再產生并入串出移位寄存器移位信號(STLD),并在時鐘信號(TCLK)的作用下,將并行數據移出。
圖二 數據并串行轉換器工作原理圖
量的基本單元符號和宏功能模塊,這些符號與模塊的管腳定義與功能一般都是默認的,而在結構圖輸入方式中,我們可以根據自行定義模塊的管腳與功能。結構圖定義的模塊上只是一些自行定義的方框和管腳符號, 沒有涉及其內部具體邏輯, 因而這種模塊稱之為頂層模塊。頂層模塊的內部具體邏輯可以通過硬件描述語言來編寫,也可以通過底層模塊來充實和支持頂層模塊。底層模塊是與頂層模塊相對的概念,一個源文件可以包涵多級模塊,但是層的模塊必然是一種由各種門和觸發器等基本邏輯器件組成的基本原理圖或者是用硬件描述語言描述的電路邏輯,可以說它是頂層原理圖的內核所在。
電平敏感鎖存器、一位鎖存器模塊以及控制模塊部分調用系統庫內的宏模塊, 因為這一部分硬件電路已很成熟, 而且并不是很復雜。并入串出移位寄存器采用結構圖方式輸入,其內部具體邏輯通過VHDL硬件描述語言來實現,其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;
通過調試、編譯,得出仿真結果,接收的并行數據為:D0=‘1’,D1=‘0’,D2=‘1’,D3=‘0’,D4=‘0’,D5=‘1’,D6=‘1’,D7=‘0’,仿真圖如圖三所示。
圖三 數據轉換器仿真圖
DAC8580是16位串行輸入、電壓輸出,高速低噪聲DA轉換器,可以實現2~16倍內部插值。數據更新率為16MSPS。其內部邏輯電路如圖四所示。
圖四 DAC8580內部邏輯電路
CPLD通過控制OSR2、OSR1、BPB、RSTB四個管腳的信號值,可以實現對DAC8580中的數字濾波器的設置。可以通過在CPLD中集成一個CASE結構來實現多頻率的DA轉換,串行數據輸入頻率與經過DAC內部數字濾波器插值后的數據頻率關系如圖五所示。
圖五 插值后數據頻率與輸入頻率的關系圖
本文利用CPLD的邏輯控制技術和DAC8580高效的DA轉換能力,完成了對PC機內產生的數字波形到模擬信號的轉換。,通過軟件仿真,得到了預期目標。
本文的創新點在于對傳統的模擬信號發生器進行了創造性重構, 利用PC機和數模轉換技術實現了模擬信號發生器的基本功能;并且由于CPLD可以以任意位寬實現運算,所以該設計可以方便的進行擴展,實現更高的系統精度。
參考文獻
[1] Altera Corporation. University Program Design Laboratory Package. http://www.altera.com
[2] 李永軍,胡昌林,胡文華. 基于CPLD的某BIT系統研制,微計算機信息[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. 數字信號處理的FPGA實現. 北京:清華大學出版社,2003