




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.CPLD/FPGA課程設計項目名稱 基于FPGA的簡易電子琴設計 專業班級 物聯網112 學生學號 學生姓名 指導教師 2014年 6 月 18 日 .摘 要本系統是采用EDA技術設計的一個簡易的八音符電子琴,該系統基于計算機中時鐘分頻器的原理,采用自頂向下的設計方法來實現,它可以通過按鍵輸入來控制音響。多功能電子琴的設計是在原有普通電子琴的基礎上進行擴充的一個設計。該電子琴的設計大體可以由三個模塊構成,分別是電子琴發聲模塊、存儲器模塊和選擇控制模塊。用硬件描述語言Verilog HDL編程可以實現各個模塊的功能。不僅能實現彈琴和演奏的功能,它還能實現“復讀”的功能,就是可以存儲任意一段音樂
2、,并且可以即時的播放出來。系統實現是用硬件描述語言Verilog HDL按照模塊化方式進行設計,然后進行編程、時序仿真、總體整合。本系統的功能比較齊全,有一定的現實使用的價值。本文中介紹了電子琴系統的整體的設計,并基于硬件描述語言Verilog HDL在相關的芯片上編程實現的。關鍵字:電子琴;音調發生;現場可編程邏輯器件FPGA;硬件描述語言Verilog HDL; AbstractThis system is designed using EDA technology a simple eightnot
3、e keyboard, the system clock divider based on the principle of the computer, using topdown design methodology to implement, it can be controlled through the key input
4、0;audio. Multifunction keyboard is designed to be an ordinary keyboard in the original expansion on the basis of a design. The design of the keyboard in general cons
5、ists of three modules, namely the keyboard sound modules, memory modules and select the control module. Ultra hardware description language Verilog HDL programming function o
6、f each module. Not only can realize the function of playing and playing, it can achieve "repeat" function, which can store any piece of music, and realtime
7、;play out. System implementation is to use hardware description language Verilog HDL modular way by design, then programming, timing simulation, integration. The system features a&
8、#160;relatively complete, there is a certain value. This paper introduces the overall design of the keyboard system, and based on hardware description language Verilog HDL
9、60; in Xilinx's Spartan II series 2sc200PQ2085 chip programming.Keyword:Keyboard; tone occurred; field programmable logic device FPGA; ultra hardware description language Verilog HDL&
10、#160; 目 錄摘 要IAbstractII第1章 所選項目的研究意義21.1 設計目的21.2 設計的基本內容21.3 設計方案2第2章 FPGA、Verilog HDL語言及Quartus軟件簡介22.1 FPGA工作原理:22.2 Verilog HDL語言及Quartus軟件簡介2第3章 系統的軟件程序設計23.1 系統設計的總體思路23.2 頂層模塊設計方法23.3 設計方案23.4 程序設計的流程圖23.5 頂層模塊程序及分析2第4章 軟件仿真24.1 程序輸入24.2 建立波形文件24.3 輸出波形文件24.4 生成RTL封裝圖2結論2參考文獻2附 錄2項目特色2第1
11、章 所選項目的研究意義1.1 設計目的 本次設計的目的就是在掌握計算機組成原理理論相關的基礎上,了解EDA技術,掌握 Verilog HDL硬件描述語言的設計方法和思想,通過學習的 Verilog HDL語言結合電子電路的設計知識理論聯系實際,掌握所學的課程知識,例如本課程設計就是基于所學的計算機原理中的時鐘分頻器和定時器的基礎之上的,通過本課程設計,達到鞏固和綜合運用計算機原理中的知識,理論聯系實際,鞏固所學理論知識,并且提高自己通過所學理論分析、解決計算機相關的實際問題的能力。1.2 設計的基本內容 基于Quartus II 平
12、臺,運用 Verilog HDL語言對簡易電子琴的各個模塊進行設計,并使用EDA 工具對各模塊進行仿真驗證。本設計包含如下三個模塊:樂曲自動演奏模塊,音調發生模塊,數控分頻模塊,最后把各個模塊整合后,通過電路的輸入輸出對應關系連接起來。本課程設計主要是利用Verilog HDL硬件描述語言的設計思想,采用自頂向下的方法,劃分模塊來設計簡易電子琴中的幾個模塊。通過課程設計深入理解和掌握計算機的基本知識,并且掌握課堂上所學到的理論知識,達到課程設計的目的。1.3 設計方案采用 Verilog HDL語言編程來實現電子琴的各項功能。我這個系統主要由電子琴發聲模塊、選擇控
13、制模塊和儲存器模塊組成的。該方案顯得比較籠統,只是把整個系統分為了若干個小模塊,卻不牽涉到具體的硬件電路。但是我們必須看到使用硬件描述語言 Verilog HDL的優勢,它不僅具有良好的電路行為描述和系統描述的能力并且通俗易懂。第2章 FPGA、Verilog HDL語言及Quartus軟件簡介2.1 FPGA工作原理:FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分
14、。FPGA的基本特點:(1)采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。(3)FPGA內部有豐富的觸發器和IO引腳。 (4)FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。(5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。我們可以說,FPGA芯片是小批量系統提高系統集成度、可靠性的最佳選擇之一。 FPGA是由存放在片內RAM中的程序來設置其工作狀態的,因此,工作時需要對片內的RAM進行編
15、程。用戶可以根據不同的配置模式,采用不同的編程方式。 加電時,FPGA芯片將EPROM中數據讀入片內編程RAM中,配置完成后,FPGA進入工作狀態。掉電后,FPGA恢復成白片,內部邏輯關系消失,因此,FPGA能夠反復使用。FPGA的編程無須專用的FPGA編輯器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活2.2 Verilog HDL語言及Quartus軟件簡介2.2.1 Verilog HDL語言簡介 Verilog HDL是超高速
16、集成電路硬件描述語言,是一種用于電路設計的高級語言。它出現于80年代后期,最初是由美國國防部開發出來的,是為了供美軍用來提高設計的可靠性和縮減開發周期的一種使用范圍較小的設計語言。Verilog HDL主要是應用在數字電路的設計中。目前,它在中國的應用多數是用在FPGA/CPLD/EPLD的設計中,同時也被一些實力較為雄厚的單位用來設計ASIC。 Verilog HDL就是在用途最廣泛的C語言的基礎上發展起來的一種硬件描述語言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首創的,最初只設計了一個仿真與驗證工具,之后又陸續開
17、發了相關的故障模擬與時序分析工具。1985年Moorby推出它的第三個商用仿真器Verilog-XL,獲得了巨大的成功,從而使得Verilog HDL迅速得到推廣應用。1989年CADENCE公司收購了GDA公司,使得VerilogHDL成為了該公司的獨家專利。1990年CADENCE公司公開發表了Verilog HDL,并成立LVI組織以促進Verilog HDL成為IEEE標準,即IEEE Standard 1364-1995。Verilog HDL的最大特點就是易學易用,如果有C語言的編程經驗,可以在一個較短的時間內很快的學習和掌握,因而可以把Verilog HDL內容安排在與ASIC設
18、計等相關課程內部進行講授,由于HDL語言本身是專門面向硬件與系統設計的,這樣的安排可以使學習者同時獲得設計實際電路的經驗。與之相比,VHDL的學習要困難一些。但Verilog HDL較自由的語法,也容易造成初學者犯一些錯誤,這一點要注意。Verilog HDL具有多層次描述系統硬件功能的能力,支持自頂向下和基于庫的設計特點。其開發流程:在頂層用方框圖或硬件語言對電路的行為進行描述后,進行系統仿真驗證和糾錯。再用邏輯綜合優化工具生成具體的門級邏輯電路的網表。然后通過適配器將網表文件配置于指定的目標器件,產生最終下載文件或配置文件。最后把適配后生成的下載或配置文件通過編程器或編程電纜下載到具體的F
19、PGA/CPLD器件中去,以便進行硬件調試和驗證,而實現可編程的專用集成電路ASIC的設計。 Verilog HDL主要用于描述數字系統的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,Verilog HDL語言形式和描述風格與句法是十分類似于一般的計算機高級語言。Verilog HDL系統設計與其他硬件描述語言相比,Verilog HDL具有更強的行為描述能力,從而決定了他成為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。2.2.2 Quartus II簡介Quartus II
20、是Altera公司的綜合性PLD開發軟件,支持原理圖、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整CPLD設計流程。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設計的復雜性、加快了設計速度。Maxplus II 作為Altera的上一代PLD設計軟件,由于其出色的易用性
21、而得到了廣泛的應用。目前Altera已經停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設計輔助工具,集成了SOPC和HardCopy設計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。Altera Quartus II 作為一種可編程邏輯的設計
22、環境, 由于其強大的設計能力和直觀易用的接口,越來越受到數字系統設計者的歡迎。Quartus II 的優點:該軟件界面友好,使用便捷,功能強大,是一個完全集成化的可編程邏輯設計環境,是先進的EDA工具軟件。該軟件具有開放性、與結構無關、多平臺、完全集成化、豐富的設計庫、模塊化工具等特點,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tc
23、l腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統一,功能集中,易學易用等特點。Quartus II對第三方EDA工具的支持 對第三方EDA工具的良好支持也使用戶可以在設計流程的各個階段使用熟悉的第三方EDA工具。Altera的Quartus II可編程邏輯軟件屬于第四代CPLD開發平臺。該平臺支持一個工作組環境下的設計要求,其中包括支持基于Internet的協作設計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應商的開發工具相兼容。改進了軟件的LogicLock模塊
24、設計功能,增添了FastFit編譯選項,推進了網絡編輯性能,而且提升了調試能力。第3章 系統的軟件程序設計3.1 系統設計的總體思路實現這個簡易電子琴設計,我們要考慮的主要是以下兩個方面的內容:一、每個音符都有自己的固有頻率,由頻率的不同就決定了發出什么音調。二、一首樂曲的組成不僅僅是音調,還包括每個音調持續時間的長短,也就是我們通常所說的音長,于是本設計就是以這兩個部分為核心內容展開。 樂曲演奏的原理:組成樂曲的每個音符的頻率值(音調)以及持續時間(音長)是樂曲能持續演奏所需的兩個基本數據,因此只要控制輸出到揚聲器的激勵信號的頻率的高低和持續的時間,就可以使揚聲器發出持續的樂曲聲。音調的控制
25、:頻率的高低決定了音調的高低。音樂的十二平均率規定:每兩個八度音(如簡譜中的中音1與高音1)之間的頻率相差一倍。在兩個八度音之間,又可分為十二個半音,每半個音的頻率比為 。另外,音名A(簡譜中的低音6) 的頻率為440HZ,音名B到C之間,E到F之間為半音,其余為全音。由此可以計算出簡譜中從低音1至高音1之間的每個音名對應的頻率如圖表1所示: 表3-1 音名對應的頻率所有不同頻率均從同一基準頻率分頻得到。將分頻數四舍五入進行取整,并盡量減小誤差。若分頻器時鐘頻率過低,則由于分頻系數過小,四舍五入取整數后的誤差較大;若時鐘頻率過高,雖然誤差變小,但分頻數將會變大。在實際的設計中應綜合考慮這兩方面
26、的因素,在盡量減小頻率誤差的前提下取合適的時鐘頻率。由于數控分頻器輸出的波形是脈寬極窄的脈沖波,為了更好的驅動揚聲器發聲,在到達揚聲器之前需要均衡占空比,從而生成各音符對應頻率的對稱方波輸出。在本設計中選取6MHZ作為基準頻率。從下圖表2中可以看出最大分頻系數為9557,采用14位二進制計數器分頻可滿足要求。此外還應給出預置數,對應不同的預置數,只需加載不同的預置數即可。采用加載預置數實現分頻的方法比采用反饋復零法節省資源,實現起來更加容易。表3-2 音名對應的分頻比與預置數 音長的控制:音符的持續時間須根據音樂的速度及每個音符的節拍數來確定。如果設定全音符的持續時間為1S的話,假設產生4分音
27、符,則產生四分頻即可實現四分音符的時長,并提供4HZ分頻器。如圖為樂曲演奏的原理圖,其中,樂譜產生電路用來控制音樂的音調和時長。控制音調通過設置計數器的預置數來實現,預置不同的數值會可以使計數器產生不同頻率的信號,從而產生不同的音調。控制音長是通過控制計數器預置數的停留時間來實現的,預置數的停留時間越長,則該音符的演奏時間越長,如2分音符,在記譜時將該音符記錄兩次即可。3.2 頂層模塊設計方法 頂層模塊的設計就是要設計一個頂層模塊將各模塊進行例化連接,再組成一個協同發揮功能的的整體。我們注意到,分頻模塊需要一個分頻系數,而鍵入模塊將會產生一個分頻系數,因此分頻系數在整個系統中將既不輸入也不輸出
28、,在例化時,我們使用一個信號與之相連,這樣它就能在模塊間傳遞。先對時鐘脈沖進行分頻得到6MHZ的脈沖,然后按照輸入的分頻系數對6MHZ的 再次分頻,得到所需的音符頻率,最后在音調輸出時再進行二分頻,將脈沖展開能夠直接得到占空比為50%的分頻信號,將脈沖展寬,使揚聲器有足夠發生功率。在思索一番后,最終確定了這一個方案,這種方法的好處在于能夠直接得到占空比為50%的分頻信號。用程序將該分頻系數送到分頻模塊后將會產生一個特定頻率的信號,傳送到實驗板上的揚聲器里,并發出不同頻率的聲音即音符。由于每輸入一個信號,就產生一個特定的輸出信號,且每種情況均能羅列,再加上情況總數(電子琴音調個數)不是很大,故我
29、們使用case語句來實現。3.2.1總體框圖圖3-4 頂層模塊設計方框圖3.2.2引腳描述表3-5 頂層模塊設計引腳描述3.3 設計方案 采用現場可編程邏輯器件(FPGA)制作,利用EDA軟件中的 Verilog HDL硬件描述語言編程進行控制,然后燒制實現。控制輸入電路主要是為用戶設計的,起到一個輸入控制的作用.FPGA是現場可編程邏輯器件,也是本設計方案的核心內容,它是實現電子琴運作的主要控制模塊.由設計者把編好的Verilog HDL程序燒制到現場可編程邏輯器件FPGA中,然后通過控制輸入電路把樂譜輸入到FPGA,產生不同的頻率驅動揚聲器,發出響聲。本設計采用Veri
30、log HDL語言編程設計實現,音頻發生部分和數碼顯示部分以外,其余全部在一片FPGA芯片上實現。3.4 程序設計的流程圖程序設計的流程圖如圖3-6所示。圖3-6 程序設計流程圖FPGA的設計是整個系統的中心環節,具有舉足輕重的作用.它的實現主要是由設計者用Verilog HDL硬件描述語言編程實現電子琴的功能,仿真調試成功之后,再燒到FPGA器件中去.這樣作出來的成品插上電源,便可脫機運行.而FPGA模塊的設計又重在Verilog HDL語言的編程實現.用Verilog HDL語言編寫的程序總的頂層模塊映射原理圖如圖3.6所示. 它是由用戶輸入樂譜、對樂譜進行音階頻率設置、音階頻率的預置數輸
31、出相應的樂譜的頻率組成。兩個時鐘信號輸入,其中一個clk_4Hz用于控制音長(節拍)的時鐘頻率,一個clk_6MHz用于產生各種音階頻率的基準頻率。從用戶輸入樂譜模塊的是樂譜信號,該樂譜信號作為音調發生模塊的敏感信號輸入并對其進行控制。音調發生模塊輸出為speaker,“high,med,low”顯示的是該樂譜是高音還是中音或者低音。為了更清楚的了解電子琴的工作過程,我們利用EDA工具(本課程設計Quartus II)對程序代碼實施功能仿真(Function Simulation),由自頂向下的設計方式,最后進行整合,做出簡易電子琴整個系統的時序仿真圖。 3.5 頂層模塊程序及分析/信號定義與
32、說明:/clk_4Hz: 用于控制音長(節拍)的時鐘頻率;/clk_6MHz: 用于產生各種音階頻率的基準頻率;/speaker: 用于激勵揚聲器的輸出信號,本例中為方波信號;/high, med, low:分別用于顯示高音、中音和低音音符,各驅動一個數碼管來顯示。module liangzhu(clk_6MHz,clk_4Hz,speaker,high,med,low); /端口說明input clk_6MHz, clk_4Hz;output speaker;output3:0 high,med,low; /內部信號說明reg3:0 high,med,low;reg13:0 divider,
33、origin;reg7:0 counter;reg speaker;wire carry;assign carry=(divider=16383); /divider=16383則信號carry置1,否則為0always (posedge clk_6MHz) /6MHz時鐘上升沿觸發有效begin if(carry) divider=origin; / carry =1則divider復位到origin的值else divider=divider+1; / 否則divider遞增endalways (posedge carry) / carry信號從0變為1時激發有效beginspeaker=
34、speaker; /2 分頻產生方波信號endalways (posedge clk_4Hz) /4Hz時鐘上升沿觸發有效begincase(high,med,low) /分頻比預置'b000000000011: origin=8798; / 低音3'b000000000101: origin=10005; / 低音5'b000000000110: origin=10701; / 低音6'b000000000111: origin=11321; / 低音7'b000000010000: origin=11606; / 中音1'b000000100
35、000: origin=12126; / 中音2'b000000110000: origin=12591; / 中音3'b000001010000: origin=12804; / 中音4'b000001100000: origin=13194; / 中音5'b000100000000: origin=13994; / 高音1'b000000000000: origin=14255; / 高音2endcaseendalways (posedge clk_4Hz)beginif(counter=63) counter=0; /計時,以實現循環演奏else
36、counter=counter+1;case(counter) /記譜“high,med,low”='b000000000011; /低音“3” high,med,low='b000000000011; /持續4 個時鐘節拍 high,med,low='b000000000011; high,med,low='b000000000011; high,med,low='b000000000101; /低音“5” high,med,low='b000000000101; /發3 個時鐘節拍 high,med,low='b00000000010
37、1; high,med,low='b000000000110; /低音“6” high,med,low='b000000010000; /中音“1” high,med,low='b000000010000; /發3 個時鐘節拍 high,med,low='b000000010000; high,med,low='b000000100000; /中音“2” high,med,low='b000000000110; /低音“6” high,med,low='b000000010000;high,med,low='b0000000001
38、01; high,med,low='b000000000101; high,med,low='b000001010000; /中音“5” high,med,low='b000001010000; /發3 個時鐘節拍 high,med,low='b000001010000; high,med,low='b000100000000; /高音“1” high,med,low='b000001100000; high,med,low='b000001010000; high,med,low='b000000110000; high,med
39、,low='b000001010000; high,med,low='b000000100000; /中音“2” high,med,low='b000000100000; /持續11 個時鐘節拍 high,med,low='b000000100000; high,med,low='b000000100000; high,med,low='b000000100000;high,med,low='b000000100000;high,med,low='b000000100000;high,med,low='b000000100
40、000; high,med,low='b000000100000; high,med,low='b000000100000; high,med,low='b000000100000; high,med,low='b000000110000; /中音“3” high,med,low='b000000000111; /低音“7” high,med,low='b000000000111; high,med,low='b000000000110; /低音“6” high,med,low='b000000000110; high,med,l
41、ow='b000000000101; /低音“5” high,med,low='b000000000101; high,med,low='b000000000101; high,med,low='b000000000110; /低音“6” high,med,low='b000000010000; /中音“1” high,med,low='b000000010000; high,med,low='b000000100000; /中音“2” high,med,low='b000000100000; high,med,low='
42、b000000000011; /低音“3” high,med,low='b000000000011; high,med,low='b000000010000; /中音“1” high,med,low='b000000010000; high,med,low='b000000000110; high,med,low='b000000000101; /低音“5” high,med,low='b000000000110; high,med,low='b000000010000; /中音“1” high,med,low='b0000000
43、00101; /低音“5” high,med,low='b000000000101; /持續8 個時鐘節拍 high,med,low='b000000000101; high,med,low='b000000000101; high,med,low='b000000000101; high,med,low='b000000000101; high,med,low='b000000000101; high,med,low='b000000000101;endcaseendendmodule第4章 軟件仿真4.1 程序輸入單擊filenew,
44、新建工程輸入程序4-1 程序輸入通過查閱書籍以及互聯網上的資料,通過該項目功能的了解,應用 EDA課上所學的Verilog HDL硬件描述語言知識,結合FPGA自頂向下的設計理念,對簡易電子琴設計進行編寫代碼。建立工程使用 New Project Wizard,可以為工程指定工作目錄、分配工程名稱以及指定最高層設計實體的名稱。還可以指定要在工程中使用的設計文件、其它源文件、用戶庫和 EDA 工具,以及目標器件系列和器件然后對代碼進行編譯,目的是檢查語法錯誤。在這里我們選擇Cyclone的EP1C6Q240C8器件,并且選擇第三方EDA綜合、仿真和時序分析工具,這樣項目建立完了。接下來是新建一個
45、Verilog HDL File文件,將編寫的代碼輸入進去,然后保存,開始對代碼編譯。4.2 建立波形文件創建波形文件,單擊File>other files>vector waveform file。圖4-2 建立波形圖代碼編譯成功,為了觀察輸出結果與理論是否對應正確,接下來進行功能仿真,需要建立波形文件對兩個時鐘信號賦值,clk_4Hz設置時鐘周期為4Hz,clk_6MHz設置時鐘周期為6MHz,在clk_4Hz和clk_6MHz信號的上升沿,信號會被輸入到內部,并根據對應時鐘節拍分頻,產生對應節拍頻率觀察輸出量high,med,low及speaker的波形。4.3 輸出波形文件
46、4-3 波形文件圖輸入信號:2個時鐘信號clk_4Hz,clk_6MHz;輸出信號:4個輸出信號high,med,low和speaker; 仿真結果:設置其中1個時鐘信號為clk_4HZ,另1個時鐘信號為clk_6MHZ,,其波形如上圖所示,如當clk_4Hz為低電平而clk_6MHz為高電頻時,說明此時控制音長的時鐘不起作用故各個輸出均為低電平,當clk_4Hz為高電平而clk_6MHz為高電平時,則此時輸入信號上升沿有效,送給電路內部,樂譜開始演奏了,按照由梁祝一部分樂譜編寫的代碼,此時對應的低音3要持續4個時鐘節拍,接下來是低音5持續3個時鐘節拍,通過觀察,確實和分析得一樣,故該仿真證明
47、正確可行。4.4 生成RTL封裝圖圖4-4 RTL封裝圖在綜合結束后,設計者經常會希望看到綜合后的原理圖,以分析綜合結果是否與所設想中的設計一致,要想直接看到內部門電路的連接,這樣就會用到Technology Map Viewer工具,方法是:Tools- Netlist-Technology Map Viewer。Iuput信號:2個時鐘信號clk_4Hz,clk_6MHz;Output信號:4個輸出信號high,med,low和speaker; 設置其中1個Iuput信號為clk_4HZ,另1個Iuput信號為clk_6MHZ,通過觀察最后綜合的電路原理圖,即RTL封裝圖確實初始電路單元每
48、個電路單元的輸入端口為clk_4Hz,clk_6MH,輸出端口的輸出信號送給下一級電路單元。結論通過對實驗結果的分析,我們發現采用FPGA所設計的電子琴系統設計趨于簡單、開發時間短;外圍器件少,體積小,抗干擾能力強,可靠性高;系統維護起來更方便、快捷.尤其對于設計者來說,不需要考慮太多的硬件設計,只需要有自己的設計思路,編程實現再用燒到FPGA器件中進行測試就可以了。電子琴作為一種樂器,成本不是很高,因此有一定的生產價值。 通過幾個星期的工作,終于完成了簡易電子琴的設計,這個課程設計使我受益匪淺,它使我了解了硬件設計的整個流程,并且加深了我對EDA這門的課內容的理解,通過這個課程設計
49、,不僅使我了解了組成原理的脊髓,而且使我對Verilog HDL語言從陌生到初步理解,擴充的我的知識面。 這個課程設計同時培養了我的耐心和毅力,一個小小的錯誤就會導致結果出不來的情況,而對與錯誤的檢查是需要有足夠的耐心,由于這個課程設計也使我積累了一定的經驗,相信這些經驗在我以后的學習和工作中會有很大的作用。此課程設計也使我了解了Verilog HDL設計的方便和靈活性,這的確是我們跨入計算機硬件行業很好的一次鍛煉機會。 參考文獻王金平,數字系統設計與verilog,電子工業出版社2008. 夏宇聞,verilog數字系統設計教程,北京航空航天出版社,2008. 杜慧敏,基
50、于verilog的FPGA設計基礎,西安電子科技大學,2005.附 錄/信號定義與說明:/clk_4Hz: 用于控制音長(節拍)的時鐘頻率;/clk_6MHz: 用于產生各種音階頻率的基準頻率;/speaker: 用于激勵揚聲器的輸出信號,本例中為方波信號;/high, med, low:分別用于顯示高音、中音和低音音符,各驅動一個數碼管來顯示。module song(clk_6MHz,clk_4Hz,speaker,high,med,low); /端口說明input clk_6MHz, clk_4Hz;output speaker;output3:0 high,med,low; /內部信號說
51、明reg3:0 high,med,low;reg13:0 divider,origin;reg7:0 counter;reg speaker;wire carry;assign carry=(divider=16383); /divider=16383則信號carry置1,否則為0always (posedge clk_6MHz) /6MHz時鐘上升沿觸發有效begin if(carry) divider=origin; / carry =1則divider復位到origin的值else divider=divider+1; / 否則divider遞增endalways (posedge ca
52、rry) / carry信號從0變為1時激發有效beginspeaker=speaker; /2 分頻產生方波信號endalways (posedge clk_4Hz) /4Hz時鐘上升沿觸發有效begincase(high,med,low) /分頻比預置'b000000000011: origin=7281;'b000000000101: origin=8730;'b000000000110: origin=9565;'b000000000111: origin=10310;'b000000010000: origin=10647;'b0000
53、00100000: origin=11272;'b000000110000: origin=11831;'b000001010000: origin=12556;'b000001100000: origin=12974;'b000100000000: origin=13516;'b000000000000: origin=16383;endcaseendalways (posedge clk_4Hz)beginif(counter=63) counter=0; /計時,以實現循環演奏else counter=counter+1;case(counter)
54、 /記譜high,med,low='b000000000011; /低音“3”high,med,low='b000000000011; /持續4 個時鐘節拍high,med,low='b000000000011;high,med,low='b000000000011;high,med,low='b000000000101; /低音“5”high,med,low='b000000000101; /發3 個時鐘節拍high,med,low='b000000000101;high,med,low='b000000000110; /低音“
55、6”high,med,low='b000000010000; /中音“1”high,med,low='b000000010000; /發3 個時鐘節拍high,med,low='b000000010000;high,med,low='b000000100000; /中音“2”high,med,low='b000000000110; /低音“6”high,med,low='b000000010000;high,med,low='b000000000101;high,med,low='b000000000101;high,med,low='b000001010000; /中音“5”high,med,low='b000001010000; /發3 個時鐘節拍high,med,low='b000001010000;high,med,low='b000100000000; /高音“1”high,med,low='b000001100000;high,med,low='b000001010000;high,med,low='b000000110000;high,med,low='b000001010000;high,med,low='b0000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 竹木復合材料性能測試與評價考核試卷
- 總部運營管理課件
- 幼兒園安全行為教育
- 小兒驚厥的護理教學課件
- 大學生寢室安全教育要點
- 二次根式的除法教學設計
- 2025股票上市項目合同法律事務代理合同范本格式
- 2025空運出口運輸合同范本
- 2025雙方合作合同協議書范本
- 2025關于重新簽訂勞動合同的決策
- 交房通知短信(5篇)
- 高中英語 A precious family dinner說課課件
- 工藝聯鎖圖識讀
- 2023年中南大學湘雅二醫院康復醫學與技術崗位招聘考試歷年高頻考點試題含答案解析
- GB/T 21567-2008危險品爆炸品撞擊感度試驗方法
- 衛生人才培養方案計劃
- DB64-T 1684-2020 智慧工地建設技術標準-(高清可復制)
- 婚喪嫁娶事宜備案表
- “三級”安全安全教育記錄卡
- 風生水起博主的投資周記
- 賽艇賽事活動推廣方案
評論
0/150
提交評論