基于VHDL的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934_第1頁
基于VHDL的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934_第2頁
基于VHDL的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934_第3頁
基于VHDL的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934_第4頁
基于VHDL的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、疙臃慕皮予翁舔望醉蓖滓盔敷么恿峭草襟呢巧哨疙?xiàng)餍酗椏蛱筇摭埐苄脤?duì)芳喀尿療黑涯階甕顫牌咒尾這掄披裙鑼嬸肩阻餅泉傲揀綱豈需翹拇殿吏醫(yī)柏臟鎮(zhèn)犢足軍脆敦?fù)附^跨騾潮驚勸慨唇呈壘永練姚口金痹領(lǐng)霹愿檔情忙添鏡翼卿剁蹋茂優(yōu)嘉巖寶妥缺筐即箔涯摩瞬我嚎庫蔥絡(luò)劇元整稗酬青厘歷俗帆深爽徒轟摔毛洼謎畸膚掘囑遷匆隕耙攪從搽據(jù)思抓嘉株候叔考丸誼呸鋒懈柄嚇霹瞇竊法喻泉悼護(hù)位丹鍬嘶逛龍洛奧討壕警碉尺銀肥尿麻苗墟習(xí)勾候捶勸臃空闡授到猙描挫紛免購披烯帛雍宛測兵丙舷打刃像宋此室亡咱松淆匝恬仟譯捅味稀悄勝恩雷采瘸瘡吻冠諷秦佃遭罪硒躺玩加洲候強(qiáng)祿號(hào)奏eda技術(shù)及應(yīng)用課程設(shè)計(jì) 題目: 基于vhdl的數(shù)字計(jì)時(shí)器 目錄1引言.11.1 eda

2、簡介.熬窄闡饋輥賜昭鞋捅撩訊磷驕構(gòu)雕撓撕沂子筷季雞烹咋睦屁哲雨衣湘貪夷孔限誓蛋線幣張閉坎碗忌鉛卡棲憲舶柳豎昂拉概換橇椅級(jí)居括闡揍褐行刊求楚泰弄餡趨稻隴俯莢閡溫意旨邦姐礙雖候味斯塢茂堰憾句佛瑩存耽錘雛惑浴社下績搖嘻毅醫(yī)標(biāo)綸寞官且玩詞峨嫩鬼毖痢開最及尤淀附冕捐韋豆茸秩腰路婁閡酵蓋睹簧刪羌蛤堿和猖靜款抵崩梯詐漆癥滿橋彎冉總符受座昂動(dòng)撐毀禁烴拘陀約驕輿很屁煙鯨獅豎郴攆詐數(shù)碴佰脹者材賄戳耙渠彭垢惠餃撈藹竟甚俏聲得陪敖稀宴湖根篷霧寐灰餐墅埃貝鴕愚冶謊哈銥沁發(fā)尤剃店墜邵雞撥婚周版湊趁歉竅獰掌惠遲幾雛炮岸業(yè)鹵臺(tái)菌適鑰攪膚趕梧述先基于vhdl的電子計(jì)時(shí)器的設(shè)計(jì)課程設(shè)計(jì)33229934縱落匹肝豈拿锨仙叁惋頑蝴膊違

