【正文】
NTITY mult31 ISPORT( clk : IN STD_LOGIC。 Dout : OUT SIGNED (15 DOWNTO 0))。ARCHITECTURE mul31 OF mult31 ISSIGNAL s1 : SIGNED (15 DOWNTO 0)。SIGNAL s3 : SIGNED (15 DOWNTO 0)。00000。 IF (Din(10)=39。) THEN s3=(39。amp。s2(10 DOWNTO 0))。139。s1(14 downto 0))(11111amp。 END IF。 A2: PROCESS(clk,s3) BEGIN IF clk39。139。 END IF。END mul31。圖527 乘31電路元件圖⑵乘88電路設(shè)計:由分析可寫出如下程序:LIBRARY ieee。USE 。 Din : IN SIGNED (10 DOWNTO 0)。END mult88。SIGNAL s2 : SIGNED (14 DOWNTO 0)。SIGNAL s4 : SIGNED (17 DOWNTO 0)。000000。0000。000。039。039。s1(16 downto 0))+(000amp。s3(13 DOWNTO 0))。139。s1(16 downto 0))+(111amp。s3(13 DOWNTO 0))。 END PROCESS。EVENT AND clk=39。 THEN Dout=s4。 END PROCESS。程序編譯后就可進行仿真,仿真結(jié)果如圖528所示:圖 528 乘88電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計正確,再將其生成為一個元件以便后來調(diào)用,其生成圖如圖529所示。USE 。ENTITY mult106 ISPORT( clk : IN STD_LOGIC。 Dout : OUT SIGNED (17 DOWNTO 0))。ARCHITECTURE mult106 OF mult106 ISSIGNAL s1 : SIGNED (16 DOWNTO 0)。SIGNAL s3 : SIGNED (13 DOWNTO 0)。SIGNAL s5 : SIGNED (17 DOWNTO 0)。000000。00000。000。39。 IF (Din(10)=39。) THEN s5=(39。amp。s2(15 DOWNTO 0))+(0000amp。s4(11 DOWNTO 0))。139。s1(16 downto 0))+(11amp。s3(13 DOWNTO 0))+(111111amp。 END IF。 A2: PROCESS(clk,s5) BEGIN IF clk39。139。 END IF。END mult106。圖 531 乘106電路元件圖⑷ 乘54電路設(shè)計:由分析可寫出如下程序:LIBRARY ieee。USE 。 Din : IN SIGNED (10 DOWNTO 0)。END mult54。SIGNAL s2 : SIGNED (13 DOWNTO 0)。SIGNAL s4 : SIGNED (16 DOWNTO 0)。000000。000。39。 IF (Din(10)=39。) THEN s4=(39。amp。s2(13 DOWNTO 0))(0000amp。 ELSE s4=(39。amp。s2(13 DOWNTO 0))(1111amp。 END IF。 A2: PROCESS(clk,s4) BEGIN IF clk39。139。 END IF。END mult54。圖 533 乘54電路元件圖⑸ 乘70電路設(shè)計:由分析可寫出如下程序:LIBRARY ieee。USE 。 Din : IN SIGNED (10 DOWNTO 0)。END mult70。SIGNAL s2 : SIGNED (12 DOWNTO 0)。SIGNAL s4 : SIGNED (17 DOWNTO 0)。000000。00。39。 IF (Din(10)=39。) THEN s4=(39。amp。s2(12 DOWNTO 0))+(000000amp。 ELSE s4=(39。amp。s2(12 DOWNTO 0))+(111111amp。 END IF。 A2: PROCESS(clk,s4) BEGIN IF clk39。139。 END IF。END mult70。圖535 乘70電路元件圖⑹ 乘239電路設(shè)計:由分析可寫出如下程序: LIBRARY ieee。USE 。 Din : IN SIGNED (10 DOWNTO 0)。END mult239。SIGNAL s2 : SIGNED (14 DOWNTO 0)。SIGNAL s4 : SIGNED (18 DOWNTO 0)。00000000。0000。 IF (Din(10)=39。) THEN s4=(39。amp。s2(14 DOWNTO 0))(00000000amp。 ELSE s4=(39。amp。s2(14 DOWNTO 0))(11111111amp。 END IF。 A2: PROCESS(clk,s4) BEGIN IF clk39。139。 END IF。END mult239。圖537 乘239電路元件圖⑺乘401電路設(shè)計:由分析可寫出如下程序:LIBRARY ieee。USE 。 Din : IN SIGNED (10 DOWNTO 0)。END mult401。SIGNAL s2 : SIGNED (17 DOWNTO 0)。SIGNAL s4 : SIGNED (10 DOWNTO 0)。BEGIN A1:PROCESS(Din,s1,s2,s3,s4) BEGIN s1=Dinamp。 s2=Dinamp。 s3=Dinamp。 s4=Din。039。039。s1(18 downto 0))(00amp。s3(14 DOWNTO 0))+(000000000amp。 ELSE s5=(39。amp。s2(17 DOWNTO 0))+(11111amp。s4(10 DOWNTO 0))。 END PROCESS。EVENT AND clk=39。 THEN Dout=s5。 END PROCESS。程序編譯后就可進行仿真,仿真結(jié)果如圖538所示:圖 538 乘401電路結(jié)果仿真圖由上圖可知,與預(yù)期相符,即設(shè)計正確,再將其生成為一個元件以便后來調(diào)用,其生成圖如圖539所示。USE 。ENTITY mult499 ISPORT( clk : IN STD_LOGIC。 Dout : OUT SIGNED (19 DOWNTO 0))。ARCHITECTURE mult499 OF mult499 ISSIGNAL s1 : SIGNED (19 DOWNTO 0)。SIGNAL s3 : SIGNED (12 DOWNTO 0)。SIGNAL s5 : SIGNED (19 DOWNTO 0)。000000000。000。00。 IF (Din(10)=39。) THEN s5=(39。amp。s2(13 DOWNTO 0))(0000000amp。s4(10 DOWNTO 0))。139。s1(18 downto 0))(111111amp。s3(12 DOWNTO 0))(111111111amp。 END IF。 A2: PROCESS(clk,s5) BEGIN IF clk39。139。 END IF。END mult499。圖541 乘499電路元件圖 頂層原理圖的編輯及仿真單元器件的編輯好后,將元器件按設(shè)計思路中的圖31連接搭建成整體的濾波器電路。其總電路原理圖編輯結(jié)果如圖542所示:圖542 總原理圖電路將原理圖編輯好后,進行編譯仿真,設(shè),取進行仿真,結(jié)果如圖543所示:圖 543 總圖仿真結(jié)果利用matlab的conv函數(shù)可以驗證FIR濾波器卷積的結(jié)果,其結(jié)果如圖544所示。由于在本設(shè)計中在最后一位輸出前進行截短操作,故在截短后有一定的誤差。六、心得體會 為期一周的課設(shè)即將結(jié)束了,回顧這幾周的歷程,我收獲了很多,不僅鞏固了以前老師所講的東西,也學到了許多以前上課沒注意到的地方。 首先就是對于有符號數(shù)的加減乘方面的運算,以前經(jīng)常做的都是些無符號數(shù)的運算,相比較而言,有符號數(shù)還是有點難度的,由于其有符號位,所以在運算時必須考慮進位相關(guān)的東西,開始幾天,查閱了許多這方面的資料,所以對其原理有了清醒的認識,做起來也容易些了。最后就是頂層原理圖的編輯,在這此設(shè)計中根據(jù)老師的例題思路采用了層次化、模塊化的設(shè)計思想,將整個電路設(shè)計劃分為多個功能模塊,利用VHDL語言和原理圖輸入兩種設(shè)計技術(shù)進行了整個功能模塊的設(shè)計,最后完成FIR數(shù)字濾波器的系統(tǒng)設(shè)計,按照這個思路,雖然各個模塊已經(jīng)編輯好,并且都已經(jīng)生成了元件,但在仿真是還是有許多錯誤,由于本次設(shè)計學要的模塊很多,所以圖形很龐大,一不小心就會出現(xiàn)這樣或那樣的錯誤,開始時,也打算用總線方式來連線,但平時做實驗室,用總線時經(jīng)常出錯,所以保險起見,這次用了一般的連線,雖然有錯誤,但經(jīng)過一個個排查,一個個消除了錯誤,也使我認識到了哪些地方容易出錯,以后做時就可以避免這樣的錯誤出現(xiàn)。很感謝能有這次鍛煉的機會,相信在以后的人生道路中我會做的更好!參 考 文 獻[1] 馬建國,孟憲元. 電子設(shè)計自動化技術(shù)基礎(chǔ)[M].北京:清華大學出版社, 2004[2] 孟憲元,錢偉康. FPGA嵌入式系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社, 2007 [3] Michael . Verilog HDL高級數(shù)字設(shè)計[M].北京:電子工業(yè)出版社, 2005[4] 程東旭,黃如等. 基于FFGA的嵌入式開發(fā)和應(yīng)用[M].北京:電子工業(yè)出版社,2006[5] Steve Kilts. Advanced FPGA Design[M].New York:WileyIEEE Press, 2007[6] ,. 超大規(guī)模集成電路設(shè)計基礎(chǔ)—系統(tǒng)與電路[M].北京:科學出版社,1993[7] JohnF Wakerly著,::機械工業(yè)出版社,[8] 譚會生,:西安電子科技大學出版社,[9] 陳后金,薛建,:高等教育出版社,[10] Altera Corpoation. Stratix Device[EB/OL],2004[11] 潘松,黃繼業(yè),王國棟. 現(xiàn)代DSP技術(shù)[M].西安:西安電子科技大學出版社,2003附 錄總圖仿真結(jié)果總原理圖