基于FPGA的數(shù)字鐘設(shè)計(VHDL語言實現(xiàn))_第1頁
基于FPGA的數(shù)字鐘設(shè)計(VHDL語言實現(xiàn))_第2頁
基于FPGA的數(shù)字鐘設(shè)計(VHDL語言實現(xiàn))_第3頁
基于FPGA的數(shù)字鐘設(shè)計(VHDL語言實現(xiàn))_第4頁
基于FPGA的數(shù)字鐘設(shè)計(VHDL語言實現(xiàn))_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要 本設(shè)計為一個多功能的數(shù)字鐘,具有年、月、日、時、分、秒計數(shù)顯示功能,以 24 小時循環(huán)計數(shù);具有校對功能以及整點報時功能。 本設(shè)計采用 EDA 技術(shù), 以硬件描述語言 VHDL 為系統(tǒng)邏輯描述手段設(shè)計文件,在 MaxplusII 工具軟件環(huán)境下,采用自頂向下的設(shè)計方法,由各個基本模塊共同構(gòu)建了一個基于 FPGA 的數(shù)字鐘。 系統(tǒng)主芯片采用 EP1K100QC208-3,由 時鐘模塊、控制模塊、計時模塊、數(shù)據(jù)譯碼模塊、顯示以及報時模塊組成。經(jīng)編譯和仿真所設(shè)計的程序,在可編程邏輯器件上下載驗證,本系統(tǒng)能夠完成年、月、日和時、分、 秒的分別顯示,由按鍵輸入進(jìn)行數(shù)字鐘的校時、清零、啟停功能。 關(guān)鍵詞 數(shù)字鐘;硬件描述語言; VHDL; FPGA; 鍵盤接口 2 Abstract The design for a multi-functional digital clock, with a year, month, day, hours, minutes and seconds count display to a 24-hour cycle count; have proof functions and the whole point timekeeping function. The use of EDA design technology, hardware-description language VHDL description logic means for the system design documents, in MaxplusII tools environment, a top-down design, by the various modules together build a FPGA-based digital clock. The main system chips used EP1K100QC208-3, make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling the design and simulation procedures, the programmable logic device to download verification, the system can complete the year, month, day and the hours, minutes and seconds respectively, using keys to modify, cleared , start and stop the digital clock. Keywords digital clock; hardware description language; VHDL; FPGA; keyboard interface 3 目錄 1 緒論 .1 1.1 選題背景 .1 1.1.1 課題相關(guān)技術(shù)的發(fā)展 .2 1.1.2 課題研究的必要性 .2 1.2 課題研究的內(nèi)容 .3 2 FPGA 簡介 .4 2.1 FPGA 概述 .4 2.2 FPGA 基本結(jié)構(gòu) .4 2.3 FPGA 系統(tǒng)設(shè)計流程 .7 2.4 FPGA 開發(fā)編程原理 .8 3 數(shù)字鐘總體設(shè)計方案 .10 3.1 數(shù)字鐘的構(gòu)成 .10 3.2 數(shù)字鐘的工作原理 . 11 4 單元電路設(shè)計 .13 4.1 分頻模塊電路設(shè)計與實現(xiàn) .13 4.2 校時控制模塊電路設(shè)計與實現(xiàn) .14 4.2.1 鍵盤接口電路原理 .14 4.2.2 鍵盤接口的 VHDL 描述 .15 4.3 計數(shù)模塊設(shè)計與實現(xiàn) .23 4.3.1 秒計數(shù)模塊 .23 4.3.2 日計數(shù)模塊 .25 4.3.3 月計數(shù)和年計數(shù)模塊 .28 4.4 動態(tài)掃描及顯示電路設(shè)計與實現(xiàn) .30 4.4.1 動態(tài)掃描模塊 .30 4.4.2 顯示模塊 .31 5 實驗結(jié)論與研究展望 .32 5.1 實驗結(jié)論 .32 5.2 研究展望 .33 致謝 .34 4 附錄 .35 參考文獻(xiàn) .41 1 1 緒論 現(xiàn)代社會的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且是產(chǎn)品的性能越來越強(qiáng),復(fù)雜程度越來越高,更新步伐越來越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計開發(fā)技術(shù)的發(fā)展。前者 以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計自動化( electronic design automatic,EDA) 技術(shù)。 本設(shè)計采用的 VHDL是一種全方位的硬件描述語言,具有極強(qiáng)的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級和邏輯門級三個不同層次的設(shè)計;支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述、覆蓋面廣、抽象能力強(qiáng),因此在實際應(yīng)用中越來越廣泛。 ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速處理器。而 FPGA是特殊的 ASIC芯片,與其他的 ASIC芯片相比,它具有設(shè)計開發(fā)周期短、設(shè)計制造成本低、開發(fā) 工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無需測試、質(zhì)量穩(wěn)定以及可實時在線檢測等優(yōu)點。 在控制系統(tǒng)中,鍵盤是常用的人機(jī)交換接口,當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下的時候,系統(tǒng)應(yīng)該完成該鍵所設(shè)置的功能。因此,鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。根據(jù)鍵盤的結(jié)構(gòu)不同,采用不同的編碼方法。但無論有無編碼以及采用什么樣的編碼,最后都要轉(zhuǎn)換成為相應(yīng)的鍵值,以實現(xiàn)按鍵功能程序的轉(zhuǎn)移。 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴(kuò)展了鐘表原先的報時功能。諸如定時自動報警、定時啟閉電路、定時開關(guān)烘箱、通斷動力設(shè)備,甚至各種定時電氣的自動啟用 等,所有 這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實的意義。 1.1 選題背景 本節(jié)將從 FPGA 嵌入式應(yīng)用開發(fā)技術(shù)與數(shù)字鐘技術(shù)發(fā)展的客觀實際出發(fā),通過對該技術(shù)發(fā)展?fàn)顩r的了解,以及課題本身的需要,指出研究基于 FPGA 的芯片系統(tǒng)與設(shè)計 數(shù)字鐘的設(shè)計與實現(xiàn)的必要性。 2 1.1.1 課題相關(guān)技術(shù)的發(fā)展 當(dāng)今電子產(chǎn)品正向功能多元化 ,體積最小化 ,功耗最低化的方向發(fā)展 。 它與傳統(tǒng)的電子產(chǎn)品在設(shè)計上的顯著區(qū)別師大量使用大規(guī)模可編程邏輯器件,使產(chǎn)品的性能提高,體積縮小,功耗降低 .同時廣泛運用現(xiàn) 代計算機(jī)技術(shù),提高產(chǎn)品的自動化程度和競爭力,縮短研發(fā)周期。 EDA 技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學(xué)科最新科技成果而形成的一門新技術(shù)。 美國 ALTERA 公司的可編程邏輯器件采用全新的結(jié)構(gòu)和先進(jìn)的技術(shù),加上 MaxplusII(或最新的 QUARTUS)開發(fā)環(huán)境,更具有高性能,開發(fā)周期短等特點,十分方便進(jìn)行電子產(chǎn)品的開發(fā)和設(shè)計。 EDA 技術(shù),技術(shù)以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述主要表達(dá)方式,以計算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件 ,自動完成用軟件的方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯,邏輯化簡,邏輯分割,邏輯映射,編程下載等工作。最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。 本設(shè)計利用 VHDL 硬件描述語言結(jié)合可編程邏輯器件進(jìn)行的,并通過數(shù)碼管動態(tài)顯示計時結(jié)果。數(shù)字鐘可以由各種技術(shù)實現(xiàn),如單片機(jī)等 .利用可編程邏輯器件具有其他方式?jīng)]有的特點,它具有易學(xué),方便,新穎,有趣,直觀,設(shè)計與實驗項目成功率高,理論與實踐結(jié)合緊密,體積小,容量大, I/O 口豐富,易編程和加密等特點,并且它還具有開放的界面,豐富的設(shè)計庫,模塊化的工具以及 LPM 定 制等優(yōu)良性能,應(yīng)用非常方便。因此,本設(shè)計采用可編程邏輯器件實現(xiàn)。 1.1.2 課題研究的必要性 現(xiàn)在是一個知識爆炸的新時代。新 產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新月異。可以毫不夸張的說,電子技術(shù)的應(yīng)用無處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。在這快速發(fā)展的年代,時間對人們來說是越來越寶貴,在快節(jié)奏的生活時,人們往往忘記了時間,一旦遇到重要的事情而忘記了時間,這將會帶來很大的損失。因此我們需要一個定時系統(tǒng)來提醒這些忙碌的人。數(shù)字化的鐘表 3 給人們帶來了極大的方便。近些年,隨著科技的發(fā) 展和社會的進(jìn)步,人們對數(shù)字鐘的要求也越來越高,傳統(tǒng)的時鐘已不能滿足人們的需求。多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有電子鬧鐘、數(shù)字鬧鐘等等。 1.2 課題研究的內(nèi)容 本設(shè)計主要研究基于 FPGA 的數(shù)字鐘,要求時間以 24 小時為一個周期 ,顯示年、月、日、時、分、秒。具有校時以及報時功能,可以對年、月、日、時、分及秒進(jìn)行單獨校對,使其校正到標(biāo)準(zhǔn)時間。校對時間由44 矩形鍵盤進(jìn)行控制,為了保證計時的穩(wěn)定及準(zhǔn)確須由晶體振蕩器提供時間基準(zhǔn)信號。 本設(shè)計小組成員共有三人:其他兩人分別采用原理圖設(shè)計和 Verilog HDL 語言設(shè)計。 4 2 FPGA簡介 2.1 FPGA概述 FPGA是現(xiàn)場可編程門陣列( Field Programmable Gate Array) 的簡稱,與之相應(yīng)的 CPLD是復(fù)雜可編程邏輯器件( Complex Programmable Logic Device) 的簡稱,兩者的功能基本相同,只是實現(xiàn)原理略有不同,所以有時可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。 CPLD/PGFA幾乎能完成任何數(shù)字器件的功能,上至高性能 CPU,下至簡單的 74電路。它如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入或硬件描述語言自由的設(shè)計一個數(shù)字系統(tǒng)。通過軟件仿真可以事先驗證設(shè)計的正確性,在 PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時修改設(shè)計而不必改動硬件電路。使用 CPLA/FPGA開發(fā)數(shù)字電路,可以大大縮短設(shè)計時間,減少 PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點使得 CPLA/FPGA技術(shù)在 20世紀(jì) 90年代以后得到飛速的發(fā)展,同時也大大推動了 EDA軟件和硬件描述語言 HDL的進(jìn)步。 2.2 FPGA基本結(jié)構(gòu) FPGA具有掩膜可編程門陣列的通用結(jié) 構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實現(xiàn)不同的設(shè)計。 FPGA一般由 3種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器 SRAM組成。這 3種可編程電路是:可編程邏輯模塊( CLB-Configurable Logic Block ) 、輸入 / 輸出模塊( IOB-I/O Block )和互連資源( IR Interconnect Resource) 。可編程邏輯模塊 CLB是實現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個陣列,散布于整個芯片;可編程輸入 /輸出模塊( IOB)主要完成芯片上的邏輯 與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個 CLB之間或 CLB、 IOB之間以及 IOB之間連接起來,構(gòu)成特定功能的電路。 1.CLB是 FPGA的主要組成部分。圖 2-1是 CLB基本結(jié)構(gòu)框圖,它主 5 要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。 CLB中 3個邏輯函數(shù)發(fā)生器分別是 G、 F和 H,相應(yīng)的輸出是 G 、 F和 H。 G有 4個輸入變量 G1、 G2、 G3和 G4; F也有 4個輸入變量 F1、 F2、 F3和 F4。這兩個函數(shù)發(fā)生器是完全獨立的,均可以實現(xiàn) 4輸入 變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器 H有 3個輸入信號;前兩個是函數(shù)發(fā)生器的輸出 G和 F,而另一個輸入信號是來自信號變換電路的輸出 H1。這個函數(shù)發(fā)生器能實現(xiàn) 3輸入變量的各種組合函數(shù)。這 3個函數(shù)發(fā)生器結(jié)合起來,可實現(xiàn)多達(dá)9變量的邏輯函數(shù)。 CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(四選一、二選一等),通過對 CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器 G、 F和 H的輸出可以連接到 CLB輸出端 X或 Y,并用來選擇觸發(fā)器的激勵輸入信號、時鐘有效邊沿、時鐘使能信號以及輸出信號。這些數(shù)據(jù)選擇器的地址控制信號均由編程信息提供,從而 實現(xiàn)所需的電路結(jié)構(gòu)。 CLB中的邏輯函數(shù)發(fā)生器 F和 G均為查找表結(jié)構(gòu),其工作原理類似于ROM。 F和 G的輸入等效于 ROM的地址碼,通過查找 ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器 F和 G還可以作為器件內(nèi)高速 RAM或小的可讀寫存儲器使用,它由信號變換電路控制。 2.輸入 /輸出模塊 IOB。 IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā) /鎖存器、輸出緩沖器組成。 每個 IOB控制一個引腳,它們可被配置為輸入、輸出或雙向 I/O功能。當(dāng) IOB控制的引腳被 定義為輸入時,通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到 MUX,另一路經(jīng)延 6 圖 2-1 CLB基本結(jié)構(gòu) 時幾納秒(或者不延時)送到輸入通路 D觸發(fā)器,再送到數(shù)據(jù)選擇器。通過編程給數(shù)據(jù)選擇器不同的控制信息,確定送至 CLB陣列的 I1和 I2是來自輸入緩沖器,還是來自觸發(fā)器。 當(dāng) IOB控制的引腳被定義為輸出時, CLB陣列的輸出信號 OUT也可以有兩條傳輸途徑:一條是直接經(jīng) MUX送至輸出緩沖器,另一條是先存入輸出通路 D觸發(fā)器,再送至 輸出緩沖器。 IOB輸出端配有兩只 MOS管,它們的柵極均可編程,使 MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻接通 Vcc、地線或者不接通,用以改善輸出波形和負(fù)載能力。 3.可編程互連資源 IR。可編程互連資源 IR可以將 FPGA內(nèi)部的 CLB和 CLB之間、 CLB和 IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開關(guān),通過自動布線實現(xiàn)各種電路的連接。 CLB CLB CLB CLB CLBCLB B CLB CLB CLB CLB CLB CLB CLB CLBCLB B CLB CLB CLB 可編程開關(guān)矩 輸入輸出模塊 互連資源 7 2.3 FPGA系統(tǒng)設(shè)計流程 一般說來,一個比較大的完整的項目應(yīng)該采用層次化的描述方法:分為幾個較大的模塊,定義好各功能 模塊之間的接口,然后各個模塊再細(xì)分去具體實現(xiàn),這就是 TOP DOWN(自頂向下)的設(shè)計方法。目前這種高層次的設(shè)計方法已被廣泛采用。高層次設(shè)計只是定義系統(tǒng)的行為特征,可以不涉及實現(xiàn)工藝,因此還可以在廠家綜合庫的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對某種工藝優(yōu)化的網(wǎng)絡(luò)表,使工藝轉(zhuǎn)化變得輕而易舉。 CPLD/FPGA系統(tǒng)設(shè)計的工作流程如圖 2-2所示。 圖 2-2 CPLD/FPGA系統(tǒng)設(shè)計流程 系統(tǒng)劃分 錯誤 !未找到引用源。 編譯器 錯誤 !未找到引用源。 代碼級功能仿真 錯誤 !未找到引用源。 綜合器 錯誤 !未找到引用源。 適配前時序仿真 錯誤 !未找到引用源。 適配器 錯誤 !未找到引用源。 CPLD/FPGA 實現(xiàn) 適配后仿真模型 錯誤 !未找到引用源。 適配后時序仿真 適配報告 錯誤 !未找到引用源。 ASIC 實現(xiàn) VHDL 代碼或圖形方式輸入 錯誤 !未找到引用源。 仿真綜合庫 器件編程文件 錯誤 ! 未 找 到 引 用源。 8 流程說明: 1.工程師按照“自頂向下”的設(shè)計方法進(jìn)行系統(tǒng)劃分 。 2.輸入 VHDL代碼,這是設(shè)計中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點。 3.將以上的設(shè)計輸入編譯成標(biāo)準(zhǔn)的 VHDL文件。 4.進(jìn)行代碼級的功能仿真,主要是檢驗系統(tǒng)功能設(shè)計的正確性。這一步驟適用于大型設(shè)計,因為對于大型設(shè)計來說,在綜合前對源代碼仿真,就可以大大減少設(shè)計重復(fù)的次數(shù)和時間。一般情況下,這一仿真步驟可略去。 5.利用綜合器對 VHDL源代碼進(jìn)行綜合優(yōu)化處理,生成門級描述的網(wǎng)絡(luò)表文件,這是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對 ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過程要在相應(yīng)的廠家綜合庫的支持下才能完成。 6.利用產(chǎn)生的網(wǎng)絡(luò)表文件進(jìn)行適配前的時序仿真,仿真過程不涉及具體器件的硬件特性,是較為粗略的。一般的設(shè)計,也可略去這一步驟。 7.利用適配器將綜合后的網(wǎng)絡(luò)表文件針對某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化和布局布線。 8.在適配完成后,產(chǎn)生多項設(shè)計結(jié)果:( a)適配報告,包括芯片內(nèi)部資源利用情況,設(shè)計的布爾方程描述情況等;( b)適配后的仿真模型;( c)器件編程文件。根據(jù)適配后的仿 真模型,可以進(jìn)行適配后時序仿真,因為已經(jīng)得到器件的實際硬件特性(如時延特性),所以仿真結(jié)果能比較精確的預(yù)期未來芯片的實際性能。如果仿真結(jié)果達(dá)不到設(shè)計要求,就修改 VHDL源代碼或選擇不同速度和品質(zhì)的器件,直至滿足設(shè)計要求。 最后將適配器產(chǎn)生的器件編程文件通過編程器或下載電纜載入到目標(biāo)芯片 CPLD/FPGA中。 2.4 FPGA開發(fā)編程原理 硬件設(shè)計需要根據(jù)各種性能指標(biāo)、成本、開發(fā)周期等因素,確定最佳的實現(xiàn)方案,畫出系統(tǒng)框圖,選擇芯片,設(shè)計 PCB并最終形成樣機(jī)。 9 CPLD/FPGA軟件設(shè)計可分為兩大塊:編程語 言和編程工具。編程語言主要有 VHDL和 Verilog兩種硬件描述語言;編程工具主要是兩大廠家Altera和 Xilinx的集成綜合 EDA軟件(如 MAX+plusII、 QuartusII、Foundation、 ISE)以及第三方工具(如 FPGA Express、 Modelsim、 Synposys SVS等)。具體的設(shè)計輸入方式有以下幾種: 1.HDL語言方式。 HDL既可以描述底層設(shè)計,也可以描述頂層的設(shè)計,但它不容易做到較高的工作速度和芯片利用率。用這種方式描述的項目最后所能達(dá)到的性能與設(shè)計人員的水平、經(jīng)驗以及 綜合軟件有很大的關(guān)系。 2.圖形方式。可以分為電路原理圖描述,狀態(tài)機(jī)描述和波形描述 3種形式。有的軟件 3種輸入方法都支持,如 Active-HDL。 MAX+plusII 圖形輸入方式只支持電路原理圖描述和波形描述兩種。電路原理圖方式描述比較直觀和高效,對綜合軟件的要求不高。一般大都使用成熟的 IP核和中小規(guī)模集成電路所搭成的現(xiàn)成電路,整體放到一片可編程邏輯器件的內(nèi)部去,所以硬件工作速度和芯片利用率很高,但是但項目很大的時候,該方法就顯得有些繁瑣;狀態(tài)機(jī)描述主要用來設(shè)計基于狀態(tài)機(jī)思想的時序電路。在圖形的方式下定義好 各個工作狀態(tài),然后在各個狀態(tài)上輸入轉(zhuǎn)換條件以及相應(yīng)的輸入輸出,最后生成 HDL語言描述,送去綜合軟件綜合到可編程邏輯器件的內(nèi)部。由于狀態(tài)機(jī)到 HDL語言有一種標(biāo)準(zhǔn)的對應(yīng)描述方式,所以這種輸入方式最后所能達(dá)到的工作速度和芯片利用率主要取決于綜合軟件;波形描述方式是基于真值表的一種圖形輸入方式,直接描述輸入與輸出的波形關(guān)系。這種輸入方式最后所能達(dá)到的工作速度和芯片利用率也是主要取決于綜合軟件。 10 3 數(shù)字鐘總體設(shè)計方案 3.1 數(shù)字鐘的構(gòu)成 數(shù)字鐘實際上是一個對標(biāo)準(zhǔn)頻率( 1HZ)進(jìn)行 計數(shù)的計數(shù)電路。由于計數(shù)的起始時間不可能與標(biāo)準(zhǔn)時間(如北京時間)一致,故需要在電路上加一個校時電路,同時標(biāo)準(zhǔn)的 1HZ 時間信號必須做到準(zhǔn)確穩(wěn)定。通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘。圖 3-1 所示為數(shù)字鐘的一般構(gòu)成框圖。 主要包括時間基準(zhǔn)電路、計數(shù)器電路、控制電路、譯碼和顯示電路。其中的控制邏輯電路是比較靈活多樣的,不斷完善它可以增強(qiáng)數(shù)字鐘的功能。 圖 3-1 數(shù)字鐘的一般組成框圖 譯碼驅(qū) 動 譯碼驅(qū)動 譯碼驅(qū)動 譯碼驅(qū)動 譯碼驅(qū)動 譯碼驅(qū)動 時十位 計數(shù) 時個位 計數(shù) 分十位 計數(shù) 分個位 計數(shù) 秒十位 計數(shù) 秒個位 計數(shù) 校時控制電路 校分控制電路 分 頻器電路 分頻器電路 晶體振蕩器電路 1HZ 11 本設(shè)計在上面數(shù)字鐘結(jié)構(gòu)的基礎(chǔ)上還加入了顯示年、月、日的功能,其顯示范圍為 2000年 1月 1日至 2099年 12月 31日。其總體框架如圖 3-2。 圖 3-2 總體框架 3.2 數(shù)字鐘的工作原理 振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計數(shù)器滿 60后向分計數(shù)器進(jìn)位,分計數(shù)器滿 60后向小時計數(shù)器進(jìn)位,小時計數(shù)器按照“ 24翻 1”規(guī)律計數(shù)。計滿后各計數(shù)器清零 , 重新計數(shù)。日期部分由于日有 28天、 29天、 30天、 31天 4種情況,故日由年和月共同判斷其天數(shù),日計滿后向月進(jìn)位,月滿后向年進(jìn)位。計數(shù)器的輸出分別經(jīng)譯碼器送數(shù)碼管顯示。計時出現(xiàn)誤差時,可以用校時電 路校時、校分、校秒和校年、校月和校日。在控制信號中除了一般的校時信號外,還有時鐘使能信號、時鐘清零信號。控制 12 信號由 44矩形鍵盤輸入。 時基電路可以由石英晶體振蕩電路構(gòu)成,如果晶振頻率為 1MHz,經(jīng)過 6次十分頻就可以得到秒脈沖信號。譯碼顯示電路由七段譯碼器完成,顯示由數(shù)碼管構(gòu)成。 13 4 單元電路設(shè)計 4.1 分頻模塊電路設(shè)計與實現(xiàn) 晶體振蕩器是構(gòu)成數(shù)字式時鐘的核心, 振蕩器的穩(wěn)定度及頻率的精度決定了數(shù)字鐘計時的準(zhǔn)確程度, 它保證了時鐘的走時準(zhǔn)確及穩(wěn)定 。 石英晶體的選頻特性非常好,只有某一頻率點的信號可以通過它 ,其它頻率段的信號均會被它所衰減 , 而且 , 振蕩信號的頻率與振蕩電路中的 R、 C元件的數(shù)值無關(guān)。因此 , 這種振蕩電路輸出的是準(zhǔn)確度極高的信號。然后再利用分頻電路 , 將其輸出信號轉(zhuǎn)變?yōu)槊胄盘枺浣M成框圖如圖 4-1。 圖 4-1 秒信號產(chǎn)生電路框圖 本系統(tǒng)使用的晶體振蕩器電路給數(shù)字鐘提供一個頻率穩(wěn)定準(zhǔn)確的40MHz 的方波信號,其輸出至分頻電路。分頻電路的邏輯框圖 如圖 4-2所示。 圖 4-2 分頻電路模塊 分頻電路 石英晶體 振蕩電路 秒信號 14 圖 4-3 分頻模塊電路設(shè)計 其內(nèi)部結(jié)構(gòu)圖見圖 4-3。電路中采用 Max+plusII 元器件庫中的計數(shù)器7490 進(jìn)行硬件分頻。經(jīng)分頻后輸出 1HZ 的標(biāo)準(zhǔn)秒信號 CLK1、 4MHZ 的按鍵掃描信號、 1KHZ 的按鍵去抖信號和 500HZ 用于報時模塊的輸入信號。該模塊的時序仿真圖如圖 4-4 所示,滿足設(shè)計要求。 圖 4-4 分頻模塊仿真圖 4.2 校時控制模塊電路設(shè)計與實現(xiàn) 4.2.1 鍵盤接口電路原理 校時控制模塊在本系統(tǒng)中也就是鍵盤接口電路部分。下面先介紹鍵盤接口電路的工作原理,如圖 4-5。本系統(tǒng)采用的就是這種行列式鍵盤 接口,相對個按鍵的鍵盤接口來說節(jié)省了 I/O 接口。如圖所示,行線通 15 過一個電阻被上拉到 +5V 電壓。行線與按鍵的一個引腳相連,列線與按鍵的另一個引腳相連。平時列線被置成低電平,沒有按鍵被按下的時候,行線保持高電平,而有按鍵被按下的時候,行線被拉成低電平,這時候控制器就知道有按鍵被按下,但只能判斷出在哪一行,不能判斷出在哪一列,因此接下來就要進(jìn)行鍵盤掃描,以確定具體是哪個按鍵被按下。鍵盤掃描的過程事將列線逐列置成低電平,然后讀取行線狀態(tài),直到行 線中出現(xiàn)低電平,可知這時哪一列是低電平,然后將行線與列線的狀態(tài)裝入鍵碼寄存器,進(jìn)行按鍵譯碼,得到按下的按 鍵的相應(yīng)編碼,這樣就完成了按鍵掃描的過程。當(dāng)然,一個完整的按鍵掃描過程還需要配合相應(yīng)的鍵盤去抖手段才能正確的識別按鍵,不會發(fā)生重鍵和錯誤判斷等情況。 圖 4-5 鍵盤接口電路 4.2.2 鍵盤接口的 VHDL描述 1.按鍵消抖 本模塊用于當(dāng)有按鍵按下時,采用軟件消抖的辦法去除按鍵抖動。模塊的實現(xiàn)方法是先判斷是否有按鍵按下,如有按鍵按下則延時一段時間,待抖動過去之后再讀行線狀態(tài),如果仍有低電平行線,則確定有按 16 鍵按下,然后產(chǎn)生一個有按鍵按下的信號。該模塊有一個時鐘輸入端口,輸入時鐘信號是分頻出來的 1KHZ 的 時鐘;有一個輸入端口與行線相連,用于輸入行線狀態(tài);一個輸出端口,用于輸出有按鍵按下的信號。該模塊的邏輯框圖如圖 4-6 所示。 圖 4-6 去抖邏輯框圖 該電路的 VHDL 程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity qudou is port(clk1:in std_logic; row:in std_logic_vector(3 downto 0); key_pre:out std_logic); end qudou; architecture behav of qudou is signal sig1,counter:std_logic_vector(3 downto 0); signal tmp1,sig2:std_logic; begin sig1=row; tmp1=sig1(0)and sig1(1)and sig1(2)and sig1(3); key_pre=counter(0)and counter(1)and counter(2)and counter(3); process(clk1) begin if(clk1event and clk1=1)then if(tmp1=0)then if(sig2=0)then 17 sig2=1; end if; end if; if(sig2=1)then if(counter=1111)then sig2=0; counter=0000; else counter=counter+1; end if; end if; end if; end process; end behav; 程序說明: 這段程序是實現(xiàn)按鍵消抖,在這里實現(xiàn)的比較簡單,原理是當(dāng)有按鍵按下的時候, temp1 會變成低電平,這時把 sig2 變成高電平,如果此時 counter 不為“ 1111”時,內(nèi)部計數(shù)器計數(shù),從“ 0000”直到“ 1111”,當(dāng)計數(shù)到“ 1111”時, key_pre 輸出高電平,同時計數(shù)器清零。 由于計數(shù)脈沖為 1KHZ,故從有按鍵按下到輸入信號產(chǎn)生大概需要 15ms。 如果有按鍵抖動的話, tem1 會在“ 0”和“ 1”之間變動多次,但是計數(shù)過程不會停止,原因是計數(shù)由 sig2 的電平?jīng)Q定,而 sig2 一旦變成高電平,再要變成低電平,需要計數(shù)完成即 counter 等于“ 1111”時。所以計數(shù)過程不會受抖動影響。一旦計數(shù)完成,抖動已經(jīng)過去,不會發(fā)生重鍵現(xiàn)象了,這樣就去除了抖動。 2.鍵掃描模塊 鍵掃描模塊的框圖如圖 4-7 所示。 18 圖 4-7 按鍵掃描模塊 CLKY 為輸入時鐘,該時鐘是分頻模塊分出的 4MHZ 的時鐘信號 ,之所以在這里采用頻率高的時鐘信號就是因為鍵掃描是一個快過程,不需要太慢的時鐘。 Key_pre 是由去抖模塊輸出的有鍵按下的信號,這個信號引發(fā)按鍵掃描模塊內(nèi)部信號的變化,在該狀態(tài)信號的作用下,模塊可以鍵盤掃描。 ROW3.0是行輸入信號,與鍵盤的行線相連, COM3.0是列輸出信號,與鍵盤的列線相連。 SCAN_CODE7.0是掃描的鍵碼輸出端口。 鍵掃描的基本方法是將列線逐一置成低電平,然后讀行線輸入端口,如果行線中有低電平出現(xiàn),說明按鍵已經(jīng)確定,將行向量和列向量讀入鍵碼中即可。鍵盤掃描程序 如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity ajsm is port(clky,key_pre:in std_logic; row:in std_logic_vector(3 downto 0); com:out std_logic_vector(3 downto 0); scan_code:out std_logic_vector(7 downto 0); end ajsm; architecture behav of ajsm is signal sig_com:std_logic_vector(3 downto 0); signal counter:std_logic_vector(1 downto 0); signal tmp,sig1,sig2:std_logic; 19 begin sig2=key_pre; tmp=row(0) and row(1) and row(2) and row(3); process(clky) begin if(clkyevent and clky=1)then -計數(shù)進(jìn)程 if(sig2=1)then if(counter=11)then sig1=0; counter=00; else sig1=1; counter=counter+1; end if; end if; end if; end process; process(clky) -列線逐位輸出低電平 variable jt :std_logic; begin if(clkyevent and clky=1)then if(sig1=1)then jt:=sig_com(3); for i in 3 downto 1 loop sig_com(i)=sig_com(i-1); end loop; sig_com(0)=jt; else sig_com=1110; end if; end if; end process; 20 process(clky) begin if(clkyevent and clky=1)then if(sig1=1)then com=sig_com; else com=0000; end if; end if; end process; process(clky) -鍵碼信號賦值 begin if(clkyevent and clky=1)then if(sig1=1)then if(tmp=0)then scan_code=row & sig_com; else scan_code=11111111; end if; else scan_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_codekey_code=1111; end case; end if; end process; end behav; 程序中采用 case 語句進(jìn)行按鍵編碼,也可以用 elsif 語句實現(xiàn)此段程序設(shè)計。 完整的鍵盤程序應(yīng)加上剛開始介紹的分頻模塊,鍵盤接口電路總的邏輯連接框圖如圖 4-9 所示。 圖 4-9 鍵盤接口連接框圖 23 4.3 計數(shù)模塊設(shè)計與實現(xiàn) 4.3.1 秒計數(shù)模塊 秒計數(shù)模塊邏輯框圖如圖 4-10 所示。 圖 4-10 秒計數(shù)模塊框圖 輸入端口 ENL 是秒時鐘使能信號,也是整個數(shù)字中的使能信號,高電平有效; RES 是異步清零信號; CLK 是秒脈沖輸入端口; MADD和 MDEC 是同步校時控制信號, MADD 是控制秒信號加一, MDEC 是控制秒信號減一;輸出端口 A3.0是秒時鐘的低位, B3.0是高位; CA端口是進(jìn)位輸出端口,當(dāng)秒計數(shù)到 59 時輸出高電平,其它時候輸出低電平。秒計數(shù)模塊的程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity miao is port(enl,res,clk,madd,mdec:in std_logic; a,b:out std_logic_vector(3 downto 0); ca:out std_logic); end miao; architecture SEC of miao is begin process(enl,clk,res) 24 variable m0,m1:std_logic_vector(3 downto 0); begin if res=1 then m0:=0000; m1:=0000; ca0101 then m0:=0000; m1:=0000; ca0000 then m0:=m0-1; else m0:=1001; m1:=m1-1; end if; end if; end if; a=m0; b=m1; end process; 25 end SEC; 秒時鐘的仿真波形圖 如圖 4-11 所示,仿真圖滿足設(shè)計的要求。分計數(shù)和時計數(shù)模塊的設(shè)計原理與秒模塊的類似。 圖 4-11 秒時鐘仿真波形 4.3.2 日計數(shù)模塊 由于一年中各個月份的日的長短不同,共有 28、 29、 30 和 31 天四種情況,可知日由年和月共同決定,如表 4-1。年中 0 表示閏年, 1 表示平年;月中 0 表示 1、 2、 3、 5、 7、 8、 10 和 12 月, 1 表示其它月份;二月中 1 表示 2 月, 0 表示其它月份。 表 4-1 日長短邏輯表 年 月 二月 日 SEL0 SEL1 SEL2 0 0 0 1 0 0 31 0 1 0 1 1 0 30 0 0 1 29 1 0 1 28 0 1 1 1 1 1 日計數(shù)模塊的邏輯框圖如圖 4-12 所示輸入引腳 SEL2.0是決定日 26 長短的輸入信號,其它信號功能與秒計數(shù)模塊功能類似。 圖 4-12 日計數(shù)模塊邏輯框圖 日計數(shù)模塊的核心程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ri is port(enl,res,clk,radd,rdec:in std_logic; sel:in std_logic_vector(2 downto 0); a,b:out std_logic_vector(3 downto 0); ca:out std_logic); end ri; architecture SEC of ri is signal sr0,sr1:std_logic_vector(3 downto 0); begin process(sel) begin if sel=001 then sr0=0001; sr1=0011; end if; if sel=011 then sr0=0000; sr1=0011; end if; if sel=100 then sr0=1001; sr1=0010; end if; 27 if sel=101 then sr00000 then r0:=r0-1; else r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論