1 引言 在實際研發各種控制器、顯示器等涉及到數據采集的電子儀器的時候,對這些產品進行性能測試是必不可少的。購買專用的信號發生器不但價格昂貴,而且可擴展性能較差;把研發的產品放到實際工作環境,不但不便于調試,而且很多工業現場也不允許。考慮到PC機的普及程度,可以利用現有的資源來設計一個模擬信號發生器,同時運用CPLD進行電路控制,可以方便的實現電路擴展。 2 模擬信號發生器設計與實現 2.1 設計思想 在PC機上產生波形信號通過USB2.0接口傳入USB接收模塊。USB接收模塊將接收到的波形信號傳輸給CPLD。由于DAC8580是16位串行輸入的DA轉換器,CPLD需要對波形信號的數據格式進行并行到串行的轉換。DAC8580對從CPLD傳輸過來的串行數據進行DA轉換,輸出所需的模擬信號。 模擬信號發生器整體框圖如圖一所示。 圖一 整體框圖 2.2 基于CPLD的數據并串行轉換 DAC8580是串行輸入的DA轉換器,而從USB模塊中傳出的是并行數據,所以需要在CPLD中進行數據的并串行轉換。數據轉換器的工作原理圖如圖二所示,其中TXD[7:0]是并行數據輸入信號,TCLK是數據轉換器的時鐘信號,RESET是數據轉換器控制模塊內部復位信號,MWDSL是電平敏感鎖存器使能信號,TRST是一位鎖存器模塊復位信號,TXDATA是串行數據輸出信號。當數據轉換器開始工作的時候,電平敏感鎖存器使能信號(MWDSL)有效,并行數據被送入鎖存器,之后,控制模塊產生并入串出移位寄存器裝入信號(STLD),以在時鐘信號(TCLK)的作用下,將并行數據裝入并入串出移位寄存器,然后,控制模塊再產生并入串出移位寄存器移位信號(STLD),并在時鐘信號(TCLK)的作用下,將并行數據移出。 圖二 數據并串行轉換器工作原理圖 本設計中采用Altera的CPLD(FLEX EPF10K20RC240)來實現數據轉換器的硬件電路功能,并用Quartus Ⅱ軟件進行源文件設計。在電路頂層,我們采用原理圖和結構圖的形式進行數據轉換器的整體框架設計。Quartus Ⅱ為實現不同的邏輯功能提供了大 量的基本單元符號和宏功能模塊,這些符號與模塊的管腳定義與功能一般都是默認的,而在結構圖輸入方式中,我們可以根據自行定義模塊的管腳與功能。結構圖定義的模塊上只是一些自行定義的方框和管腳符號, 沒有涉及其內部具體邏輯, 因而這種模塊稱之為頂層模塊。頂層模塊的內部具體邏輯可以通過硬件描述語言來編寫,也可以通過底層模塊來充實和支持頂層模塊。底層模塊是與頂層模塊相對的概念,一個源文件可以包涵多級模塊,但是最底層的模塊必然是一種由各種門和觸發器等基本邏輯器件組成的基本原理圖或者是用硬件描述語言描述的電路邏輯,可以說它是頂層原理圖的內核所在。 電平敏感鎖存器、一位鎖存器模塊以及控制模塊部分調用系統庫內的宏模塊, 因為這一部分硬件電路已很成熟, 而且并不是很復雜。并入串出移位寄存器采用結構圖方式輸入,其內部具體邏輯通過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’,仿真圖如圖三所示。 圖三 數據轉換器仿真圖 2.3 基于CPLD的DA轉換 DAC8580是16位串行輸入、電壓輸出,高速低噪聲DA轉換器,可以實現2~16倍內部插值。最高數據更新率為16MSPS。其內部邏輯電路如圖四所示。 圖四 DAC8580內部邏輯電路 DAC8580通過3條信號線與CPLD進行通信,這3跟信號線分別是:FSYNC(字節時鐘信號)、SLCK(位時鐘信號)、SDIN(串行數據輸入)。輸入數據在SCLK的上升沿被鎖存在輸入移位寄存器中(最高有效位最先輸入),FSYNC的下降沿將最后一次接收到的一個16位的輸入數據(被認證為有效的數據)從移位寄存器鎖存到暫時存儲器。暫時存儲器可以通過管腳控制來選擇連接到數字濾波器或者連接到DAC鎖存器。在FSYNC的下降沿后的第二個SCLK的上升沿,數據被轉移到DAC鎖存器(數字濾波器關閉),或是轉移到數字濾波器(數字濾波器開啟)。數字濾波器的工作也需要一個持續的SCLK信號。 CPLD通過控制OSR2、OSR1、BPB、RSTB四個管腳的信號值,可以實現對DAC8580中的數字濾波器的設置。可以通過在CPLD中集成一個CASE結構來實現多頻率的DA轉換,串行數據輸入頻率與經過DAC內部數字濾波器插值后的數據頻率關系如圖五所示。 圖五 插值后數據頻率與輸入頻率的關系圖 3 結束語 本文利用CPLD的邏輯控制技術和DAC8580高效的DA轉換能力,完成了對PC機內產生的數字波形到模擬信號的轉換。最后,通過軟件仿真,得到了預期目標。 本文的創新點在于對傳統的模擬信號發生器進行了創造性重構, 利用PC機和數模轉換技術實現了模擬信號發生器的基本功能;并且由于CPLD可以以任意位寬實現運算,所以該設計可以方便的進行擴展,實現更高的系統精度。 |