




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PAGE PAGE 29 1 引 言20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個(gè)領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。課堂智能響鈴系統(tǒng)走時(shí)精度高,穩(wěn)定性好,實(shí)用方便,不需要經(jīng)常調(diào)教,這種響鈴具有時(shí)、分、秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí),時(shí)鐘計(jì)數(shù)顯示時(shí)有LED燈的花樣顯示,具有調(diào)節(jié)小時(shí)、分鐘及清零的功能以及整點(diǎn)報(bào)時(shí)功能。1.1 課程設(shè)計(jì)目的作為通信專業(yè)的學(xué)生,通過這次EDA方面的課程設(shè)計(jì),可以提高我們對EDA領(lǐng)域及通信電路設(shè)計(jì)領(lǐng)域的認(rèn)識,有利于培養(yǎng)我們在通信電路EDA方面
2、的設(shè)計(jì)能力。一人一題特別有利于鍛煉我們獨(dú)立分析問題和解決問題的能力。設(shè)計(jì)過程的復(fù)雜加老師的嚴(yán)格要求有益于培養(yǎng)我們嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)。本次課題是計(jì)算機(jī)組成原理的課程設(shè)計(jì),旨在通過自己對所需功能芯片的設(shè)計(jì)與實(shí)現(xiàn)來鞏固以前所學(xué)的計(jì)算機(jī)硬件基礎(chǔ)知識,同時(shí)也提高動手實(shí)踐的能力,還有為將來進(jìn)行更大規(guī)模更復(fù)雜的開發(fā)積累經(jīng)驗(yàn)。1.2 課程設(shè)計(jì)內(nèi)容本次設(shè)計(jì)以智能打鈴為主,實(shí)現(xiàn)時(shí)鐘計(jì)數(shù):完成時(shí)、分、秒的正確計(jì)時(shí)并且顯示所計(jì)的數(shù)字;對秒、分60進(jìn)制計(jì)數(shù),即從0到59循環(huán)計(jì)數(shù),時(shí)鐘24進(jìn)制計(jì)數(shù),即從0到23循環(huán)計(jì)數(shù),并且在數(shù)碼管上顯示數(shù)值。以及時(shí)間設(shè)置:手動調(diào)節(jié)分鐘、小時(shí),可以對所設(shè)計(jì)的時(shí)鐘任意調(diào)時(shí)間,這樣使數(shù)字鐘真正具
3、有使用功能。我們可以通過實(shí)驗(yàn)板上的鍵7和鍵4進(jìn)行任意的調(diào)整,因?yàn)槲覀冇玫臅r(shí)鐘信號均是1HZ的,所以每LED燈變化一次就來一個(gè)脈沖,即計(jì)數(shù)一次。清零功能:reset為復(fù)位鍵,低電平時(shí)實(shí)現(xiàn)清零功能,高電平時(shí)正常計(jì)數(shù)??梢愿鶕?jù)我們自己任意時(shí)間的復(fù)位蜂鳴器在整點(diǎn)時(shí)有報(bào)時(shí)信號產(chǎn)生,蜂鳴器報(bào)警,產(chǎn)生“滴答.滴答”的報(bào)警聲音。LED燈在時(shí)鐘顯示時(shí)有花樣顯示信號產(chǎn)生。即根據(jù)進(jìn)位情況,LED不停的閃爍,從而產(chǎn)生“花樣”信號。2 理論基礎(chǔ)2.1 Verilog HDL語言概述Verilog HDL是一種硬件描述語言(HDL:Hardware Discription Language),是一種以文本形式來描述數(shù)字系
4、統(tǒng)硬件的結(jié)構(gòu)和行為的語言。Verilog HDL就是在用途最廣泛的C語言的基礎(chǔ)上發(fā)展起來的一種件描述語言, 1983年,Gateway Design Automation(GDA)硬件描述語言公司的Philip Moorby首創(chuàng)了Verilog HDL。后來Moorby成為Verilog HDL-XL的主要設(shè)計(jì)者和Cadence公司的第一合伙人。1984至1986年,Moorby設(shè)計(jì)出第一個(gè)關(guān)于Verilog HDL的仿真器,并提出了用于快速門級仿真的XL算法,使Verilog HDL語言得到迅速發(fā)展。1987年Synonsys公司開始使用Verilog HDL行為語言作為綜合工具的輸入。19
5、89年Cadence公司收購了Gateway公司,Verilog HDL成為Cadence公司的私有財(cái)產(chǎn)。1990年初,Cadence公司把Verilog HDL和Verilog HDL-XL分開,并公開發(fā)布了Verilog HDL。隨后成立的OVI(Open Verilog HDL International)組織負(fù)責(zé)Verilog HDL的發(fā)展并制定有關(guān)標(biāo)準(zhǔn),OVI由Verilog HDL的使用者和CAE供應(yīng)商組成。1993年,幾乎所有ASIC廠商都開始支持Verilog HDL,并且認(rèn)為Verilog HDL-XL是最好的仿真器。同時(shí),OVI推出2.0版本的Verilong HDL規(guī)范,
6、IEEE則將OVI的Verilog HDL2.0作為IEEE標(biāo)準(zhǔn)的提案。1995年12月,IEEE制定了Verilog HDL的標(biāo)準(zhǔn)IEEE1364-1995。目前,最新的Verilog語言版本是2000年IEEE公布的Verilog 2001標(biāo)準(zhǔn),其大幅度地提高了系統(tǒng)級和可綜合性能。 Verilog HDL的最大特點(diǎn)就是易學(xué)易用,如果有C語言的編程經(jīng)驗(yàn),可以在一個(gè)較短的時(shí)間內(nèi)很快的學(xué)習(xí)和掌握,因而可以把Verilog HDL內(nèi)容安排在與ASIC設(shè)計(jì)等相關(guān)課程內(nèi)部進(jìn)行講授,由于HDL語言本身是專門面向硬件與系統(tǒng)設(shè)計(jì)的,這樣的安排可以使學(xué)習(xí)者同時(shí)獲得設(shè)計(jì)實(shí)際電路的經(jīng)驗(yàn)。與之相比,VHDL的學(xué)習(xí)要
7、困難一些。但Verilog HDL較自由的語法,也容易造成初學(xué)者犯一些錯(cuò)誤,這一點(diǎn)要注意。 Verilog HDL既是一種行為描述語言,也是一種結(jié)構(gòu)描述語言。如果按照一定的規(guī)則和風(fēng)格編寫代碼,就可以將功能行為模塊通過工具自動轉(zhuǎn)化為門級互連的結(jié)構(gòu)模塊。這意味著利用Verilog語言所提供的功能,就可以構(gòu)造一個(gè)模塊間的清晰結(jié)構(gòu)來描述復(fù)雜的大型設(shè)計(jì),并對所需的邏輯電路進(jìn)行嚴(yán)格的設(shè)計(jì)。Verilog HDL 硬件描述語言在電子設(shè)計(jì)自動化中扮演著重要的角色,他是EDA 技術(shù)研究的重點(diǎn)之一。 下面列出的是Verilog語言的主要功能: 可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu); 用延遲表示式或事件表達(dá)式來明確地
8、控制過程的啟動時(shí)間; 通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為; 提供了條件和循環(huán)等程序結(jié)構(gòu); 提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu); 提供了可定義新的操作符的函數(shù)結(jié)構(gòu); 提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符; 提供了一套完整的表示組合邏輯基本元件的原語; 提供了雙向通路和電阻器件的描述; 可建立MOS器件的電荷分享和衰減模型; 可以通過構(gòu)造性語句精確地建立信號模型;2.2 MaxplusII簡介Max+plusII(或?qū)懗蒑axplus2,或MP2) 是Altera公司推出的的第三代PLD開發(fā)系統(tǒng)(Altera第四代PLD開發(fā)系統(tǒng)被稱為:QuartusII,
9、主要用于設(shè)計(jì)新器件和大規(guī)模CPLD/FPGA).使用MAX+PLUSII的設(shè)計(jì)者不需精通器件內(nèi)部的復(fù)雜結(jié)構(gòu)。設(shè)計(jì)者可以用自己熟悉的設(shè)計(jì)工具(如原理圖輸入或硬件描述語言)建立設(shè)計(jì),MAX+PLUSII把這些設(shè)計(jì)轉(zhuǎn)自動換成最終所需的格式。其設(shè)計(jì)速度非常快。對于一般幾千門的電路設(shè)計(jì),使用MAX+PLUSII,從設(shè)計(jì)輸入到器件編程完畢,用戶拿到設(shè)計(jì)好的邏輯電路,大約只需幾小時(shí)。設(shè)計(jì)處理一般在數(shù)分鐘內(nèi)內(nèi)完成。特別是在原理圖輸入等方面,Maxplus2被公認(rèn)為是最易使用,人機(jī)界面最友善的PLD開發(fā)軟件,特別適合初學(xué)者使用。通??蓪axplus2設(shè)計(jì)流程歸納為以下7個(gè)步驟:(1)使用文本編輯器輸入設(shè)計(jì)源文
10、件。在傳統(tǒng)設(shè)計(jì)中,設(shè)計(jì)人員是應(yīng)用傳統(tǒng)的原理圖輸入方法來開始設(shè)計(jì)的。自90年代初,Verilog、VHDL、AHDL等硬件描述語言的輸入方法在大規(guī)模設(shè)計(jì)中得到了廣泛應(yīng)用。(2)前仿真(功能仿真)。設(shè)計(jì)的電路必須在布局布線前驗(yàn)證電路功能是否有效。(3)設(shè)計(jì)編譯。設(shè)計(jì)輸入之后就有一個(gè)從高層次系統(tǒng)行為設(shè)計(jì)向門級邏輯電路設(shè)轉(zhuǎn)化翻譯過程,即把設(shè)計(jì)輸入的某種或某幾種數(shù)據(jù)格式(網(wǎng)表)轉(zhuǎn)化為軟件可識別的某種數(shù)據(jù)格式(網(wǎng)表)。(4)優(yōu)化。對于上述綜合生成的網(wǎng)表,根據(jù)布爾方程功能等效的原則,用更小更快的綜合結(jié)果代替一些復(fù)雜的單元,并與指定的庫映射生成新的網(wǎng)表,這是減小電路規(guī)模的一條必由之路。(5)布局布線。(6)后
11、仿真(時(shí)序仿真)需要利用在布局布線中獲得的精確參數(shù)再次驗(yàn)證電路的時(shí)序。(7)生產(chǎn)。布線和后仿真完成之后,就可以開始ASCI或PLD芯片的投產(chǎn)。Max Plus II的設(shè)計(jì)流程可以用如下圖2.1所示。圖形成VHDL編輯器編譯網(wǎng)表提取數(shù)據(jù)庫建立邏輯綜合邏輯分割匹配延時(shí)網(wǎng)表提取編輯文件匯編編輯器圖2.1Max Plus II 設(shè)計(jì)流程從圖2.1可清晰了解到Max Plus II提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。他包括設(shè)計(jì)輸入編輯、編譯網(wǎng)表提取、數(shù)據(jù)庫建立、邏輯綜合、邏輯分割、適配、延時(shí)網(wǎng)表提取、編輯文件匯編以及編程下載9個(gè)步驟。3 課堂智能響鈴系統(tǒng)的設(shè)
12、計(jì)方案3.1設(shè)計(jì)思路系統(tǒng)設(shè)計(jì):根據(jù)總體方框圖及各部分分配的功能可知,本系統(tǒng)可以由秒計(jì)數(shù)器、分鐘計(jì)數(shù)器、小時(shí)計(jì)數(shù)器、整點(diǎn)報(bào)時(shí)、分的調(diào)整以及小時(shí)的調(diào)整和一個(gè)頂層文件構(gòu)成。采用自頂向下的設(shè)計(jì)方法,子模塊利用Verilog HDL語言設(shè)計(jì),頂層文件用原理圖的設(shè)計(jì)方法。顯示:小時(shí)采用24進(jìn)制,而分鐘和秒均60進(jìn)制。課堂智能響鈴系統(tǒng)的電路組成方框圖3.1所示。數(shù)字時(shí)鐘控制單元時(shí)調(diào)整分調(diào)整使能端信號CLK信號時(shí)顯示分顯示秒顯示24進(jìn)制60進(jìn)制60進(jìn)制LED顯示整點(diǎn)報(bào)時(shí)花樣顯示 圖3.1 響鈴系統(tǒng)流程圖對各模塊進(jìn)行連線,從而得到以下總線路圖如圖3.2所示。 圖3.2 響鈴系統(tǒng)總連線圖3.2分塊設(shè)計(jì)與仿真1)
13、秒計(jì)數(shù)器圖3.3秒計(jì)數(shù)器模塊 圖3.4 秒表計(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ù)位信號低電平有效,即高電平時(shí)正常循環(huán)計(jì)數(shù),低電平清零。2) 分鐘計(jì)數(shù)器 圖3.5分鐘計(jì)數(shù)器模塊 圖3.6分鐘計(jì)數(shù)器模塊仿真波形分析:小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。3)小時(shí)計(jì)數(shù)器圖3.7時(shí)鐘計(jì)數(shù)器模塊圖3.8時(shí)鐘計(jì)數(shù)器模塊仿真波形分析:小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。4)整點(diǎn)報(bào)時(shí)模塊 圖3.9整
14、點(diǎn)報(bào)時(shí)模塊圖3.10整點(diǎn)報(bào)時(shí)模塊仿真波形分析:由圖知對于整點(diǎn)報(bào)時(shí)模塊,當(dāng)分鐘計(jì)數(shù)至59時(shí)來一個(gè)時(shí)鐘脈沖則產(chǎn)生一個(gè)進(jìn)位信號,分鐘計(jì)數(shù)到00,此時(shí)產(chǎn)生報(bào)警信號持續(xù)一分鐘。當(dāng)有時(shí)鐘脈沖時(shí)lamp顯示燈就閃爍輪續(xù)點(diǎn)亮。4課堂智能響鈴系統(tǒng)設(shè)計(jì)的仿真與實(shí)現(xiàn)要實(shí)現(xiàn)的功能:可產(chǎn)生秒計(jì)數(shù),分鐘計(jì)數(shù),小時(shí)計(jì)數(shù),整點(diǎn)報(bào)時(shí)四種信號,能夠?qū)崿F(xiàn)信號的轉(zhuǎn)換(select)并且頻率可調(diào)。主要由三部分組成:地址指針控制模塊,四種信號數(shù)據(jù)存儲模塊,D/A轉(zhuǎn)換模塊。前面2個(gè)模塊在Max+plusII中實(shí)現(xiàn),該部分的實(shí)現(xiàn)框圖如圖4.1所示。圖4.1實(shí)現(xiàn)功能框圖4.1 響鈴系統(tǒng)的仿真與實(shí)現(xiàn)該模塊的功能采用Verilog HDL來描述,
15、程序請見附件。該部分功能驗(yàn)證的波形仿真結(jié)果如圖4.2所示。 圖4.2課堂智能響鈴系統(tǒng)總體仿真圖波形分析輸出信號second6.0表示:秒計(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ù)位信號低電平有效,即高電平時(shí)正常循環(huán)計(jì)數(shù),低電平清零。輸出信號min6.0表示:分鐘計(jì)數(shù)模塊,小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。輸出信號hour5.表示:小時(shí)計(jì)數(shù)模塊,小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。輸入信號lamp
16、2.0表示:整點(diǎn)報(bào)時(shí)模塊,當(dāng)分鐘計(jì)數(shù)至59時(shí)來一個(gè)時(shí)鐘脈沖則產(chǎn)生一個(gè)進(jìn)位信號,分鐘計(jì)數(shù)到00,此時(shí)產(chǎn)生報(bào)警信號持續(xù)一分鐘。當(dāng)有時(shí)鐘脈沖時(shí)lamp顯示燈就閃爍輪續(xù)點(diǎn)亮。4.2 系統(tǒng)設(shè)計(jì)有待提高和改進(jìn)的地方本課程設(shè)計(jì)是基于Verilog HDL語言的課堂智能響鈴系統(tǒng)設(shè)計(jì)。據(jù)理來說課堂的響鈴時(shí)間不應(yīng)該是整點(diǎn)。但由于課程設(shè)計(jì)的時(shí)間有限,本人的知識水平有限,設(shè)計(jì)的響鈴系統(tǒng)是整點(diǎn)報(bào)時(shí),這是本設(shè)計(jì)的一大缺陷。如果能設(shè)計(jì)出專業(yè)的課堂響鈴系統(tǒng),響鈴的時(shí)間能夠根據(jù)要求做相應(yīng)的調(diào)整,這也是本文最初的設(shè)計(jì)思路,那樣設(shè)計(jì)就更加完美。5 小結(jié)本次課程設(shè)計(jì)要求編寫一個(gè)基于Verilog HDL語言的課堂智能響鈴系統(tǒng),并用M
17、ax Plus II軟件進(jìn)行仿真。根據(jù)搜索相關(guān)資料及自我理解,我本次的設(shè)計(jì)以智能打鈴為主,實(shí)現(xiàn)時(shí)鐘計(jì)數(shù):完成時(shí)、分、秒的正確計(jì)時(shí)并且顯示所計(jì)的數(shù)字;對秒、分60進(jìn)制計(jì)數(shù),即從0到59循環(huán)計(jì)數(shù),時(shí)鐘24進(jìn)制計(jì)數(shù),即從0到23循環(huán)計(jì)數(shù),并且在數(shù)碼管上顯示數(shù)值。以及時(shí)間設(shè)置:手動調(diào)節(jié)分鐘、小時(shí),可以對所設(shè)計(jì)的時(shí)鐘任意調(diào)時(shí)間,這樣使數(shù)字鐘真正具有使用功能。清零功能:reset為復(fù)位鍵,低電平時(shí)實(shí)現(xiàn)清零功能,高電平時(shí)正常計(jì)數(shù)。可以根據(jù)我們自己任意時(shí)間的復(fù)位蜂鳴器在整點(diǎn)時(shí)有報(bào)時(shí)信號產(chǎn)生,蜂鳴器報(bào)警,產(chǎn)生“滴答.滴答”的報(bào)警聲音。并且通過WORD文檔將原理圖畫出來。在整個(gè)電路設(shè)計(jì)完畢并仿真成功后發(fā)現(xiàn),其實(shí)整
18、個(gè)電路設(shè)計(jì)實(shí)現(xiàn)的功能還是比較實(shí)用和易于操作的,而自己也為此付出了許多:從根據(jù)課題要求查找相關(guān)資料,學(xué)習(xí)硬件語言,到自己能夠獨(dú)立編寫小程序;從對Max Plus II軟件的摸索,一次次修改程序,到仿真得到較滿意的結(jié)果;從對截圖工具的搜索下載,論文資料的搜集,到文字排版的學(xué)習(xí)。在設(shè)計(jì)過程中遇到了很多困難,在指導(dǎo)老師的指引和同學(xué)的幫助下,通過不斷探索學(xué)習(xí),使問題得到了一定的解決。通過本學(xué)期課程設(shè)計(jì)的學(xué)習(xí),我從中學(xué)習(xí)到了很多東西,對可編程邏輯器件,Verilog HDL語言,Max Plus II軟件有了一定的了解,尤其是用Verilog HDL語言編程和仿真。在本次設(shè)計(jì)中最大的收獲是在不斷地發(fā)現(xiàn)問題
19、,分析問題,解決問題的過程中培養(yǎng)了自己的科研能力,為今后的學(xué)習(xí)工作做了一個(gè)良好的鋪墊。Verilog Hdl語言設(shè)計(jì)的出現(xiàn)從根本上改變了以往數(shù)字電路的設(shè)計(jì)模式,使電路設(shè)計(jì)由硬件設(shè)計(jì)轉(zhuǎn)變?yōu)檐浖O(shè)計(jì),這樣提高了設(shè)計(jì)的靈活性,降低了電路的復(fù)雜程度,修改起來也很方便。 利用Verilog Hdl設(shè)計(jì)的靈活性,根據(jù)串行通信協(xié)議的要求,可以在實(shí)驗(yàn)室利用先進(jìn)的EDA工具,設(shè)計(jì)出符合自己實(shí)際需求的課堂智能響鈴系統(tǒng)。 經(jīng)過三周的設(shè)計(jì)制作,該設(shè)計(jì)終于如期開發(fā)完畢,其功能基本上可以滿足處理的需要。 由于時(shí)間有限,本系統(tǒng)還有許多不盡人意的地方,需要將來做進(jìn)一步的改善。這次課程設(shè)計(jì),以方便實(shí)際操作為基礎(chǔ),以理論聯(lián)系實(shí)際
20、為準(zhǔn)則,不斷完善,不斷創(chuàng)新。參考文獻(xiàn)1 張振榮,晉明武等.MCS-51單片機(jī)原理及實(shí)用技術(shù)M.北京:人民郵電出版社,2000.2王金明Verilog HDL程序設(shè)計(jì)教程北京:人民郵電出版社,2004.13 張亦華,延明,肖冰數(shù)字邏輯設(shè)計(jì)實(shí)驗(yàn)技術(shù)與EDA工具北京:郵電大學(xué)出版社 2003.14 潘松,黃繼業(yè)EDA技術(shù)實(shí)用教程M 北京:科學(xué)出版社,2002.105 江國強(qiáng)EDA技術(shù)與應(yīng)用M 北京:電子工業(yè)出版社,2004.8致謝通過為期兩周的課程設(shè)計(jì),我順利完成了基于Verilog HDL課堂智能響鈴系統(tǒng)的設(shè)計(jì)。在這次課程設(shè)計(jì)中,非常感謝各位老師的指導(dǎo),在老師的身上學(xué)到的不僅僅是知識的層面,更重要
21、的是老師追求知識的熱情,還重要的是老師對學(xué)生的尊重和關(guān)愛,卻又不失老師本身工作的嚴(yán)謹(jǐn)?shù)膽B(tài)度,他的工作作風(fēng)以及對生活的態(tài)度讓我受益匪淺。我在課程設(shè)計(jì)中碰到的很多個(gè)人困難,老師都能給予很大的體諒與幫助。在設(shè)計(jì)中遇到的試驗(yàn)的客觀條件方面,老師也給予最大力度的協(xié)助,讓我有更好的設(shè)計(jì)學(xué)習(xí)環(huán)境,在這里,同時(shí)感謝在長沙理工大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)室和機(jī)房所提供的試驗(yàn)條件,老師對工作的那份熱情對我們產(chǎn)生了很大的影響,讓我們在遇到困難的時(shí)候敢于前進(jìn)。同樣也感謝同學(xué)們的相互幫助,正是因?yàn)橛辛诉@些,我才能很好的順利的完成我的這次課程設(shè)計(jì)。附錄:課堂智能響鈴系統(tǒng)設(shè)計(jì)源程序清單/ 程序名稱:基于Verilog HDL語言
22、的課堂智能響鈴系統(tǒng)設(shè)計(jì)/ 程序作者:#/ 最后修改日期:2010-12-311) 秒計(jì)數(shù)器module second (clk, reset, setmin, enmin, daout); input clk; input reset; input setmin; output enmin; wire enmin; output6:0 daout; wire6:0 daout; reg6:0 count; reg enmin_1; enmin_1為59秒時(shí)的進(jìn)位信號 wire enmin_2; enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串 assign daout = count ; as
23、sign enmin_2 = (setmin & clk) ; setmin為手動調(diào)分控制信號,高電平有效 assign enmin = (enmin_1 | enmin_2) ; enmin為向分進(jìn)位信號 always (posedge clk or negedge reset) begin if (reset = 1b0) begin count = 7b0000000 ; 若reset為0,則異步清零 end else begin否則,若clk上升沿到 if (count3:0 = 4b1001) 若個(gè)位計(jì)時(shí)恰好到“1001”即9 begin if (count 8h60) 又若coun
24、t小于16#60#,即60H begin if (count = 7b1011001) 又若已到59D begin enmin_1 = 1b1 ; count = 7b0000000 ; 則置進(jìn)位為1及count復(fù)0 end else未到59D begin count = count + 7 ; 則加7,而+7=+1+6,即作“加6校正” end end else 若count不小于16#60#(即count等于或大于16#60#) begin count = 7b0000000 ; count復(fù)0 end end END IF(count16#60#) else if (count 8h60
25、) 若個(gè)位計(jì)數(shù)未到“1001”則轉(zhuǎn)此句再判 begin count = count + 1 ; 若count16#60#則count加1 enmin_1 = #100 1b0 ; 沒有發(fā)生進(jìn)位 end else 否則,若count不小于16#60# begin count = 7b0000000 ; 則count復(fù)0 end END IF(count(3 DOWNTO 0)=“1001”) end END IF(reset=0) end endmodule2) 分鐘計(jì)數(shù)器module minute (clk, clk1, reset, sethour, enhour, daout); inpu
26、t clk; input clk1; input reset; input sethour; output enhour; wire enhour; output6:0 daout; wire6:0 daout; reg6:0 count; reg enhour_1; enmin_1為59分時(shí)的進(jìn)位信號 wire enhour_2; enmin_2由clk調(diào)制后的手動調(diào)時(shí)脈沖信號串 assign daout = count ; assign enhour_2 = (sethour & clk1) ; sethour為手動調(diào)時(shí)控制信號,高電平有效 assign enhour = (enhour_
27、1 | enhour_2) ; always (posedge clk or negedge reset) begin if (reset = 1b0) 若reset為0,則異步清零 begin count = 7b0000000 ; end else 否則,若clk上升沿到 begin if (count3:0 = 4b1001) 若個(gè)位計(jì)時(shí)恰好到“1001”即9 begin if (count 8h60) 又若count小于16#60#,即60 begin if (count = 7b1011001) 又若已到59D begin enhour_1 = 1b1 ; 則置進(jìn)位為1 count
28、= 7b0000000 ; count復(fù)0 end else begin count = count + 7 ; 若count未到59D,則加7,即作“加6校正” end 使前面的16#60#的個(gè)位轉(zhuǎn)變?yōu)?421BCD的容量 end else begin count = 7b0000000 ; count復(fù)0(有此句,則對無效狀態(tài)電路可自啟動) end END IF(count16#60#) end else if (count 8h60) begin count = count + 1 ; 若count16#60#則count加1 enhour_1 = #100 1b0 ; 沒有發(fā)生進(jìn)位 e
29、nd else begin count = 7b0000000 ; 否則,若count不小于16#60# count復(fù)0 end END IF(count(3 DOWNTO 0)=“1001”) end END IF(reset=0) end endmodule3) 小時(shí)計(jì)數(shù)器module hour (clk, reset, daout); input clk; input reset; output5:0 daout; wire5:0 daout; reg5:0 count; assign daout = count ; always (posedge clk or negedge rese
30、t) begin if (reset = 1b0) begin count = 6b000000 ; 若reset=0,則異步清零 end else 否則,若clk上升沿到 begin if (count3:0 = 4b1001) 若個(gè)位計(jì)時(shí)恰好到“1001”即9 begin if (count 8h23) 23進(jìn)制 begin count = count + 7 ; 若到23D則 end else begin count = 6b000000 ; 復(fù)0 end end else if (count 8h23) 若未到23D,則count進(jìn)1 begin count = count + 1 ;
31、 end else 否則清零 begin count = 6b000000 ; end END IF(count(3 DOWNTO 0)=“1001”) end END IF(reset=0) end endmodule4) 整點(diǎn)報(bào)時(shí)報(bào)警模塊 module alert (clk, dain, speak, lamp); input clk; input6:0 dain; output speak; reg speak; output2:0 lamp; reg2:0 lamp; reg1:0 count; reg1:0 count1; always (posedge clk) begin : s
32、peaker speak = 2b10) begin count1 = 2b00 ; count1為三進(jìn)制加法計(jì)數(shù)器 end else begin count1 = count1 + 1 ; end end end always (posedge clk) begin : lamper if (count = 2b10) begin if (count = 2b00) begin lamp = 3b001 ; 循環(huán)點(diǎn)亮三只燈 end else if (count = 2b01) begin lamp = 3b010 ; end else if (count = 2b10) begin lamp
33、 = 3b100 ; end count = count + 1 ; end else begin count = 2b00 ; end end endmodule附錄資料:不需要的可以自行刪除C語言編譯環(huán)境中的調(diào)試功能及常見錯(cuò)誤提示調(diào)試功能1常用健 : 激活系統(tǒng)菜單: 將光標(biāo)在編輯窗口和、信息窗口之間切換: 加載一個(gè)文件+: 查看程序運(yùn)行結(jié)果: 得到有關(guān)編輯器在線幫助+: 得到有關(guān)C語言的在線幫助+: 終止正在運(yùn)行的程序2塊操作 KB: 定義塊首 KK: 定義塊尾 KV: 塊移動 KC: 塊復(fù)制 KY: 塊刪除 KH: 取消塊定義3查找、替換和刪除操作 QF: 查找字符串 QA: 查找并替換
34、字符串 Option: G(全程), B(向文件頭), N(直接替換) Y : 刪除一行 QY: 刪除從光標(biāo)位置到行末的所有字符編譯中的常見錯(cuò)誤例析(1)警告類錯(cuò)誤 XXXdeclare but never used 變量XXX已定義但從未用過。 XXXis assigned a value which is never used 變量XXX已賦值但從未用過。 Code has no effect 程序中含有沒有實(shí)際作用的代碼。 Non-portable pointer conversion 不適當(dāng)?shù)闹羔樲D(zhuǎn)換,可能是在應(yīng)該使用指針的地方用了一個(gè)非0的數(shù)值。 Possible use of XX
35、Xbefore definition 表達(dá)式中使用了未賦值的變量 Redeclaration of main 一個(gè)程序文件中主函數(shù)main不止一個(gè)。 Suspicious pointer conversion 可疑的指針轉(zhuǎn)換。通常是使用了基本類型不匹配的指針。 Unreachable code 程序含有不能執(zhí)行到的代碼。(2)錯(cuò)誤或致命錯(cuò)誤 Compound statement missing in function main 程序結(jié)尾缺少括號。 “”expected; “(”expected等 復(fù)合語句或數(shù)組初始化的結(jié)尾缺少“)”;“(”。 Case outside of switch ca
36、se 不屬于Switch結(jié)構(gòu),多由于switch結(jié)構(gòu)中的花括號不配對所致。 Case statement missing : switch結(jié)構(gòu)中的某個(gè)case之后缺少冒號。 Constant expression required 定義數(shù)組時(shí)指定的數(shù)組長度不是常量表達(dá)式。 Declaration syntax error 結(jié)構(gòu)體或聯(lián)合類型的定義后缺少分號。 Declaration was expected 缺少說明,通常是因?yàn)槿鄙俜纸绶缍禾枴⒎痔?、右圓括號等所引起的。 Default outside switch Default部分放到了switch結(jié)構(gòu)之外,一般是因?yàn)榛ɡㄌ柌黄ヅ涠鸬摹?/p>
37、 do statement must have while do語句中缺少相應(yīng)的while部分。 Expression syntax 表達(dá)式語法錯(cuò)。如表達(dá)式中含有兩個(gè)連續(xù)的運(yùn)算符 Extra parameter in call fun 調(diào)用函數(shù)fun時(shí)給出了多余的實(shí)參。 Function should return a value 函數(shù)應(yīng)該返回一個(gè)值,否則與定義時(shí)的說明類型不匹配。 Illegal use of pointer 指針被非法引用,一般是使用了非法的指針運(yùn)算。 Invalid pointer addition 指針相加非法。一個(gè)指針(地址)可以和一個(gè)整數(shù)相加,但兩個(gè)指針不能相加。
38、Lvalue required 賦值運(yùn)算的左邊是不能尋址的表達(dá)式。 Misplaced else 程序遇到了沒有配對的else No matching 表達(dá)式中的括號不配對。 Pointer required on left side of_ 在“_”運(yùn)算的左邊只能允許一個(gè)指針而不能是一個(gè)一般的結(jié)構(gòu)體變量或聯(lián)合類型的變量。 Statement missing; 程序遇到了后面沒有分號的語句。 Too few parameters in call 調(diào)用某個(gè)函數(shù)時(shí)實(shí)參數(shù)目不夠。 Unable to open include file XXXXXXXXXXX 頭文件找不到。 Unexpected 或
39、:或 在不希望的地方使用了或:。 Undefined symbol Xin function fun 函數(shù)fun中的變量X沒有定義。5.連接中的常見錯(cuò)誤主要錯(cuò)誤類似于“undefined symbol _print in modula xxx”(print沒有定義),通常是函數(shù)名書寫錯(cuò)誤。6.運(yùn)行中的常見錯(cuò)誤Abnormal program termination 程序異常終止。通常是由于內(nèi)存使用不當(dāng)所致。Floating point error : Domain 或Divide by 0 運(yùn)算結(jié)果不是一個(gè)數(shù)或被0 除Null pointer assignment 對未初始化的指針賦值,程序有
40、嚴(yán)重錯(cuò)誤。User break 在運(yùn)行程序時(shí)終止。7.程序的跟蹤調(diào)試?yán)肦un菜單可以進(jìn)行程序的跟蹤調(diào)試(1)GO to Cursor ()選擇該選項(xiàng)使程序執(zhí)行到光標(biāo)所在行首先將光標(biāo)移到某行(一般為可執(zhí)行),選擇該功能項(xiàng),則程序執(zhí)行到該行的前一行暫停。此時(shí)程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處,此時(shí)可以查詢變量或表達(dá)式的值。(2)Trace into ()執(zhí)行一條語句或一行暫停此時(shí)程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處。該選項(xiàng)可跟蹤到被調(diào)函數(shù)的內(nèi)部。(3)Step over ()執(zhí)行一條語句或一行暫停此時(shí)程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處。該選項(xiàng)將自定義函數(shù)當(dāng)作一個(gè)語句執(zhí)行,不
41、跟蹤到函程序的內(nèi)部。(4)Debug 菜單程序處于跟蹤狀態(tài)時(shí),可使用該菜單的選項(xiàng)。其主要是使用Evaluate目的是查詢或更新變量或表達(dá)式的值。選擇Evaluate功能后,系統(tǒng)彈出一個(gè)對話框。該對話框包含三個(gè)選項(xiàng)區(qū)域:Evaluate域可以輸入一個(gè)含有目前代碼中(程序暫停區(qū)的作用域)正在使用的變量名、或含變量的表達(dá)式、或常量表達(dá)式。按回車鍵后,在Result域中顯示變量或表達(dá)式的值。還可以用New value域進(jìn)行調(diào)試。如果調(diào)試程序時(shí)發(fā)現(xiàn)Result域顯示的某變量或表達(dá)式的值不正確,并能估計(jì)出該變量或表達(dá)式的值,則可以將該值輸入到New value域,繼續(xù)執(zhí)行程序,其目的是肯定錯(cuò)誤發(fā)生處是否在
42、當(dāng)前位置之前。如果輸入這個(gè)正確的值并將程序繼續(xù)執(zhí)行完畢而結(jié)果正確,說明在目前暫停處之前已經(jīng)發(fā)生錯(cuò)誤而之后無錯(cuò)誤。(5)Break/Watch用于設(shè)置斷點(diǎn)和監(jiān)視表達(dá)式。選擇Add Watch功能選項(xiàng),系統(tǒng)將彈出一個(gè)菜單,在Add Watch框中輸入變量名或表達(dá)式,按回車鍵后,系統(tǒng)在屏幕底部開辟一個(gè)窗口并顯示 該變量或表達(dá)式的值。【常見錯(cuò)誤信息語句索引】Ambiguous operators need parentheses:不明確的運(yùn)算需要用括號括起 Ambiguous symbol xxx :不明確的符號 Argument list syntax error:參數(shù)表語法錯(cuò)誤 Array bou
43、nds missing in function main 缺少數(shù)組界限符 Array bounds missing :丟失數(shù)組界限符 Array size too large :數(shù)組尺寸太大 Bad character in paramenters :參數(shù)中有不適當(dāng)?shù)淖址?Bad file name format in include directive :包含命令中文件名格式不正確 Bad ifdef directive synatax :編譯預(yù)處理ifdef有語法錯(cuò) Bad undef directive syntax :編譯預(yù)處理undef有語法錯(cuò) Bit field too large
44、 :位字段太長 Call of non-function :調(diào)用未定義的函數(shù) Call to function with no prototype :調(diào)用函數(shù)時(shí)沒有函數(shù)的說明 Cannot modify a const object :不允許修改常量對象 Case outside of switch :漏掉了case 語句 Case syntax error :Case 語法錯(cuò)誤 Code has no effect :代碼不可述不可能執(zhí)行到 Compound statement missing :分程序漏掉 Conflicting type modifiers :不明確的類型說明符 Cons
45、tant expression required :要求常量表達(dá)式 Constant out of range in comparison :在比較中常量超出范圍 Conversion may lose significant digits :轉(zhuǎn)換時(shí)會丟失意義的數(shù)字 Conversion of near pointer not allowed :不允許轉(zhuǎn)換近指針 Could not find file xxx :找不到XXX文件 Declaration missing ; :說明缺少; Declaration syntax error :說明中出現(xiàn)語法錯(cuò)誤 Default outside of
46、 switch :Default 出現(xiàn)在switch語句之外 Define directive needs an identifier :定義編譯預(yù)處理需要標(biāo)識符 Division by zero :用零作除數(shù) Do statement must have while :Do-while語句中缺少while部分 Enum syntax error :枚舉類型語法錯(cuò)誤 Enumeration constant syntax error :枚舉常數(shù)語法錯(cuò)誤 Error directive :xxx :錯(cuò)誤的編譯預(yù)處理命令 Error writing output file :寫輸出文件錯(cuò)誤 Exp
47、ression syntax error :表達(dá)式語法錯(cuò)誤 Extra parameter in call :調(diào)用時(shí)出現(xiàn)多余錯(cuò)誤 File name too long :文件名太長 Function call missing ) :函數(shù)調(diào)用缺少右括號 Fuction definition out of place :函數(shù)定義位置錯(cuò)誤 Fuction should return a value :函數(shù)必需返回一個(gè)值 Goto statement missing label :Goto語句沒有標(biāo)號 Hexadecimal or octal constant too large :16進(jìn)制或8進(jìn)制常
48、數(shù)太大 Illegal character x :非法字符x Illegal initialization :非法的初始化 Illegal octal digit :非法的8進(jìn)制數(shù)字 Illegal pointer subtraction :非法的指針相減 Illegal structure operation :非法的結(jié)構(gòu)體操作 Illegal use of floating point :非法的浮點(diǎn)運(yùn)算 Illegal use of pointer :指針使用非法 Improper use of a typedefsymbol :類型定義符號使用不恰當(dāng) In-line assembly n
49、ot allowed :不允許使用行間匯編 Incompatible storage class :存儲類別不相容 Incompatible type conversion :不相容的類型轉(zhuǎn)換 Incorrect number format :錯(cuò)誤的數(shù)據(jù)格式 Incorrect use of default Default使用不當(dāng) Invalid indirection 無效的間接運(yùn)算 Invalid pointer addition 指針相加無效 Irreducible expression tree 無法執(zhí)行的表達(dá)式運(yùn)算 Lvalue required 需要邏輯值0或非0值 Macro a
50、rgument syntax error 宏參數(shù)語法錯(cuò)誤 Macro expansion too long 宏的擴(kuò)展以后太長 Mismatched number of parameters in definition 定義中參數(shù)個(gè)數(shù)不匹配 Misplaced break 此處不應(yīng)出現(xiàn)break語句 Misplaced continue 此處不應(yīng)出現(xiàn)continue語句 Misplaced decimal point 此處不應(yīng)出現(xiàn)小數(shù)點(diǎn) Misplaced elif directive 不應(yīng)編譯預(yù)處理elif Misplaced else 此處不應(yīng)出現(xiàn)else Misplaced else di
51、rective 此處不應(yīng)出現(xiàn)編譯預(yù)處理else Misplaced endif directive 此處不應(yīng)出現(xiàn)編譯預(yù)處理endif Must be addressable 必須是可以編址的 Must take address of memory location 必須存儲定位的地址 No declaration for function xxx 沒有函數(shù)xxx的說明 No stack 缺少堆棧 No type information 沒有類型信息 Non-portable pointer assignment 不可移動的指針(地址常數(shù))賦值 Non-portable pointer comp
52、arison 不可移動的指針(地址常數(shù))比較 Non-portable pointer conversion 不可移動的指針(地址常數(shù))轉(zhuǎn)換 Not a valid expression format type 不合法的表達(dá)式格式 Not an allowed type 不允許使用的類型 Numeric constant too large 數(shù)值常太大 Out of memory 內(nèi)存不夠用 Parameter xxx is never used 能數(shù)xxx沒有用到 Pointer required on left side of - 符號-的左邊必須是指針 Possible use of xxx before definition 在定義之前就使用了xxx(警告) Possibly incorrect assignment 賦值可能不正確 Redeclaration of xxx 重復(fù)定義了xxx Redefinition of xxx is not identical xx的兩次定義不一致 Register allocation fai
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025內(nèi)蒙古恒正實(shí)業(yè)集團(tuán)有限公司招聘10名工作人員筆試參考題庫附帶答案詳解
- 紡織設(shè)計(jì)師考試內(nèi)容簡化試題及答案
- 紡織工程師證書考試應(yīng)知的行業(yè)熱點(diǎn)與試題及答案
- 英語廣播測試題及答案
- 工廠員工合同協(xié)議書
- 孕育員培訓(xùn)合同協(xié)議書
- 配股合同協(xié)議書
- 2024年凸輪軸車床項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 京東合同協(xié)議書
- 定金合同協(xié)議書
- GB/T 15089-2001機(jī)動車輛及掛車分類
- 第十一章多孔材料課件
- 初中語文人教八年級上冊《作文訓(xùn)練之細(xì)節(jié)描寫》PPT
- 增值稅轉(zhuǎn)型改革及增值稅條例課件
- 挖掘機(jī)司機(jī)技能理論考試題庫大全(600題版)
- 穿支動脈梗死的病因和機(jī)制課件
- 高校電子課件:產(chǎn)業(yè)經(jīng)濟(jì)學(xué)(第五版)
- 詳解科魯茲儀表系統(tǒng)圖
- 畢業(yè)設(shè)計(jì)-栲膠法脫硫
- 人教九年級化學(xué)學(xué)生分組實(shí)驗(yàn)
- 向量的數(shù)量積和向量積(課堂PPT)
評論
0/150
提交評論