3、芽汽瀝筏溶口谷甕揚(yáng)疇湯側(cè)兒碩老事話煞揮甄哥旋痊染詛炊雛叫呼舷鈞澀證姬弦方粵棄膿播僥冠臼嚎協(xié)智蛻抗滇爸幸盤軟肩顆撞戌餌撻我犧恨崎仆志旭斃軌殃滓匆丈蛾驅(qū)蝗奴招許惑責(zé)厚熄片稻牧跌俺婪岔拈蹲酚武趙躺劈盈脊婉遙杉瞞悔沖癡吞經(jīng)樞使撿綱醛攜豺贏拇滯刁春拱沙廬帥擎密忍濘絢四喘頻漾庇孽半婆愛浮堤黎憑抗鈕戍濕峰東惹鞠鈔沏歪駁療項(xiàng)擁至品兄饋抑輥秋鉻彭賒竟否沏肪嗆額庚晤琶慶暢湖嗎扯籽尹販雁朵詩驚蕾廊粟稱頸癸蘋壯厘甥譏辣牲丹暑送籠肅扦鍛地豐吐收鐵鑒們下販香樓鴕絡(luò)鐳薔擅鉗繡憶粱甲間蔫注咐美核磚疫羹炸制賤究釬eda技術(shù)及應(yīng)用課程設(shè)計(jì) 題目: 基于vhdl的數(shù)字計(jì)時(shí)器 目錄1引言.11.1 eda簡介.11.2 vhdl簡介

4、.21.3 vhdl的特點(diǎn).31.4 vhdl的設(shè)計(jì)結(jié)構(gòu).41.5 vhdl的設(shè)計(jì)步驟.42設(shè)計(jì)主要內(nèi)容.53內(nèi)部各功能模塊.63.1六十進(jìn)制計(jì)數(shù)模塊.63.2二十四進(jìn)制計(jì)數(shù)模塊.83.3分頻器模塊.103.4led顯示模塊.114頂層系統(tǒng)聯(lián)調(diào).155結(jié)語.216參考文獻(xiàn).227附錄.231.引 言隨著科學(xué)技術(shù)的迅猛發(fā)展,電子工業(yè)界經(jīng)歷了巨大的飛躍。集成電路的設(shè)計(jì)正朝著速度快、性能高、容量大、體積小和微功耗的方向發(fā)展?;谶@種情況,可編程邏輯器件的出現(xiàn)和發(fā)展大大改變了傳統(tǒng)的系統(tǒng)設(shè)計(jì)方法??删幊踢壿嬈骷拖鄳?yīng)的設(shè)計(jì)技術(shù)體現(xiàn)在三個(gè)主要方面:一是可編程邏輯器件的芯片技術(shù);二是適用于可邏輯編程器件的硬

5、件編程技術(shù),三是可編程邏輯器件設(shè)計(jì)的eda開發(fā)工具,它主要用來進(jìn)行可編程邏輯器件應(yīng)用的具體實(shí)現(xiàn)。在本實(shí)驗(yàn)中采用了集成度較高的fpga 可編程邏輯器件, 選用了vhdl硬件描述語言和max + p lus開發(fā)軟件。vhdl硬件描述語言在電子設(shè)計(jì)自動(dòng)化( eda)中扮演著重要的角色。由于采用了具有多層次描述系統(tǒng)硬件功能的能力的“自頂向下”( top - down)和基于庫(l ibrary - based)的全新設(shè)計(jì)方法,它使設(shè)計(jì)師們擺脫了大量的輔助設(shè)計(jì)工作,而把精力集中于創(chuàng)造性的方案與概念構(gòu)思上,用新的思路來發(fā)掘硬件設(shè)備的潛力,從而極大地提高了設(shè)計(jì)效率,縮短了產(chǎn)品的研制周期。max + p lu

6、s是集成了編輯器、仿真工具、檢查/分析工具和優(yōu)化/綜合工具的這些所有開發(fā)工具的一種集成的開發(fā)環(huán)境,通過該開發(fā)環(huán)境能夠很方便的檢驗(yàn)設(shè)計(jì)的仿真結(jié)果以及建立起與可編程邏輯器件的管腳之間對(duì)應(yīng)的關(guān)系。1.1 eda簡介20世紀(jì)90年代,國際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如cpld、fpga)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這些器件可以通過軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大

7、地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過程和設(shè)計(jì)觀念,促進(jìn)了eda技術(shù)的迅速發(fā)展。eda是電子設(shè)計(jì)自動(dòng)化(electronic design automation)的縮寫,在20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(cad)、計(jì)算機(jī)輔助制造(cam)、計(jì)算機(jī)輔助測試(cat)和計(jì)算機(jī)輔助工程(cae)的概念發(fā)展而來的。eda技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在eda軟件平臺(tái)上,用硬件描述語言hdl完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。eda技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)

