版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 在系統(tǒng)編程技術(shù) </p><p> 設(shè)計(jì)題目 VHDL秒表計(jì)時(shí)器 </p><p><b> 目錄</b></p><p><b> 1 引言1</b></p><p
2、> 1.1 課程設(shè)計(jì)的目的1</p><p> 1.2 課程設(shè)計(jì)的內(nèi)容1</p><p> 2 EDA、VHDL簡介1</p><p> 2.1 EDA技術(shù)1</p><p> 2.2 硬件描述語言——VHDL2</p><p><b> 3設(shè)計(jì)過程4</b><
3、;/p><p> 3.1 設(shè)計(jì)規(guī)劃4</p><p> 3.2各模塊的原理及其程序4</p><p> 3.2.1控制模塊5</p><p> 3.2.2時(shí)基分頻模塊5</p><p> 3.2.3計(jì)時(shí)模塊6</p><p> 3.2.4顯示模塊7</p>&l
4、t;p><b> 4系統(tǒng)仿真9</b></p><p><b> 結(jié)束語13</b></p><p><b> 致謝14</b></p><p><b> 參考文獻(xiàn)15</b></p><p><b> 附錄16<
5、/b></p><p><b> 1 引言</b></p><p> 在科技高度發(fā)展的今天,集成電路和計(jì)算機(jī)應(yīng)用得到了高速發(fā)展。尤其是計(jì)算機(jī)應(yīng)用的發(fā)展。它在人們?nèi)粘I钜阎饾u嶄露頭角。大多數(shù)電子產(chǎn)品多是由計(jì)算機(jī)電路組成,</p><p> 如:手機(jī)、mp3等。而且將來的不久他們的身影將會(huì)更頻繁的出現(xiàn)在我們身邊。各種家用電器多會(huì)實(shí)現(xiàn)微
6、電腦技術(shù)。電腦各部分在工作時(shí)多是一時(shí)間為基準(zhǔn)的。本文就是基于計(jì)算機(jī)電路的時(shí)鐘脈沖信號(hào)、狀態(tài)控制等原理設(shè)計(jì)出的數(shù)字秒表。秒表在很多領(lǐng)域充當(dāng)一個(gè)重要的角色。在各種比賽中對(duì)秒表的精確度要求很高,尤其是一些科學(xué)實(shí)驗(yàn)。他們對(duì)時(shí)間精確度達(dá)到了幾納秒級(jí)別。</p><p> 1.1 課程設(shè)計(jì)的目的</p><p> 本次設(shè)計(jì)的目的就是在掌握EDA實(shí)驗(yàn)開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對(duì)計(jì)算機(jī)
7、系統(tǒng)中時(shí)鐘控制系統(tǒng)進(jìn)一步了解,掌握狀態(tài)機(jī)工作原理,同時(shí)了解計(jì)算機(jī)時(shí)鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學(xué)的計(jì)算機(jī)組成與結(jié)構(gòu)課程理論知識(shí)時(shí)。通過對(duì)數(shù)字秒表的設(shè)計(jì),進(jìn)行理論與實(shí)際的結(jié)合,提高與計(jì)算機(jī)有關(guān)設(shè)計(jì)能力,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問題的能力。通過課程設(shè)計(jì)深入理解計(jì)算機(jī)結(jié)構(gòu)與控制實(shí)現(xiàn)的技術(shù),達(dá)到課程設(shè)計(jì)的目標(biāo)。</p><p> 1.2 課程設(shè)計(jì)的內(nèi)容</p><p> 利用VHDL
8、語言設(shè)計(jì)基于計(jì)算機(jī)電路中時(shí)鐘脈沖原理的數(shù)字秒表。該數(shù)字秒表能對(duì)</p><p> 0秒~59分59.99秒范圍進(jìn)行計(jì)時(shí),顯示最長時(shí)間是59分59秒。計(jì)時(shí)精度達(dá)到10ms。設(shè)計(jì)了復(fù)位開關(guān)和啟停開關(guān)。復(fù)位開關(guān)可以在任何情況下使用,使用以后計(jì)時(shí)器清零,并做好下一次計(jì)時(shí)的準(zhǔn)備。</p><p> 2 EDA、VHDL簡介</p><p><b> 2.1
9、EDA技術(shù)</b></p><p> EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計(jì)文件,自動(dòng)完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進(jìn)行三個(gè)方面的設(shè)計(jì)工作:IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。沒有EDA技
10、術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計(jì)制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對(duì)EDA技術(shù)提出新的要求。</p><p> 2.2 硬件描述語言——VHDL</p><p><b> ★ VHDL的簡介</b></p><p> VHDL語言是一種用于電路設(shè)計(jì)的高級(jí)語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供
11、美軍用來提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言 。但是,由于它在一定程度上滿足了當(dāng)時(shí)的設(shè)計(jì)需求,于是他在1987年成為A I/IEEE的標(biāo)準(zhǔn)(IEEE STD 1076-1987)。1993年更進(jìn)一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標(biāo)準(zhǔn)。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標(biāo)準(zhǔn)。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之
12、后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持
13、,在電子工程領(lǐng)域,已成為事</p><p> ★ VHDL語言的特點(diǎn)</p><p> VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),關(guān)于用VHDL和原理圖輸入進(jìn)行CPLD/FPGA設(shè)計(jì)的粗略比較:在設(shè)計(jì)中,如果采用原理圖輸入的設(shè)計(jì)方式是比較直觀的。你要設(shè)計(jì)的是什么,你就直接從庫中調(diào)出來用就行了。這樣比較符合人們的習(xí)慣。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以
14、直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。應(yīng)用VHDL進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的。</p><p> (1)與其他的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。</p><p> ?。?)VHDL豐富的仿真語句
15、和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。</p><p> (3)VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。</p><p> ?。?)對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合
16、和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表。</p><p> (5)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。</p><p> ★ VHDL的設(shè)計(jì)流程</p><p> 它主要包括以下幾個(gè)步驟:</p><p><b> 1.文本編輯:&
17、lt;/b></p><p> 用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件</p><p><b> 2.功能仿真:</b></p><p> 將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡單的設(shè)計(jì)可以跳過這一步,只在布
18、線完成以后,進(jìn)行時(shí)序仿真)</p><p><b> 3.邏輯綜合:</b></p><p> 將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語言綜合成最簡的布爾表達(dá)式。邏輯綜合軟件會(huì)生成.edf或.edif 的EDA工業(yè)標(biāo)準(zhǔn)文件。</p><p><b> 4.布局布線:</b></p><p>
19、 將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放PLD/FPGA內(nèi)。</p><p><b> 5.時(shí)序仿真:</b></p><p> 需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真) 通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。</p><p><b> 6.器
20、件編程</b></p><p><b> 3設(shè)計(jì)過程</b></p><p><b> 3.1 設(shè)計(jì)規(guī)劃</b></p><p> 本系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方案,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖3-1所示,它主要由控制模塊、時(shí)基分頻模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊分別完成計(jì)時(shí)過程的控制功能、計(jì)時(shí)
21、功能與顯示功能。</p><p> 各模塊的原理及其程序</p><p> 本系統(tǒng)設(shè)計(jì)由控制模塊、時(shí)基分頻模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊實(shí)現(xiàn)秒表不同的功能 。圖3-2就是整個(gè)系統(tǒng)原理圖。</p><p><b> 3.2.1控制模塊</b></p><p> 計(jì)時(shí)模塊的作用是針對(duì)計(jì)時(shí)過程進(jìn)行控制。計(jì)時(shí)
22、控制模塊可用倆個(gè)按鈕來完成秒表的啟動(dòng)、停止和復(fù)位。部分源程序如下:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CTRL IS</p&g
23、t;<p> PORT( CLR,CLK,SP:IN STD_LOGIC;</p><p> EN :OUT STD_LOGIC);</p><p> COM:PROCESS(SP,CURRENT_STATE)</p><p><b> BEGIN</b></p><p><b> EN
24、D IF;</b></p><p> END PROCESS;</p><p> END BEHAVE;</p><p> 3.2.2時(shí)基分頻模塊</p><p> 時(shí)基分頻模塊的作用把輸入時(shí)鐘信號(hào)變?yōu)榉诸l輸出信號(hào)。源程序:</p><p> LIBRARY IEEE;</p>&l
25、t;p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CB10 IS</p><p> PORT( CLK: IN STD_LOGIC;</p><p> CO : OUT STD_LOGIC);&
26、lt;/p><p><b> END CB10;</b></p><p> ARCHITECTURE ART OF CB10 IS</p><p> SIGNAL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b> BEGIN</b></p&
27、gt;<p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF RISING_EDGE(CLK)THEN</p><p> IF COUNT="1001"THEN</p><p> COUNT<="0000&quo
28、t;;</p><p><b> CO<='1';</b></p><p><b> ELSE</b></p><p> COUNT<=COUNT+1;</p><p><b> CO<='0';</b></p&g
29、t;<p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p><b> 3.2.3計(jì)時(shí)模塊<
30、/b></p><p> 計(jì)時(shí)模塊執(zhí)行計(jì)時(shí)功能,計(jì)時(shí)方法和計(jì)算機(jī)一樣是對(duì)標(biāo)準(zhǔn)時(shí)鐘脈沖計(jì)數(shù)。他是由四</p><p> 個(gè)十進(jìn)制計(jì)數(shù)器和倆個(gè)六進(jìn)制計(jì)數(shù)器構(gòu)成,其中毫秒位、十毫秒位、秒位和分位采用十進(jìn)制計(jì)數(shù)器,十秒位和十分位采用六進(jìn)制計(jì)數(shù)器。源程序:</p><p><b> ①.十進(jìn)制計(jì)數(shù)器</b></p><p&
31、gt; LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CDU10 IS</p><p> PORT( CLK:IN STD_LOGIC;</p>
32、<p> CLR,EN:IN STD_LOGIC;</p><p> CN :OUT STD_LOGIC;</p><p> COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END CDU10;</p><p><b> END IF;</b>&
33、lt;/p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p><b> ②六進(jìn)制計(jì)數(shù)器</b></p><p> LIBRARY IEEE;&l
34、t;/p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p&
35、gt; END PROCESS;</p><p><b> END ART;</b></p><p><b> ?、塾?jì)數(shù)器</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
36、; USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY COUNT IS</p><p><b> END ART;</b></p><p><b> 3.2.4顯示模塊</b></p><p> 計(jì)時(shí)顯示電路的作用是將計(jì)時(shí)值在LED數(shù)碼管上顯
37、示出來。計(jì)時(shí)電路產(chǎn)生的值經(jīng)過BCD七段譯碼后,驅(qū)動(dòng)LED數(shù)碼管。計(jì)時(shí)顯示電路的實(shí)現(xiàn)方案采用掃描顯示。部分源程序:</p><p><b> ?、贁?shù)據(jù)選擇器</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IE
38、EE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY MULX IS</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MS:IN STD_LOGIC_
39、VECTOR(3 DOWNTO 0);</p><p> S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p
40、> M_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> M_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> OUTBCD:OUT STD_LOGIC_VECTOR(3
41、 DOWNTO 0);</p><p> SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b> END MULX;</b></p><p> ARCHITECTURE ART OF MULX IS</p><p> SIGNAL COUNT:STD_LOGIC_V
42、ECTOR(3 DOWNTO 0);</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p
43、><b> ?、贐CD七段譯碼器</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY BCD7 IS</p&
44、gt;<p><b> PORT( </b></p><p> BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b> END BCD7;</b></p&g
45、t;<p> ARCHITECTURE ART OF BCD7 IS</p><p><b> BEGIN</b></p><p> LED<="1111110"WHEN BCD ="0000" ELSE</p><p> "0110000"WHEN BCD
46、 ="0001" ELSE</p><p> "1101101"WHEN BCD ="0010" ELSE</p><p> "1111001"WHEN BCD ="0011" ELSE</p><p> "0110011"WHEN BCD
47、="0100" ELSE</p><p> "1011011"WHEN BCD ="0101" ELSE</p><p> "1011111"WHEN BCD ="0110" ELSE</p><p> "1110000"WHEN BCD =
48、"0111" ELSE</p><p> "1111111"WHEN BCD ="1000" ELSE</p><p> "1111011"WHEN BCD ="1001" ELSE</p><p> "0000000";</p>
49、<p><b> END ART;</b></p><p><b> 系統(tǒng)仿真</b></p><p> 時(shí)基分頻模塊的仿真(如圖 4-1所示)</p><p> 分析:CLK為時(shí)鐘信號(hào)的輸入 ,CO為分頻輸出信號(hào)。</p><p> 控制模塊的仿真(如圖 4-2所示)<
50、;/p><p> 分析:CLK、CLR和SP為輸入信號(hào),EN為輸出信號(hào)。</p><p> 計(jì)時(shí)電路模塊的仿真(如圖 4-3~圖4-5所示)</p><p> 十進(jìn)制計(jì)數(shù)器的仿真(如圖4-3所示)</p><p> 六進(jìn)制計(jì)數(shù)器的仿真(如圖4-4所示)</p><p> 計(jì)數(shù)器的仿真(如圖4-5所示)</p
51、><p> 分析:clk為時(shí)鐘脈沖脈沖,s_1ms是毫秒計(jì)數(shù)值,s_10ms是十毫秒計(jì)數(shù)器,s_100ms是百毫秒計(jì)數(shù)器,s_1s是秒計(jì)數(shù)器,s_10s是十秒計(jì)數(shù)器,m_1min是分計(jì)數(shù)器,s_10min是十分計(jì)數(shù)器,hour是小時(shí)計(jì)數(shù)器。它們均為輸入信號(hào)。每來兩個(gè)時(shí)鐘脈沖,s_1ms加1,當(dāng)s_1ms滿十時(shí),s_10ms加1,依次類推,s_10ms滿十的時(shí)候,s_100ms加1等等作為輸出。</p>
52、<p> 顯示電路模塊的仿真(如圖 4-6~圖4-7所示)</p><p> 數(shù)據(jù)選擇器的仿真(如圖 4-6所示)</p><p> BCD七段譯碼器驅(qū)動(dòng)器的仿真(如圖 4-7所示)</p><p> 分析:bcd為時(shí)鐘脈沖輸入信號(hào),led是輸出信號(hào),如圖所示:當(dāng)輸出為“1111110”時(shí)候,輸入為“0000”;當(dāng)輸出為“0110000”時(shí)輸入“
53、0001”,當(dāng)輸入為“0010”時(shí)輸出為“1101101”,當(dāng)輸入為“0011”時(shí)輸出為“1111001”等等來實(shí)現(xiàn)七段譯碼功能。</p><p> 數(shù)字秒表整個(gè)系統(tǒng)的仿真(如圖4-8所示)</p><p> 分析:秒表開始從零開始計(jì)數(shù),每次增加10ms。工作很正常的進(jìn)行。</p><p><b> 結(jié)束語</b></p>
54、<p> 開始做設(shè)計(jì)時(shí)總是會(huì)犯一些錯(cuò)誤,只有經(jīng)過不停的改錯(cuò)不停的編譯得到正確的程序說明了作為軟件編程人員是不能粗心大意的,一個(gè)程序的質(zhì)量的高低與你細(xì)心與否有著一定的聯(lián)系。在編程時(shí),我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來也比較方便,調(diào)試時(shí)也給了我很大方便,只要一個(gè)模塊一個(gè)模塊的進(jìn)行調(diào)就可以了,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。在設(shè)計(jì)中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一個(gè)小小的錯(cuò)誤就會(huì)導(dǎo)致結(jié)果的不正確,而對(duì)錯(cuò)誤的檢查要求
55、我要有足夠的耐心,通過這次設(shè)計(jì)和設(shè)計(jì)中遇到的問題,也積累了一定的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作會(huì)有一定的幫助。</p><p> 在應(yīng)用VHDL的過程中讓我真正領(lǐng)會(huì)到了其并行運(yùn)行與其他軟件順序執(zhí)行的差別及其在電路設(shè)計(jì)上的優(yōu)越性。用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,這種設(shè)計(jì)方法在數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越
56、重要的作用。</p><p><b> 致謝</b></p><p> 經(jīng)過快兩個(gè)星期的緊張工作,我終于完成了我的設(shè)計(jì)任務(wù)——設(shè)計(jì)數(shù)字秒表。在這次課程設(shè)計(jì)中特別感謝xx老師對(duì)我的指導(dǎo),正是由于她的督促和耐心指導(dǎo),我才可以順利完成這次的設(shè)計(jì)。鍛煉了動(dòng)手能力,給以后的學(xué)習(xí)指出了一個(gè)方向。</p><p><b> 參考文獻(xiàn)</
57、b></p><p> [1] 謝華生.VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例.北京:電子工業(yè)出版社,2006</p><p> [2] 萬高明.EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì).長沙:湖南大學(xué)出版社,2004</p><p> [3]黃繼業(yè).EDA技術(shù)實(shí)用教程.科學(xué)出版社,2009</p><p><b> 附錄</b>
58、</p><p> 時(shí)基分頻模塊的源程序(CB10.VHD)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CB10
59、IS</p><p> PORT( CLK: IN STD_LOGIC;</p><p> CO : OUT STD_LOGIC);</p><p><b> END CB10;</b></p><p> ARCHITECTURE ART OF CB10 IS</p><p> SIGN
60、AL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF RISING_EDGE(CLK)THEN</p
61、><p> IF COUNT="1001"THEN</p><p> COUNT<="0000";</p><p><b> CO<='1';</b></p><p><b> ELSE</b></p><p
62、> COUNT<=COUNT+1;</p><p><b> CO<='0';</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;&l
63、t;/p><p><b> END ART;</b></p><p> 控制模塊的源程序(CTRL.VHD)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UN
64、SIGNED.ALL;</p><p> ENTITY CTRL IS</p><p> PORT( CLR,CLK,SP:IN STD_LOGIC;</p><p> EN :OUT STD_LOGIC);</p><p><b> END ;</b></p><p> ARCHITE
65、CTURE BEHAVE OF CTRL IS</p><p> CONSTANT S0: STD_LOGIC_VECTOR (1 DOWNTO 0):="00";</p><p> CONSTANT S1: STD_LOGIC_VECTOR (1 DOWNTO 0):="01";</p><p> CONSTANT S
66、2: STD_LOGIC_VECTOR (1 DOWNTO 0):="11";</p><p> CONSTANT S3: STD_LOGIC_VECTOR (1 DOWNTO 0):="10";</p><p> TYPE STATES IS (S0,S1,S2,S3);</p><p> SIGNAL CURRENT
67、_STATE,NEXT_STATE:STATES;</p><p><b> BEGIN</b></p><p> COM:PROCESS(SP,CURRENT_STATE)</p><p><b> BEGIN</b></p><p> CASE CURRENT_STATE IS</
68、p><p> WHEN S0=>EN<='0';</p><p> IF SP='1'THEN</p><p> NEXT_STATE<=S1;</p><p><b> ELSE</b></p><p> NEXT_STATE<=S0
69、;</p><p><b> END IF;</b></p><p> WHEN S1=>EN<='1';</p><p> IF SP='1'THEN</p><p> NEXT_STATE<=S1;</p><p><b>
70、 ELSE</b></p><p> NEXT_STATE<=S2;</p><p><b> END IF;</b></p><p> WHEN S2=>EN<='1';</p><p> IF SP='1'THEN</p><p
71、> NEXT_STATE<=S3;</p><p><b> ELSE</b></p><p> NEXT_STATE<=S2;</p><p><b> END IF;</b></p><p> WHEN S3=>EN<='0';</p
72、><p> IF SP='1'THEN</p><p> NEXT_STATE<=S3;</p><p><b> ELSE</b></p><p> NEXT_STATE<=S0;</p><p><b> END IF;</b></
73、p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> SYNCH:PROCESS(clk)</p><p><b> BEGIN</b></p><p> IF CLR='1'THEN</p
74、><p> CURRENT_STATE <=S0;</p><p> ELSIF CLK'EVENT AND CLK='1'THEN</p><p> CURRENT_STATE<=NEXT_STATE;</p><p><b> END IF;</b></p>&l
75、t;p> END PROCESS;</p><p> END BEHAVE;</p><p><b> 計(jì)時(shí)模塊的源程序</b></p><p> 十進(jìn)制計(jì)數(shù)器的源程序(CDU10.VHD)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD
76、_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CDU10 IS</p><p> PORT( CLK:IN STD_LOGIC;</p><p> CLR,EN:IN STD_LOGIC;</p><p>
77、 CN :OUT STD_LOGIC;</p><p> COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END CDU10;</p><p> ARCHITECTURE ART OF CDU10 IS</p><p> SIGNAL SCOUNT10: STD_LOGIC_VE
78、CTOR(3 DOWNTO 0);</p><p> BEGIN COUNT10<=SCOUNT10;</p><p> PROCESS (CLK,CLR,EN)</p><p> BEGIN IF(CLR='1')THEN</p><p> SCOUNT10<="0000";CN<
79、;='0';</p><p> ELSIF RISING_EDGE(CLK)THEN</p><p> IF(EN='1')THEN</p><p> IF SCOUNT10="1001"THEN</p><p><b> CN<='1';</b
80、></p><p> SCOUNT10<="0000";</p><p><b> ELSE</b></p><p><b> CN<='0';</b></p><p> SCOUNT10<=SCOUNT10+'1'
81、;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A
82、RT;</b></p><p> 六進(jìn)制計(jì)數(shù)器的源程序(CDU6.VDH)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>
83、 ENTITY CDU6 IS</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> CN :OUT STD_LOGIC;</p><p> COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p><b> END CDU6;</b
84、></p><p> ARCHITECTURE ART OF CDU6 IS</p><p> SIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN </b></p><p> COUNT6<=SCOUNT6;</p&g
85、t;<p> PROCESS (CLK,CLR,EN)</p><p><b> BEGIN </b></p><p> IF(CLR='1')THEN</p><p> SCOUNT6<="0000";CN<='0';</p><p>
86、; ELSIF RISING_EDGE(CLK) THEN</p><p> IF(EN='1')THEN</p><p> IF SCOUNT6="0101"THEN</p><p><b> CN<='1';</b></p><p> SCOUNT6
87、<="0000";</p><p><b> ELSE</b></p><p><b> CN<='0';</b></p><p> SCOUNT6<=SCOUNT6+'1';</p><p><b> END
88、IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p> 計(jì)
89、數(shù)器的源程序(COUNT.VHD)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY COUNT IS</p><p>
90、PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> S_1MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_100MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);&
91、lt;/p><p> S_1S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1MIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MIN:OUT
92、STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> HOUR:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END COUNT;</p><p> ARCHITECTURE ART OF COUNT IS</p><p> COMPONENT CDU10</p&
93、gt;<p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> CN :OUT STD_LOGIC;</p><p> COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END COMPONENT CDU10;</p><p>
94、COMPONENT CDU6</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> CN :OUT STD_LOGIC;</p><p> COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END COMPONENT CDU6;<
95、/p><p> SIGNAL A,B,C,D,E,F,G,H:STD_LOGIC;</p><p><b> BEGIN</b></p><p> UL:CDU10 PORT MAP (CLK,CLR,EN,A,S_1MS);</p><p> U2:CDU10 PORT MAP (A,CLR,EN,B,S_
96、10MS);</p><p> U3:CDU10 PORT MAP (B,CLR,EN,C,S_100MS);</p><p> U4:CDU10 PORT MAP (C,CLR,EN,D,S_1S);</p><p> U5:CDU6 PORT MAP (D,CLR,EN,E,S_10S);</p><p> U6:C
97、DU10 PORT MAP (E,CLR,EN,F,S_1MIN);</p><p> U7:CDU6 PORT MAP (F,CLR,EN,G,S_10MIN);</p><p> U8:CDU10 PORT MAP (G,CLR,EN,H,HOUR);</p><p><b> END ART;</b></p>
98、;<p><b> 顯示模塊的源程序</b></p><p> 數(shù)據(jù)選擇器的源程序(MULX.VDH)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED
99、.ALL;</p><p> ENTITY MULX IS</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);&l
100、t;/p><p> S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1MIN:IN STD_L
101、OGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p>
102、<p> SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b> END MULX;</b></p><p> ARCHITECTURE ART OF MULX IS</p><p> SIGNAL COUNT :STD_LOGIN_VECTOR(3 DOWNTO 0);&l
103、t;/p><p><b> BEGIN</b></p><p> PROCESS (CLK)</p><p><b> BEGIN</b></p><p> IF CLR='1'THEN</p><p> COUNT<="1111&quo
104、t;;</p><p> ELSIF RISING_EDGE(CLK)THEN</p><p> IF EN ='1' THEN </p><p> COUNT<="0000";</p><p><b> ELSE</b></p><p> CO
105、UNT<=COUNT+'1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p>
106、<p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> CASE COUNT IS</p><p> WHEN "0000"=>O
107、UTBCD<=S_1MS; SEG<="11111110";</p><p> WHEN "0001"=>OUTBCD<=S_10MS; SEG<="11111101";</p><p> WHEN "0010"=>OUTBCD<=S_
108、100MS; SEG<="11111011";</p><p> WHEN "0011"=>OUTBCD<=S_1S; SEG<="11110111";</p><p> WHEN "0100"=>OUTBCD<=S_10S;
109、 SEG<="11101111";</p><p> WHEN "0101"=>OUTBCD<=S_1MIN; SEG<="11011111";</p><p> WHEN "0110"=>OUTBCD<=S_10MIN; SEG<=&qu
110、ot;10111111";</p><p> WHEN "0111"=>OUTBCD<=S_HUOR; SEG<="01111111";</p><p> WHEN "1000"=>OUTBCD<=S_1MS; SEG<="11111110&
111、quot;;</p><p> WHEN "1001"=>OUTBCD<=S_10MS; SEG<="11111101";</p><p> WHEN OTHERS=>OUTBCD<="0000"; SEG<="00000000";</p
112、><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p> BCD七段譯碼器驅(qū)動(dòng)器的源程序(BC
113、D7.VDH)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY BCD7 IS</p><p> PORT( BCD:I
114、N STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b> END BCD7;</b></p><p> ARCHITECTURE ART OF BCD7 IS</p><p><b&
115、gt; BEGIN</b></p><p> LED<="1111110"WHEN BCD ="0000" ELSE</p><p> "0110000"WHEN BCD ="0001" ELSE</p><p> "1101101"WHEN
116、 BCD ="0010" ELSE</p><p> "1111001"WHEN BCD ="0011" ELSE</p><p> "0110011"WHEN BCD ="0100" ELSE</p><p> "1011011"WHEN
117、BCD ="0101" ELSE</p><p> "1011111"WHEN BCD ="0110" ELSE</p><p> "1110000"WHEN BCD ="0111" ELSE</p><p> "1111111"WHEN B
118、CD ="1000" ELSE</p><p> "1111011"WHEN BCD ="1001" ELSE</p><p> "0000000";</p><p><b> END ART;</b></p><p> 頂層設(shè)計(jì)的源
119、程序(MB.VHD)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY MB IS</p><p> PORT( SP,C
120、LR,CLK:IN STD_LOGIC;</p><p> CO,EN: OUT STD_LOGIC;</p><p> LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))</p><p> SEG:OUT ST
121、D_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b> END MB;</b></p><p> ARCHITECTURE ART OF MB IS</p><p> COMPONENT CTRL</p><p> PORT( CLK,CLR,SP:IN STD_LOGIC;<
122、;/p><p> EN :OUT STD_LOGIC);</p><p> END COMPONENT ;</p><p> COMPONENT CB10</p><p> PORT( CLK:IN STD_LOGIC;</p><p> CO :OUT STD_LOGIC);</p><
123、p> END COMPONENT ;</p><p> COMPONENT COUNT</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> S_1MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MS: OUT ST
124、D_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_100MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10S: OUT STD_LOGIC_VECTOR(3 DO
125、WNTO 0);</p><p> S_1MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> HOUR: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p>
126、<p> END COMPONENT;</p><p> COMPONENT BCD7</p><p> PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> END C
127、OMPONENT ;</p><p> COMPONENT MULX</p><p> PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p> S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO
128、0);</p><p> S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_1MIN:IN
129、STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</
130、p><p> SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> END COMPONENT;</p><p> SIGNAL C,E:STD_LOGIC;</p><p> SIGNAL MS1_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0);<
131、;/p><p> SIGNAL S1S_S,S10_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SIGNAL MIN1_S,MIN10_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SIGNAL H:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p
132、> SIGNAL BCD_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> U0: CTRL PORT MAP(CLR,CLK,SP,E);</p><p> U1: CB10 PORT MAP(CLK,C);</p&
133、gt;<p> U2: COUNT PORT MAP(C,CLR,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H);</p><p> U3:MULXPORTMAP(CLR,CLK,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H,BCD_S,SEG);</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vhdl課程設(shè)計(jì)報(bào)告--多功能電子計(jì)時(shí)器
- 時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 籃球計(jì)時(shí)器課程設(shè)計(jì)
- 計(jì)時(shí)秒表課程設(shè)計(jì)---計(jì)時(shí)秒表系統(tǒng)的設(shè)計(jì)
- 匯編課程設(shè)計(jì)報(bào)告--- 計(jì)時(shí)器
- 匯編課程設(shè)計(jì)報(bào)告--計(jì)時(shí)器
- 微機(jī)原理課程設(shè)計(jì)-計(jì)時(shí)器
- 24秒計(jì)時(shí)器課程設(shè)計(jì)
- 多功能計(jì)時(shí)器課程設(shè)計(jì)
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 籃球比賽計(jì)時(shí)器(課程設(shè)計(jì))
- 課程設(shè)計(jì)--籃球比賽計(jì)時(shí)器
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 微機(jī)原理課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)---籃球30秒計(jì)時(shí)器
- 數(shù)電課程設(shè)計(jì)---30秒計(jì)時(shí)器
評(píng)論
0/150
提交評(píng)論