最終論文 基于VHDL的多功能數(shù)字鐘設(shè)計(jì)_第1頁(yè)
最終論文 基于VHDL的多功能數(shù)字鐘設(shè)計(jì)_第2頁(yè)
最終論文 基于VHDL的多功能數(shù)字鐘設(shè)計(jì)_第3頁(yè)
最終論文 基于VHDL的多功能數(shù)字鐘設(shè)計(jì)_第4頁(yè)
最終論文 基于VHDL的多功能數(shù)字鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))

1緒論現(xiàn)代社會(huì)的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且是產(chǎn)品的性能越來(lái)越強(qiáng),復(fù)雜程度越來(lái)越高,更新步伐越來(lái)越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計(jì)開(kāi)發(fā)技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計(jì)自動(dòng)化(electronicdesignautomatic,EDA)技術(shù)。集成電路是隨著計(jì)算機(jī)技術(shù)的發(fā)展而不斷進(jìn)步,1946年2月15日世界上第一臺(tái)通用電子數(shù)字計(jì)算機(jī)使用了18000個(gè)電子管,1500個(gè)繼電器以及其他器件,安裝在面積為9*15平方米的室內(nèi)。在20世紀(jì)50年代中期第二代電子計(jì)算機(jī)問(wèn)世,它是以晶體管代替了電子管,此時(shí)第一個(gè)集成電路誕生了,它包括一個(gè)晶體管,兩個(gè)電阻和一個(gè)電阻。電容的組合。后來(lái)集成電路工藝日趨完善,大部分電路元件都已經(jīng)以集成電路的形式出現(xiàn),甚至在約1平方厘米的芯片上,就可以集成上百萬(wàn)個(gè)電子元件。在1967年和1977年,分別出現(xiàn)了大規(guī)模集成電路和超大規(guī)模集成電路,不斷的完善和改進(jìn)計(jì)算機(jī)的性能與規(guī)模。計(jì)算機(jī)尤其是以微細(xì)加工技術(shù)支持的微型計(jì)算機(jī)技術(shù)飛速發(fā)展,其應(yīng)用滲透到了各行各業(yè)。以單片機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)為核心的計(jì)算機(jī)系統(tǒng),以其軟硬件可裁剪、高度的實(shí)時(shí)性、高度的可靠性、功能齊全、低功耗、適應(yīng)面廣等諸多優(yōu)點(diǎn)而得到極為廣泛的應(yīng)用。目前計(jì)算機(jī)硬件技術(shù)向巨型化、微型化和單片機(jī)化三個(gè)方向告訴發(fā)展。自1975年美國(guó)德州儀器公司(TexasInstruments)第一塊微型計(jì)算機(jī)芯片TMS-1000問(wèn)世以來(lái),在短短的20年間,EDA技術(shù)已發(fā)展成為計(jì)算機(jī)領(lǐng)域一個(gè)非常有前途的分之,它有自己的技術(shù)特征、規(guī)范和應(yīng)用領(lǐng)域。EDA是自動(dòng)控制系統(tǒng)的核心部件,主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小、性能突出可靠性高(某些方面的性能指標(biāo)大大優(yōu)于通用微機(jī)中央處理器)、價(jià)格低廉等一系列優(yōu)點(diǎn),應(yīng)用領(lǐng)域不斷擴(kuò)大,除了工業(yè)控制、智能化儀表、通信、家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量采用FPGA芯片作為核心控制部件,已經(jīng)滲入到人們工作和生活的各個(gè)角落,有力地推動(dòng)了各行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,前景廣闊。本設(shè)計(jì)采用的VHDL是一種全方位的硬件描述語(yǔ)言,具有極強(qiáng)的描述能力,能支持系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門(mén)級(jí)三個(gè)不同層次的設(shè)計(jì);支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述、覆蓋面廣、抽象能力強(qiáng),因此在實(shí)際應(yīng)用中越來(lái)越廣泛。ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速處理器。而FPGA是特殊的ASIC芯片,與其他的ASIC芯片相比,它具有設(shè)計(jì)開(kāi)發(fā)周期短、設(shè)計(jì)制造成本低、開(kāi)發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無(wú)需測(cè)試、質(zhì)量穩(wěn)定以及可實(shí)時(shí)在線檢測(cè)等優(yōu)點(diǎn)。在控制系統(tǒng)中,鍵盤(pán)是常用的人機(jī)交換接口,當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下的時(shí)候,系統(tǒng)應(yīng)該完成該鍵所設(shè)置的功能。因此,鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過(guò)程。根據(jù)鍵盤(pán)的結(jié)構(gòu)不同,采用不同的編碼方法。但無(wú)論有無(wú)編碼以及采用什么樣的編碼,最后都要轉(zhuǎn)換成為相應(yīng)的鍵值,以實(shí)現(xiàn)按鍵功能程序的轉(zhuǎn)移。鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、定時(shí)啟閉電路、定時(shí)開(kāi)關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。1.1選題背景本節(jié)將從FPGA嵌入式應(yīng)用開(kāi)發(fā)技術(shù)與數(shù)字鐘技術(shù)發(fā)展的客觀實(shí)際出發(fā),通過(guò)對(duì)該技術(shù)發(fā)展?fàn)顩r的了解,以及課題本身的需要,指出研究基于FPGA的芯片系統(tǒng)與設(shè)計(jì)——數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)的必要性。1.1.1課題相關(guān)技術(shù)的發(fā)展當(dāng)今電子產(chǎn)品正向功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計(jì)上的顯著區(qū)別師大量使用大規(guī)??删幊踢壿嬈骷?,使產(chǎn)品的性能提高,體積縮小,功耗降低.同時(shí)廣泛運(yùn)用現(xiàn)代計(jì)算機(jī)技術(shù),提高產(chǎn)品的自動(dòng)化程度和競(jìng)爭(zhēng)力,縮短研發(fā)周期。EDA技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學(xué)科最新科技成果而形成的一門(mén)新技術(shù)。美國(guó)ALTERA公司的可編程邏輯器件采用全新的結(jié)構(gòu)和先進(jìn)的技術(shù),加上QuartusII開(kāi)發(fā)環(huán)境,更具有高性能,開(kāi)發(fā)周期短等特點(diǎn),十分方便進(jìn)行電子產(chǎn)品的開(kāi)發(fā)和設(shè)計(jì)。電子設(shè)計(jì)自動(dòng)化技術(shù)以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)??删幊踢壿嬈骷拈_(kāi)發(fā)軟件及實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具,通過(guò)有關(guān)的開(kāi)發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯,邏輯化簡(jiǎn),邏輯分割,邏輯映射,編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T(mén)新技術(shù)。本設(shè)計(jì)利用VHDL硬件描述語(yǔ)言結(jié)合可編程邏輯器件進(jìn)行的,并通過(guò)數(shù)碼管動(dòng)態(tài)顯示計(jì)時(shí)結(jié)果。數(shù)字鐘可以由各種技術(shù)實(shí)現(xiàn),如單片機(jī)、FPGA等,利用可編程邏輯器件具有其他方式?jīng)]有的特點(diǎn),它具有易學(xué)、方便、新穎、有趣、直觀、設(shè)計(jì)與實(shí)驗(yàn)項(xiàng)目成功率高、理論與實(shí)踐結(jié)合緊密、體積小、容量大、I/O口豐富、易編程和加密等特點(diǎn),并且它還具有開(kāi)放的界面,豐富的設(shè)計(jì)庫(kù),模塊化的工具以及LPM定制等優(yōu)良性能,應(yīng)用非常方便。因此,本設(shè)計(jì)采用可編程邏輯器件實(shí)現(xiàn)。1.1.2課題研究的必要性現(xiàn)在是一個(gè)知識(shí)爆炸的新時(shí)代。新產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新月異??梢院敛豢鋸埖恼f(shuō),電子技術(shù)的應(yīng)用無(wú)處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。在這快速發(fā)展的年代,時(shí)間對(duì)人們來(lái)說(shuō)是越來(lái)越寶貴,在快節(jié)奏的生活時(shí),人們往往忘記了時(shí)間,一旦遇到重要的事情而忘記了時(shí)間,這將會(huì)帶來(lái)很大的損失。因此我們需要一個(gè)定時(shí)系統(tǒng)來(lái)提醒這些忙碌的人。數(shù)字化的鐘表給人們帶來(lái)了極大的方便。近些年,隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)數(shù)字鐘的要求也越來(lái)越高,傳統(tǒng)的時(shí)鐘已不能滿足人們的需求。多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有電子鬧鐘、數(shù)字鬧鐘等等。設(shè)計(jì)功能要求能按時(shí)鐘功能進(jìn)行小時(shí)、分鐘、秒計(jì)時(shí),并顯示時(shí)間及調(diào)整時(shí)間,能整點(diǎn)報(bào)時(shí),定點(diǎn)報(bào)時(shí),使用4個(gè)數(shù)碼管,能切換顯示?;竟δ埽海?)時(shí)的計(jì)時(shí)要求為24進(jìn)制,分和秒的計(jì)時(shí)要求為60進(jìn)制(2)準(zhǔn)確計(jì)時(shí),以數(shù)字形式顯示時(shí),分,秒的時(shí)間(3)校時(shí)時(shí)間擴(kuò)展功能:(1)定時(shí)鬧鈴控制;(2)校園打鈴功能;1.2課題研究的內(nèi)容本設(shè)計(jì)主要研究基于FPGA的數(shù)字鐘,要求時(shí)間以24小時(shí)為一個(gè)周期,顯示時(shí)、分、秒。具有校時(shí)以及報(bào)時(shí)功能,可以對(duì)時(shí)、分及秒進(jìn)行單獨(dú)校對(duì),使其校正到標(biāo)準(zhǔn)時(shí)間,校對(duì)時(shí)間由4個(gè)鍵盤(pán)進(jìn)行控制,為了保證計(jì)時(shí)的穩(wěn)定及準(zhǔn)確須由晶體振蕩器提供時(shí)間基準(zhǔn)信號(hào)。另外,本系統(tǒng)還具有定時(shí)鬧鐘和校園打鈴功能,可以在任意時(shí)間響鬧鈴,同時(shí)分別按照規(guī)定好的春季和夏季作息時(shí)間響鈴。