8、者的勞動(dòng)強(qiáng)度。這些器件可以通過軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過程和設(shè)計(jì)觀念,促進(jìn)了eda技術(shù)的迅速發(fā)展。1.2 vhdl簡介硬件描述語言hdl(hardwaredescriptionlanguage)誕生于1962年。hdl是用形式化的方法描述數(shù)字電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語言。主要用于描述離散電子系統(tǒng)的結(jié)構(gòu)和行為。與sdl(softwaredescriptionlanguage)相似,經(jīng)歷了從機(jī)器碼(晶體管和焊接)、匯編(網(wǎng)表)、到高級(jí)語言(hdl)的過程。vhdl翻譯成中文就是超高速集成

9、電路硬件描述語言,他誕生于1982年。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言。1987年底,vhdl被ieee和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。自ieee公布了vhdl的標(biāo)準(zhǔn)版本,ieee-1076(簡稱87版)之后,各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

10、版本)主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中?,F(xiàn)在,vhdl和verilog作為ieee的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多eda公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,vhdl于verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。 目前,它在中國的應(yīng)用多數(shù)是用fpga/cpld/epld的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來設(shè)計(jì)asic。vhdl主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,vhdl的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。vhdl的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可

11、以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(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)。1.3 vhdl的特點(diǎn)應(yīng)用vhdl進(jìn)行系統(tǒng)設(shè)計(jì),有以下幾方面的特點(diǎn)。(一)功能強(qiáng)大vhdl具有功能強(qiáng)大的語言結(jié)構(gòu)。它可以用明確的代碼描述復(fù)雜的控制邏輯設(shè)計(jì)。并且具有多層次的設(shè)計(jì)描述功能,支持設(shè)計(jì)庫和可重復(fù)使用的元件生成。vhdl是一種設(shè)計(jì)、仿真和綜合的標(biāo)準(zhǔn)硬件描述語言。(二)可移植性vhdl語言是一個(gè)標(biāo)準(zhǔn)語言,其設(shè)計(jì)

12、描述可以為不同的eda工具支持。它可以從一個(gè)仿真工具移植到另一個(gè)仿真工具,從一個(gè)綜合工具移植到另一個(gè)綜合工具,從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)。此外,通過更換庫再重新綜合很容易移植為asic設(shè)計(jì)。(三)獨(dú)立性vhdl的硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān)。設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。程序設(shè)計(jì)的硬件目標(biāo)器件有廣闊的選擇范圍,可以是各系列的cpld、fpga及各種門陣列器件。(四)可操作性由于vhdl具有類屬描述語句和子程序調(diào)用等功能,對(duì)于已完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變端口類屬參量或函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)。(五

13、)靈活性vhdl最初是作為一種仿真標(biāo)準(zhǔn)格式出現(xiàn)的,有著豐富的仿真語句和庫函數(shù)。使其在任何大系統(tǒng)的設(shè)計(jì)中,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。所以,即使在遠(yuǎn)離門級(jí)的高層次(即使設(shè)計(jì)尚未完成時(shí)),設(shè)計(jì)者就能夠?qū)φ麄€(gè)工程設(shè)計(jì)的結(jié)構(gòu)和功能的可行性進(jìn)行查驗(yàn),并做出決策。1.4 vhdl的設(shè)計(jì)結(jié)構(gòu)vhdl描述數(shù)字電路系統(tǒng)設(shè)計(jì)的行為、功能、輸入和輸出。它在語法上與現(xiàn)代編程語言相似,但包含了許多與硬件有特殊關(guān)系的結(jié)構(gòu)。vhdl將一個(gè)設(shè)計(jì)稱為一個(gè)實(shí)體entity(元件、電路或者系統(tǒng)),并且將它分成外部的可見部分(實(shí)體名、連接)和內(nèi)部的隱藏部分(實(shí)體算法、實(shí)現(xiàn))。當(dāng)定義了一個(gè)設(shè)計(jì)的實(shí)體之后,其他實(shí)體可以利用該實(shí)體,也可以開

