【正文】
8,126,125,123,122,120,119,117,115,114,112,111,109,108,106,105,103,101,100,98,97,95,94,92,91,89,88,86,85,83,82,80,79,78,76,75,73,72,70,69,68,66,65,64,62,61,60,58,57,56,54,53,52,50,49,48,47,46,44,43,42,41,40,39,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,22,21,20,19,18,17,17,16,15,14,14,13,12,12,11,10,10,9,9,8,7,7,6,6,6,5,5,4,4,3,3,3,2,2,2,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5,5,6,6,6,7,7,8,9,9,10,10,11,12,12,13,14,14,15,16,17,17,18,19,20,21,22,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,46,47,48,49,50,52,53,54,56,57,58,60,61,62,64,65,66,68,69,70,72,73,75,76,78,79,80,82,83,85,86,88,89,91,92,94,95,97,98,100,101,103,105,106,108,109,111,112,114,115,117,119,120,122,123,125,126)。也可用高級語言編程實現。圖48波形數據工作空間中的數據如下圖所示:程序進行波形仿真結果如下所示:該模塊主要功能是生成方波波形。該模塊的結構框圖如圖49所示。方波模塊功能設計的VHDL程序如下:LIBRARY IEEE。USE 。 wave: out integer range 0 to 255 )。ARCHITECTURE one OF square IS begin wave=255 when addr512/2 else 0。在軟件工具Quartus II的編譯和波形仿真后得到的波形如圖410所示。該模塊的結構框圖如圖411所示。方波模塊功能設計的VHDL程序如下:LIBRARY IEEE。USE 。 wave: out integer range 0 to 255 )。ARCHITECTURE one OF juchi IS begin wave=addr when addr512/2 else addr512/2。在軟件工具Quartus II的編譯和波形仿真后得到的波形如圖412所示。該模塊的結構框圖如圖411所示。LIBRARY IEEE。USE 。 wave: out integer range 0 to 255 )。ARCHITECTURE one OF sanjiao ISbegin wave=addr when addr=512/2 else 512addr。在軟件工具Quartus II的編譯和波形仿真后得到的波形如圖414所示。該模塊的結構框圖如圖413所示。Data:輸入的數據Data_out:處理后輸出的數據仿真波形圖如下所示:如果輸入的MAX_MIN是高電平,則data_out=data*set,如果是低電平,則data_out=data/set。編譯若有錯誤,可將鼠標移到顯示錯誤信息行,通過F1鍵顯示幫助。工程名和頂層實體名必須完全相同,且不能用中文名稱,否則會編譯出錯。本系統(tǒng)仿真時,時鐘頻率設為50MHz。頻率控制字若較小,則產生波形的周期將會很大,可能無法形象的觀察到仿真波形。頻率控制字及調幅模塊的倍乘數值改變,應適當增加時間間隔,以免不同頻率、幅度的波形交界處產生毛刺,導致波形不平滑。經過反復試驗,分別得到如圖51正弦波,如圖52三角波,如圖53鋸齒波。圖51正弦波不同時間段,周期明顯不同,通過改變頻率控制字即可改變波形周期。圖52三角波圖53鋸齒波 方波結論本設計采用自上而下的設計方法,詳細闡述了函數信號發(fā)生器的系統(tǒng)設計,系統(tǒng)可實現任意波形和固定波形的輸出。本系統(tǒng)采用模塊化的思想進行設計,主要實現三個功能模塊,即:DDS模塊、波形產生模塊、調幅模塊。本設計采用DDS技術,克服了傳統(tǒng)方法波形少、不易調頻的局限,完成了方便調頻、調幅的函數信號發(fā)生器的設計。從本課題寫開題報告和查找資料以及仿真過程開始,直至今天完成課題的研究和論文的撰寫,賈老師在學習和生活上都給予了我無私的幫助。在四個月課題研究的日子里,師生間結下了深厚的情誼。同時,感謝我的家人對我學業(yè)的支持,并對所有關心、支持和幫助我的老師、親人和朋友們表示深深的謝意!作者認真進行了課題的研究并完成了本論文,由于水平有限,論文中可能仍有錯誤和不足之處,敬請大家批評指正!最后,衷心感謝各位評審老師!感謝您們在百忙之中參與我的論文評閱工作,謝謝!參考文獻[1] Douglas (第四版)[M].北京:電子工業(yè)出版社.[2] ——VHDL程序實例集[M].北京:北京郵電大學出版社.[3] [M].哈爾濱:哈爾濱工業(yè)大學出版社.[4] 盧毅,[M].北京:科學出版社,2001:256261.[5] 褚振勇,[M].西安:西安電子科技大學出版社,2003:122.[6] 潘松,[M].北京:科學出版社,2003:114.[7] [D].四川:電子科技大學,2007[8] [D].黑龍江:哈爾濱理工大學,2006[9] [D].江蘇:江蘇大學,2009[10] [J].科學技術與工程,2008(8)[11] Milan Fractional Frequency Synthesizer Based on J Elec Engin,2006[12] Altera Corp,Cyclone II Device Handbook[EB/OL].附錄附錄1系統(tǒng)整體設計圖附錄2各模塊源程序頻率寄存器模塊源程序:library ieee。 use 。 rstn,LOAD:in std_logic。 DATA:OUT std_logic_vector(31 downto 0) )。ARCHITECTURE one of reg_fcw isBEGIN PROCESS(clk,rstn)begin if rstn=39。 then DATA=X00000000。event and clk=39。 then if LOAD=39。 THEN DATA=FCW。END IF。end one。use 。entity addr is port ( fcw:in std_logic_vector(31 downto 0)。 addr_out:out std_logic_vector(31 downto 0) )。ARCHITECTURE one of addr isbegin addr_out=data+fcw。相位寄存器源程序:library ieee。 use 。 rstn:in std_logic。 add:out std_logic_vector(8 downto 0)。end dff32 。begin process(clk,rstn)begin if rstn=39。 then t=x00000000。event and clk=39。 then t=data。end process。add=t(31 downto 23)。正弦ROM數據填充:width=8。 index=linspace(0,2*pi,depth)。 sin_d=fix(sin_a*(2^width1))。fid=fopen(39。,39。)。adderss_radix=dec。)。data_radix=dec。)。content begin\n39。fprintf(fid,39。\n39。sin_d])。end:\n39。fclose(fid)。USE 。ENTITY rom_sin ISPORT( addr:IN integer range 0 to 511 。END rom_sin。 constant FONT: rom_type := ( 64,65,66,66,67,68,69,69,70,71,72,73,73,74,75,76,76,77,78,79,80,80,81,82,83,83,84,85,86,86,87,88,88,89,90,91,91,92,93,93,94,95,96,96,97,98,98,99,100,100,101,101,102,103,103,104,105,105,106,106,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,118,119,119,120,120,120,121,121,122,122,122,123,123,123,123,124,124,124,125,125,125,125,125,126,126,126,126,126,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,127,127,127,127,127,127,126,126,126,126,126,125,125,125,125,125,124,124,124,123,123,123,123,122,122,122,121,121,120,120,120,119,119,118,118,118,117,117,116,116,115,115,114,114,113,113,112,112,111,111,110,110,109,109,108,108,107,106,106,105,105,104,103,103,102,101,101,100,100,99,98,98,97,96,96,95,94,93,93,92,91,91,90,89,88,88,87,86,86,85,84,83,83,82,81,80,80,79,78,77,76,76,75,74,73,73,72,71,70,69,69,68,67,66,66,65,64,63,62,62,61,60,59,59,58,57,56,55,55,54,53,52,52,51,50,49,48,48,47,46,45,45,44,43,42,42,41,40,40,39,38,37,37,36,35,35,34,33,32,32,31,30,30,29,28,28,27,27,26,25,25,24,23,23,22,22,21,20,20,19,19,18,18,17,17,16,16,15,15,14,14,13,13,12,12,11,11,10,10,10,9,9,8,8,8,7,7,6,6,6,5,5,5,5,4,4,4,3,3,3,3,3,2,2,2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,5,5,5,5,6,6,6,7,7,8,8,8,9,9,10,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,22,22,23,23,24,25,25,26,27,27,28,28,29,30,30,31,32,32,33,34,35,35,36,37,37,38,39,40,40,41,42,42,43,44,45,45,46,47,48,48,49,50,51,52,52,53,54,55,55,56,57,58,59,59,60,61,62,62,63)。 end one。USE 。ENTITY square ISPORT( addr:IN integer range 0 to 511 。END square。 end one。USE 。ENTITY juchi ISPORT( addr:IN integer range 0 to 511 。END juchi。 end one。use 。entity tiaofu is port ( max_min:IN STD_LOGIC。 data:in integer range 0 to