2FPGA開(kāi)發(fā)流程簡(jiǎn)介2.1FPGA概述FPGA是現(xiàn)場(chǎng)可編程門(mén)陣列(FieldProgrammableGateArray)的簡(jiǎn)稱,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(ComplexProgrammableLogicDevice)的簡(jiǎn)稱,兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。CPLD/PGFA幾乎能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路。它如同一張白紙或是一堆積木,工程師可以通過(guò)傳統(tǒng)的原理圖輸入或硬件描述語(yǔ)言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過(guò)軟件仿真可以事先驗(yàn)證設(shè)計(jì)的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。使用CPLA/FPGA開(kāi)發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點(diǎn)使得CPLA/FPGA技術(shù)在20世紀(jì)90年代以后得到飛速的發(fā)展,同時(shí)也大大推動(dòng)了EDA軟件和硬件描述語(yǔ)言HDL的進(jìn)步。2.2FPGA基本結(jié)構(gòu)FPGA具有掩膜可編程門(mén)陣列的通用結(jié)構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來(lái)實(shí)現(xiàn)不同的設(shè)計(jì)。FPGA一般由3種可編程電路和一個(gè)用于存放編程數(shù)據(jù)的靜態(tài)存儲(chǔ)器SRAM組成。這3種可編程電路是:可編程邏輯模塊(CLB--ConfigurableLogicBlock)、輸入/輸出模塊(input/outputblock--I/OBlock)和互連資源(IR—InterconnectResource)??删幊踢壿嬆KCLB是實(shí)現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個(gè)陣列,散布于整個(gè)芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長(zhǎng)度的連接線段和一些可編程連接開(kāi)關(guān),它們將各個(gè)CLB之間或CLB、IOB之間以及IOB之間連接起來(lái),構(gòu)成特定功能的電路。1.CLB是FPGA的主要組成部分。圖2-1是CLB基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。CLB中3個(gè)邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G’、F’和H’。G有4個(gè)輸入變量G1、G2、G3和G4;F也有4個(gè)輸入變量F1、F2、F3和F4。這兩個(gè)函數(shù)發(fā)生器是完全獨(dú)立的,均可以實(shí)現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個(gè)輸入信號(hào);前兩個(gè)是函數(shù)發(fā)生器的輸出G’和F’,而另一個(gè)輸入信號(hào)是來(lái)自信號(hào)變換電路的輸出H1。這個(gè)函數(shù)發(fā)生器能實(shí)現(xiàn)3輸入變量的各種組合函數(shù)。這3個(gè)函數(shù)發(fā)生器結(jié)合起來(lái),可實(shí)現(xiàn)多達(dá)9變量的邏輯函數(shù)。CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(四選一、二選一等),通過(guò)對(duì)CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來(lái)選擇觸發(fā)器的激勵(lì)輸入信號(hào)、時(shí)鐘有效邊沿、時(shí)鐘使能信號(hào)以及輸出信號(hào)。這些數(shù)據(jù)選擇器的地址控制信號(hào)均由編程信息提供,從而實(shí)現(xiàn)所需的電路結(jié)構(gòu)。CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過(guò)查找ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫(xiě)存儲(chǔ)器使用,它由信號(hào)變換電路控制。2.輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。每個(gè)IOB控制一個(gè)引腳,它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時(shí),通過(guò)該引腳的輸入信號(hào)先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延CLCLBCLBCLBCLBCLBBCLBCLBCLBCLBCLBCLBCLBCLBBCLBCLBCLB可編程開(kāi)關(guān)矩輸入輸出模塊互連資源圖2-1CLB基本結(jié)構(gòu)時(shí)幾納秒(或者不延時(shí))送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通過(guò)編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來(lái)自輸入緩沖器,還是來(lái)自觸發(fā)器。當(dāng)IOB控制的引腳被定義為輸出時(shí),CLB陣列的輸出信號(hào)OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻接通Vcc、地線或者不接通,用以改善輸出波形和負(fù)載能力。3.可編程互連資源IR??删幊袒ミB資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來(lái),構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開(kāi)關(guān),通過(guò)自動(dòng)布線實(shí)現(xiàn)各種電路的連接。2.3FPGA系統(tǒng)設(shè)計(jì)流程一般說(shuō)來(lái),一個(gè)比較大的完整的項(xiàng)目應(yīng)該采用層次化的描述方法:分為幾個(gè)較大的模塊,定義好各功能模塊之間的接口,然后各個(gè)模塊再細(xì)分去具體實(shí)現(xiàn),這就是TOPDOWN(自頂向下)的設(shè)計(jì)方法。目前這種高層次的設(shè)計(jì)方法已被廣泛采用。高層次設(shè)計(jì)只是定義系統(tǒng)的行為特征,可以不涉及實(shí)現(xiàn)工藝,因此還可以在廠家綜合庫(kù)的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)絡(luò)表,使工藝轉(zhuǎn)化變得輕而易舉。CPLD/FPGA系統(tǒng)設(shè)計(jì)的工作流程如圖2-2所示。系統(tǒng)劃分系統(tǒng)劃分=1\*GB3①編譯器=3\*GB3③代碼級(jí)功能仿真=4\*GB3④綜合器=5\*GB3⑤適配前時(shí)序仿真=6\*GB3⑥適配器=7\*GB3⑦CPLD/FPGA實(shí)現(xiàn)適配后仿真模型=8\*GB3⑧適配后時(shí)序仿真適配報(bào)告=8\*GB3⑧ASIC實(shí)現(xiàn)VHDL代碼或圖形方式輸入=2\*GB3②仿真綜合庫(kù)器件編程文件=8\*GB3⑧圖2-2CPLD/FPGA系統(tǒng)設(shè)計(jì)流程流程說(shuō)明:1.工程師按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。2.輸入VHDL代碼,這是設(shè)計(jì)中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。3.將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件。4.進(jìn)行代碼級(jí)的功能仿真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性。這一步驟適用于大型設(shè)計(jì),因?yàn)閷?duì)于大型設(shè)計(jì)來(lái)說(shuō),在綜合前對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。一般情況下,這一仿真步驟可略去。5.利用綜合器對(duì)VHDL源代碼進(jìn)行綜合優(yōu)化處理,生成門(mén)級(jí)描述的網(wǎng)絡(luò)表文件,這是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過(guò)程要在相應(yīng)的廠家綜合庫(kù)的支持下才能完成。6.利用產(chǎn)生的網(wǎng)絡(luò)表文件進(jìn)行適配前的時(shí)序仿真,仿真過(guò)程不涉及具體器件的硬件特性,是較為粗略的。一般的設(shè)計(jì),也可略去這一步驟。7.利用適配器將綜合后的網(wǎng)絡(luò)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化和布局布線。8.在適配完成后,產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:(a)適配報(bào)告,包括芯片內(nèi)部資源利用情況,設(shè)計(jì)的布爾方程描述情況等;(b)適配后的仿真模型;(c)器件編程文件。根據(jù)適配后的仿真模型,可以進(jìn)行適配后時(shí)序仿真,因?yàn)橐呀?jīng)得到器件的實(shí)際硬件特性(如時(shí)延特性),所以仿真結(jié)果能比較精確的預(yù)期未來(lái)芯片的實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就修改VHDL源代碼或選擇不同速度和品質(zhì)的器件,直至滿足設(shè)計(jì)要求。最后將適配器產(chǎn)生的器件編程文件通過(guò)編程器或下載電纜載入到目標(biāo)芯片CPLD/FPGA中。2.4FPGA開(kāi)發(fā)編程原理硬件設(shè)計(jì)需要根據(jù)各種性能指標(biāo)、成本、開(kāi)發(fā)周期等因素,確定最佳的實(shí)現(xiàn)方案,畫(huà)出系統(tǒng)框圖,選擇芯片,設(shè)計(jì)PCB并最終形成樣機(jī)。CPLD/FPGA軟件設(shè)計(jì)可分為兩大塊:編程語(yǔ)言和編程工具。編程語(yǔ)言主要有VHDL和Verilog兩種硬件描述語(yǔ)言;編程工具主要是兩大廠家Altera和Xilinx的集成綜合EDA軟件(如QuartusII、Foundation、ISE)以及第三方工具(如FPGAExpress、Modelsim、SynposysSVS等)。具體的設(shè)計(jì)輸入方式有以下幾種:1.HDL語(yǔ)言方式。HDL既可以描述底層設(shè)計(jì),也可以描述頂層的設(shè)計(jì),但它不容易做到較高的工作速度和芯片利用率。用這種方式描述的項(xiàng)目最后所能達(dá)到的性能與設(shè)計(jì)人員的水平、經(jīng)驗(yàn)以及綜合軟件有很大的關(guān)系。2.圖形方式??梢苑譃殡娐吩韴D描述,狀態(tài)機(jī)描述和波形描述3種形式。有的軟件3種輸入方法都支持,如Active-HDL。MAX+plusII圖形輸入方式只支持電路原理圖描述和波形描述兩種。電路原理圖方式描述比較直觀和高效,對(duì)綜合軟件的要求不高。一般大都使用成熟的IP核和中小規(guī)模集成電路所搭成的現(xiàn)成電路,整體放到一片可編程邏輯器件的內(nèi)部去,所以硬件工作速度和芯片利用率很高,但是但項(xiàng)目很大的時(shí)候,該方法就顯得有些繁瑣;狀態(tài)機(jī)描述主要用來(lái)設(shè)計(jì)基于狀態(tài)機(jī)思想的時(shí)序電路。在圖形的方式下定義好各個(gè)工作狀態(tài),然后在各個(gè)狀態(tài)上輸入轉(zhuǎn)換條件以及相應(yīng)的輸入輸出,最后生成HDL語(yǔ)言描述,送去綜合軟件綜合到可編程邏輯器件的內(nèi)部。由于狀態(tài)機(jī)到HDL語(yǔ)言有一種標(biāo)準(zhǔn)的對(duì)應(yīng)描述方式,所以這種輸入方式最后所能達(dá)到的工作速度和芯片利用率主要取決于綜合軟件;波形描述方式是基于真值表的一種圖形輸入方式,直接描述輸入與輸出的波形關(guān)系。這種輸入方式最后所能達(dá)到的工作速度和芯片利用率也是主要取決于綜合軟件。