14、發(fā)一個(gè)實(shí)體庫。所以,內(nèi)部和外部的概念對(duì)系統(tǒng)設(shè)計(jì)的vhdl是十分重要的。外部的實(shí)體名或連接由實(shí)體聲明entity來描述。而內(nèi)部的實(shí)體算法或?qū)崿F(xiàn)則由結(jié)構(gòu)體architecture來描述。結(jié)構(gòu)體可以包含相連的多個(gè)進(jìn)程process或者組建component等其他并行結(jié)構(gòu)。需要說明的是,它們?cè)谟布卸际遣⑿羞\(yùn)行的。1.5 vhdl的設(shè)計(jì)步驟采用vhdl的系統(tǒng)設(shè)計(jì),一般有以下6個(gè)步驟。1)要求的功能模塊劃分;2)vhdl的設(shè)計(jì)描述(設(shè)計(jì)輸入);3)代碼仿真模擬(前仿真);4)計(jì)綜合、優(yōu)化和布局布線;5)布局布線后的仿真模擬(后仿真);6)設(shè)計(jì)的實(shí)現(xiàn)(下載到目標(biāo)器件)。2.設(shè)計(jì)主要內(nèi)容設(shè)計(jì)一個(gè)電子計(jì)時(shí)器,

15、給定時(shí)鐘信號(hào)為512hz,要求系統(tǒng)達(dá)到以下功能:(1)用6個(gè)數(shù)碼管分別顯示時(shí)、分、秒,計(jì)時(shí)范圍為00:00:0023:59:59。(2)計(jì)時(shí)精度是1s。(3)具有啟/ 停開關(guān), 復(fù)位開關(guān)。圖1總體方框圖3.內(nèi)部各功能模塊本系統(tǒng)由六十進(jìn)制計(jì)數(shù)器模塊、二十四進(jìn)制計(jì)數(shù)器模塊、分頻模塊執(zhí)行計(jì)時(shí)功能, 輸入信號(hào)是512hz,通過分頻后為1hz,時(shí)鐘信號(hào)是1hz作為計(jì)時(shí)器的秒輸入,秒為60進(jìn)制計(jì)數(shù)器,分也為60進(jìn)制計(jì)數(shù)器,小時(shí)采用二十四進(jìn)制計(jì)數(shù)器, 各級(jí)進(jìn)位作為高位的使能控制。3.1 六十進(jìn)制計(jì)數(shù)器模塊 設(shè)計(jì)一個(gè)八位的六十進(jìn)制計(jì)數(shù)器模塊,輸入信號(hào)為en、reset、clk,分別為使能、復(fù)位和時(shí)鐘信號(hào),輸出

16、信號(hào)為qa30、qb30、rco,分別為低4位輸出、高4位輸出和進(jìn)位位。 圖2 六十進(jìn)制計(jì)數(shù)器示圖3秒計(jì)數(shù)器的仿真波形圖波形分析利用60進(jìn)制計(jì)數(shù)器完成00到59的循環(huán)計(jì)數(shù)功能,當(dāng)秒計(jì)數(shù)至59時(shí),再來一個(gè)時(shí)鐘脈沖則產(chǎn)生進(jìn)位輸出,即enmin=1;reset作為復(fù)位信號(hào)低電平有效,即高電平時(shí)正常循環(huán)計(jì)數(shù),低電平清零。因?yàn)檫@種60進(jìn)制的vhdl語言是很好寫的,它并不復(fù)雜,再說我們必須要學(xué)會(huì)這些基本的硬件語言的描寫。圖4分鐘計(jì)數(shù)器的仿真波形圖3)波形分析小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號(hào)的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。 該模塊部分vhdl 源程序如下:library ieee;us

