[工學(xué)]EDA實驗指導(dǎo)書_第1頁
[工學(xué)]EDA實驗指導(dǎo)書_第2頁
[工學(xué)]EDA實驗指導(dǎo)書_第3頁
[工學(xué)]EDA實驗指導(dǎo)書_第4頁
[工學(xué)]EDA實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、.EDA技術(shù)課程實驗指導(dǎo)書上海海事大學(xué)信息工程學(xué)院實驗中心20090708目 錄實驗一 Quartus II原理圖設(shè)計1、 在QuartusII中用原理圖輸入法設(shè)計8位全加器2、 在QuartusII中用原理圖輸入法設(shè)計較復(fù)雜數(shù)字系統(tǒng)實驗二 基于VHDL的簡單組合與時序電路設(shè)計1、 應(yīng)用QuartusII完成基本組合電路設(shè)計2、 應(yīng)用QuartusII完成基本時序電路的設(shè)計3、 設(shè)計含異步清0和同步時鐘使能的加法計數(shù)器實驗三 數(shù)控分頻器的設(shè)計實驗四 用QuartusII設(shè)計正弦信號發(fā)生器實驗五 序列檢測器設(shè)計實驗六 樂曲硬件演奏電路設(shè)計附錄:GW48 EDA/SOPC主系統(tǒng)使用說明實驗一 Qu

2、artus II原理圖設(shè)計1、在QuartusII中用原理圖輸入法設(shè)計8位全加器(1) 實驗?zāi)康模菏煜だ肣uartus的原理圖輸入方法設(shè)計簡單組合電路,掌握層次化設(shè)計的方法,并通過一個8位全加器的設(shè)計把握利用EDA軟件進行原理圖輸入方式的電子線路設(shè)計的詳細流程。(2) 實驗原理:一個8位全加器可以由8個1位全加器構(gòu)成,加法器間的進位可以串行方式實現(xiàn),即將低位加法器的進位輸出cout與相臨的高位加法器的最低進位輸入信號cin相接。而一個1位全加器可以由半加器來構(gòu)成。(3) 實驗內(nèi)容1:按照1-1、1-2圖完成半加器和全加器的設(shè)計,包括原理圖輸入、編譯、綜合、適配、仿真、實驗板上的硬件測試,并將

3、此全加器電路設(shè)置成一個硬件符號入庫。鍵1、鍵2、鍵3(PIO0/1/2)分別接ain、bin、cin;發(fā)光管D2、D1(PIO9/8)分別接sum和cout。 1-1 半加器原理圖1-2 全加器原理圖(4) 實驗內(nèi)容2,建立一個更高層次的原理圖設(shè)計,利用以上獲得的1位全加器構(gòu)成8位全加器,并完成編譯、綜合、適配、仿真和硬件下載(JTAG模式下載SOF文件)測試。建議選擇電路模式1(附錄圖3);鍵2、鍵1輸入8位加數(shù);鍵4、鍵3輸入8位被加數(shù);數(shù)碼6/5顯示加和;D8顯示進位cout。引腳分配如下:a7.0對應(yīng)的是PIO15.8,,引腳分別是12、8、7、6、4、3、2、1。b7.0對應(yīng)的是PI

4、O7.0,,引腳分別是240、239、238、237、236、235、234、233。cin對應(yīng)的是PIO49,引腳是173。sum7.0對應(yīng)的是PIO23.16,,引腳分別是20、19、18、17、16、15、14、13。cout對應(yīng)的是PIO39,引腳是160。結(jié)構(gòu)如圖1-3。1-3 8位加法器原理圖(5) 實驗內(nèi)容4:要求全程編譯后生成用于配置器件EPCS4編程的壓縮POF文件,并使用USB-Blaster,通過AS模式對實驗板上的EPCS4進行編程,最后進行驗證。 (6) 實驗報告:詳細敘述8位加法器的設(shè)計流程;給出各層次的原理圖及其對應(yīng)的仿真波形圖;給出加法器的時序分析情況;最后給出

5、硬件測試流程和結(jié)果。2、在QuartusII中用原理圖輸入法設(shè)計較復(fù)雜數(shù)字系統(tǒng)(1) 實驗?zāi)康模菏煜ぴ韴D輸入法中74系列等宏功能元件的使用方法,掌握更復(fù)雜的原理圖層次化設(shè)計技術(shù)和數(shù)字系統(tǒng)設(shè)計方法。完成8位十進制頻率機的設(shè)計。(2) 原理說明:利用6.2節(jié)介紹的2位計數(shù)器模塊,連接它們的計數(shù)進位,用4個計數(shù)模塊就能完成一個8位有時鐘使能的計數(shù)器;對于測頻控制器的控制信號,在仿真過程中應(yīng)該注意它們可能的毛刺現(xiàn)象。最后按照6.2節(jié)中的設(shè)計流程和方法即可完成全部設(shè)計。(3) 實驗內(nèi)容:首先完成2位頻率計的設(shè)計,然后進行硬件測試,建議選擇電路模式2;數(shù)碼2和1顯示輸出頻率值,待測頻率F_IN接cloc