3數(shù)字鐘總體設(shè)計(jì)方案3.1系統(tǒng)方案的選擇首先的任務(wù)是根據(jù)任務(wù)要求進(jìn)行模塊劃分,提出方案,并進(jìn)行比較分析,最終找到較優(yōu)的方案。方案一、采用異步電路,數(shù)據(jù)選擇器將時(shí)鐘信號(hào)輸給秒模塊,秒模塊的進(jìn)位輸給分模塊,分模塊進(jìn)位輸入給時(shí)模塊,切換的時(shí)候使用2選1數(shù)據(jù)選擇器進(jìn)行切換,電路框圖如下:顯示顯示切換秒鐘分鐘小時(shí)控制1Hz脈沖信號(hào)鬧鐘圖3-1方案一框圖該方案的優(yōu)點(diǎn)是模塊內(nèi)部簡(jiǎn)單,基本不需要額外的電路,但缺點(diǎn)也很明顯,該方案結(jié)構(gòu)不清晰,模塊間關(guān)系混亂,模塊外還需使用較多門(mén)電路,不利于功能擴(kuò)充,且使用了異步電路,計(jì)數(shù)在59的時(shí)候,高一級(jí)馬上進(jìn)位,故本次設(shè)計(jì)不采用此方案。方案二、采用同步電路,總線結(jié)構(gòu)時(shí)鐘信號(hào)分別加到各個(gè)模塊,各個(gè)模塊功能相對(duì)獨(dú)立,框圖如下:鬧鐘鬧鐘小時(shí)分鐘秒鐘顯示控制顯示總線控制總線1Hz信號(hào)圖3-2方案二框圖該方案用總線結(jié)構(gòu),主要功能集中在模塊內(nèi)部,模塊功能較為獨(dú)立,模塊間連線簡(jiǎn)單,易于擴(kuò)展,本次設(shè)計(jì)采用此方案。綜上所述,本次設(shè)計(jì)采用方案二。秒計(jì)數(shù)和分計(jì)數(shù)為60進(jìn)制,時(shí)計(jì)數(shù)為24進(jìn)制,為了簡(jiǎn)化設(shè)計(jì),秒和分計(jì)數(shù)采用同一單元??刂颇K有兩部分,一為實(shí)現(xiàn)調(diào)整切換,二為實(shí)現(xiàn)顯示切換?,F(xiàn)對(duì)本方案中的各個(gè)主要功能模塊的接口定義如下:60進(jìn)制模塊(電路圖中模塊名稱為60count,下同。)實(shí)現(xiàn)同步60進(jìn)制計(jì)數(shù),可調(diào)整電源5v時(shí)鐘信號(hào)輸入接1Hz的信號(hào)源進(jìn)位輸入接秒的進(jìn)位信號(hào),實(shí)現(xiàn)秒功能時(shí),接低電平。進(jìn)位輸出秒模塊接分模塊,分模塊接時(shí)模塊顯示輸出接到顯示總線,能閃爍鬧鐘比較信號(hào)輸出接到鬧鐘,秒模塊懸空整點(diǎn)報(bào)時(shí)信號(hào)輸出接到響鈴,實(shí)現(xiàn)3短1長(zhǎng)響鈴調(diào)整使能端入0有效,有效時(shí),顯示信號(hào)輸出,同時(shí)屏蔽進(jìn)位輸入和進(jìn)位輸出,允許調(diào)整信號(hào)輸入。顯示使能端入0有效調(diào)整信號(hào)輸入24進(jìn)制模塊(24count):實(shí)現(xiàn)同步24進(jìn)制計(jì)數(shù),可調(diào)整電源,時(shí)鐘信號(hào)同上進(jìn)位輸入接分的進(jìn)位信號(hào)進(jìn)位輸出秒模塊接分模塊,分模塊接時(shí)模塊顯示輸出同上鬧鐘比較信號(hào)輸出接到鬧鐘調(diào)整使能端,顯示使能端,調(diào)整信號(hào)輸入同上鬧鐘模塊(60clock,24clock):實(shí)現(xiàn)可與時(shí)鐘比較,并輸出鬧鈴信號(hào),可調(diào)整電源,時(shí)鐘信號(hào)同上鬧鐘比較信號(hào)輸入秒模塊接分模塊,分模塊接時(shí)模塊顯示輸出同上鬧鈴輸出接到蜂鳴器調(diào)整使能端,顯示使能端,調(diào)整信號(hào)輸入同上控制模塊(fun,func):管理總線資源,對(duì)各個(gè)模塊輸出控制信號(hào)電源5vVCC調(diào)整切換信號(hào)接各個(gè)需要調(diào)整的模塊調(diào)整信號(hào)接到各個(gè)需要調(diào)整的模塊顯示切換信號(hào)接到各個(gè)需要共享顯示總線的模塊控制信號(hào)輸出接到各個(gè)模塊,有且只能有1個(gè)為0至此,本階段就結(jié)束了。在上面的接口定義中,也可以發(fā)現(xiàn),各個(gè)模塊的獨(dú)立性是很強(qiáng)的,這樣的結(jié)構(gòu)使得以后的擴(kuò)展很容易。3.2數(shù)字鐘的構(gòu)成數(shù)字鐘實(shí)際上是一個(gè)對(duì)標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路。由于計(jì)數(shù)的起始時(shí)間不可能與標(biāo)準(zhǔn)時(shí)間(如北京時(shí)間)一致,故需要在電路上加一個(gè)校時(shí)電路,同時(shí)標(biāo)準(zhǔn)的1HZ時(shí)間信號(hào)必須做到準(zhǔn)確穩(wěn)定。通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘。圖3-1所示為數(shù)字鐘的一般構(gòu)成框圖。主要包括時(shí)間基準(zhǔn)電路、計(jì)數(shù)器電路、控制電路、譯碼和顯示電路。其中的控制邏輯電路是比較靈活多樣的,不斷完善它可以增強(qiáng)數(shù)字鐘的功能。譯碼驅(qū)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)時(shí)十位計(jì)數(shù)時(shí)個(gè)位計(jì)數(shù)分十位計(jì)數(shù)分個(gè)位計(jì)數(shù)秒十位計(jì)數(shù)秒個(gè)位計(jì)數(shù)校時(shí)控制電路校分控制電路分頻器電路分頻器電路晶體振蕩器電路1HZ圖3-3數(shù)字鐘的一般組成框圖本設(shè)計(jì)在上面數(shù)字鐘結(jié)構(gòu)的基礎(chǔ)上還加入了定時(shí)鬧鈴功能,以及校園打鈴功能,其總體框架如圖3-2。圖3-4總體框架圖3.2數(shù)字鐘的工作原理振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號(hào),作為數(shù)字鐘的時(shí)間基準(zhǔn),然后經(jīng)過(guò)分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計(jì)數(shù)器滿60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿60后向小時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按照“24翻1”規(guī)律計(jì)數(shù)。計(jì)滿后各計(jì)數(shù)器清零,重新計(jì)數(shù)。計(jì)數(shù)器的輸出分別經(jīng)譯碼器送數(shù)碼管顯示。計(jì)時(shí)出現(xiàn)誤差時(shí),可以用校時(shí)電路校時(shí)、校分。在控制信號(hào)中除了一般的校時(shí)信號(hào)外,還有時(shí)鐘使能信號(hào)、時(shí)鐘清零信號(hào)。控制信號(hào)由4個(gè)矩形鍵盤(pán)輸入。時(shí)基電路可以由石英晶體振蕩電路構(gòu)成,如果晶振頻率為1MHz,經(jīng)過(guò)6次十分頻就可以得到秒脈沖信號(hào)。譯碼顯示電路由七段譯碼器完成,顯示由數(shù)碼管構(gòu)成。