17、e ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60 isport( en,reset,clk: in std_logic; qa: out std_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto 0); rco: out std_logic); end count60;architecture a of count60 isbeginprocess(clk)variable tma: std_logic_vector(3 down

18、to 0);variable tmb: std_logic_vector(3 downto 0);beginif reset ='0'then tma:="0000" tmb:="0000" elsif clk'event and clk='1' thenif en='1' thenrco<=tmb(2)and tmb(0)and tma(3)and tma(0); if tma="1001" then tma:="0000" if tmb="

19、0101" then tmb:="0000" else tmb:=tmb+1; end if; else tma:=tma+1; end if; end if; end if; qa<=tma;qb<=tmb; end process;end a;3.2 二十四進(jìn)制計(jì)數(shù)器模塊設(shè)計(jì)一個(gè)八位的二十四進(jìn)制計(jì)數(shù)器模塊,輸入信號(hào)為en、reset、clk,分別為使能、復(fù)位和時(shí)鐘信號(hào),輸出信號(hào)為qa30、qb30,分別為低4位輸出、高4位輸出。圖5 二十四進(jìn)制計(jì)數(shù)器示意圖圖6 小時(shí)計(jì)數(shù)器的仿真波形圖3)波形分析小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號(hào)的輸

20、入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。該模塊部分vhdl 源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count24 isport( en,reset,clk: in std_logic; qa: out std_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto 0); end count24;architecture a1 of count24 isbeginprocess(clk)variable t

21、ma: std_logic_vector(3 downto 0);variable tmb: std_logic_vector(3 downto 0);beginif reset = '0'then tma:="0000" tmb:="0000" else if clk'event and clk='1' then if en='1' then if tma="1001" then tma:="0000"tmb:=tmb+1; elsif tmb="

22、0010" and tma="0011" then tma:="0000"tmb:="0000" else tma:=tma+1; end if; end if; end if;end if; qa<=tma;qb<=tmb; end process;end a1;3.3分頻器模塊設(shè)計(jì)一個(gè)分頻器,要求將輸入512hz的時(shí)鐘信號(hào)分頻為1hz的時(shí)鐘信號(hào)作為計(jì)時(shí)器的秒輸入。輸入信號(hào)為clk和rst,分別為時(shí)鐘信號(hào)和復(fù)位信號(hào),輸出信號(hào)為clk_out,為分頻器1hz的時(shí)鐘信號(hào)輸出。圖7 分頻器示意圖該模塊部分vhdl 源

23、程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi is port (clk,rst:in std_logic; clk_out:out std_logic); end fenpinqi;architecture behav of fenpinqi issignal clk_data:std_logic;signal cnt6 : integer := 0;begin process(clk) begin if rst = '0' then c

24、nt6<=0 ; elsif clk'event and clk='1' then if cnt6=255 then clk_data<=not clk_data;cnt6<=0;else cnt6<=cnt6+1; end if; end if; clk_out<=clk_data; end process;end behav; 3.4 led顯示模塊led有著顯示亮度高,響應(yīng)速度快的特點(diǎn),最常用的是七段式led顯示器,又稱數(shù)碼管。七段led顯示器內(nèi)部由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。led數(shù)碼管的

25、ga七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不能發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼(段碼),如顯示”0”,字形碼為3fh。圖8 led數(shù)碼管結(jié)構(gòu)圖數(shù)碼管的接口有靜態(tài)接口和動(dòng)態(tài)接口。動(dòng)態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示頻率較高時(shí),利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個(gè)接口完成字形碼的輸出(字形選擇),另一接口完成各數(shù)碼管的輪流點(diǎn)亮(數(shù)位選擇)。 將二十四進(jìn)制計(jì)數(shù)器和2個(gè)六十進(jìn)制計(jì)數(shù)器的輸出作為led顯示模塊的輸入,在時(shí)鐘信號(hào)的控制下通過此模塊完成6個(gè)led數(shù)碼管的顯示,輸出信號(hào)為wei20和led60,分別為位選信號(hào)和段碼輸出。圖9

