姚 寧
(許昌學院 電氣機電工程學院,河南 許昌 461000)
在分立元件時期,傳統(tǒng)的電子電路的設計方法很大程度上依賴于設計者本身的經驗,設計者必須非常了解器件的工藝、特性,然后才能對器件一個一個選型、組建,先完成原理圖的設計,接著完成PCB板圖的印制,然后完成電路板的組裝調試.若組裝完成的電路調試不能完成相應功能或出錯,則必須從原理圖開始一步步重新來過,這稱為“自底而上”[1]的設計方法,效率可想而知,所以產品的更新換代較為緩慢.隨著大規(guī)模集成電路的發(fā)展,電子電路的設計進入EDA(Electronic Design Automation——電子設計自動化)時代,設計者不需要了解器件的工藝,只要會畫原理圖或會用硬件描述語言,就可以在大規(guī)??删庉嬤壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)上完成電路的設計和調試[2],這稱為“自上而下”的設計方法.當今的EDA技術更多的是指SOC(System on a Chip)[1]——芯片內電子系統(tǒng)設計自動化.
函數發(fā)生器是一種在工程教育、科學研究及生產實踐中經常用到的設備.目前使用最多的函數發(fā)生器,絕大多數都是由電子元器件組成的模擬電路構成的,其頻率可達上百兆赫茲,但是體積較大,并且最不利的是損耗大[3-5].本文以多波形智能函數發(fā)生器為設計對象,描述了利用EDA技術完成此設計的方法,應用EDA工具對函數發(fā)生器按照設計流程完成設計并結合硬件描述語言——VHDL、FPGA的軟件開發(fā)平臺——Quartus II 9.0及EDA/SOPC型實驗開發(fā)裝置上配置的編程和仿真工具,完成智能函數發(fā)生器的各種波形驗證,并完成實驗的硬件仿真,顯示仿真的結果.
本文以6種波形(正弦波、三角波、方波、階梯波、遞增斜波和遞減斜波[6])的顯示為例,采用文本和原理圖的混合輸入方式,以LPM_ROM實現波形的產生,同時加入頻率可調模塊,設計框圖如圖1所示,硬件系統(tǒng)通過輸入信號來驅動,在不同輸入信號前提下產生不同的輸出結果[7].本設計的智能函數發(fā)生器易于使用,可以通過按鈕選擇波形,也可以通過頻率的調節(jié)產生能夠滿足不同人不同場合需要的波形輸出[8].
LPM(Library of Parameterized Modules),參數可設置模塊庫,此庫中包含了豐富的模塊單元,如存儲器、DSP模塊、PLL模塊等[9].方便設計者可以根據自己的需要選擇合適LPM模塊設計相應的電子系統(tǒng).
圖1 多波形函數發(fā)生器設計框圖
圖2 正弦波部分數據
存儲器需要的初始化文件進行配置,這里采用mif格式文件.mif格式文件的生成方法有:直接編輯法、文件直接編輯法、高級語言生成法和專用mif文件生成器創(chuàng)建法[2].本文采用專用mif文件生成器——MIF_Maker2010自動生成6種波形.要求波形數據線寬8位,地址線寬8位,保存后備用,正弦波部分數據如圖2所示.
(1)波形模塊的生成
LPM_ROM模塊具有非常多的用處,本文調用并編輯此元件作為波形發(fā)生器的數據存儲器,調入mif文件,分別生成對應的正弦波、三角波、方波、階梯波、遞增斜波和遞減斜波6種波形模塊.正弦波模塊如圖3(a)所示.
(2)頻率控制模塊的生成
…
entity FCT2 is
port(CLK,RST : in std_logic;
key: in std_logic_vector(3 downto 0);
add: out std_logic_vector(7 downto 0));
end FCT2;
architecture behave of FCT2 is
signal A : std_logic_vector(7 downto 0);
signal F : INTEGER RANGE 0 to 30;
BEGIN
P0: PROCESS(CLK,RST)
VARIABLE Q : STD_LOGIC_VECTOR(7 downto 0);
BEGIN
IF RST='0' THEN Q : = (OTHERS=>'0');
ELSIF CLK’EVENT AND CLK= '1' THEN A<=A+F;
END IF;
END PROCESS P0;
P1: PROCESS(KEY)
BEGIN
CASE KEY IS
WHEN "0001" =>F<=2; WHEN"0010"=>F<=4;
WHEN "0011" =>F<=6; WHEN "0100" =>F<=8;
WHEN "0101" =>F<=10; WHEN "0110" =>F<=12;
WHEN "0111" =>F<=14; WHEN "1000" =>F<=16;
WHEN "1001" =>F<=18; WHEN "1010" =>F<=20;
WHEN "1011" =>F<=22; WHEN "1100" =>F<=24;
WHEN "1101" =>F<=26; WHEN OTHERs =>F<=1;
end case;
end process p1;
add<=a;
end behave;
(3)頻率可調的波形模塊的生成
將頻率控制模塊與ROM生成的正弦波模塊相連組成頻率可調的正弦波模塊,如圖3(c)所示.
波形選擇模塊仍然采用LPM_MUX實現,實現過程同LPM_ROM.sel是選擇控制鍵,通過sel的值選擇不同的波形輸出.sel的值分別為“0”、“1”、“2”、“3”、“4”、“5”是對應選擇的波形分別為正弦波、三角波、方波、階梯波、遞增斜波和遞減斜波.
調用以上各個模塊組合生成函數發(fā)生器,原理圖如圖4所示.clk是時鐘信號,rst是復位信號,key為頻率控制信號,sel為輸出波形控制字.
圖3 正弦波模塊的生成
圖4 多波形函數發(fā)生器的生成
當sel=0時輸出波形為正弦波,波形仿真圖如圖5所示,數據與圖1中相比,證明是正弦波.
圖5 正弦波仿真波形
以階梯波為例顯示頻率變化時的仿真結果,如圖6所示.
圖6 頻率變化時階梯波的仿真波形
波形仿真結果不能直觀反應測試結果,所以,在此調入邏輯分析儀SignalTap II進行顯示,如圖7所示.圖7中圖(a)~(f)為頻率為1 MHz時的6種波形,圖7(a)為正弦波,圖7(b)為三角波,圖7(c)為方波,圖7(d)為階梯波,圖7(e)為遞增斜波,圖7(f)為遞增斜波.圖7中圖(g)~(k)為頻率改變時的正弦波,圖7(g)為頻率為7.8 KHz時正弦波波形,圖7(h)為頻率為15.6 KHz時正弦波波形,圖7(k)為頻率為31.2 KHz時正弦波波形.
圖7 邏輯分析儀結果顯示
本文中的多波形智能函數發(fā)生器主要采用LPM,生成了頻率可變的方波、三角波、階梯波、正弦波、遞增斜波和遞減斜波6種波形,用邏輯分析觀察顯示波形結果,簡單、直觀,缺點是不是任何頻率的信號都能產生,這是后續(xù)要改進的地方.此實驗說明,采用LPM模塊實現函數發(fā)生器是可行的,此設計方法可以推廣到相似的其它電子系統(tǒng)的設計中.
參考文獻:
[1] 潘 松,黃繼業(yè).EDA技術實用教程——VHDL版[M].5版,北京: 科學出版社,2014.
[2] 譚會生,張昌凡.EDA技術及應用[M].2版,西安: 西安電子科技大學出版社,2006.
[3] 楊麗君.智能數字式低頻信號發(fā)生器[J].沈陽航空航天大學學報,1999,16(1): 42-44.
[4] 任志平,黨瑞榮.基于EDA技術的智能函數發(fā)生器的設計[J].科學技術與工程,2008,8(4): 1 076-1 078.
[5] 林金陽.基于EDA的智能函數發(fā)生器的設計[J].西安文理學院學報:自然科學版,2010,13(4): 54-56.
[6] 梁向紅.智能函數發(fā)生器的VHDL設計與仿真[J].江蘇工業(yè)學院學報,2008,20(3): 66-69.
[7] 侯伯亨,顧 新.VHDL硬件描述語言與數字邏輯電路設計[M].西安: 西安電子科技大學出版社, 2004.
[8] 郝小江,羅 彪.基于FPGA的函數發(fā)生器[J].電測與儀表,2008,45:49-51.
[9] 張愛文.EDA與FPGA應用設計[M].2版,北京: 電子工業(yè)出版社,2016.
[10] 楊 蕊.基于DDS技術的實用信號源設計[D].武漢:華中師范大學,2012.
[11] 王 丹,李 平,文玉梅.采用DDS頻率合成的虛擬信號發(fā)生器研究[J].傳感技術學報,2007,9(3): 586-591.