6、k0;測頻控制時鐘CLK接clock2,若選擇clock2 = 8Hz,門控信號CNT_EN的脈寬恰好為1秒。然后建立一個新的原理圖設(shè)計層次,在此基礎(chǔ)上將其擴展為8位頻率計,仿真測試該頻率計待測信號的最高頻率,并與硬件實測的結(jié)果進行比較。(4) 實驗報告:給出各層次的原理圖、工作原理、仿真波形圖和分析,詳述硬件實驗過程和實驗結(jié)果。實驗二 基于VHDL的簡單組合與時序電路設(shè)計1、應(yīng)用QuartusII完成基本組合電路設(shè)計 (1) 實驗?zāi)康模菏煜uartus的VHDL文本設(shè)計流程全過程,學(xué)習(xí)簡單組合電路的設(shè)計、多層次電路設(shè)計、仿真和硬件測試。(2) 實驗內(nèi)容1:首先利用Quartus完成2選1多

7、路選擇器(例2-1)的文本編輯輸入(mux21a.vhd)和仿真測試等步驟,給出圖2-2所示的仿真波形。最后在實驗系統(tǒng)上進行硬件測試,驗證本項設(shè)計的功能。(3) 實驗內(nèi)容2:將此多路選擇器看成是一個元件mux21a,利用元件例化語句描述圖2-1,編輯輸入三選一電路(mux31a.vhd),并將此文件放在同一目錄中。以下是部分參考程序:. COMPONENT MUX21A PORT ( a,b,s : IN STD_LOGIC; y : OUT STD_LOGIC); END COMPONENT ;. u1 : MUX21A PORT MAP(a=>a2,b=>a3,s=>s0

8、,y=>tmp); u2 : MUX21A PORT MAP(a=>a1,b=>tmp,s=>s1,y=>outy); END ARCHITECTURE BHV ;【例2-1】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ;END IF; END P

9、ROCESS;END ARCHITECTURE one ;圖2-1 雙2選1多路選擇器圖 2-2 mux21a功能時序波形 按照本章給出的步驟對上例分別進行編譯、綜合、仿真。并對其仿真波形作出分析說明。(4) 實驗內(nèi)容3:引腳鎖定以及硬件下載(JTAG模式下載SOF文件)測試。選擇目標(biāo)器件是EP1C12Q240C8N,選實驗電路模式5(附錄圖7),用鍵1(PIO0,引腳號為233)控制s0;用鍵2(PIO1,引腳號為234)控制s1;a3、a2和a1分別接clock5(引腳號為152)、clock0(引腳號為28)和clock2(引腳號為153);輸出信號outy仍接揚聲器spker(引腳號為

10、174)。通過短路帽選擇clock0接256Hz信號,clock5接1024Hz,clock2接8Hz信號。注意clock0的跳線總選擇開關(guān)J6(在主晶振20MHz元件附近)。最后進行編譯、下載和硬件測試實驗(通過選擇鍵1、鍵2,控制s0、s1,可使揚聲器輸出不同音調(diào))。(5) 實驗內(nèi)容4:要求全程編譯后生成用于配置器件EPCS4編程的壓縮POF文件,并使用USB-Blaster,通過AS模式對實驗板上的EPCS4進行編程,最后進行驗證。(6) 實驗報告:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括程序設(shè)計、軟件編譯、仿真分析、硬件測試和詳細實驗過程;給出程序分析報告、仿真波形圖及其分析報告。(7)

11、附加內(nèi)容:根據(jù)本實驗以上提出的各項實驗內(nèi)容和實驗要求,設(shè)計1位全加器。首先用Quartus完成3.3節(jié)給出的全加器的設(shè)計,包括仿真和硬件測試。實驗要求分別仿真測試底層硬件或門和半加器,最后完成頂層文件全加器的設(shè)計和測試,給出設(shè)計原程序,程序分析報告、仿真波形圖及其分析報告。(8) 實驗習(xí)題:以1位二進制全加器為基本元件,用例化語句寫出8位并行二進制全加器的頂層文件,并討論此加法器的電路特性。2、應(yīng)用QuartusII完成基本時序電路的設(shè)計(1) 實驗?zāi)康模菏煜uartus的VHDL文本設(shè)計過程,學(xué)習(xí)簡單時序電路的設(shè)計、仿真和測試。(2) 實驗內(nèi)容1:根據(jù)實驗4-1的步驟和要求,設(shè)計觸發(fā)器(使

12、用例3-6),給出程序設(shè)計、軟件編譯、仿真分析、硬件測試及詳細實驗過程?!纠?-6】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCESS (CLK,Q1) BEGIN IF CLK'EVENT AND CLK