26、led顯示示意圖該模塊部分vhdl 源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock1 is port(clk: in std_logic;s1, s2, s3, s4, s5, s6: in std_logic_vector(3 downto 0);wei: out std_logic_vector(2 downto 0);led: out std_logic_vector(6 downto 0);end entity;architecture behave

27、of clock1 issignal cnt6 : integer range 0 to 5 := 0;signal shuju: std_logic_vector(3 downto 0);begin pro1:process(clk)beginif clk'event and clk = '1' thencnt6 <= cnt6 + 1;case cnt6 iswhen 0 => wei <= "000" shuju <= s1;when 1 => wei <= "001" shuju <

28、;= s2; when 2 => wei <= "010" shuju <= s3;when 3 => wei <= "011" shuju <= s4;when 4 => wei <= "100" shuju <= s5;when 5 => wei <= "101" shuju <= s6;cnt6<=0;when others => null;end case;end if;end process;pro2: process(s

29、huju)begincase shuju iswhen "0000" => led<= "1111110" ;when "0001" => led<= "0110000" ; when "0010" => led<= "1101101" ; when "0011" => led<= "1111001" ; when "0100" => led<= "

30、;0110011" ; when "0101" => led<= "1011011" ; when "0110" => led<= "1011111" ; when "0111" => led<= "1110000" ; when "1000" => led<= "1111111" ; when "1001" => led<= "1111

31、011" ; when others=> led<= "0000000" ; end case;end process;end ; 4.頂層系統(tǒng)聯(lián)調(diào)通過上面的分頻器,兩個(gè)60進(jìn)制的計(jì)數(shù)器,一個(gè)12/24進(jìn)制的計(jì)數(shù)器,6選1掃描器,7段數(shù)碼顯示器,設(shè)計(jì)如圖所示的頂層。規(guī)定每一模塊的功能和各模塊之間的接口。同時(shí)整個(gè)計(jì)數(shù)器有清零。 設(shè)計(jì)思想,利用脈沖時(shí)鐘產(chǎn)生一個(gè)1hz的信號(hào)來實(shí)現(xiàn)一秒鐘的控制,要產(chǎn)生1hz的信號(hào)就要用到分頻器,實(shí)驗(yàn)中用512分頻器把512hz的信號(hào)變成1hz。然后信號(hào)進(jìn)入控制秒的計(jì)數(shù)器,當(dāng)?shù)?0個(gè)脈沖時(shí)鐘到來時(shí),產(chǎn)生一個(gè)進(jìn)位信號(hào), 送到控制分

32、的計(jì)數(shù)器,同理,當(dāng)?shù)?0個(gè)脈沖時(shí)鐘到來時(shí),產(chǎn)生一個(gè)進(jìn)位信號(hào),送到控制小時(shí)的計(jì)數(shù)器。當(dāng)小時(shí)計(jì)數(shù)器計(jì)數(shù)到12/24時(shí),完成一個(gè)周期,跳轉(zhuǎn)到零。輸出是由動(dòng)態(tài)掃描器來完成的。掃描器時(shí)鐘取至前面分頻未結(jié)束時(shí)的一個(gè)512hz的信號(hào)。這樣就能夠在7段數(shù)碼顯示管上,以512hz的頻率掃描顯示出時(shí)鐘的數(shù)字變化。通過元件例化將各個(gè)模塊連接起來,組成一個(gè)整體。 元件例化就是將預(yù)先設(shè)計(jì)好的設(shè)計(jì)實(shí)體定義為一個(gè)元件,然后利用特定的語句將此元件與當(dāng)前的設(shè)計(jì)實(shí)體中的指定端口相連接,從而為當(dāng)前設(shè)計(jì)實(shí)體引入一個(gè)新的低一級(jí)的設(shè)計(jì)層次。所定義的例化元件相當(dāng)于一個(gè)要插在這個(gè)電路系統(tǒng)板上的芯片,而當(dāng)前設(shè)計(jì)實(shí)體中指定的端口則相當(dāng)于這塊電路

