版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 1 緒論</b></p><p><b> 1.1設(shè)計(jì)目的</b></p><p> 本次設(shè)計(jì)的目的就是在掌握EDA實(shí)驗(yàn)開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),加深對(duì)計(jì)算機(jī)體系結(jié)構(gòu)的理解。通過學(xué)習(xí)的VHDL語言結(jié)合電子電路的設(shè)計(jì)知識(shí)理論聯(lián)系實(shí)際,掌握所學(xué)的課程知識(shí),學(xué)習(xí)VHDL基本單元電路的綜合設(shè)計(jì)應(yīng)用。通過對(duì)
2、實(shí)用數(shù)字鐘的設(shè)計(jì),鞏固和綜合運(yùn)用計(jì)算機(jī)原理的基本理論和方法,理論聯(lián)系實(shí)際,提高設(shè)計(jì)、分析、解決計(jì)算機(jī)技術(shù)實(shí)際問題的獨(dú)立工作能力。</p><p><b> 1.2設(shè)計(jì)要求</b></p><p> ?。?)熟練掌握VHDL語言的結(jié)構(gòu)特點(diǎn)并能運(yùn)用到具體實(shí)際中。</p><p> ?。?)學(xué)會(huì)利用復(fù)雜的可編程邏輯器件進(jìn)行簡單的電子系統(tǒng)設(shè)計(jì)。<
3、;/p><p> ?。?)熟悉并掌握基于EDA實(shí)驗(yàn)開發(fā)系統(tǒng)設(shè)計(jì)實(shí)際問題的方法和步驟。</p><p> ?。?)通過設(shè)計(jì)過程提高自己運(yùn)用所學(xué)知識(shí)來分析解決問題的能力。</p><p><b> 1.3設(shè)計(jì)內(nèi)容</b></p><p> 本課程設(shè)計(jì)中使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIO
4、SII-EP2C35開發(fā)板上的資源和QuartusII軟件,實(shí)現(xiàn)一個(gè)多功能數(shù)字時(shí)鐘。本設(shè)計(jì)的任務(wù)要求顯示格式為 小時(shí)-分鐘-秒鐘,整點(diǎn)報(bào)時(shí),報(bào)時(shí)時(shí)間為10秒,即從整點(diǎn)前10秒鐘開始進(jìn)行報(bào)時(shí)提示,喇叭開始發(fā)聲,直到過整點(diǎn)時(shí),在 5秒LED開始閃爍,過整點(diǎn)后,停止閃爍。系統(tǒng)時(shí)鐘選擇時(shí)鐘模塊的10KHz,要得到1Hz時(shí)鐘信號(hào),必須對(duì)系統(tǒng)時(shí)鐘進(jìn)行10,000次分頻。調(diào)整時(shí)間的的按鍵用按鍵模塊的S1和S2,S1調(diào)節(jié)小時(shí),每按下一次,小時(shí)增加一個(gè)小
5、時(shí),S2調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用S8按鍵作為系統(tǒng)時(shí)鐘復(fù)位,復(fù)位后全部顯示00-00-00。擴(kuò)展內(nèi)容:用16*16點(diǎn)陣顯示實(shí)現(xiàn)日期的動(dòng)態(tài)顯示用4×4鍵盤陣列鍵盤替換按鍵實(shí)現(xiàn)日期、時(shí)鐘的調(diào)整,用液晶顯示模塊日期、時(shí)間的顯示。</p><p><b> 1.4設(shè)計(jì)環(huán)境</b></p><p> 本次課題設(shè)計(jì)方要用到的開發(fā)環(huán)境是Altera公
6、司的EDA設(shè)計(jì)工具軟件QuartusII。</p><p> Altera公司的工作與EDA廠家緊密結(jié)合,使QuartusII軟件可以與其它工業(yè)標(biāo)準(zhǔn)的設(shè)計(jì)輸入、綜合和校驗(yàn)工具相連接。設(shè)計(jì)者可以使用Altera或標(biāo)準(zhǔn)EDA輸入工具進(jìn)行設(shè)計(jì),使用QuartusII編譯器對(duì)Altera器件的設(shè)計(jì)進(jìn)行編譯,并使用Altera或其它EDA校驗(yàn)工具進(jìn)行仿真。目前,QuartusII支持與Cadence,Mentor Gra
7、phics, Synopsys, Viewlogic等EDA工具接口。</p><p> QuartusII的設(shè)計(jì)輸入、處理和校驗(yàn)功能都集中在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動(dòng)態(tài)調(diào)試,縮短開發(fā)周期。</p><p> QuartusII軟件支持多種硬件描述語言設(shè)計(jì)輸入,包括VHDL,Verilog HDL和Altera自己的硬件描述語言AHDL。</p><p>
8、 QuartusII軟件提供豐富的庫單元供設(shè)計(jì)調(diào)用,其中包括74系列的全部器件和一些基本的邏輯門,多種特殊的邏輯宏功能(Macro-Function)以及新型的參數(shù)化的兆功能(Mage-Function).調(diào)用庫單元進(jìn)行設(shè)計(jì),可以大大減輕工作量。</p><p> 2 VHDL簡介 </p><p> 2.1VHDL硬件描述語言簡介</p>
9、<p> 模塊是VHDL的基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。一個(gè)設(shè)計(jì)的結(jié)構(gòu)可使用開關(guān)級(jí)原語、門級(jí)原語和用戶定義的原語方式描述; 設(shè)計(jì)的數(shù)據(jù)流行為使用連續(xù)賦值語句進(jìn)行描述; 時(shí)序行為使用過程結(jié)構(gòu)描述。一個(gè)模塊可以在另一個(gè)模塊中使用。</p><p> 說明部分用于定義不同的項(xiàng),例如模塊描述中使用的寄存器和參數(shù)。語句定義設(shè)計(jì)的功能和結(jié)構(gòu)。說明部分和語句可以散布在模
10、塊中的任何地方;但是變量、寄存器、線網(wǎng)和參數(shù)等的說明部分必須在使用前出現(xiàn)。為了使模塊描述清晰和具有良好的可讀性, 最好將所有的說明部分放在語句前。本書中的所有實(shí)例都遵守這一規(guī)范。</p><p> 在模塊中,可用下述方式描述一個(gè)設(shè)計(jì):</p><p> (1) 數(shù)據(jù)流方式;</p><p><b> (2) 行為方式;</b></p
11、><p><b> (3) 結(jié)構(gòu)方式;</b></p><p> (4) 上述描述方式的混合。</p><p> VHDL模型中的所有時(shí)延都根據(jù)時(shí)間單位定義。 </p><p> 在順序過程中出現(xiàn)的語句是過程賦值模塊化的實(shí)例。模塊化過程賦值在下一條語句執(zhí)行前完成執(zhí)行。過程賦值可以有一個(gè)可選的時(shí)延。</p>
12、<p> 時(shí)延可以細(xì)分為兩種類型:</p><p> (1) 語句間時(shí)延: 這是時(shí)延語句執(zhí)行的時(shí)延。</p><p> (2) 語句內(nèi)時(shí)延: 這是右邊表達(dá)式數(shù)值計(jì)算與左邊表達(dá)式賦值間的時(shí)延。</p><p> 在VHDL中可使用如下方式描述結(jié)構(gòu):</p><p> (1) 內(nèi)置門原語(在門級(jí));</p>
13、<p> (2) 開關(guān)級(jí)原語(在晶體管級(jí));</p><p> (3) 用戶定義的原語(在門級(jí));</p><p> (4) 模塊實(shí)例 (創(chuàng)建層次結(jié)構(gòu))。</p><p> 3 各模塊電路及其簡介</p><p><b> 3.1 分頻器模塊</b></p><p> 圖3.
14、1 分頻器模塊</p><p> 因?yàn)楸緦?shí)驗(yàn)選用頻率為10KHZ,對(duì)于秒表的計(jì)時(shí)和進(jìn)行數(shù)碼管的動(dòng)態(tài)掃描來說,頻率都太大了,因此要將10KHz進(jìn)行分頻處理,本次設(shè)計(jì)將分成1Hz頻率。</p><p> 3.2 控制調(diào)節(jié)模塊</p><p> 圖3.2 控制調(diào)節(jié)模塊</p><p> 本模塊用于時(shí)間與日期的切換與時(shí)間的調(diào)節(jié)、日期的調(diào)節(jié)以及
15、復(fù)位調(diào)節(jié),其中K1用于時(shí)間與日期的切換,S1、S2用于時(shí)間的調(diào)節(jié),S3、S4、S5用于日期的調(diào)節(jié),最后S8為復(fù)位按鍵。</p><p><b> 3.3 報(bào)警模塊</b></p><p><b> 圖3.3 報(bào)警模塊</b></p><p> 報(bào)警模塊中有兩個(gè)報(bào)警輸出,其一為蜂鳴器,在整點(diǎn)前十秒開始發(fā)聲;其二為LED
16、燈顯示輸出,在最后5秒按照一定的規(guī)律亮燈。本模塊受到前一模塊輸出分、秒的控制。</p><p> 3.4 數(shù)碼管顯示模塊</p><p> 圖3.4 數(shù)碼管顯示模塊</p><p> 很顯然,此模塊是用來進(jìn)行數(shù)碼管顯示的,先進(jìn)行動(dòng)態(tài)掃描,然后將程序中要求輸出的部分通過7段數(shù)碼管顯示出來。其中K1用于控制顯示部分是日期還是時(shí)間。比之于靜態(tài)顯示,動(dòng)態(tài)顯示有著不可替
17、代的優(yōu)點(diǎn):占用數(shù)據(jù)線少,功耗</p><p><b> 小。</b></p><p> 3.5 16*16點(diǎn)陣控制模塊</p><p> 圖3.5 16*16點(diǎn)陣控制模塊</p><p> 本模塊用于控制后面的16*16點(diǎn)陣顯示模塊,其中keyc用于控制點(diǎn)陣的行掃描,S為4根數(shù)據(jù)總線,用于控制點(diǎn)陣數(shù)據(jù)的動(dòng)態(tài)顯示。
18、</p><p> 3.6 16*16點(diǎn)陣顯示模塊</p><p> 圖3.6 16*16點(diǎn)陣顯示模塊</p><p> 該模塊用于滿足實(shí)驗(yàn)內(nèi)容中用16*16點(diǎn)陣動(dòng)態(tài)顯示日期的要求??梢钥闯?,輸出為每一行的數(shù)據(jù),通過動(dòng)態(tài)掃描之后就可以動(dòng)態(tài)的顯示所有的16行數(shù)據(jù)。</p><p><b> 4 設(shè)計(jì)步驟</b>&l
19、t;/p><p><b> 4.1新建一個(gè)工程</b></p><p> ?。?)打開Quartus II 12.1sp1仿真軟件,點(diǎn)擊File=>New Project Wizard按鈕創(chuàng)建一個(gè)新的工程。彈出如圖所示對(duì)話框:</p><p> ?。?)再點(diǎn)擊Next按鈕出現(xiàn)下一對(duì)話框并將工程名和文件名都命名為zjh:</p>
20、<p> ?。?)然后再點(diǎn)擊Next按鈕出現(xiàn)下一對(duì)話框?qū)amily設(shè)置為cycloneIII,將Package設(shè)置為FBGA,將Picount設(shè)置為780,將Speed grade設(shè)置為8并選擇EP3C80F780C8器件,如圖所示:</p><p> ?。?)最后點(diǎn)擊Next=>Finish按鈕完成新工程的創(chuàng)建。</p><p> 4.2新建一個(gè)VHDL文件<
21、/p><p> 點(diǎn)擊File=>New按鈕出現(xiàn)如圖所示對(duì)話框:</p><p> 選擇VHDL File完成文件創(chuàng)建,創(chuàng)建完成后如圖所示:</p><p> 4.3VHDL程序的編譯及仿真</p><p> 4.3.1VHDL程序的編譯</p><p> 將編寫好的符合實(shí)驗(yàn)要求的VHDL程序復(fù)制在上圖所示的
22、對(duì)話框內(nèi),然后點(diǎn)擊Processing=>Start Compilation按鈕開始進(jìn)行編譯,編譯完成并確保程序無誤后開始進(jìn)行管腳分配。</p><p><b> 4.3.2管腳分配</b></p><p> ?。?)點(diǎn)擊Assignments=>Assignments Editor按鈕出現(xiàn)如圖所示對(duì)話框:</p><p> 再
23、點(diǎn)擊List、>>、OK按鈕出現(xiàn)如圖所示管腳分配對(duì)話框:</p><p> 然后按如下表所示的管腳順序進(jìn)行分配:</p><p> 分配完成后再進(jìn)行一次編譯以使管腳分配生效。</p><p> 4.3.3下載與仿真</p><p> 用下載線將電腦USB接口和試驗(yàn)箱VGA接口相連接,點(diǎn)擊Tools=>Programm
24、er按鈕將Output File內(nèi)的文件添加進(jìn)去,再點(diǎn)擊Start按鈕將結(jié)果下載到試驗(yàn)箱內(nèi)。</p><p> 觀察并操作試驗(yàn)箱看仿真結(jié)果能否滿足數(shù)字時(shí)鐘的設(shè)計(jì)需求。</p><p><b> 5 心得與體會(huì)</b></p><p> 這次的EDA課程設(shè)計(jì)是我大學(xué)的第三次課程設(shè)計(jì),由于剛開始設(shè)計(jì)思路不清晰,對(duì)Quartus II 12.1
25、sp1仿真軟件的運(yùn)用也不熟練而且相關(guān)的知識(shí)準(zhǔn)備也不充分,所以拿到設(shè)計(jì)題目后感覺不知所措,不知道如何開始。但是通過一段時(shí)間的查閱資料和請教同學(xué)老師我發(fā)現(xiàn)設(shè)計(jì)多功能數(shù)字時(shí)鐘也并不十分困難,在他們的幫助與指導(dǎo)下我的課程設(shè)計(jì)也就順利的一步步展開。</p><p> 通過這次課程設(shè)計(jì)讓我體會(huì)到在實(shí)際的操作過程中,要把理論中所學(xué)的知識(shí)靈活地運(yùn)用起來,在程序調(diào)試中會(huì)遇到各種各樣的問題,而耐心就是我們最好的幫手,遇事不能急、不
26、能慌,慢慢分析才能解決問題。這次課程設(shè)計(jì)提高了我解決問題的能力,使我學(xué)會(huì)了在設(shè)計(jì)中怎樣去查找問題,然后怎樣解決問題。</p><p> 這次課程設(shè)計(jì)讓我可以熟練的掌握了Quartus II 12.1sp1仿真軟件的操作,也了解了如何運(yùn)用VHDL語言和FPGA芯片去解決實(shí)際問題,總之通過這次課程設(shè)計(jì)自己還是有了不小的收獲與提高。</p><p><b> 6 參考文獻(xiàn)</
27、b></p><p> 1 《SOPCIIEDA實(shí)驗(yàn)指導(dǎo)書》(第二版)</p><p> 2 《SOPCII使用手冊》(第二版)</p><p> 3 http://jpkc.hdu.edu.cn/elec/eda/edanew_m/</p><p> 4 《EDA技術(shù)基礎(chǔ)》. 譚會(huì)生編著. 湖南大學(xué)出版社,2004<
28、/p><p> 5 《EDA技術(shù)實(shí)用教程》(第三版),潘松、黃繼業(yè)編著 ,科學(xué)出版社 ,2010</p><p><b> 7附錄</b></p><p> 附錄一 VHDL程序清單</p><p> library ieee;</p><p> use ieee.std_logic_116
29、4.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> --------------------------------------------------------------------</p><
30、p> entity zjh is</p><p> port( Clk : in std_logic; --時(shí)鐘輸入</p><p> S8 : in std_logic; --復(fù)位輸入</p><p> S1,S2 : in std_logic; --Change Hour, Minut
31、e</p><p> S3,S4,S5 : in std_logic; --Change Year, Month and Day</p><p> spk : out std_logic; --蜂鳴器</p><p> led : out std_logic_vector(3 downto 0); --整點(diǎn)輸
32、報(bào)時(shí)輸出</p><p> Display : out std_logic_vector(7 downto 0); --七段碼管顯示輸出</p><p> SEG_SEL : buffer std_logic_vector(2 downto 0); --七段碼管掃描驅(qū)動(dòng)</p><p> keyc : out std_l
33、ogic_vector(3 downto 0);</p><p> keyr : out std_logic_vector(15 downto 0);</p><p> K1 : in std_logic --顯示切換</p><p><b> ); </b></p>&l
34、t;p><b> end zjh;</b></p><p> --------------------------------------------------------------------</p><p> architecture behave of zjh is</p><p> signal Disp_Temp
35、 : integer range 0 to 15;</p><p> signal Disp_Decode : std_logic_vector(7 downto 0);</p><p> signal SEC1,SEC10 : integer range 0 to 9; </p><p> signal MIN1,MIN10 : inte
36、ger range 0 to 9;</p><p> signal HOUR1,HOUR10 : integer range 0 to 9;</p><p> signal Year1,Year10 : integer range 0 to 9;</p><p> signal Month1,Month10: integer range 0 to 9;&l
37、t;/p><p> signal Day1,Day10 : integer range 0 to 9;</p><p> signal Music_Count : std_logic_vector(2 downto 0);</p><p> signal Clk_Count1 : std_logic_vector(13 downto 0); -
38、-產(chǎn)生1Hz時(shí)鐘的分頻計(jì)數(shù)器</p><p> signal Clk1Hz : std_logic;</p><p> signal led_count : std_logic_vector(2 downto 0);</p><p> signal led_display : std_logic_vector(3 downto 0);&l
39、t;/p><p> signal cdount : std_logic_vector(3 downto 0);</p><p> signal dount : std_logic_vector(12 downto 0);</p><p> signal s : std_logic_vector(3 downto
40、 0);</p><p> signal m,d,y : integer range 0 to 31;</p><p><b> begin</b></p><p> process(Clk) </p><p><b> begin</b></p><p
41、> if(Clk'event and Clk='1') then</p><p> if(Clk_Count1<10000) then</p><p> Clk_Count1<=Clk_Count1+1;</p><p><b> else </b></p><p>
42、Clk_Count1<="00000000000001";</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> Clk1Hz<=Clk_Count1(
43、13);</p><p> process(Clk1Hz,S8)</p><p><b> begin</b></p><p> if(S8='0') then --系統(tǒng)復(fù)位</p><p><b> SEC1<=0;</b></p><p&g
44、t;<b> SEC10<=0;</b></p><p><b> MIN1<=0;</b></p><p><b> MIN10<=0;</b></p><p><b> HOUR1<=0;</b></p><p> H
45、OUR10<=0;</p><p> Year10 <= 1;</p><p> Year1 <= 3;</p><p> Month10 <= 0;</p><p> Month1 <= 1;</p><p> Day10 <= 0;</p><p&g
46、t; Day1 <= 1;</p><p> elsif(Clk1Hz'event and Clk1Hz='1') then --正常運(yùn)行 </p><p> if (K1= '1') then</p><p> if(S3='0') then --調(diào)節(jié)年&
47、lt;/p><p> if(Year1=9) then</p><p><b> Year1<=0;</b></p><p> Year10<=Year10+1;</p><p> elsif(Year10=9 and Year1=9) then</p><p><b>
48、 Year1<=0;</b></p><p> Year10<=0;</p><p><b> else </b></p><p> Year1<=Year1+1;</p><p><b> end if;</b></p><p>&l
49、t;b> end if;</b></p><p> if(S4='0') then --調(diào)節(jié)月</p><p> if(Month1=9) then</p><p> Month1<=0;</p><p> Month10<=Month10+1;</p><p&g
50、t; elsif(Month10=1 and Month1=2) then</p><p> Month1<=0;</p><p> Month10<=0;</p><p> Year1<=Year1+1;</p><p><b> else </b></p><p>
51、 Month1<=Month1+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if(S5='0') then --調(diào)節(jié)日</p><p> if(Day1=9) then</p&g
52、t;<p><b> Day1<=0;</b></p><p> Day10<=Day10+1;</p><p> elsif(Day10=3 and Day1=1) then</p><p><b> Day1<=0;</b></p><p><b&g
53、t; Day10<=0;</b></p><p> Month1<=Month1+1;</p><p><b> else </b></p><p> Day1<=Day1+1;</p><p><b> end if;</b></p><
54、p><b> end if;</b></p><p> elsif (K1 = '0') then</p><p> if(S1='0') then --調(diào)節(jié)小時(shí)</p><p> if(HOUR1=9) then</p><p><b> HOUR1<
55、=0;</b></p><p> HOUR10<=HOUR10+1;</p><p> elsif(HOUR10=2 and HOUR1=3) then</p><p><b> HOUR1<=0;</b></p><p> HOUR10<=0;</p><p&g
56、t; Day1<=Day1+1;</p><p><b> else </b></p><p> HOUR1<=HOUR1+1;</p><p><b> end if;</b></p><p> elsif(S2='0') then --調(diào)節(jié)分鐘</p
57、><p> if(MIN1=9) then</p><p><b> MIN1<=0;</b></p><p> if(MIN10=5) then</p><p><b> MIN10<=0;</b></p><p> HOUR1<=HOUR1+1;&
58、lt;/p><p><b> else </b></p><p> MIN10<=MIN10+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> MIN1<=MIN1+1
59、;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> if(SEC1=9) then</p><p><b> SE
60、C1<=0;</b></p><p> if(SEC10=5) then</p><p><b> SEC10<=0;</b></p><p> if(MIN1=9) then</p><p><b> MIN1<=0;</b></p><p
61、> if(MIN10=5) then</p><p><b> MIN10<=0;</b></p><p> if (HOUR10 >= 2 and HOUR1 >= 3) then</p><p> HOUR10 <= 0;</p><p> HOUR1 <= 0;<
62、/p><p> -- Day += 1;</p><p> if (Day10 = 3 and Day1 = 0) then</p><p> Day10 <= 0;</p><p> Day1 <= 1;</p><p> -- Month += 1;</p><p> i
63、f (Month10 = 1 and Month1 = 2) then</p><p> Month10 <= 0;</p><p> Month1 <= 1;</p><p> -- Year += 1;</p><p> if (Year10 = 9 and Year1 = 9) then</p><
64、;p> Year10 <= 0; </p><p> Year1 <= 0;</p><p><b> end if;</b></p><p> if (Year1 < 9) then</p><p> Year1 <= Year1 + 1;</p><p>
65、; elsif (Year1 = 9) then</p><p> Year10 <= Year10 + 1;</p><p> Year1 <= 0;</p><p><b> end if;</b></p><p><b> end if;</b></p>&
66、lt;p> if (Month1 < 9) then</p><p> Month1 <= Month1 + 1;</p><p> elsif (Month1 = 9) then</p><p> Month10 <= Month10 + 1;</p><p> Month1 <= 0;</p&
67、gt;<p><b> end if;</b></p><p><b> end if;</b></p><p> if (Day1 < 9) then</p><p> Day1 <= Day1 + 1;</p><p> elsif (Day1 = 9) th
68、en</p><p> Day10 <= Day10 + 1;</p><p> Day1 <= 0;</p><p><b> end if;</b></p><p> elsif (HOUR1 < 9) then</p><p> HOUR1 <= HOUR1
69、 + 1;</p><p> elsif (HOUR1 = 9) then</p><p> HOUR1 <= 0;</p><p> HOUR10 <= HOUR10 + 1;</p><p><b> end if;</b></p><p><b> else
70、</b></p><p> MIN10<=MIN10+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> MIN1<=MIN1+1;</p><p><b> end
71、 if;</b></p><p><b> else</b></p><p> SEC10<=SEC10+1;</p><p><b> end if;</b></p><p><b> else </b></p><p>
72、SEC1<=SEC1+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process; </p><p> process(Clk)</p><p><b> beg
73、in</b></p><p> if(Clk'event and Clk='1') then</p><p> Music_Count<=Music_Count+1; </p><p> if(MIN10=5 and MIN1=9 and SEC10=5 and SEC1=0) then --在59分50
74、秒開始提示</p><p> if((SEC1 MOD 2)=0) then --在偶數(shù)秒開始發(fā)聲</p><p> SPK<=Music_Count(2); --嘀</p><p><b> else</b></p><p><b> SPK<='0
75、39;;</b></p><p><b> end if;</b></p><p> elsif(MIN10=0 and MIN1=0 and SEC10=0 and SEC1=0) then</p><p> SPK<=Music_Count(1); --嗒</p><p>
76、<b> else</b></p><p><b> SPK<='0';</b></p><p><b> end if;</b></p><p><b> end if; </b></p><p> end proces
77、s;</p><p> process(Clk)</p><p><b> begin</b></p><p> if(Clk1hz'event and Clk1hz='1') then</p><p> if(MIN10=5 and MIN1=9 and SEC10=5 and SE
78、C1>4) then --在59分55秒開始提示</p><p> led_Count<=led_Count+1; </p><p><b> else</b></p><p> led_count<="000";</p><p><b> end if;&l
79、t;/b></p><p><b> end if; </b></p><p> end process;</p><p> process(led_count)</p><p><b> begin</b></p><p> case (led_count
80、) is</p><p> when "000"=>led_display<="0000";</p><p> when "001"=>led_display<="1001";</p><p> when "010"=>led_di
81、splay<="0110";</p><p> when "011"=>led_display<="1010";</p><p> when "100"=>led_display<="0101";</p><p> when &qu
82、ot;101"=>led_display<="1111";</p><p> when others=>led_display<="0000";</p><p> end case; </p><p> led<=led_display;</p><p>
83、 end process;</p><p> process(SEG_SEL) </p><p><b> begin</b></p><p> if (K1 = '1') then</p><p> case (SEG_SEL+1) is</p><p>
84、when "000"=>Disp_Temp<=Year10;</p><p> when "001"=>Disp_Temp<=Year1;</p><p> when "010"=>Disp_Temp<=10;</p><p> when "011&quo
85、t;=>Disp_Temp<=Month10;</p><p> when "100"=>Disp_Temp<=Month1;</p><p> when "101"=>Disp_Temp<=10;</p><p> when "110"=>Disp_Temp
86、<=Day10;</p><p> when "111"=>Disp_Temp<=Day1;</p><p><b> end case;</b></p><p> elsif (K1 = '0') then</p><p> case (SEG_SEL+1)
87、 is</p><p> when "000"=>Disp_Temp<=HOUR10;</p><p> when "001"=>Disp_Temp<=HOUR1;</p><p> when "010"=>Disp_Temp<=10;</p><
88、;p> when "011"=>Disp_Temp<=MIN10;</p><p> when "100"=>Disp_Temp<=MIN1;</p><p> when "101"=>Disp_Temp<=10;</p><p> when "1
89、10"=>Disp_Temp<=SEC10;</p><p> when "111"=>Disp_Temp<=SEC1;</p><p><b> end case;</b></p><p><b> end if;</b></p><p>
90、; end process;</p><p> process(Clk)</p><p><b> begin</b></p><p> if(Clk'event and Clk='1') then --掃描累加 </p><p> SEG_SEL<=SEG_SEL+1;&l
91、t;/p><p> Display<=Disp_Decode;</p><p><b> end if;</b></p><p> end process;</p><p> process(Disp_Temp) --顯示轉(zhuǎn)換</p><p><b> begin&
92、lt;/b></p><p> case Disp_Temp is</p><p> when 0=>Disp_Decode<="00111111"; --0</p><p> when 1=>Disp_Decode<="00000110"; --1</p><p
93、> when 2=>Disp_Decode<="01011011"; --2</p><p> when 3=>Disp_Decode<="01001111"; --3</p><p> when 4=>Disp_Decode<="01100110"; --4</p
94、><p> when 5=>Disp_Decode<="01101101"; --5</p><p> when 6=>Disp_Decode<="01111101"; --6</p><p> when 7=>Disp_Decode<="00000111";
95、 --7</p><p> when 8=>Disp_Decode<="01111111"; --8</p><p> when 9=>Disp_Decode<="01101111"; --9</p><p> when 10=>Disp_Decode<="0100
96、0000"; ---</p><p> when others=>Disp_Decode<="00000000"; --全滅</p><p><b> end case;</b></p><p> end process; </p><p> process(cl
97、k) --顯示時(shí)序控制 </p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> dount<=dount+1;</p><p> if dount=8191 then<
98、;/p><p> dount<="0000000000000";</p><p> if S=15 then</p><p> S<="0000";</p><p><b> else</b></p><p><b> s&l
99、t;=S+1;</b></p><p><b> end if;</b></p><p><b> s<=s+1;</b></p><p><b> else</b></p><p><b> s<=S;</b></
100、p><p><b> end if;</b></p><p> if cdount<15 then</p><p> cdount<=cdount+1;</p><p><b> else</b></p><p> cdount<="
101、0000";</p><p><b> end if;</b></p><p><b> end if;</b></p><p> keyc<=cdount;</p><p> end process;</p><p> process(s,c
102、dount) </p><p><b> begin</b></p><p> m<=Month10*10+Month1;</p><p> d<=Day10*10+Day1;</p><p> y<=year10*10+year1; &
103、lt;/p><p> if s="0000" then</p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111";--20</p><p> when "0001&quo
104、t;=>keyr<="1100111110011111";</p><p> when "0010"=>keyr<="1101011111101111";</p><p> when "0011"=>keyr<="1101101111110111";&
105、lt;/p><p> when "0100"=>keyr<="1101110111110111";</p><p> when "0101"=>keyr<="1101111011101111";</p><p> when "0110"=&g
106、t;keyr<="1101111100011111";</p><p> when "0111"=>keyr<="1111111111111111";</p><p> when "1000"=>keyr<="1111111111111111"; </
107、p><p> when "1001"=>keyr<="1111000000011111";</p><p> when "1010"=>keyr<="1110111111101111";</p><p> when "1011"=>ke
108、yr<="1101111111110111";</p><p> when "1100"=>keyr<="1101111111110111";</p><p> when "1101"=>keyr<="1101111111110111";</p>
109、<p> when "1110"=>keyr<="1110111111101111";</p><p> when "1111"=>keyr<="1111000000011111";</p><p> when others=>keyr<="11
110、11111111111111";</p><p><b> end case;</b></p><p> elsif s="0001" then</p><p><b> case y is</b></p><p><b> when 13=&g
111、t;</b></p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111";--13</p><p> when "0001"=>keyr<="1111111111011111
112、";</p><p> when "0010"=>keyr<="1111111111001111";</p><p> when "0011"=>keyr<="1100000000000111";</p><p> when "0100&
113、quot;=>keyr<="1111111111111111";</p><p> when "0101"=>keyr<="1111111111111111";</p><p> when "0110"=>keyr<="1111111111111111"
114、;;</p><p> when "0111"=>keyr<="1111111111111111";</p><p> when "1000"=>keyr<="1111111111111111";</p><p> when "1001"
115、=>keyr<="1110011111001111";</p><p> when "1010"=>keyr<="1101111111110111";</p><p> when "1011"=>keyr<="1101111111110111";<
116、;/p><p> when "1100"=>keyr<="1101111011110111";</p><p> when "1101"=>keyr<="1101111011110111";</p><p> when "1110"=>
117、keyr<="1110000100001111";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p&
118、gt;<b> end case;</b></p><p><b> when 14=></b></p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111";--14</
119、p><p> when "0001"=>keyr<="1111111111011111";</p><p> when "0010"=>keyr<="1111111111001111";</p><p> when "0011"=>ke
120、yr<="1100000000000111";</p><p> when "0100"=>keyr<="1111111111111111";</p><p> when "0101"=>keyr<="1111111111111111";</p>
121、<p> when "0110"=>keyr<="1111111111111111";</p><p> when "0111"=>keyr<="1111111111111111";</p><p> when "1000"=>keyr<
122、;="1111111111111111";</p><p> when "1001"=>keyr<="1111100111111111";</p><p> when "1010"=>keyr<="1111101011111111";</p><
123、;p> when "1011"=>keyr<="1111101100111111";</p><p> when "1100"=>keyr<="1111101111011111";</p><p> when "1101"=>keyr<=&qu
124、ot;1111101111101111";</p><p> when "1110"=>keyr<="1100000000000111";</p><p> when "1111"=>keyr<="1111101111111111";</p><p>
125、; when others=>keyr<="1111111111111111";</p><p><b> end case;</b></p><p><b> when 15=></b></p><p> case cdount is</p><p>
126、 when "0000"=>keyr<="1111111111111111";--15</p><p> when "0001"=>keyr<="1111111111011111";</p><p> when "0010"=>keyr<="
127、;1111111111001111";</p><p> when "0011"=>keyr<="1100000000000111";</p><p> when "0100"=>keyr<="1111111111111111";</p><p>
128、 when "0101"=>keyr<="1111111111111111";</p><p> when "0110"=>keyr<="1111111111111111";</p><p> when "0111"=>keyr<="1111
129、111111111111";</p><p> when "1000"=>keyr<="1111111111111111";</p><p> when "1001"=>keyr<="1110011100000111";</p><p> when
130、 "1010"=>keyr<="1101111110110111";</p><p> when "1011"=>keyr<="1101111110110111";</p><p> when "1100"=>keyr<="110111111
131、0110111";</p><p> when "1101"=>keyr<="1101111110110111";</p><p> when "1110"=>keyr<="1110000001110111";</p><p> when &quo
132、t;1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p><b> end case;</b></p><p><b> when
133、16=></b></p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111";--16</p><p> when "0001"=>keyr<="11111111110
134、11111";</p><p> when "0010"=>keyr<="1111111111001111";</p><p> when "0011"=>keyr<="1100000000000111";</p><p> when "
135、0100"=>keyr<="1111111111111111";</p><p> when "0101"=>keyr<="1111111111111111";</p><p> when "0110"=>keyr<="1111111111111111
136、";</p><p> when "0111"=>keyr<="1111111111111111";</p><p> when "1000"=>keyr<="1111111111111111";</p><p> when "1001&
137、quot;=>keyr<="1111000000011111";</p><p> when "1010"=>keyr<="1110111011101111";</p><p> when "1011"=>keyr<="1101111101110111"
138、;;</p><p> when "1100"=>keyr<="1101111101110111";</p><p> when "1101"=>keyr<="1101111101110111";</p><p> when "1110"
139、=>keyr<="1110000011001111";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p>&
140、lt;p><b> end case;</b></p><p><b> when 17=></b></p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111";--17
141、</p><p> when "0001"=>keyr<="1111111111011111";</p><p> when "0010"=>keyr<="1111111111001111";</p><p> when "0011"=&
142、gt;keyr<="1100000000000111";</p><p> when "0100"=>keyr<="1111111111111111";</p><p> when "0101"=>keyr<="1111111111111111";</
143、p><p> when "0110"=>keyr<="1111111111111111";</p><p> when "0111"=>keyr<="1111111111111111";</p><p> when "1000"=>ke
144、yr<="1111111111111111";</p><p> when "1001"=>keyr<="1111111111110111";</p><p> when "1010"=>keyr<="1111111111110111";</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)報(bào)告(多功能數(shù)字時(shí)鐘的設(shè)計(jì))
- eda課程設(shè)計(jì)---關(guān)于多功能數(shù)字時(shí)鐘的設(shè)計(jì)
- 多功能數(shù)字時(shí)鐘課程設(shè)計(jì)
- 多功能數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda_課程設(shè)計(jì)報(bào)告--數(shù)字時(shí)鐘設(shè)計(jì)
- eda課程設(shè)計(jì)--數(shù)字時(shí)鐘的設(shè)計(jì)
- eda課程設(shè)計(jì)——數(shù)字時(shí)鐘設(shè)計(jì)
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- 多功能時(shí)鐘課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)---數(shù)字時(shí)鐘(鬧鐘)
- 數(shù)字電路課程設(shè)計(jì)----多功能數(shù)字時(shí)鐘
- 數(shù)字電路課程設(shè)計(jì)-多功能數(shù)字時(shí)鐘設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告---數(shù)字時(shí)鐘倒計(jì)時(shí)
- eda實(shí)現(xiàn)多功能數(shù)字鐘課程設(shè)計(jì)
- 多功能數(shù)字時(shí)鐘 單片機(jī)課程設(shè)計(jì)
- 基于eda的多功能數(shù)字時(shí)鐘的設(shè)計(jì)與仿真【開題報(bào)告】
- eda多功能彩燈課程設(shè)計(jì)
- 數(shù)字電子技術(shù)課程設(shè)計(jì)--多功能時(shí)鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論