13、 = '1' THEN Q1 <= D ; END IF; END PROCESS ;Q <= Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線-是注釋符號) END bhv;(3) 實驗內(nèi)容2:設(shè)計鎖存器(使用例3-14),同樣給出程序設(shè)計、軟件編譯、仿真分析、硬件測試及詳細實驗過程?!纠?-14】.PROCESS (CLK,D) BEGIN IF CLK = '1' -電平觸發(fā)型寄存器 THEN Q <= D ; END IF; END PROCESS ;(4) 實驗內(nèi)容3:只用一個1位二進制全加器為基本元件和一些輔助的時序電路,設(shè)計一個8位

14、串行二進制全加器,要求: 1、能在8-9個時鐘脈沖后完成8位二進制數(shù)(加數(shù)被加數(shù)的輸入方式為并行)的加法運算,電路須考慮進位輸入Cin和進位輸出Cout;2、給出此電路的時序波形,討論其功能,并就工作速度與并行加法器進行比較;3、在FPGA中進行實測。對于GW48 EDA實驗系統(tǒng),建議選擇電路模式1(附錄圖3),鍵2,鍵1輸入8位加數(shù);鍵4,鍵3輸入8位被加數(shù);鍵8作為手動單步時鐘輸入;鍵7控制進位輸入Cin;鍵9控制清0;數(shù)碼6和數(shù)碼5顯示相加和;發(fā)光管D1顯示溢出進位Cout。4、鍵8作為相加起始控制,同時兼任清0;工作時鐘由clock0自動給出,每當(dāng)鍵8發(fā)出一次開始相加命令,電路即自動相

15、加,結(jié)束后停止工作,并顯示相加結(jié)果。就外部端口而言,與純組合電路8位并行加法器相比,此串行加法器僅多出一個加法起始/清0控制輸入和工作時鐘輸入端。(提示:此加法器有并/串和串/并移位寄存器各一)。(5) 實驗報告:分析比較實驗內(nèi)容1和2的仿真和實測結(jié)果,說明這兩種電路的異同點。詳述實驗內(nèi)容3。3、設(shè)計含異步清0和同步時鐘使能的加法計數(shù)器 (1) 實驗?zāi)康模簩W(xué)習(xí)計數(shù)器的設(shè)計、仿真和硬件測試,進一步熟悉VHDL設(shè)計技術(shù)。(2) 實驗原理:實驗程序為例3-22,實驗原理參考3.4節(jié),設(shè)計流程參考本章?!纠?-22】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;US

16、E IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;ARCHITECTURE behav OF CNT10 ISBEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHER

17、S =>'0') ; -計數(shù)器異步復(fù)位 ELSIF CLK'EVENT AND CLK='1' THEN -檢測時鐘上升沿 IF EN = '1' THEN -檢測是否允許計數(shù)(同步使能) IF CQI < 9 THEN CQI := CQI + 1; -允許計數(shù), 檢測是否小于9 ELSE CQI := (OTHERS =>'0'); -大于9,計數(shù)值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1' -計數(shù)大于9,輸出進位

18、信號 ELSE COUT <= '0' END IF; CQ <= CQI; -將計數(shù)值向端口輸出 END PROCESS;END behav;(3) 實驗內(nèi)容1:在Quartus上對例3-22進行編輯、編譯、綜合、適配、仿真。說明例中各語句的作用,詳細描述示例的功能特點,給出其所有信號的時序仿真波形。(4) 實驗內(nèi)容2:引腳鎖定以及硬件下載測試(參考4.2節(jié))。引腳鎖定后進行編譯、下載和硬件測試實驗。將實驗過程和實驗結(jié)果寫進實驗報告。(5) 實驗內(nèi)容3:使用SignalTap II對此計數(shù)器進行實時測試,流程與要求參考4.3節(jié)。(6) 實驗內(nèi)容4:從設(shè)計中去除Si

19、gnalTap II,要求全程編譯后生成用于配置器件EPCS1編程的壓縮POF文件,并使用ByteBlasterII,通過AS模式對實驗板上的EPCS1進行編程,最后進行驗證。(7) 實驗內(nèi)容4:為此項設(shè)計加入一個可用于SignalTap II采樣的獨立的時鐘輸入端(采用時鐘選擇clock0=12MHz,計數(shù)器時鐘CLK分別選擇256Hz、16384Hz、6MHz),并進行實時測試。(8) 思考題:在例3-22中是否可以不定義信號 CQI,而直接用輸出端口信號完成加法運算,即:CQ <= CQ + 1?為什么?(9) 實驗報告:將實驗原理、設(shè)計過程、編譯仿真波形和分析結(jié)果、硬件測試實驗結(jié)

