版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)電實(shí)驗(yàn)報(bào)告一、設(shè)計(jì)課題的任務(wù)要求1)基本要求1、 速度在40120 次/分鐘范圍內(nèi)連續(xù)可調(diào),通過(guò)2 個(gè)按鍵進(jìn)行速度調(diào)節(jié),一個(gè)用來(lái)增加,一個(gè)用來(lái)減少,當(dāng)長(zhǎng)按按鍵時(shí),按5 次/秒的速度連續(xù)增加或減少,用3 個(gè)數(shù)碼管顯示當(dāng)前速度。2、 節(jié)拍有1/4、2/4、3/4、4/4、3/8、6/8 可選,通過(guò)一個(gè)按鍵選擇,用2 個(gè)數(shù)碼管顯示。3、 通過(guò)一個(gè)按鍵開(kāi)始和停止打節(jié)拍,開(kāi)始后按照設(shè)置好的節(jié)拍和速度打節(jié)拍。4、 要求有聲音和燈光提示,聲音要有強(qiáng)弱區(qū)別,燈光可用不同顏色的發(fā)光二極管表示強(qiáng)弱。2)提高要求通過(guò)一個(gè)按鍵選擇時(shí)值(節(jié)奏類(lèi)型),并在用點(diǎn)陣顯示,如下圖。二、系統(tǒng)設(shè)計(jì)節(jié)拍器的設(shè)計(jì)關(guān)鍵是由按鍵控制速度
2、,并產(chǎn)生不同的分頻。由于對(duì)節(jié)拍器不了解,實(shí)驗(yàn)結(jié)果與實(shí)際節(jié)拍器不同,不過(guò)vhdl用到的模塊,實(shí)現(xiàn)的功能是一樣的。系統(tǒng)的頂層設(shè)計(jì)是:輸入:50MHz時(shí)鐘cp、按鍵button,button1,button2,button3輸出:beep給蜂鳴器,led1,2,3分別給不同的led燈,countout,smg控制數(shù)碼管顯示,hang,lie控制點(diǎn)陣顯示節(jié)拍器的設(shè)計(jì)分為六個(gè)模塊:速度設(shè)置模塊vset,節(jié)拍和暫停按鍵處理模塊jpset,分頻模塊fenpin,數(shù)碼管顯示模塊ra;蜂鳴器(和二極管)模塊fmq;點(diǎn)陣模塊jpfs。1. 分頻模塊分頻:分頻模塊輸入50M赫茲時(shí)鐘cp,給其他模塊提供分頻后的時(shí)鐘。
3、輸出Clk為分頻比為25000000*12/(speed+40),其每十二個(gè)周期等于對(duì)應(yīng)速度的一個(gè)節(jié)拍周期,輸出給蜂鳴器模塊。 Clk1s為250 000分頻,輸出給速度設(shè)置模塊vset。Clkmap,clkbeep3為對(duì)時(shí)鐘cp 80 000分頻625赫茲,clkmap輸出給數(shù)碼管模塊作為掃描頻率,clkbeep3為低音頻率。Clkcount ,Clkbeep1為1250hz,Clkbeep1作為高音頻率,Clkcount作為掃描頻率檢測(cè)時(shí)間片,輸出到蜂鳴器模塊。Clkbeep2為1000hz,作為中音頻率。2. 速度設(shè)置模塊vset:按鍵button1,2分別為控制加和減的按鍵。Clk1s
4、為檢測(cè)按鍵掃描時(shí)鐘,判斷哪個(gè)按鍵按下,并判斷按下時(shí)間,加減速度。輸出speed為速度,輸出到蜂鳴器模塊,及數(shù)碼管模塊。3. 節(jié)拍和暫停按鍵處理模塊jpset:Button是節(jié)拍設(shè)置按鍵,button3為暫停按鍵,對(duì)按鍵進(jìn)行防抖處理。每次button按下,jps加一改變節(jié)拍,輸出jps到蜂鳴器模塊,點(diǎn)陣模塊以及數(shù)碼管模塊。Button3每被按下暫停信號(hào)sigwait翻轉(zhuǎn),sigwait輸出到蜂鳴器模塊使暫?;蜷_(kāi)始。4. 數(shù)碼管顯示模塊ra:數(shù)碼管循環(huán)顯示,根據(jù)不同節(jié)拍和速度,顯示相應(yīng)的節(jié)拍數(shù)字和速度數(shù)字。Clk作為掃描頻率,jps為節(jié)拍信號(hào),speed為速度信號(hào),輸出Countout控制哪個(gè)數(shù)碼
5、管顯示,smg控制顯示的數(shù)字。5. 蜂鳴器(和二極管)模塊fmq:時(shí)鐘為clk,對(duì)不同的節(jié)拍和和速度,對(duì)應(yīng)的時(shí)鐘周期發(fā)出不同頻率的聲音,不同燈光。Clkbeep1,2,3分別為高低音,clkcount為檢測(cè)頻率,sigwait為暫停開(kāi)始信號(hào),Beep輸出給蜂鳴器,led1,2,3控制不同led燈。6. 點(diǎn)陣模塊jpfs時(shí)鐘cp,不同節(jié)拍對(duì)應(yīng)不同顯示符號(hào)lie,hang分別作為輸出。三、仿真波形及波形分析速度設(shè)置模塊仿真波形 速度加一 加五 減五蜂鳴器模塊仿真 暫停 開(kāi)始點(diǎn)陣模塊仿真波形 行信號(hào) 列信號(hào)數(shù)碼管仿真波形(3/8節(jié)拍) 決定哪個(gè)數(shù)碼管亮 數(shù)碼管顯示波形四、源程序top層LIBRARY
6、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jiepaiqi IS PORT ( cp,button,button1,button2,button3 : IN STD_LOGIC; smg : OUT STD_LOGIC_VECTOR (6 DOWNTO 0); countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); lie:out std_logic_vector(7 downto 0); hang:out std_logic_vector(7 downto 0); beep,led1,led2,led3: out std_
7、logic );END jiepaiqi;ARCHITECTURE a OF jiepaiqi IS COMPONENT fenpin -/獲取各種頻率PORT(cp: IN STD_LOGIC; speed:IN INTEGER range 0 to 80; clk: OUTSTD_LOGIC; clk1s:OUT STD_LOGIC; clkmap:OUT STD_LOGIC; clkbeep1:OUT STD_LOGIC; clkbeep2:OUT STD_LOGIC; clkbeep3:OUT STD_LOGIC; clkcount:OUT STD_LOGIC); END COMPON
8、ENT; COMPONENT vset -/獲取速度vPORT( clk1s: IN STD_LOGIC; button1 : IN STD_LOGIC; button2 : IN STD_LOGIC; speed : OUT INTEGER range 0 to 80); END COMPONENT; COMPONENT jpset -/獲取節(jié)拍種類(lèi) PORT( clk: in STD_LOGIC; button: IN STD_LOGIC; button3: IN STD_LOGIC; sigwait: out std_logic; jps : OUT INTEGER RANGE 0 TO
9、 5); END COMPONENT; COMPONENT ra -/數(shù)碼管顯示 PORT(clkmap:IN STD_LOGIC; jps:IN INTEGER RANGE 0 TO 5; speed:IN INTEGER range 0 to 80; smg:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END COMPONENT; COMPONENT jpfs -/點(diǎn)陣顯示 PORT(cp:in std_logic; jps:in INTEGER RANGE 0 TO 5; l
10、ie:out std_logic_vector(7 downto 0); hang:out std_logic_vector(7 downto 0) ); END COMPONENT; COMPONENT fmq -/蜂鳴器鳴響設(shè)置及二極管閃亮 PORT(sigwait: in std_logic; clkbeep1:in STD_LOGIC; clkbeep2:in STD_LOGIC; clkbeep3:in STD_LOGIC; clk:in STD_LOGIC; clkcount:in STD_LOGIC; jps : in INTEGER RANGE 0 TO 5; led:in s
11、td_logic; led1:out std_logic; led2:out std_logic; led3:out std_logic; beep:out std_logic); END COMPONENT; SIGNAL speed:INTEGER range 0 to 80; SIGNAL clk:STD_LOGIC; SIGNAL clk1s:STD_LOGIC; SIGNAL clkmap:STD_LOGIC; SIGNAL clkbeep1:STD_LOGIC; SIGNAL clkbeep2:STD_LOGIC; SIGNAL clkbeep3:STD_LOGIC; SIGNAL
12、 clkcount:STD_LOGIC; SIGNAL sigwait:STD_LOGIC; SIGNAL jps:INTEGER RANGE 0 TO 5; SIGNAL led:STD_LOGIC; BEGIN u0: fenpin PORT MAP (cp = cp, speed = speed,clk=clk,clk1s=clk1s,clkmap=clkmap,clkbeep1=clkbeep1, clkbeep2=clkbeep2,clkbeep3=clkbeep3,clkcount=clkcount); u1: vset PORT MAP (clk1s=clk1s, button1
13、 = button1, button2 = button2, speed=speed); u2: jpset PORT MAP (clk=clk, button = button, sigwait=sigwait, button3 = button3, jps = jps); u3: ra PORT MAP (clkmap = clkmap, jps = jps,speed=speed,smg=smg,countout=countout); u4: jpfs PORT MAP (cp = cp, jps = jps,hang=hang,lie=lie); u5: fmq PORT MAP (s
14、igwait=sigwait,clkbeep1 = clkbeep1,clkbeep2 = clkbeep2,clkbeep3 = clkbeep3,clkcount=clkcount, clk=clk, jps=jps,led = led,led1 = led1,led2 = led2,led3 = led3,beep=beep);END a;分頻模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenpin IS PORT (cp: IN STD_LOGIC; speed:IN INTEGER range 0 to 80; clk: OUT
15、STD_LOGIC; clk1s:OUT STD_LOGIC; clkmap:OUT STD_LOGIC; clkbeep1:OUT STD_LOGIC;-高頻1000赫茲,同時(shí)作為點(diǎn)陣掃描頻率同時(shí)用來(lái)檢測(cè)輸出值 clkbeep2:OUT STD_LOGIC;-中頻750赫茲 clkbeep3:OUT STD_LOGIC;-低頻500赫茲 clkcount:OUT STD_LOGIC);END fenpin; ARCHITECTURE a OF fenpin IS SIGNAL tout1 : INTEGER range 0 to 50000000; SIGNAL tout2 : INTEGE
16、R range 0 to 50000000; SIGNAL tout3 : INTEGER range 0 to 50000000; SIGNAL tout4 : INTEGER range 0 to 50000000; SIGNAL tout5 : INTEGER range 0 to 50000000; SIGNAL tout6 : INTEGER range 0 to 50000000; SIGNAL tout7 : INTEGER range 0 to 50000000; SIGNAL clk1 : STD_LOGIC; SIGNAL clk2 : STD_LOGIC; SIGNAL
17、clk3 : STD_LOGIC; SIGNAL clk4 : STD_LOGIC; SIGNAL clk5 : STD_LOGIC; SIGNAL clk6 : STD_LOGIC; SIGNAL clk7 : STD_LOGIC; BEGIN p0:PROCESS(cp,speed) -獲取時(shí)間頻率,每12個(gè)周期為對(duì)應(yīng)速率一個(gè)時(shí)間周期 BEGIN IF (cpEVENT and cp=1) THEN IF (tout1 = 12500000*12/(speed+40) THEN tout1= 0; clk1 =not clk1; ELSE tout1 = tout1 + 1; END IF
18、; END IF; END PROCESS; clk = clk1; p1:PROCESS(cp) -250 000分頻,每個(gè)時(shí)間周期檢測(cè)按鍵是否被按下 BEGIN IF (cpEVENT and cp=1) THEN IF (tout2 = 125000) THEN tout2= 0; clk2 =not clk2; ELSE tout2 = tout2 + 1; END IF; END IF; END PROCESS; clk1s = clk2; P2:PROCESS(cp) -80 000分頻,數(shù)碼管掃描,產(chǎn)生低頻音625赫茲 BEGIN IF (cpEVENT and cp=1) TH
19、EN IF (tout3 = 40000) THEN tout3= 0; clk3 =not clk3; ELSE tout3 = tout3 + 1; END IF; END IF; END PROCESS; clkmap = clk3; clkbeep3 = clk3; p3:PROCESS(cp) -產(chǎn)生高頻音1.25k赫茲 BEGIN IF (cpEVENT and cp=1) THEN IF (tout7 = 20000) THEN tout7= 0; clk7 =not clk7; ELSE tout7 = tout7 + 1; END IF; END IF; END PROCES
20、S; clkbeep1 = clk7; p4:PROCESS(cp) -產(chǎn)生中頻音1k赫茲 BEGIN IF (cpEVENT and cp=1) THEN IF (tout5 = 25000) THEN tout5= 0; clk5 =not clk5; ELSE tout5 = tout5 + 1; END IF; END IF; END PROCESS; clkbeep2 = clk5; clkcount = clk4; END a;速度設(shè)置vsetLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY vset IS PORT (clk1s,bu
21、tton1,button2: IN STD_LOGIC; speed : OUT INTEGER range 0 to 80);END vset; ARCHITECTURE a OF vset IS SIGNAL tspeed1 : INTEGER range 0 to 80; SIGNAL ctime1 : INTEGER range 0 to 100:=0; SIGNAL ctime2 : INTEGER range 0 to 100:=0; SIGNAL ctime1s : INTEGER range 0 to 1000:=0; SIGNAL ctime2s : INTEGER rang
22、e 0 to 1000:=0; BEGINPROCESS(clk1s) -檢測(cè)是毛刺還是按鍵被按下,當(dāng)ctime大于5,即大于50毫秒,則按鍵被按下 BEGIN if(clk1sevent and clk1s=1)then if(button1=1)then if(ctime1=1000)then ctime1=1000; else ctime1 = ctime1 + 1; end if; elsif(button1=0) then ctime1=0; else ctime1=0; end if; if(button2=1)then if(ctime2=1000)then ctime2=100
23、0; else ctime2 = ctime2 + 1; end if; elsif(button2=0) then ctime2=0; else ctime210)then if(button1=0)then if(ctime1s30)then ctime1s=75)then tspeed1=80; else tspeed1 8)then ctime1s=80)then tspeed1=80; else tspeed1 = tspeed1 + 1; end if; end if; else ctime1s10)then if(button2=0)then if(ctime2s30)then
24、ctime2s= 0; if(tspeed15)then tspeed1=0; else tspeed1 8)then ctime2s= 0; if(tspeed11)then tspeed1=0; else tspeed1 = tspeed1 -1; end if; end if; else ctime2s= ctime2s + 1; end if; else tspeed1=tspeed1; end if; end if;END PROCESS;speed=tspeed1;END a;節(jié)拍設(shè)置jpsetLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE
25、 IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jpset IS PORT ( clk: in STD_LOGIC; button: IN STD_LOGIC; -改變節(jié)拍按鍵 button3: IN STD_LOGIC; -暫停按鍵 sigwait: out std_logic;-暫停信號(hào) jps : OUT INTEGER RANGE 0 TO 5);-節(jié)拍信號(hào)END jpset;ARCHITECTURE a OF jpset IS SIGNAL count : INTEGER RANGE 0 TO 5; SIGNAL buttonc : STD_LOGIC; SI
26、GNAL sigwaitn : STD_LOGIC; SIGNAL button3c : STD_LOGIC; SIGNAL resetmp1,resetmp2 : STD_LOGIC; SIGNAL resetmp3,resetmp4 : STD_LOGIC;BEGIN PROCESS(clk) -防抖處理 BEGIN IF (clkEVENT AND clk=0) THEN resetmp2= resetmp1; resetmp1= button; resetmp4= resetmp3; resetmp3= button3; END IF; END PROCESS; buttonc=clk
27、 AND resetmp1 AND (NOT resetmp2); button3c=clk AND resetmp3 AND (NOT resetmp4); PROCESS(buttonc,button3c) BEGIN if (buttoncevent and buttonc=1) then -計(jì)數(shù)改變對(duì)應(yīng)節(jié)拍信號(hào) if(count=5) then count=0; else count =count+1; end if; end if; if (button3cevent and button3c=1) then -按鍵每次被按下則取反,作為暫停信號(hào) sigwaitn = not sig
28、waitn; end if; END PROCESS ; sigwait = sigwaitn; jps = count;END a;數(shù)碼管顯示raLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ra IS -數(shù)碼管顯示 PORT(clkmap:IN STD_LOGIC; -掃描頻率 jps:IN INTEGER RANGE 0 TO 5; -節(jié)拍 speed:IN INTEGER range 0 to 80; -速度 smg
29、:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -控制數(shù)碼管顯示的數(shù)字 countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); -控制哪個(gè)數(shù)碼管顯示END ra;ARCHITECTURE a OF ra IS signal clktmp:std_logic; signal q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); signal count:STD_LOGIC_VECTOR(5 DOWNTO 0); signal cnt:INTEGER range 0 to 5;BEGIN p0:PROCESS(clkmap)
30、-計(jì)數(shù)使數(shù)碼管依次顯示 BEGIN if(clkmapevent and clkmap=1) then if(cnt=5) then cnt=0; else cntcountq_tempq_tempq_tempq_tempq_tempq_tempq_tempcountq_tempq_tempq_tempq_tempq_tempq_tempq_tempcount=110111;q_tempcountq_tempq_tempq_tempcount=111101;q_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempcount=111110;q_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_temp=0000000; END CASE; END CASE; END PROCESS; countout=count; smg=q_temp;END a;蜂鳴器fmqLibrary ieee; -蜂鳴器打節(jié)拍,二極管閃亮 Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity fmq isPort( sigwa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購(gòu)合同的變更程序3篇
- 采購(gòu)合同編碼的方法3篇
- 四年級(jí)數(shù)學(xué)(簡(jiǎn)便運(yùn)算)計(jì)算題專(zhuān)項(xiàng)練習(xí)與答案
- 采購(gòu)合同中的工程質(zhì)量控制措施規(guī)定3篇
- 采購(gòu)合同評(píng)審表的案例分析3篇
- 采購(gòu)合同管理中的合規(guī)性問(wèn)題3篇
- 采購(gòu)合同中的質(zhì)量爭(zhēng)議解決方式3篇
- 采購(gòu)合同預(yù)付款風(fēng)險(xiǎn)防控3篇
- 采購(gòu)合同和采購(gòu)訂單的管理與執(zhí)行3篇
- 采購(gòu)合同買(mǎi)賣(mài)合同的培訓(xùn)筆記3篇
- 2021-2022學(xué)年上海市金山區(qū)海棠小學(xué)牛津上海版(試用本)三年級(jí)上冊(cè)期末學(xué)業(yè)水平調(diào)研英語(yǔ)試卷
- 美食文創(chuàng)計(jì)劃書(shū)
- 江西省贛州市贛縣區(qū)2022-2023學(xué)年四年級(jí)上學(xué)期期末檢測(cè)英語(yǔ)試卷
- GB/T 43439-2023信息技術(shù)服務(wù)數(shù)字化轉(zhuǎn)型成熟度模型與評(píng)估
- 廢水處理系統(tǒng)點(diǎn)檢表
- 干濕球溫度濕度換算表
- 兒童英文自我介紹演講PPT模板(完整版)
- 請(qǐng)款單(可直接打印-標(biāo)準(zhǔn)模板)
- 最專(zhuān)業(yè)的無(wú)人機(jī)中文英語(yǔ)對(duì)應(yīng)詞匯
- 高中學(xué)生學(xué)籍表模板(范本)
- 消防驗(yàn)收常見(jiàn)問(wèn)題匯總
評(píng)論
0/150
提交評(píng)論