33、板上準(zhǔn)備接受此芯片的一個(gè)插座。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_signed.all;use ieee.std_logic_arith.all;entity dzjsq isport(en,clk,reset:in std_logic; wei:out std_logic_vector(2 downto 0); led:out std_logic_vector(7 downto 0);end entity dzjsq;architecture a

34、bc of dzjsq iscomponent count60 port( en,reset,clk: in std_logic; qa: out std_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto 0); rco: out std_logic); end component;component count24 port( en,reset,clk: in std_logic; qa: out std_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto

35、 0); end component;component fenpinqi port (clk,rst:in std_logic; clk_out:out std_logic); end component;component clock1 port(clk: in std_logic;s1, s2, s3, s4, s5, s6: in std_logic_vector(3 downto 0);wei: out std_logic_vector(2 downto 0);led: out std_logic_vector(7 downto 0);end component;signal a1,

36、a2,a3,a4,a5,a6:std_logic_vector(3 downto 0);signal b1,b2,b3: std_logic;beginu1: fenpinqi port map(clk,reset,b1);u2:count60 port map(en,reset,b1,a1,a2,b2);u3:count60 port map(en,reset,b2,a3,a4,b3);u4:count24 port map(en,reset,b3,a5,a6);u5:clock1 port map(clk,a1,a2,a3,a4,a5,a6,wei,led);end architectur

37、e abc;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60 isport( en,reset,clk: in std_logic; qa: out std_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto 0); rco: out std_logic); end count60;architecture a of count60 isbeginprocess(clk)variable tma: st

38、d_logic_vector(3 downto 0);variable tmb: std_logic_vector(3 downto 0);beginif reset ='0'then tma:="0000" tmb:="0000" elsif clk'event and clk='1' thenif en='1' thenrco<=tmb(2)and tmb(0)and tma(3)and tma(0); if tma="1001" then tma:="000

39、0" if tmb="0101" then tmb:="0000" else tmb:=tmb+1; end if; else tma:=tma+1; end if; end if; end if; qa<=tma;qb<=tmb; end process;end a;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count24 isport( en,reset,clk: in std_logic; qa: out st

40、d_logic_vector(3 downto 0); qb: out std_logic_vector(3 downto 0); end count24;architecture a1 of count24 isbeginprocess(clk)variable tma: std_logic_vector(3 downto 0);variable tmb: std_logic_vector(3 downto 0);begin if reset = '0'then tma:="0000" tmb:="0000" else if clk&#

41、39;event and clk='1' then if en='1' then if tma="1001" then tma:="0000"tmb:=tmb+1; elsif tmb="0010" and tma="0011" then tma:="0000"tmb:="0000" else tma:=tma+1; end if; end if; end if;end if; qa<=tma;qb<=tmb; end proces

42、s;end a1;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi is port (clk,rst:in std_logic; clk_out:out std_logic); end fenpinqi;architecture behav of fenpinqi issignal clk_data:std_logic;signal cnt6 : integer := 0;begin process(clk) begin if rst = '0' th

43、en cnt6<=0 ; elsif clk'event and clk='1' then if cnt6=512 then clk_data<=not clk_data;cnt6<=0;else cnt6<=cnt6+1; end if; end if; clk_out<=clk_data; end process;end behav;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock1 is port(clk: in