20、果寫進實驗報告。實驗三 數(shù)控分頻器設(shè)計(1) 實驗?zāi)康模簩W(xué)習(xí)數(shù)控分頻器的設(shè)計、分析和測試方法。(2) 實驗原理:數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時,將對輸入的時鐘信號有不同的分頻比,數(shù)控分頻器就是用計數(shù)值可并行預(yù)置的加法計數(shù)器設(shè)計完成的,方法是將計數(shù)溢出位與預(yù)置數(shù)加載輸入信號相接即可,詳細設(shè)計程序如例5-20所示。(3) 分析:根據(jù)圖5-21的波形提示,分析例5-20中的各語句功能、設(shè)計原理及邏輯功能,詳述進程P_REG和P_DIV的作用,并畫出該程序的RTL電路圖。圖5-21 當(dāng)給出不同輸入值D時,F(xiàn)OUT輸出不同頻率(CLK周期=50ns)(4) 仿真:輸入不同的CLK頻率和

21、預(yù)置值D,給出如圖5-21的時序波形。(5) 實驗內(nèi)容1:在實驗系統(tǒng)上硬件驗證例5-20的功能。可選實驗電路模式1(參考附錄圖3);鍵2/鍵1負(fù)責(zé)輸入8位預(yù)置數(shù)D(PIO7-PIO0);CLK由clock0輸入,頻率選65536Hz或更高(確保分頻后落在音頻范圍);輸出FOUT接揚聲器(SPKER)。編譯下載后進行硬件測試:改變鍵2/鍵1的輸入值,可聽到不同音調(diào)的聲音。(6) 實驗內(nèi)容2:將例5-20擴展成16位分頻器,并提出此項設(shè)計的實用示例,如PWM的設(shè)計等。(7) 思考題:怎樣利用2個由例5-20給出的模塊設(shè)計一個電路,使其輸出方波的正負(fù)脈寬的寬度分別由兩個8位輸入數(shù)據(jù)控制?(8) 實驗

22、報告:根據(jù)以上的要求,將實驗項目分析設(shè)計,仿真和測試寫入實驗報告。【例5-20】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF IS PORT ( CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF IS SIGNAL FULL : STD_LOGIC;BEGIN P_REG: PROCESS(CLK) VARIA

23、BLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = "11111111" THEN CNT8 := D; -當(dāng)CNT8計數(shù)計滿時,輸入數(shù)據(jù)D被同步預(yù)置給計數(shù)器CNT8 FULL <= '1' -同時使溢出標(biāo)志信號FULL輸出為高電平 ELSE CNT8 := CNT8 + 1; -否則繼續(xù)作加1計數(shù) FULL <= '0' -且輸出溢出標(biāo)志信號FULL為低電平 END IF; END

24、 IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2; -如果溢出標(biāo)志信號FULL為高電平,D觸發(fā)器輸出取反 IF CNT2 = '1' THEN FOUT <= '1' ELSE FOUT <= '0' END IF; END IF; END PROCESS P_DIV ;END;實驗四 正弦信號發(fā)生器設(shè)計

25、(1)實驗?zāi)康模哼M一步熟悉QuartusII及其LPM_ROM與FPGA硬件資源的使用方法。(2)實驗原理:參考本章相關(guān)內(nèi)容。(3)實驗內(nèi)容1:根據(jù)例7-4,在Quartus II上完成正弦信號發(fā)生器設(shè)計,包括仿真和資源利用情況了解(假設(shè)利用Cyclone器件)。最后在實驗系統(tǒng)上實測,包括SignalTap II測試、FPGA中ROM的在系統(tǒng)數(shù)據(jù)讀寫測試和利用示波器測試。最后完成EPCS1配置器件的編程。【例7-4】 正弦信號發(fā)生器頂層設(shè)計LIBRARY IEEE; -正弦信號發(fā)生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGN

26、ED.ALL;ENTITY SINGT IS PORT ( CLK : IN STD_LOGIC; -信號源時鐘 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );-8位波形數(shù)據(jù)輸出END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom -調(diào)用波形數(shù)據(jù)存儲器LPM_ROM文件:data_rom.vhd聲明 PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);-6位地址信號 inclock : IN STD_LOGIC ;-地址鎖存時鐘 q : OUT STD_LOGI

