

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 基于FPGA的信號發(fā)生器</p><p><b> 摘 要</b></p><p> 本次設(shè)計課題為應(yīng)用VHDL語言及MAX+PLUS II軟件提供的原理圖輸入設(shè)計功能,結(jié)合電子線路的設(shè)計加以完成一個可應(yīng)用于數(shù)字系統(tǒng)開發(fā)或?qū)嶒灂r做輸入脈沖信號或基準脈沖信號用的信號發(fā)生器,它具結(jié)構(gòu)緊湊,性能穩(wěn)定,設(shè)計結(jié)構(gòu)靈活,方便進行多功能組合的特點,經(jīng)濟實
2、用,成本低廉。具有產(chǎn)生三種基本波形脈沖信號(正弦波、矩形波和三角波),以及三次(及三次以下)諧波與基波的線性組合脈沖波形輸出,且單脈沖輸出脈寬及連續(xù)脈沖輸出頻率可調(diào),范圍從100HZ到1kHZ,步進為100HZ;幅度可調(diào),從0到5伏,步進為0.1V。</p><p> 關(guān)鍵詞:信號發(fā)生器, FPGA,EDA,VHDL語言。</p><p><b> Abstract</
3、b></p><p> The design project for the application VHDL language and MAX + PLUS II software provides the principle diagram input function design, combined with the design of the electronic circuit to comp
4、lete a can be applied to digital system development or experiment do input pulse signal or reference pulse signal with signal generator, it has compact structure, stable performance, design structure agile, facilitate m
5、ulti-function combination of characteristics, economic and practical, the cost is low. A</p><p> Key words:Signal generator, FPGA, EDA, VHDL language.1 前言</p><p> 隨著我國的經(jīng)濟日益增長,社會對電子產(chǎn)品的需求量也就越來越大
6、,目前,我國的電子產(chǎn)品市場正在迅速的壯大,市場前景廣闊。FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)在現(xiàn)代數(shù)字電路設(shè)計中發(fā)揮著越來越重要的作用。FPGA/CPLD(Complex Programmable Logic Device)所具有的靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件的功能可以像軟件一樣通過編程來修改,這樣就極大地提高了電子系統(tǒng)設(shè)計的靈活性和通用性,縮短了產(chǎn)品的上市時間并降低
7、可電子系統(tǒng)的開發(fā)成本,且可以毫不夸張地講,F(xiàn)PGA/CPLD能完成任何數(shù)字器件的功能,從簡單的74電路到高性能的CPU。它的影響毫不亞于20世紀70年代單片機的發(fā)明和使用。</p><p> 現(xiàn)在隨著電子技術(shù)的發(fā)展,產(chǎn)品的技術(shù)含量越來越高,使得芯片的復(fù)雜程度越來越高,人們對數(shù)萬門乃至數(shù)百萬門設(shè)計的需求也越來越多,特別是專用集成電路(ASIC)設(shè)計技術(shù)的日趨進步和完善,推動了數(shù)字系統(tǒng)設(shè)計的迅速發(fā)展。僅靠原理圖輸入
8、方式已不能滿足要求,采用硬件描述語言VHDL的設(shè)計方式應(yīng)運而生,解決了傳統(tǒng)用電路原理圖設(shè)計大系統(tǒng)工程時的諸多不便,成為電子電路設(shè)計人員的最得力助手。設(shè)計工作從行為、功能級開始,并向著設(shè)計的高層次發(fā)展。這樣就出現(xiàn)了第三代EDA系統(tǒng),其特點是高層次設(shè)計的自動化。 </p><p> 第三代EDA系統(tǒng)中除了引入硬件描述語言,還引入了行為綜合工具和邏輯綜合工具,采用較高的抽象層次進行設(shè)計,并按層次式方法進行管理,可大大
9、提高處理復(fù)雜設(shè)計的能力,縮短設(shè)計周期,綜合優(yōu)化工具的采用使芯片的品質(zhì)如面積、速度和功耗等獲得了優(yōu)化,因而第三代EDA系統(tǒng)迅速得到了推廣應(yīng)用。</p><p> 目前,最通用的硬件描述語言有VHDL和VerilogHDL兩種,現(xiàn)在大多設(shè)計者都使用93年版標準的VHDL,并且通過了IEEE認定,成為世界范圍內(nèi)通用的數(shù)字系統(tǒng)設(shè)計標準。VHDL是一種新興的程序設(shè)計語言,使用VHDL進行設(shè)計其性能總是比常規(guī)使用CPU或者
10、MCU的程序設(shè)計語言在性能上要高好幾個數(shù)量級。這就是說,在傳統(tǒng)上使用軟件語言的地方,VHDL語言作為一種新的實現(xiàn)方式會應(yīng)用得越來越廣泛。本課題設(shè)計是采用美國Altera公司的FLEX10K10器件,使用的是Altera公司的EDA軟件平臺Maxplus –II可編程邏輯器件開發(fā)軟件?;贓DA工具的FPGA/CPLD的開發(fā)流程CPLD/FPGA器件的設(shè)計一般可分為設(shè)計輸入、設(shè)計實現(xiàn)和編程三個設(shè)計步驟:</p><p&
11、gt; 1.設(shè)計輸入方式主要由文本輸入和圖形輸入兩種,可根據(jù)需要選擇,也可混合輸入。EDA工具會自動檢查語法;</p><p> 2.設(shè)計實現(xiàn)階段EDA工具對設(shè)計文件進行編譯,進行邏輯綜合、優(yōu)化,并針對器件進行映射、布局、布線,產(chǎn)生相應(yīng)的適配文件;</p><p> 3.編程階段EDA軟件將適配文件配置到相應(yīng)的CPLD/FPGA器件中,使其能夠?qū)崿F(xiàn)預(yù)期的功能。</p>
12、<p> 信號發(fā)生器是數(shù)字設(shè)備運行工作中必不可少的一部分,沒有良好的脈沖信號源,最終就會導(dǎo)致系統(tǒng)不能夠正常工作,更不必談什么實現(xiàn)其它功能了。不論是處于開發(fā)還是故障檢修階段,輸出標準且性能優(yōu)秀的信號發(fā)生器總是能夠帶來工作效率的大幅提升,使新產(chǎn)品有一個標準的信號源、損壞的系統(tǒng)得到正確校驗,不會被一些故障所蒙蔽。在傳統(tǒng)的信號發(fā)生器中,大都使用分立元件,而且體積龐大攜帶不便,且大部分只能輸出一種脈沖信號波形。在設(shè)計領(lǐng)域,不管采用什么
13、技術(shù)生產(chǎn),生產(chǎn)的產(chǎn)品用在哪里,其產(chǎn)品設(shè)計的宗旨都是離不開以下幾點:實用性高、成本低、可升級、功能完善可擴展等!使用專用的數(shù)字電路設(shè)計的信號發(fā)生器,設(shè)備成本高、使用復(fù)雜。基于以上考慮,在中小型數(shù)字電路的設(shè)計和測試中,迫切需要設(shè)計一種小型易用成本低廉的信號發(fā)生器。此課題的設(shè)計以小型經(jīng)濟,集成度高,性能穩(wěn)定,使用方便為指導(dǎo),在功能上力求完善實用,同時兼顧商業(yè)價值與應(yīng)用價值的體現(xiàn)。</p><p><b>
14、2 FPGA簡介</b></p><p> FPGA(Field-Programmable Gate Array)即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。</p><p> 與傳統(tǒng)們陣列和掩模可編程
15、門陣列(MPGA)相比,F(xiàn)PGA具有很多的優(yōu)點,傳統(tǒng)門陣列可以用來設(shè)計任何電路,但是只能在工廠中一次性編程,而且還需要針對該電路的特定的掩模。FPGA是標準通用器件。使用其代替MPGA,可以將設(shè)計時間由幾個月縮短至幾小時,并且使設(shè)計更加簡單,從而減少了錯誤修改和設(shè)計指標變更的花費。</p><p> FPGA器件在結(jié)構(gòu)上,由邏輯功能塊排列為陣列,它的結(jié)構(gòu)可以分為三個部分:可編程快CLB(Configurable
16、 Logic Blocks)、可編程I/O模塊IOB(Input Block)和可編程內(nèi)部連線PI(Programmable Interconnect)。CLB在器件中排列為陣列,周圍有環(huán)形內(nèi)部連線,IOB分布在四周的管腳上。</p><p> FPGA也存在缺點,F(xiàn)PGA中,每個可編程的點都有電阻和電容。電阻和電容的使用減慢了信號的傳輸速度,所以FPGA的速度比傳統(tǒng)門陣列要低,而且,F(xiàn)PGA中互聯(lián)延遲是不可預(yù)
17、測的。</p><p> FPGA的基本特點主要有: 一、采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。 二、FPGA可做其它全定制或半定制ASIC電路的中試樣片。 三、FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 四、FPGA是ASI
18、C電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。 五、FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 使用FPGA時,可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能
19、夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行</p><p> 3 VHDL & Ver
20、ilog簡介</p><p> VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成電路硬件描述語言)是一種用來描述數(shù)字系統(tǒng)行為和結(jié)構(gòu)的硬件描述語言,被廣泛的運用于描述和仿真各種數(shù)字系統(tǒng),小到幾個門,大到許多復(fù)雜集成電路相連的系統(tǒng)。</p><p> VHDL誕生于1982年,是由美國國防
21、部開發(fā)的一種快速設(shè)計電路的工具,目前已經(jīng)成為IEEE(The Institute of Electrical and Electronics Engineers)的一種工業(yè)標準硬件描述語言。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(Library Based)的設(shè)計的特點,因此設(shè)計者可以不必了解硬件結(jié)構(gòu)。從系統(tǒng)設(shè)計入手,在頂層進行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計,在
22、方框圖一級用VHDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統(tǒng)一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的FPGA器件中去,從而實現(xiàn)可編程的專用集成電路(ASIC)的設(shè)計。</p><p> Verilog也是一種流行的硬件描述語言,他是由工業(yè)界開發(fā)的,1984年,Verilog作為一種私用的硬件描述語言,由Gateway Design Automation公司給出,
23、1988年,Synopsis公司為Verilog開發(fā)了綜合工具。1995年,Verilog成為IEEE的一個標準。Verilog 適合算法級,寄存器級,邏輯級,門級和版圖級等各個層次的設(shè)計和描述。</p><p> VHDL的語法是基于ADA語言的,而Verilog的語法是基于C語言的。由于是基于C語言,所以它更容易掌握,但是VHDL語言在設(shè)計和描述大型系統(tǒng)時具有突出優(yōu)勢。目前兩種語言各占一半市場份額,兩種語言
24、都可以滿足數(shù)字系統(tǒng)設(shè)計者的需求。</p><p> 本設(shè)計中采用VHDL語言進行設(shè)計。</p><p><b> 4 設(shè)計工具簡介</b></p><p> 本次設(shè)計是基于Altera公司的QuartusII軟件。</p><p> Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VH
25、DL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。</p><p> QuartusII支持Altera的IP核,包含了LPM/MegaFuction宏功能模塊庫,使用它,可以簡化設(shè)計的復(fù)雜性,加快設(shè)計速度。QuartusII平臺支持一個工作組環(huán)境下的
26、設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。此外,QuartusII通過和DSP Builder工具與Matlab/SIMULINK相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件設(shè)計、可編程邏輯設(shè)計于一體,是一種綜性的開發(fā)平臺。</p><p><b> 5 系統(tǒng)設(shè)計</b></p><p> 基
27、于VHDL語言設(shè)計一個多功能信號發(fā)生器,通過選擇輸入信號,可以輸出遞增鋸齒波、遞減鋸齒波、三角波、方波等四種信號。信號發(fā)生器的控制模塊可以選用數(shù)據(jù)選擇器實現(xiàn),4種信號的數(shù)據(jù)選擇可以使用4選1數(shù)據(jù)選擇器實現(xiàn)。</p><p> 5.1 VHDL程序語言基本設(shè)計</p><p> 一個VHDL語言的設(shè)計程序描述的是一個電路單元,這個電路單元可以是一個門電路,或者是一個計數(shù)器,也可以是一個C
28、PU,一般情況下,一個完整的VHDL語言程序至少包括實體、結(jié)構(gòu)體和程序包三個部分。實體給出電路單元的外部輸入輸出接口信號和引用信息,結(jié)構(gòu)體給出了電路單元的內(nèi)部結(jié)構(gòu)和信號的行為特點,程序包定義在設(shè)計結(jié)構(gòu)體和實體中將用到的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計好的電路單元等。</p><p> 第一部分是程序包,程序包是用VHDL語言編寫的共享文件,定義在設(shè)計結(jié)構(gòu)體和實體中將要用到的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計好的電路單元等
29、,放在文件目錄名稱為IEEE的程序包庫中。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</
30、p><p> 第二部分是程序的實體,定義電路單元的輸入/輸出引腳名稱。程序的實體名稱可以任意取,但必須與VHDL程序的文件名稱相同。實體的標示符是ENTITY,實體以ENTITY開頭,以END結(jié)束。</p><p> ENTITY fulladder IS</p><p> PORT(a,b,Ci:in std_logic;</p><p
31、> Co,s: out std_logic_vector(7 downto 0));</p><p> END fulladder;</p><p> 其中,定義了a,b, Ci為輸入信號引腳,定義Co,s為輸出信號引腳。</p><p> 第三部分是程序的結(jié)構(gòu)體,具體描述電路的內(nèi)部結(jié)構(gòu)和邏輯功能。結(jié)構(gòu)體有三種描述方式,分別是行為(BEHAVIOR
32、)描述方式、數(shù)據(jù)流(DATAFLOW)描述方式和結(jié)構(gòu)描述方式。其中數(shù)據(jù)流描述方式又被稱為寄存器(RTL)描述方式。結(jié)構(gòu)體以表示ARCHITECHTURE開頭,以END結(jié)尾。結(jié)構(gòu)體的名稱可以任取。</p><p> architecture behav of fulladder is</p><p><b> BEGIN</b></p><
33、;p> s<=a xor b xor Ci;</p><p> Co<=(a and b)or(a and Ci)or(b and Ci);</p><p> END fulladder</p><p> 上面程序段中結(jié)構(gòu)體的描述方式屬于程序流描述方式。</p><p> 以上三段程序是一個完整的VHDL程序段,實
34、現(xiàn)的功能是一位全加器。</p><p> 5.2 波形發(fā)生器設(shè)計</p><p> 采用DDS技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量的波形。DDS技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形的一種頻率合成技術(shù)。以正弦波為例,首先要按照一定的采樣點數(shù)將正弦波形一個周期的數(shù)據(jù)信息存于ROM表中,表中包含著一個周期正弦波的數(shù)字幅度信息,每個地址對應(yīng)正弦波中0到360度范圍內(nèi)的一個相位點的幅度值,查找表時即
35、是把輸入的地址相位信息映射成正弦波幅度的數(shù)字量信號,通過設(shè)置的輸出端口輸出。在實物設(shè)計中,可以使用D/A接口來實現(xiàn)波形信號的輸出。</p><p> 為簡化設(shè)計過程,本設(shè)計并未采用DDS技術(shù),而是采用描點輸出的方式,實現(xiàn)波形發(fā)生器的設(shè)計。程序中設(shè)置一個波形的起始點,經(jīng)過比較、計算得出波形的其他數(shù)值,將這些點依次連續(xù)輸出,從而實現(xiàn)波形的仿真。以遞增鋸齒波為例,首先定義初始點為 tmp=“00000000”
36、;在時鐘上升沿到來時,執(zhí)行tmp<=tmp+1;語句,同時將tmp輸出,當</p><p> tmp=“11111111”;時,將tmp值清零,執(zhí)行下一個循環(huán)。</p><p> 在本設(shè)計中,采用QuartusII軟件仿真,所以可以通過波形文件直觀的反映出輸出的數(shù)字量的變化情況,以達到波形輸出的仿真。</p><p> 設(shè)計中分別對四種波形進行編程,編譯
37、無誤后,封裝生成模塊文件,以供在后面的頂層電路設(shè)計中使用。</p><p> 圖5-1 四種波形封裝圖塊</p><p> 本設(shè)計中設(shè)置了四種波形,分別是遞增鋸齒波、遞減鋸齒波、三角波、方波。四種波形通過一個4選1數(shù)據(jù)選擇器來實現(xiàn)選擇性輸出。</p><p> 5.3 四選一數(shù)據(jù)選擇器設(shè)計</p><p> 可以采用集成四選一數(shù)據(jù)選擇
38、器CT54153/CT74153,也可以使用軟件編程生成模塊的方式實現(xiàn)數(shù)據(jù)四選一的功能。在本設(shè)計中采用后者,程序中,為每一種波形分配一個通道,并為之賦予一唯一的代碼,當在sel端輸入不同的代碼時,被選中的通道打開,響應(yīng)的波形發(fā)生模塊產(chǎn)生波形。</p><p> entity mux41 is</p><p> port(sel:in std_logic_vector(2 downto
39、0);--定義輸入端口sel</p><p> d1,d2,d3,d4: in std_logic_vector(7 downto 0);--定義輸入端口d1,d2,d3,d4</p><p> q: out std_logic_vector(7 downto 0));--定義輸出端口</p><p> end mux41;</p><p&
40、gt; architecture behav of mux41 is</p><p><b> begin</b></p><p> process(sel)</p><p><b> begin</b></p><p> case sel is</p><p>
41、 when "001"=>q<=d1;</p><p> when "010"=>q<=d2;</p><p> when "011"=>q<=d3;</p><p> when "100"=>q<=d4;</p>&l
42、t;p> when others=>null;</p><p><b> end case;</b></p><p> end process; 圖5-2四選一數(shù)據(jù)選擇器封裝圖塊</p><p> end behav;</p><p> 以上為四
43、選一數(shù)據(jù)選擇器程序段,其中sel端口為外部輸入選擇信號,d1,d2,d3,d4分別連接四個波形發(fā)生模塊,以二進制形式給sel幅值,選擇相應(yīng)的通道。q為輸出端口,將波形信息的數(shù)字代碼輸出。</p><p><b> 5.4 程序設(shè)計</b></p><p> 圖5-3 系統(tǒng)流程圖</p><p> 5.5 主要函數(shù)語句分析</p>
44、;<p> 在程序設(shè)計中,主要使用的函數(shù)語句有兩種:If-else語句和case-when語句。這兩種語句也是VHDL程序設(shè)計中常用的語句。二者都屬于流程控制語句。流程控制語句通過條件控制開關(guān)決定是否執(zhí)行一條或幾條語句或重復(fù)執(zhí)行一條或幾條語句或跳過一條或幾條語句 。</p><p> IF語句是一種條件語句,它根據(jù)語句中所設(shè)置的一種或多種條件,有選擇地執(zhí)行指定的順序語句。IF語句的語句結(jié)構(gòu)有以下
45、三種:</p><p> IF 條件句 Then -- 第一種IF語句結(jié)構(gòu)</p><p><b> 順序語句</b></p><p><b> END IF</b></p><p> IF 條件句 Then -- 第二種IF語句結(jié)構(gòu)</p><p&g
46、t;<b> 順序語句</b></p><p><b> ELSE</b></p><p><b> 順序語句</b></p><p><b> END IF</b></p><p> IF 條件句 Then -- 第三種IF語句結(jié)構(gòu)&
47、lt;/p><p><b> 順序語句</b></p><p> ELSIF 條件句 Then</p><p><b> 順序語句</b></p><p><b> ...</b></p><p><b> ELSE</b>
48、</p><p><b> 順序語句</b></p><p><b> END IF</b></p><p> CASE語句根據(jù)滿足的條件直接選擇多項順序語句中的一項執(zhí)行,CASE語句的結(jié)構(gòu)如下:</p><p> CASE 表達式 IS</p><p> When
49、 選擇值 => 順序語句</p><p> When 選擇值 => 順序語句</p><p><b> ...</b></p><p><b> END CASE </b></p><p> 當執(zhí)行到CASE語句時,首先計算表達式的值,然后根據(jù)條件句中與之相同的選擇值。執(zhí)行對應(yīng)的
50、順序語句,最后結(jié)束 CASE語句。表達式可以是一個整數(shù)類型或枚舉類型的值,</p><p> 也可以是由這些數(shù)據(jù)類型的值構(gòu)成的數(shù)組。</p><p> 5.6 系統(tǒng)頂層文件</p><p> 將上述5個模塊(遞增鋸齒波sawtooth_adder、遞減鋸齒波sawtooth_minus、三角波triangle、方波square、4選1數(shù)據(jù)選擇器mux41)封裝
51、成為模塊文件,供頂層電路調(diào)用??梢缘玫揭韵马攲游募娐罚?lt;/p><p> 圖5-4 系統(tǒng)頂層電路圖</p><p><b> 6系統(tǒng)仿真</b></p><p> 通過選擇不同的sel值,可以實現(xiàn)不同的波形輸出。仿真中reset復(fù)位信號一直置高電平,即沒有仿真復(fù)位情況。</p><p> 輸入的選擇信號為1時,
52、信號發(fā)生器頂層電路的仿真輸出波形為遞增鋸齒波。輸出的波形線性遞增。</p><p> 圖6-1 遞增鋸齒波仿真波形</p><p> 輸入的選擇信號為2時,信號發(fā)生器頂層電路的仿真輸出波形為遞減鋸齒波。輸出的波形線性遞減。</p><p> 圖6-2 遞減鋸齒波仿真波形</p><p> 輸入的選擇信號為3時,信號發(fā)生器頂層電路的仿
53、真輸出波形為三角波。輸出的波形線性減小到最小值0后,再線性增加。</p><p> 圖6-3 三角波仿真波形</p><p> 輸入的選擇信號為4時,信號發(fā)生器頂層電路的仿真輸出波形為方波。輸出的波形為周期性的全0或全1。(在仿真中,只有將CLK信號頻率取得很高的時候,才可以清晰地看出仿真效果。)</p><p> 圖6-4 方波仿真波形</p>
54、<p><b> 7 設(shè)計總結(jié)</b></p><p><b> 7.1 小結(jié)</b></p><p> FPGA是當前數(shù)字系統(tǒng)設(shè)計領(lǐng)域比較火熱的一種工具,它可以大大縮短設(shè)計需要的時間,降低成本的同時也提高了系統(tǒng)的穩(wěn)定性。使用VHDL語言描述硬件系統(tǒng)使得FPGA技術(shù)有了更廣闊的應(yīng)用領(lǐng)域。本設(shè)計使用了基于Altera公司的FPGA
55、系列,采用Altera公司提供的系統(tǒng)開發(fā)工具Quartus II軟件進行了系統(tǒng)的設(shè)計和仿真。數(shù)字信號發(fā)生器在實驗室以及工業(yè)場所都被大量使用著,本系統(tǒng)即實現(xiàn)了可以輸出四種波形的簡易多功能波形發(fā)生器,仿真結(jié)果證明,該設(shè)計正確有效,可以作為制作實物的理論依據(jù)。但由于設(shè)計者能力有限,本系統(tǒng)仍然有著很多可改進的地方,比如可以升級為輸出頻率、幅值可調(diào)的波形,或者輸出任意波形以更貼近實際情況。</p><p><b>
56、; 7.2 心得體會</b></p><p> 對FPGA一直都有著濃厚的興趣,借做課設(shè)的機會,認真的研究了一下這門科學(xué)。發(fā)現(xiàn)FPGA技術(shù)比我想象中的要有很大的難度。里面有很多的思想來源于信息電子技術(shù)里面的基本知識,包括門電路的概念以及寄存器傳送的基本知識。VHDL語言與C語言有很大的不同,但是C語言的編程思想也可以移植到VHDL語言中,尤其是一些邏輯算法的設(shè)計,需要有很強的C語言編程功底。學(xué)習(xí)一
57、門知識要從最基本的體系架構(gòu)開始,倘若一開始就從頂層設(shè)計入手,就會造成很多基本原理、基本概念上的偏差,甚至?xí)涎訉W(xué)習(xí)設(shè)計的時間,事倍功半。雖然課設(shè)完成了,但是我意識到,我對FPGA技術(shù)僅僅只是停留在入門的階段,想要有更大的發(fā)展,更深入的研究,還需要更多的努力與實踐。</p><p><b> 參考文獻</b></p><p> [1] 蔣小燕,俞偉鈞.EDA技術(shù)及V
58、HDL.南京:東南大學(xué)出版社.2008年12月.</p><p> [2] 李國麗,朱維勇.EDA與數(shù)字系統(tǒng)設(shè)計.北京:機械工業(yè)出版.2005年3月.</p><p> [3] 江國強.EDA技術(shù)與實驗.北京:電子工業(yè)出版社.2005年1月.</p><p> [4] 歐偉明.基于MCU、FPGA、RTOS的電子系統(tǒng)設(shè)計方法與實例.北京:北京航空航天大學(xué)出版社
59、.2007年4月 .</p><p> [5] Charles H.Roth,Jr、Lizy Kurian John著,金明錄譯.數(shù)字系統(tǒng)設(shè)計與VHDL.北京:電子工業(yè)出版社.2008年8月</p><p><b> 附錄</b></p><p> 附錄一:遞增鋸齒波程序</p><p> library iee
60、e;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all; --程序包</p><p> entity sawtooth_adder is&l
61、t;/p><p> port(clk,reset:in std_logic;--定義clk、reset為輸入信號</p><p> q:out std_logic_vector(7 downto 0));--定義q為輸出信號</p><p> end sawtooth_adder; --實體</p><p>
62、architecture behav of sawtooth_adder is</p><p><b> begin</b></p><p> process(clk,reset)--定義進程</p><p> variable tmp:std_logic_vector(7 downto 0);--定義變量,8位<
63、/p><p><b> begin</b></p><p> if reset='0'then--如果復(fù)位信號為0,tmp為0</p><p> tmp:="00000000";</p><p> elsif rising_edge(clk) then
64、--捕捉時鐘上升沿</p><p> if tmp="11111111"then--如果tmp遞增至最大,增歸零</p><p> tmp:="00000000";</p><p> else --否則,tmp繼續(xù)遞增</p><p> tmp:=tmp+1;</p
65、><p><b> end if;</b></p><p><b> end if;</b></p><p> q<=tmp;--q等于變量tmp</p><p> end process;--進程結(jié)束</p><p> en
66、d behav;--結(jié)構(gòu)體結(jié)束</p><p> 附錄二:遞減鋸齒波程序</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p&
67、gt; entity sawtooth_minus is</p><p> port(clk,reset:in std_logic;</p><p> q:out std_logic_vector(7 downto 0));</p><p> end sawtooth_minus;</p><p> architecture beh
68、av of sawtooth_minus is</p><p><b> begin</b></p><p> process(clk,reset)</p><p> variable tmp:std_logic_vector(7 downto 0);</p><p><b> begin</b&
69、gt;</p><p> if reset='0'then</p><p> tmp:="11111111";</p><p> elsif rising_edge(clk) then</p><p> if tmp="00000000"then</p><p
70、> tmp:="11111111";</p><p><b> else </b></p><p> tmp:=tmp-1;</p><p><b> end if;</b></p><p><b> end if;</b></p>
71、;<p><b> q<=tmp;</b></p><p> end process;</p><p> end behav;</p><p><b> 附錄三:三角波程序</b></p><p> library ieee;</p><p>
72、 use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;--程序包</p><p> entity triangle is--定義三角波實體</p><p> port(clk,reset:in std_logic;</p&
73、gt;<p> q:out std_logic_vector(7 downto 0));</p><p> end triangle;</p><p> architecture behav of triangle is--定義三角波結(jié)構(gòu)體</p><p><b> begin</b></p>
74、<p> process(clk,reset)--進程開始</p><p> variable tmp:std_logic_vector(7 downto 0);--定義中間變量tmp、a</p><p> variable a:std_logic;</p><p><b> begin</b>
75、</p><p> if reset='0'then--復(fù)位信號設(shè)置</p><p> tmp:="00000000";</p><p> elsif rising_edge(clk) then--捕捉時鐘信號上升沿</p><p> if a='0
76、39;then--a=0時依次輸出三角波上升沿</p><p> if tmp="11111110"then</p><p> tmp:="11111111";</p><p><b> a:='1';</b></p><p><b&g
77、t; else </b></p><p> tmp:=tmp+1;</p><p><b> end if;</b></p><p> else--a=1時依次輸出三角波下降沿</p><p> if tmp="00000001"then</p>
78、<p> tmp:="00000000";</p><p><b> a:='0';</b></p><p><b> else </b></p><p> tmp:=tmp-1;</p><p><b> end if;<
79、/b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> q<=tmp;--輸出信號q=tmp</p><p> end process;</p><p> en
80、d behav;--結(jié)構(gòu)體結(jié)束</p><p><b> 附錄四:方波程序</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;
81、</p><p> entity square is</p><p> port(clk,reset: in std_logic;</p><p> q:out std_logic_vector(7 downto 0));</p><p> end square;</p><p> architecture
82、behav of square is</p><p> signal a:std_logic;</p><p><b> begin</b></p><p> process(clk,reset)</p><p> variable tmp:std_logic_vector(7 downto 0);</p&
83、gt;<p><b> begin</b></p><p> if reset='0'then</p><p><b> a<='0';</b></p><p> elsif rising_edge(clk) then</p><p>
84、if tmp="11111111"then</p><p> tmp:="00000000";</p><p> else tmp:=tmp+1;</p><p><b> end if;</b></p><p> if tmp<="10000000&quo
85、t;then</p><p><b> a<='1';</b></p><p><b> else</b></p><p><b> a<='0';</b></p><p><b> end if;</b>
86、;</p><p><b> end if;</b></p><p> end process;</p><p> process(clk,a)</p><p><b> begin </b></p><p> if rising_edge(clk)then<
87、/p><p> if a='1' then</p><p> q<="11111111";</p><p><b> else</b></p><p> q<="00000000";</p><p><b> en
88、d if;</b></p><p><b> end if;</b></p><p> end process;</p><p> end behav;</p><p> 附錄五:四選一數(shù)據(jù)選擇器程序</p><p> library ieee;</p><
89、;p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;--程序包</p><p> entity mux41 is--定義實體</p><p> port(sel:in std_logic_vector(2 downto 0);
90、--信號選擇端口sel</p><p> d1,d2,d3,d4: in std_logic_vector(7 downto 0);--d1d2d3d4分別連接四個波形發(fā)生模塊</p><p> q: out std_logic_vector(7 downto 0));--定義輸出信號端口</p><p> end mux41;</p&
91、gt;<p> architecture behav of mux41 is--結(jié)構(gòu)體</p><p><b> begin</b></p><p> process(sel)</p><p><b> begin</b></p><p> ca
92、se sel is--case when語句進行信號位的選擇</p><p> when "001"=>q<=d1;</p><p> when "010"=>q<=d2;</p><p> when "011"=>q<=d3;</p>
93、;<p> when "100"=>q<=d4;</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;--進程結(jié)束</p><p> end
94、behav;--結(jié)構(gòu)體結(jié)束</p><p> 附件1: 大學(xué)本科畢業(yè)論文(設(shè)計)工作程序</p><p> 注:1.提前或推延進行畢業(yè)論文(設(shè)計)的,各階段要求相同,日程自定;</p><p> 2.畢業(yè)論文(設(shè)計)工作三個階段時間安排,可根據(jù)各專業(yè)特點適當調(diào)整。
95、 </p><p> 附件2: 大學(xué)本科畢業(yè)論文(設(shè)計)撰寫規(guī)范</p><p> 一、畢業(yè)論文(設(shè)計)文本結(jié)構(gòu)</p><p> 畢業(yè)論文(設(shè)計)主要由8個部分組成:①封面;②目錄;③題目;④中外文摘要;⑤正文;⑥參考文獻;⑦謝辭;⑧附錄。</p><p> 二、畢業(yè)論文(設(shè)計)各部分規(guī)范</p>&
96、lt;p><b> 1. 封面</b></p><p> 封面按學(xué)校規(guī)定的格式填寫,包括論文(設(shè)計)題目、作者姓名、指導(dǎo)教師姓名、學(xué)科專業(yè)等內(nèi)容。</p><p><b> 2. 目錄</b></p><p> 目錄由畢業(yè)論文(設(shè)計)各部分內(nèi)容的順序號、名稱和頁碼組成,目次中的內(nèi)容一般列出二級標題即可。目錄應(yīng)
97、該用“…………”連接名稱與頁碼。</p><p><b> 3. 題目</b></p><p> 論文(設(shè)計)題目要恰當、簡明、凝練,能夠反映論文的主題及其內(nèi)容,做到文、題貼切。題目中不使用非規(guī)范的縮略詞、符號、代號和公式,通常不采用問話的方式。題目所使用的詞語應(yīng)當考慮到有助于選擇關(guān)鍵詞和編制題錄、索引等。</p><p> 題目的中文字
98、數(shù)一般不超過20個字,外文題目不超過10個實詞,中外文標題應(yīng)一致,居中編排格式。</p><p> 4. 中外文摘要及關(guān)鍵詞 摘要是對畢業(yè)論文(設(shè)計)內(nèi)容不加注釋和評論的簡短陳述。摘要主要是說明研究工作的目的、方法、結(jié)果和結(jié)論。摘要應(yīng)具有獨立性和自含性,即不閱讀全文,就能獲得畢業(yè)論文(設(shè)計)必要的信息,使讀者確定有無必要閱讀全文。摘要中應(yīng)用第三人稱的方法記述論文的性質(zhì)和主題,不使用“本文”、“作者”等作為主
99、語,應(yīng)采用“對…進行了研究”、“報告了…現(xiàn)狀”、“進行了…調(diào)查”等表達方式。排除在本學(xué)科領(lǐng)域已成為常識的內(nèi)容,不得重復(fù)題目中已有的信息。語句要合乎邏輯關(guān)系,盡量同正文的文體保持一致。結(jié)構(gòu)要嚴謹,表達要簡明,語義要確切,一般不再分段落。對某些縮略語、簡稱、代號等,除了相鄰專業(yè)的讀者也能清楚理解的以外,在首次出現(xiàn)處必須加以說明。摘要中通常不用圖表、化學(xué)結(jié)構(gòu)式以及非公知公用的符號和術(shù)語。</p><p> 畢業(yè)論文(
100、設(shè)計)的摘要包含中文摘要和外文摘要。中文摘要字數(shù)約為200~300字,外文摘要約為200~300個實詞。</p><p> 關(guān)鍵詞(Keywords)是為了文獻標引,從《漢語主題詞表》或論文中選取出來,用以表示全文主題內(nèi)容信息的詞語或術(shù)語。關(guān)鍵詞不宜用非通用的代號和分子式。</p><p> 關(guān)鍵詞一般為3~6個。關(guān)鍵詞的排序,通常應(yīng)按研究的對象、性質(zhì)(問題)和采取的手段排序。中文關(guān)鍵
101、詞兩詞之間應(yīng)留出一個漢字的空間,不加任何標點符號;外文關(guān)鍵詞之間用分號隔開。</p><p><b> 5. 正文</b></p><p> 畢業(yè)論文(設(shè)計)的正文包括前言(引言)、正文、結(jié)論三個部分。外語類專業(yè)畢業(yè)生必須用所學(xué)專業(yè)外語撰寫。</p><p> 畢業(yè)論文(設(shè)計)的篇幅一般6000字左右。</p><p&
102、gt;<b> (1)前言(引言)</b></p><p> 前言(引言)主要說明研究工作的目的、范圍,對前人的研究狀況進行評述分析,闡明研究設(shè)想、研究方法、實驗設(shè)計、預(yù)期結(jié)果、成果的意義等。</p><p><b> (2)正文</b></p><p> 正文是對研究工作與研究內(nèi)容的詳細表述,一般由標題、文字、表
103、格或公式等部分組成。該部分要運用選定的研究方法分析問題、論證觀點,盡量反映出研究能力和學(xué)術(shù)水平。正文是畢業(yè)論文(設(shè)計)的核心部分,占據(jù)主要篇幅。</p><p> 正文是論文的主體,要求觀點清晰、論點正確、論據(jù)可靠、論證嚴密、層次清楚。</p><p> 正文中的圖表和計量單位要規(guī)范。圖須有序號、圖題、圖例、量和單位,圖序號須用阿拉伯數(shù)字,與圖題空 1 格,寫在圖下方;表格采用 3線表
104、,表頭線和表尾線為粗黑線,表兩邊不要串寫文字,表序號須用阿拉伯數(shù)字,與標題空 1格,寫在表上方;一律使用法定計量單位。</p><p><b> (3)結(jié)論</b></p><p> 結(jié)論是對整個研究工作進行歸納和總結(jié)。結(jié)論應(yīng)當準確、完整、明確、精練。如不可能導(dǎo)出應(yīng)有的結(jié)論,也可以沒有結(jié)論而進行必要的討論,闡述本課題研究中存在的問題及進一步開展研究的建議。<
105、/p><p><b> 6. 謝辭(致謝)</b></p><p> 謝辭(致謝)是對給予各類資助、指導(dǎo)和協(xié)助完成科研工作,以及提供各種條件的單位和個人表示的感謝。謝辭應(yīng)實事求是。</p><p><b> 7. 參考文獻</b></p><p> 文后參考文獻,是論文的重要組成部分,按順序和規(guī)
106、定的格式列在正文之后。所列出的文獻,應(yīng)當是作者親自閱讀或引用過的,出處要翔實,要進行核實查對。所引用的文獻應(yīng)是公開出版的刊物或著作,內(nèi)部刊物一般不引用。</p><p> 正文中參考文獻的標注方法,是在引用文字(即所引用的詞組、句子、段落等)結(jié)束處的右上角標出參考文獻序號。全文參考文獻的序號要按照從小到大的次序排列,某一文獻多次引用時,要用同一序號標出。</p><p> 文后參考文獻
107、的編寫方式,是依正文中參考文獻序號的次序排列所有的參考文獻,且一個參考文獻只能出現(xiàn)一次。</p><p><b> 8. 附錄</b></p><p> 凡不宜收入正文中而又有價值的內(nèi)容,可編入畢業(yè)論文的附錄中。附錄內(nèi)容主要包括:①正文中所使用公式的推導(dǎo)與證明過程;②使用的主要符號、單位、縮寫、程序全文及其說明等;③在正文中無法列出的實驗數(shù)據(jù);④重復(fù)性數(shù)據(jù)圖表;⑤
108、調(diào)查問卷等。</p><p> ?。旑^空2行)目 錄(4號黑體,居中)</p><p> 摘要……………………………………………………………………………………1</p><p> 關(guān)鍵詞…………………………………………………………………………………1</p><p> Abstract………………………………………………………………
109、………………1</p><p> Key words……………………………………………………………………………1</p><p> 引言(或緒論)………………………………………………………………………1</p><p> 1□材料與方法………………………………………………………………………Y</p><p> 1.1□材料 ……………
110、………………………………………………………………Y</p><p> 1.2□方法 ……………………………………………………………………………Y</p><p> 1.2.1□×××××…………………………………………………………………Y</p><p> 1.2.2□×××
111、15;×…………………………………………………………………Y</p><p> 1.2.3□×××××…………………………………………………………………Y</p><p> 1.2.4□×××××…………………………………………………………………Y</p><
112、;p> 2□××………………………………………………………………………………Y</p><p> 2.1□×××××……………………………………………………………………Y</p><p> 3□×××…………………………………………………………………………… Y</p>
113、;<p> ……………………………………………………………(略)</p><p> X ×××××(正文第X章)…………………………………………………………Y</p><p> 致謝……………………………………………………………………………………Y</p><p> 參考文獻………………………
114、………………………………………………………Y</p><p> 附錄A ××××(必要時)………………………………………………………Y</p><p> 附錄B ××××(必要時)………………………………………………………Y</p><p> 圖1 ××&
115、#215;×(必要時)…………………………………………………………Y</p><p> 圖2 ××××(必要時)…………………………………………………………Y</p><p> 表1 ××××(必要時)……………………………………………………………Y</p><p>
116、表2 ××××(必要時)……………………………………………………………Y</p><p> 注:1. 目次中的內(nèi)容一般列出“章”、“節(jié)”、“條”三級標題即可;</p><p> 2.X、Y表示具體的阿拉伯數(shù)字;</p><p> 畢業(yè)論文(設(shè)計)題目(3號黑體)</p><p> ×&
117、#215;××專業(yè)學(xué)生 學(xué)生姓名</p><p> 指導(dǎo)教師 指導(dǎo)教師姓名(小四仿宋體)</p><p> 摘要:××××××××××××××××××(200—300字,五號宋
118、體)×××××××××××××××××……</p><p> 關(guān)鍵詞:××× ×××× ××××× ×
119、15;×(3-5個,五號宋體)</p><p> Title(3號Times New Romar)</p><p> Student majoring in ×××× Name</p><p> Tutor Name(小四Times New Romar)</p><p>
120、 Abstract: ××××××(五號Times New Romar,200—300個實詞)××××××××××××××××××××××……</p>
121、;<p> Key words: ×××;××××;×××××;×××(3-5實詞個,五號Times New Romar)</p><p> 引言×××××(小四宋體)××
122、15;××××××××××××××××××××××××××××××××××××&
123、#215;××××××××××××××××××××××××××××××××……。</p><p>
124、; 1 材料與方法 (仿宋體四號)</p><p> 1.1 ××××××××××(黑體小四號)</p><p> ××××××(小四宋體)×××××××
125、;××××××××××××××××××××××××××××××××××××
126、15;。</p><p> 1.1.1 ××(仿宋體小四號)×××× ×××××××××××××××××××××××
127、×××(小四宋體)××××××××××××××××××××××××××××××××
128、5;×××。</p><p> 1.1.2 ××(仿宋體小四號)×××× ××××××××××××××××××××&
129、#215;×××××(小四宋體)××××××××××××××××××××××××××××××
130、;××××××。</p><p> 1.2 ××××××××××(黑體小四號)……</p><p> 2 結(jié)果與分析 (仿宋體四號)</p><p> 2.1 ×××
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga信號發(fā)生器2說明書
- 基于fpga的dds信號發(fā)生器的研究說明書
- 基于fpga波形發(fā)生器說明書
- 基于fpga的函數(shù)發(fā)生器說明書
- 基于fpga的波形發(fā)生器說明書
- 基于fpga的單脈沖發(fā)生器說明書
- 基于fpga的智能函數(shù)發(fā)生器說明書
- 基于fpga的dds任意波形發(fā)生器說明書
- 基于fpga的多功能波形發(fā)生器說明書
- 基于fpga的信號發(fā)生器設(shè)計
- 基于fpga的函數(shù)信號發(fā)生器
- 基于fpga的信號發(fā)生器的設(shè)計
- 基于fpga的正交信號發(fā)生器設(shè)計【任務(wù)書】
- 基于fpga的dds信號發(fā)生器設(shè)計
- 基于FPGA的函數(shù)信號發(fā)生器.docx
- 基于matlab的數(shù)字信號發(fā)生器報告說明書
- 基于matlab的數(shù)字信號發(fā)生器報告說明書
- 基于fpga的dds信號發(fā)生器設(shè)計開題
- 基于fpga的信號發(fā)生器設(shè)計6波形
- 基于FPGA的函數(shù)信號發(fā)生器設(shè)計.pdf
評論
0/150
提交評論