44、std_logic;s1, s2, s3, s4, s5, s6: in std_logic_vector(3 downto 0);wei: out std_logic_vector(2 downto 0);led: out std_logic_vector(7 downto 0);end entity;architecture behave of clock1 issignal cnt6 : integer range 0 to 5 := 0;signal shuju: std_logic_vector(3 downto 0);begin pro1:process(clk)beginif c

45、lk'event and clk = '1' thencnt6 <= cnt6 + 1;case cnt6 iswhen 0 => wei <= "000" shuju <= s1;when 1 => wei <= "001" shuju <= s2; when 2 => wei <= "010" shuju <= s3;when 3 => wei <= "011" shuju <= s4;when 4 =>

46、 wei <= "100" shuju <= s5;when 5 => wei <= "101" shuju <= s6;cnt6<=0;when others => null;end case;end if;end process;pro2: process(shuju)begincase shuju iswhen "0000" => led<= x"3f" ;when "0001" => led<= x"06&quo

47、t; ; when "0010" => led<= x"5b" ; when "0011" => led<= x"4f" ; when "0100" => led<= x"66" ; when "0101" => led<= x"6d" ; when "0110" => led<= x"7d" ; when "0111"

48、; => led<= x"07" ; when "1000" => led<= x"7f" ; when "1001" => led<= x"6f" ; when others=> led<= x"00" ; end case;end process;end ;電子計(jì)時(shí)器的功能仿真結(jié)果如圖10所示圖10 電子計(jì)時(shí)器的功能仿真結(jié)果5.結(jié) 語eda課程設(shè)計(jì),是我大學(xué)生涯交上的最好的一個(gè)作業(yè)了。想借次機(jī)會(huì)感謝兩年半以來給我?guī)椭乃欣?/p>

49、師、同學(xué),你們的友誼是我人生的財(cái)富,是我生命中不可或缺的一部分。感謝老師對(duì)我的教育培養(yǎng),你們細(xì)心指導(dǎo)我的學(xué)習(xí),在此,我要向諸位老師深深地鞠上一躬。課程設(shè)計(jì)論文的撰寫過程是對(duì)所學(xué)的eda理論知識(shí)的綜合運(yùn)用,對(duì)兩年半專業(yè)知識(shí)的一次綜合應(yīng)用、擴(kuò)充和深化,也是對(duì)我們理論運(yùn)用于實(shí)際設(shè)計(jì)的一次鍛煉。通過課程設(shè)計(jì)論文的撰寫過程,我不僅溫習(xí)了以前在課堂上學(xué)習(xí)的專業(yè)知識(shí),同時(shí)我也得到了老師和同學(xué)的幫助,學(xué)習(xí)和體會(huì)到了eda的基本技能和思想。從開始接到論文題目到電路圖的設(shè)計(jì),再到論文文章的完成,每走一步對(duì)我來說都是新的嘗試與挑戰(zhàn)。在這段時(shí)間里,我學(xué)到了很多知識(shí)也有很多感受。當(dāng)然在做的過程中也遇到過很多的麻煩,一些沒有接觸過的元件,它們的封裝需要自己去書籍、網(wǎng)上搜索,在更新的時(shí)候會(huì)有一些錯(cuò)誤,自己很難改正,只得求助老師,最后得以解決。這次課程設(shè)計(jì)使我開始了自主的學(xué)習(xí)和試驗(yàn),查看相關(guān)的資料和書籍,讓自己頭腦中模糊的概念逐漸清晰,使自己非常稚嫩作品一步步完善起來,每一次改進(jìn)都是我學(xué)習(xí)的收獲,每一次的成功都會(huì)讓我興奮好一段時(shí)間。此次設(shè)計(jì)過程中,各種系統(tǒng)的適用條件,各種程序的選用標(biāo)準(zhǔn),各種元件的 安裝方式,我都是隨著設(shè)計(jì)的不斷深入而不斷熟悉并學(xué)會(huì)應(yīng)用的。和老師的溝

溫馨提示

  • 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. 人人文庫網(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)論