27、C_VECTOR (7 DOWNTO 0);END COMPONENT; SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); -設(shè)定內(nèi)部節(jié)點作為地址計數(shù)器 BEGINPROCESS(CLK ) -LPM_ROM地址發(fā)生器進程 BEGINIF CLK'EVENT AND CLK = '1' THEN Q1<=Q1+1; -Q1作為地址發(fā)生器計數(shù)器END IF;END PROCESS;u1 : data_rom PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);-例化END;

28、信號輸出的D/A使用實驗系統(tǒng)上的DAC0832,注意其轉(zhuǎn)換速率是1s,其引腳功能簡述如下:ILE:數(shù)據(jù)鎖存允許信號,高電平有效,系統(tǒng)板上已直接連在5V上;WR1、WR2:寫信號1、2,低電平有效;XFER:數(shù)據(jù)傳送控制信號,低電平有效;VREF:基準(zhǔn)電壓,可正可負(fù),10V10V;RFB:反饋電阻端;IOUT1/IOUT2:電流輸出端。D/A轉(zhuǎn)換量是以電流形式輸出的,所以必須將電流信號變?yōu)殡妷盒盘?;AGND/DGND:模擬地與數(shù)字地。在高速情況下,此二地的連接線必須盡可能短,且系統(tǒng)的單點接地點須接在此連線的某一點上。建議選擇GW48系統(tǒng)的電路模式No.5,由附錄對應(yīng)的電路圖可見,DAC0832的

29、8位數(shù)據(jù)口D7.0分別與FPGA的PIO31、30.、24相連,如果目標(biāo)器件是EP1C3T144,則對應(yīng)的引腳是:72、71、70、69、68、67、52、51;時鐘CLK接系統(tǒng)的clock0,對應(yīng)的引腳是93,選擇的時鐘頻率不能太高(轉(zhuǎn)換速率1s,)。還應(yīng)該注意,DAC0832電路須接有+/12V電壓:GW48系統(tǒng)的+/-12V電源開關(guān)在系統(tǒng)左側(cè)上方。然后下載SINGT.sof到FPGA中;波形輸出在系統(tǒng)左下角,將示波器的地與GW48系統(tǒng)的地(GND)相接,信號端與“AOUT”信號輸出端相接。如果希望對輸出信號進行濾波,將GW48系統(tǒng)左下角的撥碼開關(guān)的“8”向下?lián)?,則波形濾波輸出,向上撥則未

30、濾波輸出,這可從輸出的波形看出?;静襟E如下(詳細步驟可參考該書第4章):一、頂層文件設(shè)計1 創(chuàng)建工程和編輯設(shè)計文件 正弦信號發(fā)生器的結(jié)構(gòu)由3部分組成(圖3-1):數(shù)據(jù)計數(shù)器或地址發(fā)生器、數(shù)據(jù)ROM和D/A。性能良好的正弦信號發(fā)生器的設(shè)計要求此3部分具有高速性能,且數(shù)據(jù)ROM在高速條件下,占用最少的邏輯資源,設(shè)計流程最便捷,波形數(shù)據(jù)獲最方便。圖3-1所示是此信號發(fā)生器結(jié)構(gòu)圖,頂層文件SINGT.VHD在FPGA中實現(xiàn),包含2個部分:ROM的地址信號發(fā)生器由5位計數(shù)器擔(dān)任,和正弦數(shù)據(jù)ROM,拒此,ROM由LPM_ROM模塊構(gòu)成能達到最優(yōu)設(shè)計,LPM_ROM底層是FPGA中的EAB或ESB等。地址

31、發(fā)生器的時鐘CLK的輸入頻率f0與每周期的波形數(shù)據(jù)點數(shù)(在此選擇64點),以及D/A輸出的頻率f的關(guān)系是: f = f0 /64 圖3-1 正弦信號發(fā)生器結(jié)構(gòu)圖2 創(chuàng)建工程 3 編譯前設(shè)置在對工程進行編譯處理前,必須作好必要的設(shè)置。具體步驟如下:1、選擇目標(biāo)芯片;2、選擇目標(biāo)器件編程配置方式;3、選擇輸出配置;4 編譯及了解編譯結(jié)果5、正弦信號數(shù)據(jù)ROM定制(包括設(shè)計ROM初始化數(shù)據(jù)文件)另兩種方法要快捷的多,可分別用C程序生成同樣格式的初始化文件和使用DSP Builder/MATLAB來生成。6 仿真 7 引腳鎖定、下載和硬件測試 8 使用嵌入式邏輯分析儀進行實時測試圖3-33 Signa