4單元電路設(shè)計(jì)4.1分頻模塊電路設(shè)計(jì)與實(shí)現(xiàn)晶體振蕩器是構(gòu)成數(shù)字式時(shí)鐘的核心,振蕩器的穩(wěn)定度及頻率的精度決定了數(shù)字鐘計(jì)時(shí)的準(zhǔn)確程度,它保證了時(shí)鐘的走時(shí)準(zhǔn)確及穩(wěn)定。石英晶體的選頻特性非常好,只有某一頻率點(diǎn)的信號(hào)可以通過(guò)它,其它頻率段的信號(hào)均會(huì)被它所衰減,而且,振蕩信號(hào)的頻率與振蕩電路中的R、C元件的數(shù)值無(wú)關(guān)。因此,這種振蕩電路輸出的是準(zhǔn)確度極高的信號(hào)。然后再利用分頻電路,將其輸出信號(hào)轉(zhuǎn)變?yōu)槊胄盘?hào),其組成框圖如圖4-1。分頻電路分頻電路石英晶體振蕩電路秒信號(hào)圖4-1秒信號(hào)產(chǎn)生電路框圖本系統(tǒng)使用的晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的40MHz的方波信號(hào),其輸出至分頻電路。50K分頻電路的邏輯框圖如圖4-2所示。圖4-2分頻電路模塊其VHDL語(yǔ)言如下所示:libraryieee;useieee.std_logic_1164.all; --50k分頻useieee.std_logic_unsigned.all;entityfenpin_50kisport(clk:instd_logic;q:outstd_logic);end;architectureoneoffenpin_50kissignalfull:std_logic;beginreg:process(clk,full)variablecnt:std_logic_vector(15downto0):="0000000000000000";beginifclk'eventandclk='1'thenifcnt="1100001101001111"thencnt:="0000000000000000";elsecnt:=cnt+1;endif; ifcnt<"110000110101000"then full<='1'; elsefull<='0';endif;endif;q<=full;endprocess;end;系統(tǒng)使用的所有分頻電路圖見(jiàn)圖4-3。圖4-3分頻模塊電路設(shè)計(jì)電路中采用QuartusII并使用VHDL語(yǔ)言進(jìn)行硬件分頻。經(jīng)分頻后輸出1HZ的標(biāo)準(zhǔn)秒信號(hào)clk_s、128HZ的按鍵去抖信號(hào)clk_128和512HZ用于報(bào)時(shí)模塊的輸入信號(hào)clk_512。該模塊的時(shí)序仿真圖如圖4-4所示,滿足設(shè)計(jì)要求。圖4-4分頻模塊仿真圖4.2校時(shí)控制模塊電路設(shè)計(jì)與實(shí)現(xiàn)4.2.1鍵盤(pán)接口電路原理校時(shí)控制模塊在本系統(tǒng)中也就是鍵盤(pán)接口電路部分。下面先介紹鍵盤(pán)接口電路的工作原理,如圖4-5。本系統(tǒng)采用的就是這種行列式鍵盤(pán)接口,相對(duì)個(gè)按鍵的鍵盤(pán)接口來(lái)說(shuō)節(jié)省了I/O接口。如圖所示,行線通過(guò)一個(gè)電阻被上拉到+5V電壓。行線與按鍵的一個(gè)引腳相連,列線與按鍵的另一個(gè)引腳相連。平時(shí)列線被置成低電平,沒(méi)有按鍵被按下的時(shí)候,行線保持高電平,而有按鍵被按下的時(shí)候,行線被拉成低電平,這時(shí)候控制器就知道有按鍵被按下,但只能判斷出在哪一行,不能判斷出在哪一列,因此接下來(lái)就要進(jìn)行鍵盤(pán)掃描,以確定具體是哪個(gè)按鍵被按下。鍵盤(pán)掃描的過(guò)程事將列線逐列置成低電平,然后讀取行線狀態(tài),直到行線中出現(xiàn)低電平,可知這時(shí)哪一列是低電平,然后將行線與列線的狀態(tài)裝入鍵碼寄存器,進(jìn)行按鍵譯碼,得到按下的按鍵的相應(yīng)編碼,這樣就完成了按鍵掃描的過(guò)程。當(dāng)然,一個(gè)完整的按鍵掃描過(guò)程還需要配合相應(yīng)的鍵盤(pán)去抖手段才能正確的識(shí)別按鍵,不會(huì)發(fā)生重鍵和錯(cuò)誤判斷等情況。圖4-5鍵盤(pán)接口電路4.2.2鍵盤(pán)接口的VHDL描述1.按鍵消抖本模塊用于當(dāng)有按鍵按下時(shí),采用軟件消抖的辦法去除按鍵抖動(dòng)。模塊的實(shí)現(xiàn)方法是先判斷是否有按鍵按下,如有按鍵按下則延時(shí)一段時(shí)間,待抖動(dòng)過(guò)去之后再讀行線狀態(tài),如果仍有低電平行線,則確定有按鍵按下,然后產(chǎn)生一個(gè)有按鍵按下的信號(hào)。該模塊有一個(gè)時(shí)鐘輸入端口,輸入時(shí)鐘信號(hào)是分頻出來(lái)的128HZ的時(shí)鐘;有一個(gè)輸入端口與按鍵相連,用于輸入按鍵電平;一個(gè)輸出端口,用于輸出有按鍵按下時(shí)經(jīng)過(guò)取抖的信號(hào)。該模塊的邏輯框圖如圖4-6所示。圖4-6去抖邏輯框圖該電路的VHDL程序如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityqudouisport(clkin:INSTD_LOGIC; reset:INSTD_LOGIC;din:INSTD_LOGIC;dout:OUTSTD_LOGIC);endqudou;architectureBehavioralofqudouisTYPEstateIS(s0,s1,s2,s3);SIGNALpre_s,next_s:state;beginP0:PROCESS(reset,clkin)BEGINifreset='0'thenpre_s<=s0;elsifrising_edge(clkin)thenpre_s<=next_s;elsenull;endif;ENDPROCESSP0; P1:PROCESS(pre_s,next_s,din)BEGINcasepre_siswhens0=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s1;endif;whens1=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s2;endif;whens2=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s3;endif;whens3=>dout<='0';ifdin='1'thennext_s<=s0;elsenext_s<=s1;endif;endcase;ENDPROCESSP1; endBehavioral;程序說(shuō)明:這段程序是實(shí)現(xiàn)按鍵消抖的,實(shí)現(xiàn)較簡(jiǎn)單,原理是當(dāng)有按鍵按下的時(shí)候,din會(huì)變成低電平,這時(shí)狀態(tài)機(jī)會(huì)進(jìn)入下一個(gè)狀態(tài),如果此時(shí)din不為低電平時(shí),便會(huì)跳轉(zhuǎn)回初始狀態(tài);當(dāng)din為高電平時(shí),狀態(tài)機(jī)會(huì)繼續(xù)進(jìn)入下一個(gè)狀態(tài)。由于計(jì)數(shù)脈沖為128HZ,故只有當(dāng)?shù)碗娖匠掷m(xù)超過(guò)20ms時(shí),才有可能進(jìn)入最后一個(gè)狀態(tài),從而輸入高電平。如果有按鍵抖動(dòng)的話,狀態(tài)機(jī)會(huì)在初始狀態(tài)和最終狀態(tài)之間變動(dòng)多次,但不會(huì)輸出高電平,所以按鍵輸出就不會(huì)受抖動(dòng)影響。一旦到達(dá)最后一個(gè)狀態(tài),抖動(dòng)已經(jīng)過(guò)去,就不會(huì)發(fā)生重鍵現(xiàn)象了,這樣就去除了抖動(dòng)。2.按鍵復(fù)用電路系統(tǒng)需要兩個(gè)時(shí)鐘校時(shí)按鍵,兩個(gè)鬧鐘校時(shí)按鍵,另外還需要一個(gè)顯示切換按鍵和一個(gè)春夏作息時(shí)間按鍵,這樣就一共需要6個(gè)按鍵,而本系統(tǒng)的硬件電路板只提供了4個(gè)按鍵,所以需要按鍵復(fù)用電路。按鍵復(fù)用電路的框圖如圖4-7所示。圖4-7按鍵掃描模塊本系統(tǒng)給出的解決方案是,定時(shí)鬧鈴和時(shí)鐘的校時(shí)按鍵復(fù)用,而另外用一個(gè)按鍵控制復(fù)用和顯示切換,而第四個(gè)按鍵控制春季和夏季作息時(shí)間的切換。其中,KeySwitch模塊的VHDL語(yǔ)言為:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYKeySwitchISPORT(CLK,reset:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDKeySwitch;ARCHITECTUREbehavOFKeySwitchISTYPEstatesIS(st0,st1,st2);SIGNALstx:states;BEGINCOMREG:PROCESS(CLK,RESET)BEGINIFRESET='0'THENSTX<=st0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>STX<=st1;WHENst1=>STX<=st0;WHENOTHERS=>STX<=st0;ENDCASE;ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX)BEGINCASESTXISWHENst0=>y<='0';WHENst1=>y<='1';WHENOTHERS=>y<='1';ENDCASE;ENDPROCESSCOM1;ENDbehav;2.完整的按鍵控制電路完整的鍵盤(pán)程序應(yīng)加上剛開(kāi)始介紹的分頻模塊,鍵盤(pán)接口電路總的邏輯連接框圖如圖4-8所示。圖4-8鍵盤(pán)接口連接框圖按鍵接口模塊的仿真波形如下圖所示:圖4-9鍵盤(pán)接口仿真波形圖4.3計(jì)數(shù)模塊設(shè)計(jì)與實(shí)現(xiàn)4.3.1秒和分計(jì)數(shù)模塊秒和分計(jì)數(shù)模塊邏輯框圖如圖4-9所示。圖4-10秒計(jì)數(shù)模塊框圖輸入端口EN是秒時(shí)鐘使能信號(hào),也是整個(gè)數(shù)字鐘的使能信號(hào),高電平有效;CLRN是異步清零信號(hào);CLK是秒脈沖輸入端口,當(dāng)秒計(jì)數(shù)到59時(shí)輸出高電平,其它時(shí)候輸出低電平。秒計(jì)數(shù)模塊的程序如下:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYclock_60ISPORT(CLRN,EN,CLK:INSTD_LOGIC;cout1:outSTD_LOGIC;Qsa:OUTINTEGERRANGE0TO10;Qsb:OUTINTEGERRANGE0TO10);ENDclock_60;ARCHITECTUREaOFclock_60ISBEGINPROCESS(CLK,CLRN)VARIABLEtmpsa:INTEGERRANGE0TO10;VARIABLEtmpsb:INTEGERRANGE0TO10;BEGINIFCLRN='0'THENtmpsb:=0;tmpsa:=0;COUT1<='0';ELSIFCLK'eventANDCLK='1'THEN IFEN='1'THENIFtmpsb=5ANDtmpsa=9THENtmpSa:=0;tmpSb:=0;COUT1<='1';ELSIFtmpSa=9THENtmpSa:=0;tmpSb:=tmpSb+1;ELSEtmpSa:=tmpSa+1;COUT1<='0';ENDIF;ENDIF;ENDIF;QSA<=tmpsa;QSB<=tmpsb;ENDPROCESS;ENDa;秒時(shí)鐘的仿真波形圖如圖4-11所示,仿真圖滿足設(shè)計(jì)的要求。分計(jì)數(shù)和時(shí)計(jì)數(shù)模塊的設(shè)計(jì)原理與秒模塊的類似。圖4-11秒時(shí)鐘仿真波形4.3.2時(shí)計(jì)數(shù)模塊時(shí)計(jì)數(shù)模塊邏輯框圖如圖4-9所示。圖4-12秒計(jì)數(shù)模塊框圖同樣,輸入端口EN是秒時(shí)鐘使能信號(hào),也是整個(gè)數(shù)字鐘的使能信號(hào),高電平有效;CLRN是異步清零信號(hào);CLK是秒脈沖輸入端口,當(dāng)秒計(jì)數(shù)到23時(shí)輸出高電平,其它時(shí)候輸出低電平。秒計(jì)數(shù)模塊的程序如下:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYclock_24ISPORT(CLRN,EN,CLK:INSTD_LOGIC;cout1:outSTD_LOGIC;Qsa:OUTINTEGERRANGE0TO10;Qsb:OUTINTEGERRANGE0TO10);ENDclock_24;ARCHITECTUREaOFclock_24ISBEGINPROCESS(CLK,CLRN)VARIABLEtmpsa:INTEGERRANGE0TO10;VARIABLEtmpsb:INTEGERRANGE0TO10;BEGINIFCLRN='0'THENtmpsb:=0;tmpsa:=0;COUT1<='0';ELSIFCLK'eventANDCLK='1'THEN IFEN='1'THENIFtmpsb=2ANDtmpsa=3THENtmpSa:=0;tmpSb:=0;COUT1<='1';ELSIFtmpSa=9THENtmpSa:=0;tmpSb:=tmpSb+1;ELSEtmpSa:=tmpSa+1;COUT1<='0';ENDIF;ENDIF;ENDIF;QSA<=tmpsa;QSB<=tmpsb;ENDPROCESS;ENDa;時(shí)計(jì)數(shù)模塊的仿真波形圖如下圖所示:圖4-13秒計(jì)數(shù)模塊仿真波形圖4.3.3時(shí)鐘校時(shí)模塊本系統(tǒng)需要對(duì)分和時(shí)實(shí)現(xiàn)校時(shí)功能,即可以利用按鍵調(diào)整分和時(shí)。利用上述計(jì)數(shù)電路的特點(diǎn),可通過(guò)人為產(chǎn)生脈沖的方法來(lái)產(chǎn)生計(jì)數(shù)的增加,以便實(shí)現(xiàn)校時(shí)功能。電路圖如下圖所示:圖4-14時(shí)鐘校時(shí)模塊圖其中,StateMachine模塊的代碼如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYStateMachineISPORT(CLK,reset:INSTD_LOGIC;y:OUTSTD_LOGIC_VECTOR(1DOWNTO0));ENDStateMachine;ARCHITECTUREbehavOFStateMachineISTYPEstatesIS(st0,st1,st2);SIGNALstx:states;BEGINCOMREG:PROCESS(CLK,RESET)BEGIN--決定轉(zhuǎn)換狀態(tài)的進(jìn)程IFRESET='0'THENSTX<=st0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>STX<=st1;WHENst1=>STX<=st2;WHENst2=>STX<=st0;WHENOTHERS=>STX<=st0;ENDCASE;ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX)--輸出控制信號(hào)的進(jìn)程BEGINCASESTXISWHENst0=>y<="11";WHENst1=>y<="01";WHENst2=>y<="10";WHENOTHERS=>y<="11";ENDCASE;ENDPROCESSCOM1;ENDbehav;4.3.3帶校時(shí)功能的整體時(shí)鐘模塊將上面的模塊聯(lián)合在一起,就得到了整體時(shí)鐘模塊,并且可以實(shí)現(xiàn)校時(shí)功能。系統(tǒng)模塊圖如下圖所示:圖4-15時(shí)鐘模塊框圖頂層模塊圖如下圖所示:圖4-15時(shí)鐘模塊頂層圖整個(gè)時(shí)鐘模塊的仿真波形圖如下圖所示:圖4-15時(shí)鐘模塊仿真波形圖4.4定時(shí)鬧鈴模塊定時(shí)鬧鈴模塊由兩部分組成,一部分負(fù)責(zé)調(diào)整鬧鈴的時(shí)間,另一部分負(fù)責(zé)在規(guī)定的時(shí)間觸發(fā)打鈴。其中,控制部分的功能和時(shí)鐘校時(shí)模塊的功能相同,但是實(shí)現(xiàn)方式不太相同。本模塊中,第一個(gè)按鍵不按下的狀態(tài)下,按第二個(gè)按鍵,調(diào)整分計(jì)數(shù),而在第一個(gè)按鍵按下的狀態(tài)下,按第二個(gè)按鍵調(diào)整的是時(shí)計(jì)數(shù)。4.4.1鬧鈴控制模塊控制部分的代碼如下所示:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYctrl_memoISPORT(reset,k1,up_key:INSTD_LOGIC;--k1高電平為調(diào)時(shí),低電平為調(diào)分Q_hourb:OUTINTEGERRANGE0TO10;--“時(shí)”高位Q_houra:OUTINTEGERRANGE0TO10;--“時(shí)”低位Q_minueb:OUTINTEGERRANGE0TO10;Q_minuea:OUTINTEGERRANGE0TO10);ENDctrl_memo;ARCHITECTUREaOFctrl_memoISBEGINPROCESS(reset,k1,up_key)VARIABLEQ_tmpma:INTEGERRANGE0TO10;VARIABLEQ_tmpmb:INTEGERRANGE0TO10;VARIABLEQ_tmpha:INTEGERRANGE0TO10;VARIABLEQ_tmphb:INTEGERRANGE0TO10;BEGINIFreset='0'THENQ_tmpma:=0;Q_tmpmb:=0;Q_tmpha:=0;Q_tmphb:=0;ELSIFup_key'eventANDup_key='1'THENIFk1='1'THENIFQ_tmphb=2ANDQ_tmpha=3THENQ_tmphb:=0;Q_tmpha:=0;ELSIFQ_tmpha=9THENQ_tmpha:=0;Q_tmphb:=Q_tmphb+1;ELSEQ_tmpha:=Q_tmpha+1;ENDIF;elseIFQ_tmpmb=5ANDQ_tmpma=9THENQ_tmpmb:=0;Q_tmpma:=0;ELSIFQ_tmpma=9THENQ_tmpma:=0;Q_tmpmb:=Q_tmpmb+1;ELSEQ_tmpma:=Q_tmpma+1;ENDIF;ENDIF;ENDIF;Q_hourb<=Q_tmphb;Q_houra<=Q_tmpha;Q_minueb<=Q_tmpmb;Q_minuea<=Q_tmpma;ENDPROCESS;ENDa;其頂層模塊圖如下圖所示:圖4-16定時(shí)鬧鐘模塊頂層圖4.4.2鬧鈴比較模塊比較模塊把輸入的時(shí)信號(hào)和秒信號(hào)和預(yù)設(shè)的時(shí)間進(jìn)行比較,如果相同,就會(huì)輸出高電平。的代碼如下:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYcomparerISPORT(CLk0:INSTD_LOGIC;QH_A,QM_A:ININTEGERRANGE0TO10;QH_B:ININTEGERRANGE0TO10;QM_B:ININTEGERRANGE0TO10;HARM_A,MARM_A:ININTEGERRANGE0TO10;HARM_B:ININTEGERRANGE0TO10;MARM_B:ININTEGERRANGE0TO10;SPEAK:OUTSTD_LOGIC);ENDcomparer;ARCHITECTUREaOFcomparerISSIGNALY:STD_LOGIC;BEGINSPEAK<=CLK0ANDY;Y<='1'WHEN(QH_A=HARM_A)AND(QM_A=MARM_A)AND(QH_B=HARM_B)AND(QM_B=MARM_B)ELSE'0';ENDa;頂層模塊圖如下圖所示:圖4-15定時(shí)鬧鐘比較模塊頂層圖4.5校園打鈴鬧鈴模塊4.5.1校園打鈴模塊校園打鈴的原理和定時(shí)鬧鈴相似,只是沒(méi)有設(shè)置模塊,所有的打鈴時(shí)間都是預(yù)設(shè)好的,并且分為春季作息時(shí)間和夏季作息時(shí)間。本模塊把輸入的時(shí)信號(hào)和秒信號(hào)和預(yù)設(shè)的時(shí)間進(jìn)行比較,如果相同,就會(huì)輸出高電平。本模塊的代碼如下:LIBRARYieee;USEieee.std_logic_1164.all;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYCOMP_TIMEISPORT(K3:INSTD_LOGIC;QH_A,QM_A:ININTEGERRANGE0TO10;QH_B:ININTEGERRANGE0TO10;QM_B:ININTEGERRANGE0TO10;Q_Y:OUTSTD_LOGIC);ENDCOMP_TIME;ARCHITECTUREaOFCOMP_TIMEISSIGNALQTIME:STD_LOGIC_VECTOR(12DOWNTO0);SIGNALQ_HA:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALQ_HB:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALQ_MA:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALQ_MB:STD_LOGIC_VECTOR(2DOWNTO0);BEGIN Q_HA<=conv_std_logic_vector(QH_A,4); Q_HB<=conv_std_logic_vector(QH_B,2); Q_MA<=conv_std_logic_vector(QM_A,4); Q_MB<=conv_std_logic_vector(QM_B,3);QTIME<=Q_HB&Q_HA&Q_MB&Q_MA;PROCESS(QTIME,K3)BEGINIFK3='1'THENCASEQTIMEISWHEN"0001101010000"=>Q_Y<='1'; WHEN"0001111000000"=>Q_Y<='1';WHEN"0001111010000"=>Q_Y<='1'; WHEN"0010000110101"=>Q_Y<='1';WHEN"0010001000101"=>Q_Y<='1'; WHEN"0010010110000"=>Q_Y<='1';WHEN"0010011010000"=>Q_Y<='1'; WHEN"0100000110101"=>Q_Y<='1';WHEN"0100001000101"=>Q_Y<='1'; WHEN"0100010110000"=>Q_Y<='1';WHEN"0101000000000"=>Q_Y<='1'; WHEN"0101000010000"=>Q_Y<='1';WHEN"0101001010101"=>Q_Y<='1'; WHEN"0101010000101"=>Q_Y<='1';WHEN"0101011010000"=>Q_Y<='1'; WHEN"0101100000000"=>Q_Y<='1';WHEN"0101101000101"=>Q_Y<='1'; WHEN"0101101010101"=>Q_Y<='1';WHEN"0101111000000"=>Q_Y<='1'; WHEN"0110010000000"=>Q_Y<='1';WHEN"0110011000101"=>Q_Y<='1'; WHEN"0110011010101"=>Q_Y<='1';WHEN"1000001000000"=>Q_Y<='1'; WHENOTHERS=>Q_Y<='0';ENDCASE;ELSECASEQTIMEISWHEN"0001101000000"=>Q_Y<='1'; WHEN"0001110110000"=>Q_Y<='1';WHEN"0001111000000"=>Q_Y<='1'; WHEN"0010000100101"=>Q_Y<='1';WHEN"0010000110101"=>Q_Y<='1';--0835 WHEN"0010010100000"=>Q_Y<='1'; --0920WHEN"0010011000000"=>Q_Y<='1'; --0940 WHEN"0100000100101"=>Q_Y<='1';--1025WHEN"0100000110101"=>Q_Y<='1'; --1035 WHEN"0100010100000"=>Q_Y<='1'; --1120WHEN"0101000100000"=>Q_Y<='1'; --1420 WHEN"0101000110000"=>Q_Y<='1'; --1430WHEN"0101010010101"=>Q_Y<='1'; --1515 WHEN"0101010100101"=>Q_Y<='1'; --1525WHEN"0101100010000"=>Q_Y<='1'; --1610 WHEN"0101100100000"=>Q_Y<='1'; --1620WHEN"0101110000101"=>Q_Y<='1'; --1705 WHEN"0101110010101"=>Q_Y<='1'; --1715WHEN"0110000000000"=>Q_Y<='1'; --1800 WHEN"0110010010000"=>Q_Y<='1'; --1910WHEN"0110011010101"=>Q_Y<='1'; --1955 WHEN"1000000000101"=>Q_Y<='1'; --2005WHEN"1000010000000"=>Q_Y<='1';--2100WHENOTHERS=>Q_Y<='0';ENDCASE;ENDIF;ENDPROCESS;ENDa;其頂層圖如下圖所示:圖4-16校園打鈴模塊頂層圖4.5.2打鈴時(shí)間調(diào)整模塊由于預(yù)設(shè)的時(shí)間和時(shí)鐘時(shí)間相同的時(shí)間是一分鐘,但是對(duì)于校園打鈴來(lái)說(shuō),一分鐘的時(shí)間明顯太長(zhǎng)了,所以需要打鈴時(shí)間調(diào)整模塊,以便于將時(shí)間調(diào)整為20s。其代碼如下所示:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYs20ISPORT(QY,CLK:INSTD_LOGIC;q_20s:outSTD_LOGIC);ENDs20;ARCHITECTUREaOFs20ISBEGINPROCESS(CLK)VARIABLEtmp:INTEGERRANGE0TO63;BEGINIFCLK'eventANDCLK='1'THENIFQY='1'THENIFtmp<=15THENtmp:=tmp+1;Q_20S<='1';ELSEtmp:=tmp+1;Q_20S<='0';ENDIF;ELSEtmp:=0;Q_20S<='0';ENDIF;ENDIF;ENDPROCESS;ENDa;其頂層圖如下圖所示:圖4-17響鈴時(shí)間調(diào)整模塊框圖4.6顯示電路設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)需要同時(shí)顯示正常時(shí)鐘和鬧鈴顯示,所以需要一個(gè)切換信號(hào)。顯示選擇模塊的代碼如下圖所示:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYNOR_ARM_CTLISPORT(k2:INSTD_LOGIC;QSAI,QMAI,QHAI:ININTEGERRANGE0TO10;QSBI,QMBI:ININTEGERRANGE0TO10;QHBI:ININTEGERRANGE0TO10;QH_ARM_A,QM_ARM_A:ININTEGERRANGE0TO10;QH_ARM_B:ININTEGERRANGE0TO10;QM_ARM_B:ININTEGERRANGE0TO10;Q_HAO,Q_MAO,Q_SAO:OUTINTEGERRANGE0TO10;Q_HBO:OUTINTEGERRANGE0TO10;Q_MBO,Q_SBO:OUTINTEGERRANGE0TO10);ENDNOR_ARM_CTL;ARCHITECTUREaOFNOR_ARM_CTLISBEGINQ_HAO<=QHAIWHENK2='1'ELSEQH_ARM_A;Q_HBO<=QHBIWHENK2='1'ELSEQH_ARM_B;Q_MAO<=QMAIWHENK2='1'ELSEQM_ARM_A;Q_MBO<=QMBIWHENK2='1'ELSEQM_ARM_B;Q_SAO<=QSAIWHENK2='1'ELSE0;Q_SBO<=QSBIWHENK2='1'ELSE0;ENDa;另外,還需要譯碼電路,將數(shù)字轉(zhuǎn)換成LED碼,其代碼如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYseg1ISPORT(clk:INstd_logic;rst:INstd_logic;Q_HAO,Q_MAO,Q_SAO:ININTEGERRANGE0TO10;Q_HBO:ININTEGERRANGE0TO10;Q_MBO,Q_SBO:ININTEGERRANGE0TO10;dataout:OUTstd_logic_vector(7DOWNTO0);en:OUTstd_logic_vector(7DOWNTO0));ENDseg1;ARCHITECTUREarchOFseg1ISsignaldiv_cnt:std_logic_vector(24downto0);signaldata4:INTEGERRANGE0TO10;signaldataout_xhdl1:std_logic_vector(7downto0);signalen_xhdl:std_logic_vector(7downto0);begindataout<=dataout_xhdl1;en<=en_xhdl;process(clk,rst)beginif(rst='0')thendiv_cnt<="0000000000000000000000000";elsif(clk'eventandclk='1')thendiv_cnt<=div_cnt+1;endif;endprocess;****************Display***************--process(rst,clk,div_cnt(19downto17))beginif(rst='0')thenen_xhdl<="11111110";elsif(clk'eventandclk='1')thencasediv_cnt(19downto17)iswhen"000"=>en_xhdl<="11011111";when"001"=>en_xhdl<="11101111";when"010"=>en_xhdl<="11110111";when"011"=>en_xhdl<="11111011";when"100"=>en_xhdl<="11111101";when"101"=>en_xhdl<="11111110";whenothers=>en_xhdl<="11111110";endcase;endif;endprocess;process(en_xhdl,Q_HAO,Q_HBO,Q_MAO,Q_MBO,Q_SAO,Q_SBO)begincaseen_xhdliswhen"11011111"=>data4<=Q_HBO;when"11101111"=>data4<=Q_HAO;when"11110111"=>data4<=Q_MBO;when"11111011"=>data4<=Q_MAO;when"11111101"=>data4<=Q_SBO;when"11111110"=>data4<=Q_SAO;--when"1011"=>data4<=cntthird;--when"0111"=>data4<=cntlast;whenothers=>data4<=0;endcase;endprocess;process(data4)begincasedata4isWHEN0=>dataout_xhdl1<="11000000";WHEN1=>dataout_xhdl1<="11111001";WHEN2=>dataout_xhdl1<="10100100";WHEN3=>dataout_xhdl1<="10110000";WHEN4=>dataout_xhdl1<="10011001";WHEN5=>dataout_xhdl1<="10010010";WHEN6=>dataout_xhdl1<="10000010";WHEN7=>dataout_xhdl1<="11111000";WHEN8=>dataout_xhdl1<="10000000";WHEN9=>dataout_xhdl1<="10010000";WHENOTHERS=>dataout_xhdl1<="0000

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論