




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE1/22電子技術(shù)綜合試驗(yàn)實(shí)驗(yàn)報(bào)告班級(jí):29021070 學(xué)號(hào):2902107005姓名:楊林 指導(dǎo)老師:劉曦目錄1引言 11.1課程設(shè)計(jì)的目的 11.2課程設(shè)計(jì)的內(nèi)容 12EDA、VHDL簡(jiǎn)介 12.1EDA技術(shù) 12.2硬件描述語(yǔ)言——VHDL 33設(shè)計(jì)過程 43.1設(shè)計(jì)規(guī)劃 43.2 各模塊的原理及其程序53.2.1頂層結(jié)構(gòu)體的設(shè)計(jì)及VHDL源代碼53.3秒表各個(gè)模塊的分析及其VHDL源代碼123.3.1控制模塊123.3.2時(shí)鐘分頻模塊143.3.3計(jì)時(shí)模塊153.3.4秒表顯示模塊174系統(tǒng)仿真20結(jié)束語(yǔ) 221引言在科技高度發(fā)展的今天,集成電路和計(jì)算機(jī)應(yīng)用得到了高速發(fā)展。尤其是計(jì)算機(jī)應(yīng)用的發(fā)展。它在人們?nèi)粘I钜阎饾u嶄露頭角。大多數(shù)電子產(chǎn)品多是由計(jì)算機(jī)電路組成,如:手機(jī)、mp3等。而且將來(lái)的不久他們的身影將會(huì)更頻繁的出現(xiàn)在我們身邊。各種家用電器多會(huì)實(shí)現(xiàn)微電腦技術(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í)別。1.1課程設(shè)計(jì)的目的本次設(shè)計(jì)的目的就是在掌握EDA實(shí)驗(yàn)開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對(duì)計(jì)算機(jī)系統(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)。1.2課程設(shè)計(jì)的內(nèi)容以FPGA為核心,利用VHDL語(yǔ)言設(shè)計(jì)基于計(jì)算機(jī)電路中時(shí)鐘脈沖原理的數(shù)字秒表。該數(shù)字秒表能對(duì)0秒~59分59.99秒范圍進(jìn)行計(jì)時(shí),顯示最長(zhǎng)時(shí)間是59分59秒。設(shè)計(jì)了復(fù)位開關(guān)和啟停開關(guān)。復(fù)位開關(guān)只可以在秒表暫停的情況下使用,使用以后計(jì)時(shí)器清零,并做好下一次計(jì)時(shí)的準(zhǔn)備。2EDA、VHDL簡(jiǎn)介2.1EDA技術(shù)EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語(yǔ)言HDL完成的設(shè)計(jì)文件,自動(dòng)完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進(jìn)行三個(gè)方面的設(shè)計(jì)工作:IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計(jì)制造是不可想象的;反過來(lái),生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對(duì)EDA技術(shù)提出新的要求。2.2硬件描述語(yǔ)言——VHDL★VHDL的簡(jiǎn)介VHDL語(yǔ)言是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言。但是,由于它在一定程度上滿足了當(dāng)時(shí)的設(shè)計(jì)需求,于是他在1987年成為AI/IEEE的標(biāo)準(zhǔn)(IEEESTD1076-1987)。1993年更進(jìn)一步修訂,變得更加完備,成為AI/IEEE的AI/IEEESTD1076-1993標(biāo)準(zhǔn)。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標(biāo)準(zhǔn)。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡(jiǎn)稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡(jiǎn)稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。★VHDL語(yǔ)言的特點(diǎn)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ì)的是什么,你就直接從庫(kù)中調(diào)出來(lái)用就行了。這樣比較符合人們的習(xí)慣。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(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)是多方面的。(1)與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。(2)VHDL豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。(3)VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。(4)對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表。(5)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)?!颲HDL的設(shè)計(jì)流程它主要包括以下幾個(gè)步驟:1.文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件2.功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡(jiǎn)單的設(shè)計(jì)可以跳過這一步,只在布線完成以后,進(jìn)行時(shí)序仿真)3.時(shí)序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真)通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。4.器件編程3設(shè)計(jì)過程3.1設(shè)計(jì)規(guī)劃本系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方案,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖3-1所示,它主要由控制模塊、時(shí)基分頻模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊分別完成計(jì)時(shí)過程的控制功能、計(jì)時(shí)功能與顯示功能。數(shù)字秒表數(shù)字秒表計(jì)時(shí)控制電路控制狀態(tài)機(jī)計(jì)時(shí)電路顯示電路時(shí)基分頻電路計(jì)數(shù)器六十進(jìn)制計(jì)數(shù)器掃描電路七段譯碼器一百進(jìn)制計(jì)數(shù)器圖3-1系統(tǒng)組成框圖各模塊的原理及其程序CLRCLRSPCLKOUTPUTENCB10OUTPUTENCB10OUTPUTSEG[7..0]CB10OUTPUTOUTBCD[3..0]OUTPUTLED[6..0]CB10OUTPUTENCB10OUTPUTCOCB10BCD7MULXCOUNTCTRLCB10CLKCOS_1MS[3..0]S_10MS[3..0]CLKS_100MS[3..0]CLRS_1S[3..0]ENS_10S[3..0]M_1MIN[3..0]M_10MIN[3..0]HOUR[3..0]CLKCLRENS_1MS[3..0]S_10MS[3..0]OUTBCD[3..0]S_100MS[3..0]S_1S[3..0]SEG[]7..0]S_10S[3..0]M_1MIN[3..0]M_10MIN[3..0]HOUR[3..0]CLRCLKENSPBCD[3..0]LED[6..0]圖3-2系統(tǒng)的整體組裝設(shè)計(jì)原理圖本系統(tǒng)設(shè)計(jì)由控制模塊、時(shí)基分頻模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊實(shí)現(xiàn)秒表不同的功能。圖3-2就是整個(gè)系統(tǒng)原理圖。3.2.1頂層結(jié)構(gòu)體的設(shè)計(jì)及VHDL源代碼在任何自頂向下的VHDL設(shè)計(jì)描述中,設(shè)計(jì)人員常常將整個(gè)設(shè)計(jì)的系統(tǒng)劃分為幾個(gè)模塊,然后采用結(jié)構(gòu)描述方式對(duì)整個(gè)系統(tǒng)進(jìn)行描述?,F(xiàn)在我們就來(lái)根據(jù)前面描述的結(jié)構(gòu)功能,確定使用哪些模塊以及這些模塊之間的關(guān)系。由于秒表的復(fù)位開關(guān)和啟/停開關(guān)采用按鍵的輸入方式,其產(chǎn)生時(shí)刻和持續(xù)時(shí)間的長(zhǎng)短是隨機(jī)不定的,且存在因開關(guān)簧片反彈引起的電平抖動(dòng)現(xiàn)象,因此必須在每個(gè)開關(guān)后面安排一個(gè)消抖和同步化電路模塊,以保證系統(tǒng)能捕捉到輸入脈沖,并保證每按一鍵,只形成一個(gè)寬度為系統(tǒng)時(shí)鐘周期的脈沖。由于外部時(shí)鐘信號(hào)clk的頻率為48MHz,而實(shí)際需要的內(nèi)部計(jì)時(shí)時(shí)鐘頻率為100Hz和提供給消抖同步電路的頻率為1000Hz,因此需要一個(gè)時(shí)鐘分頻電路。通過分頻電路,由外部時(shí)鐘信號(hào)clk產(chǎn)生頻率分別為100Hz和1000Hz的時(shí)鐘信號(hào)。秒表的計(jì)時(shí)操作是在復(fù)位開關(guān)信號(hào)無(wú)效并且兩次啟/停開關(guān)信號(hào)有效之間才能夠進(jìn)行,因此需要一個(gè)電路來(lái)產(chǎn)生一個(gè)使能信號(hào)。只有當(dāng)使能信號(hào)有效時(shí),才能夠進(jìn)行秒表的定時(shí)計(jì)數(shù)操作。當(dāng)秒表開始正常計(jì)時(shí)的時(shí)候,需要進(jìn)行定時(shí)計(jì)數(shù)操作,由于時(shí)間顯示器是由8個(gè)LED七段顯示數(shù)碼管組成的,因此需要產(chǎn)生8位的計(jì)時(shí)信息:小時(shí)十位信號(hào)、小時(shí)個(gè)位信號(hào)、分十位信號(hào)、分個(gè)位信號(hào)、秒十位信號(hào)、秒個(gè)位信號(hào)、0.1秒位信號(hào)和0.01秒位信號(hào)。這個(gè)定時(shí)計(jì)數(shù)操作可以有一個(gè)定時(shí)計(jì)數(shù)器來(lái)完成,定時(shí)計(jì)數(shù)器的功能就是用來(lái)產(chǎn)生8位計(jì)時(shí)信息。秒表還要將定時(shí)計(jì)數(shù)的結(jié)果顯示出來(lái),為了節(jié)省資源,我們采用循環(huán)點(diǎn)亮LED七段顯示數(shù)碼管的方法來(lái)顯示秒表的計(jì)時(shí)輸出。我們通過信號(hào)sel(2downtown0)來(lái)進(jìn)行8個(gè)LED七段顯示數(shù)碼管的選擇,從而將輸出信號(hào)display(7downtown0)送到相應(yīng)的LED七段顯示數(shù)碼管上以完成跑表計(jì)時(shí)的顯示。跑表顯示的功能可以通過一個(gè)單獨(dú)的電路來(lái)實(shí)現(xiàn)。通過上面的說(shuō)明,不難看出我們可以將秒表系統(tǒng)劃分為4個(gè)模塊時(shí)鐘分頻模塊、控制模塊(含消抖功能)、秒表計(jì)時(shí)模塊(計(jì)數(shù)器級(jí)聯(lián))、和顯示模塊。下面我們就根據(jù)各個(gè)模塊的連接關(guān)系來(lái)確定各個(gè)模塊的輸入信號(hào)和輸出信號(hào)。(1)控制模塊輸入信號(hào)啟/停開關(guān)信號(hào)ena;時(shí)鐘信號(hào)clk。輸出信號(hào):去除抖動(dòng)后的啟/停信號(hào):pulse;消除抖動(dòng)后的使能信號(hào):temp.(2)時(shí)鐘分頻模塊輸入信號(hào)外部時(shí)鐘信號(hào)clk。輸出信號(hào)時(shí)鐘信號(hào)clk1k;時(shí)鐘信號(hào)clk100。(3)跑表計(jì)時(shí)模塊輸入信號(hào)復(fù)位信號(hào)clr;內(nèi)部計(jì)時(shí)時(shí)鐘信號(hào)clk100;定時(shí)計(jì)數(shù)的使能信號(hào)temp。輸出信號(hào)小時(shí)十位信號(hào)hr10;小時(shí)個(gè)位信號(hào)hr;分十位信號(hào)min10;分個(gè)位信號(hào)min;秒十位信號(hào)sec10;秒個(gè)位信號(hào)sec;0.1秒位信號(hào)sec01;0.01秒位信號(hào)sec001。這部分模塊設(shè)計(jì)中沒有直接生成,直接依靠計(jì)數(shù)器的級(jí)聯(lián)而成(5)顯示模塊輸入信號(hào)外部時(shí)鐘信號(hào)clk;小時(shí)十位信號(hào)hr10;小時(shí)個(gè)位信號(hào)hr;分十位信號(hào)min10;分個(gè)位信號(hào)min;秒十位信號(hào)sec10;秒個(gè)位信號(hào)sec;0.1秒位信號(hào)sec01;0.01秒位信號(hào)sec001。輸出信號(hào)LED七段顯示數(shù)碼管的選通信號(hào)sel;LED七段顯示數(shù)碼管的輸出信號(hào)display。下面根據(jù)各個(gè)模塊的連接關(guān)系,給出頂層結(jié)構(gòu)體的VHDL源代碼。首先在結(jié)構(gòu)體的說(shuō)明部分進(jìn)行元件說(shuō)明,然后在結(jié)構(gòu)體中進(jìn)行例化調(diào)用。同時(shí)在結(jié)構(gòu)體的說(shuō)明部分還定義了許多中間信號(hào),主要用來(lái)在模塊之間傳遞信息。architectureBehavioraloftopissignalXLXN_1:std_logic;signalXLXN_2:std_logic;signalXLXN_3:std_logic;signalXLXN_4:std_logic;signalXLXN_5:std_logic;signalXLXN_6:std_logic;signalXLXN_7:std_logic;signalXLXN_9:std_logic; signalXLXN_10:std_logic;signalm:std_logic_vector(23downto0);COMPONENTclkgne PORT( clkin:INstd_logic; clkout100:OUTstd_logic; clkout1k:OUTstd_logic ); ENDCOMPONENT; COMPONENTcount10 PORT( clk:INstd_logic; clr:INstd_logic; ena:INstd_logic; cq:OUTstd_logic_vector(3downto0); dout:OUTstd_logic ); ENDCOMPONENT; COMPONENTcount6 PORT( clk:INstd_logic; clr:INstd_logic; ena:INstd_logic; cq:OUTstd_logic_vector(3downto0); dout:OUTstd_logic ); ENDCOMPONENT; COMPONENTdisplay PORT( clkin:INstd_logic; s8:INstd_logic_vector(3downto0); s7:INstd_logic_vector(3downto0); s5:INstd_logic_vector(3downto0); s4:INstd_logic_vector(3downto0); s2:INstd_logic_vector(3downto0); s1:INstd_logic_vector(3downto0); g:OUTstd_logic; display:OUTstd_logic_vector(7downto0); sel:OUTstd_logic_vector(2downto0) ); ENDCOMPONENT; COMPONENTcontrol PORT( ena:INstd_logic; temp:OUTstd_logic; clk:instd_logic; pulse:outstd_logic ); ENDCOMPONENT;beginU1:count10PORTMAP( clk=>XLXN_1,clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(3downto0),dout=>XLXN_3 );U2:count10PORTMAP( clk=>XLXN_3,clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(7downto4),dout=>XLXN_4); U3:count10PORTMAP( clk=>XLXN_4,clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(11downto8),dout=>XLXN_5); U4:count6PORTMAP( clk=>XLXN_5,clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(15downto12),dout=>XLXN_6); U5:count10PORTMAP( clk=>XLXN_6,clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(19downto16),dout=>XLXN_7); U6:count6PORTMAP( clk=>XLXN_7, clr=>clr,ena=>XLXN_9,cq(3downto0)=>m(23downto20),dout=>open); U7:displayPORTMAP( clkin=>XLXN_2,s1(3downto0)=>m(3downto0),s2(3downto0)=>m(7downto4),s4(3downto0)=>m(11downto8), s5(3downto0)=>m(15downto12), s7(3downto0)=>m(19downto16),s8(3downto0)=>m(23downto20),display(7downto0)=>DIS(7downto0),g=>G,sel(2downto0)=>sel(2downto0)); U8:controlPORTMAP( ena=>ena, clk=>clkin, pulse=>XLXN_10,temp=>XLXN_9); U9:clkgnePORTMAP( clkin=>CLKIN,clkout1k=>XLXN_2,clkout100=>XLXN_1);endBehavioral;3.3秒表各個(gè)模塊的分析及其VHDL源代碼前面已經(jīng)詳細(xì)地討論了秒表系統(tǒng)頂層的設(shè)計(jì)及其VHDL源代碼,這里將重點(diǎn)介紹各個(gè)模塊的實(shí)現(xiàn)及其VHDL源代碼。跑表系統(tǒng)被劃分為4個(gè)模塊,而在頂層設(shè)計(jì)中是將各個(gè)模塊作為元件來(lái)引用的,因此需要將各個(gè)模塊設(shè)計(jì)成為獨(dú)立實(shí)體的形式,這樣它們就能作為元件被引用了。3.3.1控制模塊前面已經(jīng)提到過,由于秒表的復(fù)位開關(guān)和啟/停開關(guān)采用按鍵的輸入方式,其產(chǎn)生時(shí)刻和持續(xù)時(shí)間的長(zhǎng)短是隨機(jī)不定的,且存在因開關(guān)簧片反彈引起的電平抖動(dòng)現(xiàn)象,因此必須在每個(gè)開關(guān)后面加一個(gè)消抖控制。消抖控制的作用是保證系統(tǒng)能捕捉到輸入脈沖,并保證每按一鍵,只形成一個(gè)寬度為模塊時(shí)鐘周期的脈沖。在數(shù)字系統(tǒng)中同步消抖電路的形式很多,應(yīng)用的也十分廣泛。前面已經(jīng)介紹了一種既有消抖功能又有同步功能的電路,但是這個(gè)電路只適用于得到一個(gè)寬度較大的鍵輸入脈沖。在秒表系統(tǒng)中,要求得到寬度為一個(gè)外部時(shí)鐘信號(hào)clk的周期的鍵入脈沖,因此采用另一種同步消抖電路的形式。該同步消抖電路的功能是:;每按一下啟/停開關(guān)ena,鍵輸入模塊將輸出一個(gè)寬度為1ms的啟/停脈沖pulse。該模塊功能是產(chǎn)生消抖信號(hào)并產(chǎn)生新的使能信號(hào),對(duì)計(jì)時(shí)器進(jìn)行計(jì)時(shí)。根據(jù)定時(shí)關(guān)系對(duì)該鍵輸入模塊進(jìn)行VHDL描述,功能描述如下面源代碼所示。ibraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitycontrolisPort(ena:inSTD_LOGIC; clk:instd_logic; pulse:outstd_logic;temp:outSTD_LOGIC);endcontrol;architectureBehavioralofcontrolissignaltemp1:integerrange0to1:=0;signalreg1:std_logic;signalreg2:std_logic;signalreg3:std_logic;signalreg4:std_logic;signalq1:std_logic;signalq2:std_logic;signalreg_pulse:std_logic;beginq1<=reg1andreg2andreg3andreg4;reg_pulse<=q1andnot(q2);pulse<=reg_pulse;process(clk)beginifclk'eventandclk='1'thenreg1<=ena;reg2<=reg1;reg3<=reg2;reg4<=reg3;q2<=q1;ifreg_pulse='1'then temp1<=(temp1+1)mod2; iftemp1=1then temp<='0'; elsetemp<='1';endif;endif;endif;endprocess;endBehavioral;3.3.2時(shí)鐘分頻模塊時(shí)鐘分頻模塊的功能是將輸入的外部時(shí)鐘信號(hào)clk進(jìn)行分頻,從而產(chǎn)生用來(lái)消除抖動(dòng)的1000Hz的時(shí)鐘信號(hào)clk1k和用于跑表內(nèi)部定時(shí)計(jì)數(shù)的100Hz的時(shí)鐘信號(hào)clk100。。但是需要注意的是,設(shè)計(jì)中要求時(shí)鐘信號(hào)clk1和時(shí)鐘信號(hào)clk0的有效脈沖寬度為1ms。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityclkgneisPort(clkin:inSTD_LOGIC;clkout100:outSTD_LOGIC;clkout1k:outSTD_LOGIC);endclkgne;architectureBehavioralofclkgneissignalcnt100:integerrange1to240000; signalcnt1k:integerrange1to24000; signalclk100:std_logic:='0'; signalclk1k:std_logic:='0';beginprocess(clkin) begin ifrising_edge(clkin)then ifcnt100=240000then cnt100<=1; clk100<=notclk100; else cnt100<=cnt100+1; endif; endif; ifrising_edge(clkin)then ifcnt1k=24000then cnt1k<=1; clk1k<=notclk1k; else cnt1k<=cnt1k+1; endif; endif; endprocess; clkout100<=clk100; clkout1k<=clk1k;endBehavioral;3.3.3計(jì)時(shí)模塊該模塊在實(shí)際設(shè)計(jì)中通過計(jì)時(shí)器級(jí)聯(lián)而成,分別進(jìn)行0.01s,1s,1min為單位的計(jì)時(shí),通過6位計(jì)數(shù)器與10位計(jì)數(shù)器的級(jí)聯(lián)組成,而本次設(shè)計(jì)中并未將其統(tǒng)一到一個(gè)頂層文件,故只寫出6位計(jì)數(shù)器與10位計(jì)數(shù)器的源程序。6位計(jì)數(shù)器libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitycount6isPort(clk:inSTD_LOGIC;clr:inSTD_LOGIC;ena:inSTD_LOGIC; cq:outSTD_LOGIC_VECTOR(3downto0);dout:outSTD_LOGIC);endcount6;architectureBehavioralofcount6issignalcqi:std_logic_vector(3downto0):="0000";begincq<=cqi; process(clk,clr) begin ifclr='0'andena='1'then cqi<="0000"; elsifrising_edge(clk)then ifena='0'then ifcqi="0101"then cqi<="0000"; else cqi<=cqi+1; endif; endif; endif; endprocess; process(cqi) begin ifcqi="0000"then dout<='1'; else dout<='0'; endif; endprocess;endBehavioral;10位計(jì)數(shù)器libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitycount10isPort(clk:inSTD_LOGIC;clr:inSTD_LOGIC;ena:inSTD_LOGIC; cq:outSTD_LOGIC_VECTOR(3downto0); dout:outSTD_LOGIC);endcount10;architectureBehavioralofcount10issignalcqi:std_logic_vector(3downto0):="0000";begincq<=cqi; process(clk,clr) begin ifclr='0'andena='1'then cqi<="0000"; elsifrising_edge(clk)then ifena='0'then ifcqi="1001"then cqi<="0000"; else cqi<=cqi+1; endif; endif; endif; endprocess; process(cqi) begin ifcqi="0000"then dout<='1'; else dout<='0';endif; endprocess;endBehavioral;3.3.4秒表顯示模塊秒表還要將定時(shí)計(jì)數(shù)的結(jié)果顯示出來(lái),因此需要設(shè)計(jì)一個(gè)秒表顯示模塊來(lái)完成該顯示功能秒表顯示模塊的輸入信號(hào)主要來(lái)自于秒表計(jì)時(shí)模塊輸出的計(jì)時(shí)信息;它的輸出信號(hào)是sel和display,以用來(lái)驅(qū)動(dòng)用于計(jì)時(shí)顯示的8個(gè)LED七段顯示數(shù)碼管。在輸出信號(hào)中,為了節(jié)省資源,采用循環(huán)點(diǎn)亮LED七段顯示數(shù)碼管的方法來(lái)顯示跑表的計(jì)時(shí)輸出。通過信號(hào)sel(3downto0)來(lái)進(jìn)行8個(gè)LED七段顯示數(shù)碼管的選擇,從而將輸出信號(hào)display(7downtown0)送到相應(yīng)的LED七段顯示數(shù)碼管上以完成跑表計(jì)時(shí)的顯示。跑表顯示模塊的結(jié)構(gòu)框圖如圖3.7所示。秒表顯示模塊的結(jié)構(gòu)框圖從圖中可以看出,跑表顯示模塊可由四個(gè)部分構(gòu)成:八進(jìn)制計(jì)數(shù)器count8、計(jì)時(shí)位選擇電路、七段顯示譯碼電路和顯示位選擇譯碼電路。源代碼如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitydisplayisPort(clkin:inSTD_LOGIC; s8:inSTD_LOGIC_VECTOR(3downto0);s7:inSTD_LOGIC_VECTOR(3downto0); s5:inSTD_LOGIC_VECTOR(3downto0);s4:inSTD_LOGIC_VECTOR(3downto0); s2:inSTD_LOGIC_VECTOR(3downto0);s1:inSTD_LOGIC_VECTOR(3downto0);g:outSTD_LOGIC;display:outSTD_LOGIC_VECTOR(7downto0);sel:outSTD_LOGIC_VECTOR(2downto0));enddisplay;architectureBehavioralofdisplayissignalcnt:integerrange0to7:=0; signals3:STD_LOGIC_VECTOR(3DOWNTO0);signals6:STD_LOGIC_VECTOR(3DOWNTO0); signala:STD_LOGIC;beginprocess(clkin) variablenum:std_logic_vector(3downto0);
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)計(jì)劃員筆試題及答案
- 企業(yè)股定金合同范例
- 眾籌股東合同范例6
- 書借閱合同范例
- 企業(yè)保密合同范例
- 公司全合同范例
- 傭金中介服務(wù)合同范例
- 東莞污水施工合同范例
- 個(gè)人買賣轉(zhuǎn)讓合同范例
- 2025年溫度校準(zhǔn)儀表合作協(xié)議書
- ISO22301新版標(biāo)準(zhǔn)翻譯(中英對(duì)照)
- 2024年AI大模型場(chǎng)景探索及產(chǎn)業(yè)應(yīng)用調(diào)研報(bào)告-前瞻
- 學(xué)術(shù)論文的撰寫方法與規(guī)范
- 建設(shè)工程施工合同農(nóng)民工工資補(bǔ)充協(xié)議
- 智研咨詢發(fā)布:汽車雨刮器總成產(chǎn)業(yè)百科(附行業(yè)現(xiàn)狀、相關(guān)政策及發(fā)展驅(qū)動(dòng)因素分析)
- DL∕T 2577-2022 軸流轉(zhuǎn)漿式水輪發(fā)電機(jī)組檢修規(guī)程
- 2023年四川省綿陽(yáng)市中考數(shù)學(xué)試卷
- 《統(tǒng)編教材背景下小學(xué)語(yǔ)文整本書閱讀策略的研究》中期報(bào)告
- (正式版)JBT 2930-2024 低壓電器產(chǎn)品型號(hào)編制方法
- 【課件】2024屆新高考英語(yǔ)語(yǔ)法填空專項(xiàng).解題技巧課件
- 九年級(jí)物理《第5節(jié) 磁生電》課件(三套)
評(píng)論
0/150
提交評(píng)論