32、lTapII數(shù)據(jù)窗的實時信號9 對配置器件EPCS4/EPCS1編程 10 了解此工程的RTL電路圖圖3-35 工程singt的RTL電路圖實驗內(nèi)容2:修改例7-3的數(shù)據(jù)ROM文件,設(shè)其數(shù)據(jù)線寬度為8,地址線寬度也為8,初始化數(shù)據(jù)文件使用MIF格式,用C程序產(chǎn)生正弦信號數(shù)據(jù),最后完成以上相同的實驗。實驗內(nèi)容3:設(shè)計一任意波形信號發(fā)生器,可以使用LPM雙口RAM擔(dān)任波形數(shù)據(jù)存儲器,利用單片機產(chǎn)生所需要的波形數(shù)據(jù),然后輸向FPGA中的RAM(可以利用GW48系統(tǒng)上與FPGA接口的單片機完成此實驗,D/A可利用系統(tǒng)上配置的0832或5651高速器件)。實驗報告:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括設(shè)

33、計原理、程序設(shè)計、程序分析、仿真分析、硬件測試和詳細實驗過程。實驗五 序列檢測器設(shè)計(1) 實驗?zāi)康模河脿顟B(tài)機實現(xiàn)序列檢測器的設(shè)計,了解一般狀態(tài)機的設(shè)計與應(yīng)用。(2) 實驗原理:序列檢測器可用于檢測一組或多組由二進制碼組成的脈沖序列信號,當(dāng)序列檢測器連續(xù)收到一組串行二進制碼后,如果這組碼與檢測器中預(yù)先設(shè)置的碼相同,則輸出1,否則輸出0。由于這種檢測的關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測中所收到的每一位碼都與預(yù)置數(shù)的對應(yīng)碼相同。在檢測過程中,任何一位不相等都將回到初始狀態(tài)重新開始檢測。例8-11描述的電路完成對序列數(shù)“11100101

34、”的檢測,當(dāng)這一串序列數(shù)高位在前(左移)串行進入檢測器后,若此數(shù)與預(yù)置的密碼數(shù)相同,則輸出“A”,否則仍然輸出“B”。 (3) 實驗內(nèi)容1:利用QuartusII對例8-11進行文本編輯輸入、仿真測試并給出仿真波形,了解控制信號的時序,最后進行引腳鎖定并完成硬件測試實驗。建議選擇電路模式No.8(附錄圖10),用鍵7(PIO11)控制復(fù)位信號CLR;鍵6(PIO9)控制狀態(tài)機工作時鐘CLK;待檢測串行序列數(shù)輸入DIN接PIO10(左移,最高位在前);指示輸出AB接PIO39PIO36(顯示于數(shù)碼管6)。下載后:按實驗板“系統(tǒng)復(fù)位”鍵;用鍵2和鍵1輸入2位十六進制待測序列數(shù)“11100101”;

35、按鍵7復(fù)位(平時數(shù)碼6指示顯“B”);按鍵6(CLK) 8次,這時若串行輸入的8位二進制序列碼(顯示于數(shù)碼2/1和發(fā)光管D8D0)與預(yù)置碼“11100101”相同,則數(shù)碼6應(yīng)從原來的B變成A,表示序列檢測正確,否則仍為B。(4) 實驗內(nèi)容2:根據(jù)習(xí)題8-3中的要求3提出的設(shè)計方案,重復(fù)以上實驗內(nèi)容(將8位待檢測預(yù)置數(shù)由鍵4/鍵3作為外部輸入,從而可隨時改變檢測密碼)。(5) 實驗思考題:如果待檢測預(yù)置數(shù)必須以右移方式進入序列檢測器,寫出該檢測器的VHDL代碼(兩進程符號化有限狀態(tài)機),并提出測試該序列檢測器的實驗方案。(6) 實驗報告:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括設(shè)計原理、程序設(shè)計、程

36、序分析、仿真分析、硬件測試和詳細實驗過程。【例8-11】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC; -串行輸入數(shù)據(jù)位/工作時鐘/復(fù)位信號 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -檢測結(jié)果輸出END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); -8位

37、待檢測預(yù)置數(shù)(密碼=E5H)BEGIN D <= "11100101 " ; -8位待檢測預(yù)置數(shù) PROCESS( CLK, CLR ) BEGIN IF CLR = '1' THEN Q <= 0 ; ELSIF CLK'EVENT AND CLK='1' THEN -時鐘到來時,判斷并處理當(dāng)前輸入的位 CASE Q IS WHEN 0=> IF DIN = D(7) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(6) THEN

38、Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(5) THEN Q <= 3 ; ELSE Q <= 0 ; END IF ; WHEN 3=> IF DIN = D(4) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(3) THEN Q <= 5 ; ELSE Q <= 0 ; END IF ; WHEN 5=> IF DIN = D(2) THEN Q <= 6 ; ELSE Q <=

39、 0 ; END IF ; WHEN 6=> IF DIN = D(1) THEN Q <= 7 ; ELSE Q <= 0 ; END IF ; WHEN 7=> IF DIN = D(0) THEN Q <= 8 ; ELSE Q <= 0 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) -檢測結(jié)果判斷輸出 BEGIN IF Q = 8 THEN AB <= "1010" ; -序列數(shù)檢測正確,輸出 “

40、A” ELSE AB <= "1011" ; -序列數(shù)檢測錯誤,輸出 “B” END IF ; END PROCESS ;END behav ;實驗六 樂曲硬件演奏電路設(shè)計(1) 實驗?zāi)康模簩W(xué)習(xí)利用實驗5-3的數(shù)控分頻器設(shè)計硬件樂曲演奏電路。(2) 實驗原理:主系統(tǒng)由3個模塊組成,例10-29是頂層設(shè)計文件,其內(nèi)部有3個功能模塊(如圖10-3所示):TONETABA.VHD、NOTETABS.VHD和SPEAKER.VHD。圖10-3 硬件樂曲演奏電路結(jié)構(gòu)(Synplify綜合)與利用微處理器(CPU或MCU)來實現(xiàn)樂曲演奏相比,以純硬件完成樂曲演奏電路的邏輯要復(fù)雜得

41、多,如果不借助于功能強大的EDA工具和硬件描述語言,僅憑傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡單的演奏電路也難以實現(xiàn)。本實驗設(shè)計項目作為“梁?!睒非葑嚯娐返膶崿F(xiàn)。我們知道,組成樂曲的每個音符的發(fā)音頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏所需的兩個基本要素,問題是如何來獲取這兩個要素所對應(yīng)的數(shù)值以及通過純硬件的手段來利用這些數(shù)值實現(xiàn)所希望樂曲的演奏效果。圖10-3中,模塊U1類似于彈琴的人的手指;U2類似于琴鍵;U3類似于琴弦或音調(diào)發(fā)聲器。下面首先來了解圖10-3的工作原理: 1、音符的頻率可以由圖10-3中的SPEAKERA獲得,這是一個數(shù)控分頻器(其詳細工作原理可參考實驗5-3)。由其clk端輸入一具有

42、較高頻率(這里是12MHz)的信號,通過SPEAKERA分頻后由SPKOUT輸出,由于直接從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚聲器,需另加一個D觸發(fā)器以均衡其占空比,但這時的頻率將是原來的1/2。SPEAKERA對clk輸入信號的分頻比由11位預(yù)置數(shù)Tone10.0決定。SPKOUT的輸出頻率將決定每一音符的音調(diào),這樣,分頻計數(shù)器的預(yù)置值Tone10.0 與SPKOUT的輸出頻率,就有了對應(yīng)關(guān)系。例如在TONETABA模塊中若取Tone10.0=1036,將發(fā)音符為"3"音的信號頻率。 2、音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確

43、定,圖10-3中模塊TONETABA 的功能首先是為SPEAKERA提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在SPEAKER輸入口停留的時間即為此音符的節(jié)拍值。模塊TONETABA 是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路,其中設(shè)置了“梁?!睒非恳舴鶎?yīng)的分頻預(yù)置數(shù),共13個,每一音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生器模塊NOTETABS的clk的輸入頻率決定,在此為4Hz。這13個值的輸出由對應(yīng)于TONETABA 的4位輸入值Index3.0確定,而Index3.0 最多有16種可選值。輸向TONETABA中Index3.0的值ToneIndex3.0的輸出值與持續(xù)的時間由模塊NOTETABS

44、決定。3、在NOTETABS 中設(shè)置了一個8位二進制計數(shù)器(計數(shù)最大值為138),作為音符數(shù)據(jù)ROM的地址發(fā)生器。這個計數(shù)器的計數(shù)頻率選為4Hz,即每一計數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。例如,NOTETABS 在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間,相應(yīng)地,所對應(yīng)的“3”音符分頻預(yù)置值為1036,在SPEAKERA 的輸入端停留了1秒。隨著NOTETABS 中的計數(shù)器按4Hz的時鐘速率作加法計數(shù)時,即隨地址值遞增時,音符數(shù)據(jù)ROM 中的音符數(shù)據(jù)將從ROM中通過ToneIndex3.0

45、端口輸向TONETABA模塊,“梁?!睒非烷_始連續(xù)自然地演奏起來了。(3) 實驗內(nèi)容1:定制例10-32的NoteTabs模塊中的音符數(shù)據(jù)ROM“music”。該ROM中的音符數(shù)據(jù)已列在例10-33中。注意該例數(shù)據(jù)表中的數(shù)據(jù)位寬、深度和數(shù)據(jù)的表達類型。此外,為了節(jié)省篇幅,例中的數(shù)據(jù)都橫排了,實用中應(yīng)該以每一分號為一行來展開,否則會出錯。最后對該ROM進行仿真,確認(rèn)例10-33中的音符數(shù)據(jù)已經(jīng)進入ROM中。(4) 實驗內(nèi)容2:根據(jù)給出的乘法器邏輯原理圖及其各模塊的VHDL描述,在QuartusII上完成全部設(shè)計,包括編輯、編譯、綜合和仿真操作等。給出仿真波形,并作出詳細說明。(5) 實驗內(nèi)容3

46、:硬件驗證。先將引腳鎖定,使CLK12MHz與clock9相接,接受12MHz時鐘頻率(用短路帽在clock9接“12MHz”);CLK8Hz 與clock2相接,接受4Hz頻率;發(fā)音輸出SPKOUT接Speaker;與演奏發(fā)音相對應(yīng)的簡譜碼輸出顯示可由CODE1在數(shù)碼管5顯示;HIGH1為高八度音指示,可由發(fā)光管D5指示,最后向目標(biāo)芯片下載適配后的SOF邏輯設(shè)計文件。實驗電路結(jié)構(gòu)圖為NO.1。(6) 實驗內(nèi)容4:填入新的樂曲,如“采茶舞曲”、或其它熟悉的樂曲。操作步驟如下:1、根據(jù)所填樂曲可能出現(xiàn)的音符,修改例10-3的音符數(shù)據(jù)表格,同時注意每一音符的節(jié)拍長短;2、如果樂曲比較長,可增加模塊

47、NOTETABA中計數(shù)器的位數(shù),如9位時可達512個基本節(jié)拍。(7) 實驗內(nèi)容5:爭取可以在一個ROM裝上多首歌曲,可手動或自動選擇歌曲。(8) 實驗內(nèi)容6:根據(jù)此項實驗設(shè)計一個電子琴,硬件測試可用電路結(jié)構(gòu)圖NO.3。(9) 思考題1:用LFSR設(shè)計可編程分頻器,對本實驗中的音階發(fā)生電路的可編程計數(shù)器(實現(xiàn)可編程分頻功能)用LFSR替代。(10) 思考題2:例10-30中的進程DelaySpkS對揚聲器發(fā)聲有什么影響? (11) 思考題3:在電路上應(yīng)該滿足哪些條件,才能用數(shù)字器件直接輸出的方波驅(qū)動揚聲器發(fā)聲?(12) 實驗報告:用仿真波形和電路原理圖,詳細敘述硬件電子琴的工作原理及其4個VHD

48、L文件中相關(guān)語句的功能,敘述硬件實驗情況。樂曲演奏電路的VHDL邏輯描述如下:【例10-29】LIBRARY IEEE; - 硬件演奏電路頂層設(shè)計USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT ( CLK12MHZ : IN STD_LOGIC; -音調(diào)頻率信號 CLK8HZ : IN STD_LOGIC; -節(jié)拍頻率信號 CODE1 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);- 簡譜碼輸出顯示 HIGH1 : OUT STD_LOGIC; -高8度指示 SPKOUT : OUT STD_LOGIC );-聲音輸

49、出 END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT ( clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC

50、_VECTOR (10 DOWNTO 0) ); END COMPONENT; COMPONENT Speakera PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC ); END COMPONENT; SIGNAL Tone : STD_LOGIC_VECTOR (10 DOWNTO 0); SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGINu1 : NoteTabs PORT MAP (clk=>

51、CLK8HZ, ToneIndex=>ToneIndex);u2 : ToneTaba PORT MAP (Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);u3 : Speakera PORT MAP(clk=>CLK12MHZ,Tone=>Tone, SpkS=>SPKOUT );END;【例10-30】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera IS P

52、ORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK <= '0' - 將CLK進行16分頻,PreCLK為CLK的1

53、6分頻 IF Count4>11 THEN PreCLK <= '1' Count4 := "0000" ELSIF clk'EVENT AND clk = '1' THEN Count4 := Count4 + 1; END IF; END PROCESS; GenSpkS : PROCESS(PreCLK, Tone)- 11位可預(yù)置計數(shù)器 VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);BEGIN IF PreCLK'EVENT AND PreCLK = &

54、#39;1' THEN IF Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS <= '1' ELSE Count11 := Count11 + 1; FullSpkS <= '0' END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS)-將輸出再2分頻,展寬脈沖,使揚聲器有足夠功率發(fā)音 VARIABLE Count2 : STD_LOGIC;BEGIN IF FullSpkS'EVENT AND FullSpkS = &#

55、39;1' THEN Count2 := NOT Count2; IF Count2 = '1' THEN SpkS <= '1' ELSE SpkS <= '0' END IF; END IF; END PROCESS;END;【例10-31】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNT

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論