![《交通燈eda設(shè)計(jì)》word版_第1頁](http://file4.renrendoc.com/view/c0b21d0d36be946bdf0dad1ec9f268cf/c0b21d0d36be946bdf0dad1ec9f268cf1.gif)
![《交通燈eda設(shè)計(jì)》word版_第2頁](http://file4.renrendoc.com/view/c0b21d0d36be946bdf0dad1ec9f268cf/c0b21d0d36be946bdf0dad1ec9f268cf2.gif)
![《交通燈eda設(shè)計(jì)》word版_第3頁](http://file4.renrendoc.com/view/c0b21d0d36be946bdf0dad1ec9f268cf/c0b21d0d36be946bdf0dad1ec9f268cf3.gif)
![《交通燈eda設(shè)計(jì)》word版_第4頁](http://file4.renrendoc.com/view/c0b21d0d36be946bdf0dad1ec9f268cf/c0b21d0d36be946bdf0dad1ec9f268cf4.gif)
![《交通燈eda設(shè)計(jì)》word版_第5頁](http://file4.renrendoc.com/view/c0b21d0d36be946bdf0dad1ec9f268cf/c0b21d0d36be946bdf0dad1ec9f268cf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一章.選題背景1.1 EDA設(shè)計(jì)的發(fā)展?fàn)顩r:本設(shè)計(jì)是建立在EDA基礎(chǔ)上完成的項(xiàng)目。EDA技術(shù)經(jīng)歷了CAD階段,CAE階段,EDA階段三個(gè)發(fā)展階段。在今天,EDA技術(shù)已經(jīng)成為電子設(shè)計(jì)的普遍工具,無論設(shè)計(jì)芯片還是設(shè)計(jì)系統(tǒng),沒有EDA工具的支持,都是難以完成的。如今的EDA區(qū)別于曾經(jīng)的:構(gòu)成系統(tǒng)的“積木塊”是各種標(biāo)準(zhǔn)芯片。EDA技術(shù)的出現(xiàn)改變了這種傳統(tǒng)思路,使人們可以立足于PLD芯片來實(shí)現(xiàn)各種不同的功能,新的設(shè)計(jì)方法能夠由設(shè)計(jì)者自己定義器件的內(nèi)部邏輯和管腳,將原來由電路版設(shè)計(jì)完成的工作大部分放在芯片的設(shè)計(jì)中進(jìn)行。1.2 國內(nèi)外交通燈的發(fā)展?fàn)顩r:本人所設(shè)計(jì)的交通燈設(shè)計(jì)早已經(jīng)不僅僅禁錮于當(dāng)初的紅黃綠三
2、色燈上了,在各大交通緊張的十字路口還可能設(shè)有左轉(zhuǎn)燈,四盞燈按合理順序亮滅。同樣也可以運(yùn)用Verilog語言進(jìn)行編譯完成此設(shè)計(jì)。而目前,國內(nèi)外專家和學(xué)者普遍采用模糊控制方法來設(shè)計(jì)交通燈實(shí)時(shí)控制系統(tǒng)實(shí)踐表明,采用這種方法設(shè)計(jì)的控制系統(tǒng)可進(jìn)一步提高路網(wǎng)的通行能力,減少路口延誤時(shí)間和停車次數(shù),對高度非線性的、隨機(jī)的十字路口車流量的控制更加精確,并取得了更高的經(jīng)濟(jì)效益。 本系統(tǒng)的控制原理框圖可由圖1表示,它主要由傳感器、模糊控制器(包括計(jì)算控制變量、模糊量處理、模糊控制規(guī)則、模糊推理和清晰化處理五個(gè)模塊,如圖中虛線內(nèi)所示)、執(zhí)行機(jī)構(gòu)、被控對象以及數(shù)模和模數(shù)轉(zhuǎn)換器組成。 圖1-1控制原理框圖本系統(tǒng)以單向上
3、有三個(gè)車道的道路為實(shí)驗(yàn)?zāi)P?,共使用?4個(gè)傳感器設(shè)計(jì)的交通燈模糊控制系統(tǒng)比傳統(tǒng)的交通燈控制系統(tǒng)平均節(jié)約7.8秒的等待時(shí)間。而本人所要設(shè)計(jì)的交通燈控制器僅僅需要紅綠兩種顏色,控制兩個(gè)干道的車輛,并且有5秒的閃爍時(shí)間以便提示車輛或者行人做好禁止通行準(zhǔn)備.而此種設(shè)計(jì)已經(jīng)可以用各種語言不同方式實(shí)現(xiàn).我所使用的是較為簡單的Verilog HDL語言編譯程序,最終通過MAX+PLUS2這個(gè)全英文工具加以實(shí)現(xiàn). 第二章.方案論證 2.1 設(shè)計(jì)要求設(shè)計(jì)一個(gè)十字路口交通信號(hào)燈的控制電路。要求紅、綠燈按一定的規(guī)律亮和滅,并在亮燈期間進(jìn)行倒計(jì)時(shí),并將運(yùn)行時(shí)間用數(shù)碼管顯示出來。 綠燈亮?xí)r,為該車道允許通行信號(hào),紅燈亮
4、時(shí),為該車道禁止通行信號(hào)。要求主干道每次通行時(shí)間為99秒,支干道每次通行時(shí)間為30秒。每次變換運(yùn)行車道前綠燈閃爍,持續(xù)時(shí)間為5秒。即車道要由X轉(zhuǎn)換為Y時(shí),X在通行時(shí)間只剩下5秒鐘時(shí),綠燈閃爍顯示,Y仍為紅燈,以便X上已過停車線的車?yán)^續(xù)通行,未過停車線的車停止通行。同理,當(dāng)車道由Y轉(zhuǎn)換為X時(shí),Y綠燈閃爍顯示5秒鐘,X仍為紅燈。可以對X,Y車道上紅、綠燈運(yùn)行的時(shí)間進(jìn)行重新設(shè)置。對器件進(jìn)行在系統(tǒng)編程和實(shí)驗(yàn)驗(yàn)證。2.2 方案設(shè)計(jì)分析設(shè)計(jì)要求,交通燈的控制要保證在同一個(gè)時(shí)刻,只有一條干道是通行狀態(tài)。并且任一條干道的綠燈在運(yùn)行時(shí)間只剩5秒的時(shí)候開始閃爍,而另一條干道的紅燈繼續(xù)亮,反之亦然。設(shè)A方向是主干道
5、,車流量大,B方向支干道。A方向和B方向的紅,黃,綠分別用R1,Y1,G1和R2,Y2,G2來表示。(1)綠黃紅黃綠由于本設(shè)計(jì)老師沒有安排黃燈亮,僅可代表綠燈閃爍5秒的時(shí)間。(2)在置數(shù)模塊中,設(shè)四個(gè)并行的ALWAYS同時(shí)對四個(gè)置數(shù)鍵鍵控。置數(shù)值分別放在chief_h,chief_l,sub_h,sub_l.(3)每種燈亮的時(shí)間采用一個(gè)減法計(jì)數(shù)器進(jìn)行記數(shù),計(jì)數(shù)器用同步預(yù)置法設(shè)計(jì),這樣只需改變預(yù)置數(shù)據(jù),就能改變計(jì)數(shù)器的模,因此每個(gè)方向只要一個(gè)記數(shù)器進(jìn)行記時(shí)即可。(4)為便于顯示燈亮的時(shí)間,計(jì)數(shù)器的輸出可采用BCD碼,顯示由四個(gè)數(shù)碼管來完成,A方向和B方向各用兩個(gè)數(shù)碼管。這樣設(shè)計(jì)中就需要四條輸出線
6、,用來選通指定一個(gè)LED七段顯示數(shù)碼管;當(dāng)正常計(jì)時(shí)開始后,需要進(jìn)行定時(shí)技數(shù)操作,由于東西和南北兩個(gè)方向上的時(shí)間顯示器是由兩個(gè)LED七段數(shù)碼管組成的,因此需要產(chǎn)生兩個(gè)2位的計(jì)時(shí)信息:2個(gè)十位信號(hào),2個(gè)個(gè)位信號(hào),這個(gè)定時(shí)計(jì)數(shù)操作可以由一個(gè)定時(shí)計(jì)數(shù)起來完成,又因?yàn)榻煌舻臓顟B(tài)變化是在計(jì)時(shí)為0的情況下才能進(jìn)行的,因此需要一個(gè)計(jì)時(shí)電路來產(chǎn)生使能信號(hào),因此定時(shí)計(jì)數(shù)的功能就是用來產(chǎn)生2個(gè)2位計(jì)時(shí)信息和使能信號(hào)。(5)采用自上而下的設(shè)計(jì)方法,將其分為各個(gè)小模塊,然后連接最后達(dá)到最后的設(shè)計(jì)目的.交通燈狀態(tài)圖如下: S0主干道綠燈亮,支干道紅燈亮S1主干道綠燈閃(5S),支干道紅燈亮/select;flash主干
7、道紅燈亮,支干道綠燈閃(5S)主干道紅燈亮,支干道綠燈亮Select;/flashSelect;flash/select;/flash 圖2-1交通燈狀態(tài)圖第三章設(shè)計(jì)論述: 本設(shè)計(jì)的完成是運(yùn)用Verilog HDL語言進(jìn)行編譯,用MAX+PLUS2軟件來實(shí)現(xiàn)的。對此我對Verilog HDL語言與MAX+PLUS2進(jìn)行簡單描述。最后再詳細(xì)介紹本設(shè)計(jì)的全部內(nèi)容。3.1.Verilog HDL語言:1. Verilog HDL語言的發(fā)展過程:Verilog HDL語言是在1983年由GDA(Gate Way Design Automation)公司的Phil Moorby首創(chuàng)的:在1984-198
8、5年間,Moorby設(shè)計(jì)出第一個(gè)關(guān)于Verilog-XL的仿真器;1986年,又提出了用于快速門級(jí)仿真的XL算法。 隨著Verilog-XL算法的成功,Verilog HDL語言得到迅速發(fā)展,1989年,CADENCE公司收購GDA公司,Verilog HDL成為CADENCE公司的私有財(cái)產(chǎn)。1990年CANDENCE公司決定公開發(fā)表Verilog HDL,于是成立了OVI(Open Verilog international)組織來負(fù)責(zé) Verilog HDL的發(fā)展?;赩erilog HDL的優(yōu)勢,IEEE于1995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn)。2. Verilog HDL
9、的特點(diǎn):1. Verilog語言是一種通用的硬件描述語言,并且易學(xué)易用,在語法上和C 語言類似。2. 同一個(gè)設(shè)計(jì)中,Verilog語言允許設(shè)計(jì)者在不同層次上進(jìn)行抽象。Verilog語言提供開關(guān)級(jí),門級(jí)。RTL級(jí)和行為級(jí)的支持,一個(gè)設(shè)計(jì)可以先用行為級(jí)語法描述它的算法,仿真通過后,再用RTL級(jí)描述,得到可綜合的代碼。3. Verilog語言支持廣泛,基本上所有流行的綜合器,仿真器都支持此語言。4. 能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次,模塊的規(guī)??梢允侨我獾?,語言對此沒有任何限制。5. Verilog語言對仿真提供強(qiáng)度的支持。Verilog HDL語言中,描述進(jìn)程的基本語句是alway
10、s和initial.always過程反復(fù)執(zhí)行其中的塊語句,而initial過程中的語句塊只執(zhí)行一次.除了always和initial過程塊外,一個(gè)assign賦值語句,一個(gè)實(shí)例元件的調(diào)用都可以看做是一個(gè)進(jìn)程. 在VerilogHDL語言中已預(yù)定義了門級(jí)原型: and n-input AND gate nand n-input NAND gate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate buf n-output buffer not
11、n-output inverter bufif0 tri-state buffer; Io enable bufif1 tri-state buffer; hi enable notif0 tri-state inverter; Io enable notif1 tri-state inverter; hi enable 表3-1Verilog HDL行為描述方法:過程塊的組成: 過程語句(事件控制敏感表) begin (:塊名) 塊內(nèi)局部變量說明 一條或多條過程賦值或高級(jí)程序語句 end在always下面使用的高級(jí)程序語句:(1)if-else 條件語句 if (條件表達(dá)式) 塊語句1 el
12、se if (條件表達(dá)式2) 塊語句2 . else if (條件表達(dá)式n) 塊語句n else 塊語句n+1(2)case 語句case (敏感表達(dá)式) 值1:塊語句1 值2:塊語句2 值n: 塊語句n default:塊語句n+1endcase (3)for循環(huán)語句 for (表達(dá)式1;表達(dá)式2;表達(dá)式3)塊語句3.2 MAX+PLUS2的介紹: 本設(shè)計(jì)很關(guān)鍵的一步就是對MAX+PLUS2的學(xué)習(xí),因?yàn)楹竺嫠婕暗降奈谋揪幾g,建立模塊,仿真都需要對此軟件的熟練掌握才能很好的達(dá)到最終目的,因此我粗略的把使用MAX+PLUS2的基本流程描述一下。 我完成此設(shè)計(jì)是采用文本編譯,然后建立模塊最后實(shí)現(xiàn)
13、仿真的。使用MAX+plus II 軟件進(jìn)行開發(fā)的流程如圖3所示,主要包括以下步驟: 圖3-1 而MAX+PLUS2可以采用兩種方法來完成:1.文本設(shè)計(jì)法。2.圖形輸入法。而我采用的第一種方法。 采用Verilog HDL進(jìn)行文本設(shè)計(jì)的步驟如下: 1指定項(xiàng)目并建立新文件; 2輸入文本設(shè)計(jì)文件; 3文件命名、保存; 4編譯文件并檢查、修改句法錯(cuò)誤; 5若需要,可生成默認(rèn)邏輯符號(hào)。以下我簡單介紹下自己運(yùn)用時(shí)的步驟:1 編譯: MAX+plus II 的編譯器能夠接受多種輸入文本格式,也能輸出多種文件格式。如前所述,它能接受的設(shè)計(jì)文件包括:MAX+plus II 自己的圖形文件(.gdf)、AHDL
14、文件(.tdf)、VHDL文件(.vhd)和Verilog HDL文件(.v);包括第三方EDA工具書輸入文件,如EDIF文件(.edf)、庫映射文件(.lmf)、OrCAD文件(.sch)及Xilinx文件(.xnf); 它還能接受賦值和配置文件(.acf)。另一方面,MAX+plus II 的輸出文件包括設(shè)計(jì)校驗(yàn)、MAX+plus II 的模擬器網(wǎng)表文件(.snf)、第三方EDA工具所用的網(wǎng)表文件(.vo)和標(biāo)準(zhǔn)格式的SDF文件(.sdo)。另外還可以輸出可編程文件,包括用于E2PROM類器件編程的目標(biāo)文件(.pof)、用于配置SRAM類器件的目標(biāo)文件(.sof)和JEDEC文件(.jed
15、)。正常運(yùn)行MAX+PLUS2后,先建立一個(gè)文件夾如123。然后點(diǎn)FILE中的NEW出現(xiàn)如下圖,選擇TEXT EDITOR變會(huì)出現(xiàn)輸入文本的空白界面,便可以輸入你編的程序,完成編譯后進(jìn)行保存。然后點(diǎn)project建立工程并且使名字也和程序名一致。然后點(diǎn)MAX+PLUS2中的compiler進(jìn)行程序驗(yàn)證,如有錯(cuò)誤便可按照提示查出錯(cuò)誤進(jìn)行改正,直到正確無誤為止。圖3-2 2. 波形仿真:再點(diǎn)擊FILE選擇NEW出現(xiàn)上面同樣的界面,這回選擇wave editor file然后保存。然后打開后出現(xiàn)圖點(diǎn)擊右鍵選擇你要觀察的引腳,將輸入INPUT鍵入初始值。點(diǎn)擊MAX+PLUS2選擇simulator進(jìn)行
16、仿真,點(diǎn)擊start檢驗(yàn)無誤后便可以仿真了。 圖3-3圖3-43. 建立模塊完成以上內(nèi)容后點(diǎn)FILE中的create default symbol,然后點(diǎn)NEW選擇第一個(gè)GRAPLIC EDITOR FILE然后在空白中輸入SYMBOL就會(huì)出現(xiàn)你要的模塊。這樣整個(gè)過程就算初步完成,此后還有模塊的整合在后面會(huì)敘述到。此處就不再累贅。MAX + PLUS II 能夠?qū)⒃O(shè)計(jì)的結(jié)果用層次顯示方式顯示出樹的形式顯示出整個(gè)項(xiàng)目和電路的設(shè)計(jì)層次。打開層次顯示窗口的方法是在MAX + PLUS II菜單中選擇Hierarchy Display項(xiàng),選擇后,當(dāng)前項(xiàng)目的層次便顯示出來。圖3.8是上例中模塊mul4_
17、look的結(jié)構(gòu)層次,層次中的每個(gè)文件都可以通過雙擊文件名打開,并送到前臺(tái)顯示來。它以一個(gè)層次: 圖3-53.3.基于交通燈控制的設(shè)計(jì)論述: 本設(shè)計(jì)遵循著自上而下的方法來完成的,先建立各個(gè)小的模塊最后再進(jìn)行整合。我們將整個(gè)分成設(shè)置模塊,計(jì)時(shí)模塊,顯示模塊與最終的頂層模塊。我完成計(jì)時(shí)控制模塊和頂層模塊。簡要介紹下置數(shù)模塊和顯示模塊。在置數(shù)模塊中,ALWAYS語句中用置數(shù)鍵的上升沿跳變做觸發(fā)。每按次置數(shù)案鍵,便產(chǎn)生電平變化,對應(yīng)的置數(shù)鍵加1。當(dāng)置數(shù)位加到9后下一次歸0。四個(gè)并行的ALWAYS同時(shí)對四個(gè)置數(shù)鍵監(jiān)控。置數(shù)值分別放在chief_h,chief_l,sub_h,sub_l顯示模塊中完成交通燈
18、的顯示和閃爍功能。我們完成的交通燈的邏輯功能如下:通過外部:chief_l_botton;chief_h_button;sub_l_button;sub_h_button,分別對主干道和次干道的通行時(shí)間進(jìn)行設(shè)置。在按下enable鍵后,交通燈開始運(yùn)行。運(yùn)行時(shí)間以設(shè)置的值為初始值,以秒為單位進(jìn)行減計(jì)數(shù)并且在數(shù)碼管上顯示。并且保持交通燈的控制在同一時(shí)刻,只有一條干道是通行狀態(tài)。并且任何一條干道的綠燈在運(yùn)行時(shí)間只剩下5秒鐘的時(shí)間開始閃爍,而另一條干道的紅燈繼續(xù)亮。反之亦然??刂萍白g碼表格:輸入信號(hào)輸出信號(hào)selectflashChief_greenChief_redSub_greenSub_red
19、0 0 1 0 0 1 0 1 閃爍 0 0 1 1 0 0 1 1 0 1 1 0 1閃爍 0 表3-2所有的功能按鍵設(shè)置為脈沖模式chief_h_button( 主干道通行時(shí)間置數(shù)高位鍵),chief_l_button (主干道通行時(shí)間置數(shù)低位鍵),sub_h_button( 次干道通行時(shí)間置數(shù)高位鍵),sub_l_button(次干道通行時(shí)間置數(shù)低位鍵)。每次置數(shù)從0開始,每按一次鍵加1,到9歸零,依次循環(huán)(置數(shù)范圍為099)。整體電路圖如下: 圖3-6其中輸入端(INPUT)包括Enable控制計(jì)時(shí)器的運(yùn)行和關(guān)閉.CLK為時(shí)鐘脈沖.chief_h_button,chief_l_butt
20、on,sub_h_button,sub_l_button則為四個(gè)控制兩個(gè)干道的置數(shù)鍵.輸出端(OUTPUT)chief_green,chief_red,sub_green,sub_red接發(fā)光管.其中閃爍的效果用flash&clk實(shí)現(xiàn)的.既然采用的是自頂向下的設(shè)計(jì)思想,那么頂層的設(shè)計(jì)就很重用,頂層設(shè)計(jì)好后,下面各個(gè)部分寫起來就比較容易了,一旦出了什么問題也好檢查錯(cuò)誤在哪里進(jìn)行相應(yīng)的改動(dòng)。3.3.1 設(shè)計(jì)過程: 完成真?zhèn)€交通燈的設(shè)計(jì)主要經(jīng)過了電路的分析,模塊劃分,程序的編譯,模塊的建立,波形的仿真,和最后模塊的整合這幾個(gè)步驟: 在設(shè)計(jì)中我主要負(fù)責(zé)計(jì)時(shí)模塊和頂層模塊的建立,所以本文只對此進(jìn)行詳細(xì)敘
21、述,對另兩個(gè)模塊就不做詳解。(Enable鍵控制計(jì)時(shí)器的運(yùn)行和關(guān)閉。Enable按下后,將置數(shù)值賦給計(jì)數(shù)變量chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp.)根據(jù)設(shè)計(jì)要求先將整個(gè)電路的輸入輸出規(guī)劃出來。其中輸入:一個(gè)運(yùn)行控制鍵enable(按下后可以使交通燈運(yùn)行,再按下后交通燈停止運(yùn)行。)一個(gè)時(shí)鐘信號(hào)CLK,四個(gè)功能按鍵分別控制主干道高低位鍵,支干道高低位鍵。(chief_h_button,chief_l_button,sub_h_button,sub_l_button)。輸出:chief_green,chief_red,sub_green,su
22、b_red(分別控制發(fā)光管)。并且設(shè)置輸出chief_h,chief_l,sub_h,sub_l可以控制數(shù)碼管顯示。初步對電路分析后建立了一個(gè)系統(tǒng)的框架。如圖9所式:而模塊的劃分是設(shè)計(jì)中要求的所以不必再做敘述。、yesyes綠燈閃爍紅燈保持綠燈閃爍紅燈保持yes調(diào)節(jié)信號(hào)使能nonoyesyesnoyes計(jì)時(shí)到Ty是否綠燈5S內(nèi)東西為綠,南北為紅計(jì)時(shí)到TX是否綠燈5S內(nèi)東西為紅,南北為綠,計(jì)時(shí)開始復(fù)位通電nonono圖3-7系統(tǒng)框圖 計(jì)時(shí)模塊(1)程序的編譯我主要負(fù)責(zé)的是計(jì)時(shí)控制模塊的編譯,首先我們確定的是用文本輸入的方法來實(shí)現(xiàn)。在程序中完成了計(jì)時(shí)功能同時(shí)也完成了控制的功能:初始狀態(tài),計(jì)數(shù)選擇寄
23、存器select=0,對主干道的計(jì)數(shù)變量進(jìn)行減計(jì)數(shù)。每到一個(gè)時(shí)鐘上升沿,對變量減。建立一個(gè)文件夾并再在其中建立個(gè)名為jishi的文件夾,與程序同名,為以后整合時(shí)調(diào)用模塊做依據(jù)。然后點(diǎn)擊file中的new選擇texteditorfile。根據(jù)以上的要求編譯計(jì)時(shí)程序如下Modulejishi(start,Initial,clk,chief_h,chief_l,sub_h,sub_l,enable,select,flash,chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp)input start,enable;input clk;input chief_
24、h,chief_l;input sub_h,sub_l ;input Initial;output select,flash;output chief_l_temp, chief_h_temp;output sub_l_temp,sub_h_temp;always (posedge enable)begin start=start;endalways (posedge clk)beginif(start)beginif(!Initial)begin chief_l_temp=chief_l; chief_h_temp=chief_h; sub_l_temp=sub_l; sub_h_temp=
25、sub_h; Initial=1) begin chief_h_temp=chief_h_temp-1; chief_l_temp=1)&(chief_l_temp=9) begin if(chief_h_temp=0)&(chief_l_temp=5) begin flash=1;chief_l_temp=chief_l_temp-1; end else chief_l_temp=chief_l_temp-1; end else if(chief_h_temp=0)&(chief_l_temp=0)begin select=1;flash=1) begin sub_h_temp=sub_h_
26、temp-1; sub_l_temp=1)&(sub_l_temp=9) begin if(sub_h_temp=0)&(sub_l_temp=5) begin flash=1;sub_l_temp=sub_l_temp-1;end else sub_l_temp=sub_l_temp-1; end else if(sub_h_temp=0)&(sub_l_temp=0) begin select=0;flash=0; chief_l_temp=chief_l; chief_h_temp=chief_h; sub_l_temp=sub_l; sub_h_temp=sub_h; end end
27、end end else begin chief_l_temp=0; chief_h_temp=0; sub_l_temp=0; sub_h_temp=0; endendendmodule說明:當(dāng)k1鍵按下,Enable為高點(diǎn)平時(shí),定時(shí)器開始運(yùn)行,否則定時(shí)器關(guān)閉。clk上升沿觸發(fā),如果start為1,則將置數(shù)值賦給計(jì)數(shù)變量chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp;如果start為0,則chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp都將賦0值。Select為計(jì)數(shù)干道選擇寄存器,其初始值為0,對主
28、干道的計(jì)數(shù)變量進(jìn)行減計(jì)數(shù)。每到來一個(gè)時(shí)鐘上升沿,對變量減1。其中有3種特殊情況:(以主干道為例)1 chief_l_temp為0,chief_h_temp大于1時(shí),chief_l_temp減1,chief_h_temp賦9。2 chief_l_temp大于1,小于9時(shí),當(dāng)chief_l_temp為5,chief_h_temp為0時(shí),flash賦1,低位繼續(xù)減,否則chief_l_temp減1。3 chief_l_temp為0,chief_h_temp等于0時(shí),select賦1,flash賦0當(dāng)計(jì)數(shù)選擇寄存器select=1,對支干道的計(jì)數(shù)變量進(jìn)行減計(jì)數(shù)。每到來一個(gè)時(shí)鐘上升沿,對變量減1。同樣也
29、要分三種情況討論。(2)建立計(jì)時(shí)控制模塊 將上述程序保存到先設(shè)定的文件夾jishi中,然后點(diǎn)file進(jìn)入project選擇set project current file。再對程序進(jìn)行檢查,選擇MAX+PLUS2點(diǎn)compiler就可以檢測了。若有錯(cuò)誤會(huì)出現(xiàn)提示,可以根據(jù)提示找到錯(cuò)誤的行數(shù)進(jìn)行糾錯(cuò)。直至正確為止。然后再次進(jìn)入FILE點(diǎn)create Defaule symbol生成模塊。然后建立一個(gè)新的.gdf文件,在空白處點(diǎn)右鍵選擇enter symbol便可以出現(xiàn)所設(shè)計(jì)出的模塊,計(jì)時(shí)模塊圖如下: 圖3-8計(jì)時(shí)控制模塊具體操作過程在前面的中介紹過了在此不在多說。 頂層模塊:(1)程序頂層模塊的
30、建立是建在同組同學(xué)的模塊與自己的子模塊全部通過檢測后完全通過的基礎(chǔ)上的??吹揭韵碌牟糠殖绦虼a為頂層模塊的輸入輸出口:定義的輸入,輸出的管腳;module trafficlamp(enable,clk,chief_h_button,chief_l_button, sub_h_button,sub_l_button,counter_play, chief_green,chief_red,sub_green,sub_red, chief_h,chief_l,sub_h,sub_l); input clk; input enable; input chief_h_button; input chie
31、f_l_button; input sub_h_button; input sub_l_button; output7:0counter_play; output chief_green,chief_red,sub_green,sub_red; output3:0 chief_h,chief_l,sub_h,sub_l; reg flash; reg select; reg start; reg Initial; reg3:0 chief_ltemp,chief_htemp; reg3:0 sub_ltemp,sub_htemp; reg3:0 chief_h,chief_l,sub_h,su
32、b_l;(2)建立頂層模塊將同組人員的設(shè)置模塊,顯示模塊和本人的計(jì)時(shí)控制模塊進(jìn)行連接校對整合,從單個(gè)模塊可以看出(圖顯示,設(shè)置模塊圖請看附錄),各個(gè)模塊間有相同的端口部分,將同名端口進(jìn)行連線即可,將鼠標(biāo)停留在路基函數(shù)腳位尾端,鼠標(biāo)光標(biāo)會(huì)變成“+”的形狀,在此處按住鼠標(biāo)并拖曳,可進(jìn)行連接。檢測方法:可選取連線的邏輯函數(shù)符號(hào)并拖曳,若線會(huì)跟著移動(dòng)則代表連接成功。同時(shí)注意線的粗細(xì),若要更改連接線的類型,可在窗口菜單中選擇Options Line Style,選擇接線類型。當(dāng)連接線傳送多種信號(hào)時(shí)必須選用總線(實(shí)粗線),當(dāng)連接線僅傳送一種信號(hào)時(shí)最好使用缺省類型實(shí)細(xì)線。(頂層模塊圖如圖11)圖3-9頂層模
33、塊 第四章結(jié)果分析仿真中要學(xué)會(huì)如何去分析模塊是否滿足設(shè)計(jì)要求,詳細(xì)的仿真解釋在結(jié)果分析中詳細(xì)做了敘述,根據(jù)輸入不同的初試值可以得到不同的答案。4.1 計(jì)時(shí)控制模塊 在設(shè)計(jì)論述中只介紹了設(shè)計(jì)的思路和過程,但關(guān)鍵還要會(huì)通過軟件來分析自己的設(shè)計(jì)正誤與否后者是否能夠達(dá)到事先預(yù)計(jì)的效果。因此在仿真中最能看出設(shè)計(jì)的效果。來看以下的幾個(gè)仿真圖即可一目了然。 程序編譯成功后,建立.scf文件在界面中鍵入輸入,輸出口再按照設(shè)計(jì)要求在輸入口輸入初試值。點(diǎn)MAX+PLUS2中的simulator出現(xiàn)對話框點(diǎn)擊start開始檢測,無誤后點(diǎn)擊open SCF即開始仿真,以下為仿真結(jié)果:(1)支干道開始計(jì)時(shí): 圖4-1
34、可以分析得到當(dāng)主干道為綠燈時(shí)支干道為紅燈,并當(dāng)支干道sub_red依然為高電平即亮紅燈,到計(jì)時(shí)計(jì)到時(shí)。支干道sub_green跳為高電平,開始亮綠燈sub_red為0。而與此同時(shí)主干道綠燈的chief_green等于0,chief_red等于1即表示主干道開始亮紅燈禁止車輛通行。(2)支干道結(jié)束,主干道開始,循環(huán): 圖4-2看到counter_play循環(huán)計(jì)時(shí),主干道與支干道紅綠燈交替發(fā)發(fā)光,其分析方法同上一樣,根據(jù)幾個(gè)輸出端口的電平變化來判斷。(3)主干道99S開始 圖4-34.2 頂層模塊仿真 把計(jì)時(shí)模塊,置數(shù)模塊,顯示模塊整合通過生成頂層模塊后,采用同種方法進(jìn)行檢測與仿真。以下是按照設(shè)計(jì)
35、要求對主干道設(shè)置99S,支干道設(shè)置30S實(shí)現(xiàn)的仿真結(jié)果??梢蚤_到整個(gè)運(yùn)行過程,主干道綠燈時(shí)候支干道亮紅燈到94S時(shí)主干道綠燈開始閃爍,支干道依舊紅燈。至99S時(shí)主干道亮紅燈之干道換成綠燈并且同樣到25S時(shí)支干道綠燈閃爍直至30S。這樣依次循環(huán)。整個(gè)過程變順利完成 圖4-4頂層模塊仿真第五章總 結(jié)完成了本次實(shí)驗(yàn),我對EDA設(shè)計(jì),Verilog HDL語言,MAX+PLUS2有了深刻的認(rèn)識(shí)。概括如下: EDA(Electronic Design Automation)即電子設(shè)計(jì)自動(dòng)化。它的運(yùn)用范疇包括電子工程師進(jìn)行產(chǎn)品開發(fā)的全過程,以及電子產(chǎn)品生產(chǎn)的全過程中期望由計(jì)算機(jī)提供的各種輔助工作。從一個(gè)角
36、度看,EDA技術(shù)可粗略分為系統(tǒng)級(jí),電路級(jí)和物理級(jí)實(shí)現(xiàn)級(jí)三個(gè)層次的輔助設(shè)計(jì)過程;從另一個(gè)角度看,EDA技術(shù)應(yīng)包括電子電路設(shè)計(jì)的各個(gè)領(lǐng)域,即從低頻電路到高頻電路,從線性電路到非線性電路,從模擬電路到數(shù)字電路,從分立電路到集成電路的全部設(shè)計(jì)過程。2現(xiàn)代EDA技術(shù)的基本特征是采用高級(jí)語言描述,具有系統(tǒng)級(jí)防真和綜合能力。我在交通燈的設(shè)計(jì)過程中就采用了自上而下的設(shè)計(jì)方法。首先明確了系統(tǒng)的邏輯功能。而后分模塊設(shè)計(jì)。最后將所有模塊整合,從而實(shí)現(xiàn)整個(gè)系統(tǒng)的設(shè)計(jì)。“top-down”設(shè)計(jì)方法有利于在早期就發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)中的錯(cuò)誤,提高設(shè)計(jì)的一次成功率。2. 此次設(shè)計(jì)中我們所使用的語言是Verilog HDL語言,起初
37、對其一無所知,后來在翻閱大量資料學(xué)習(xí)并運(yùn)用后,對其有了一定了解。它可以在算法級(jí),門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次上對數(shù)字系統(tǒng)建模。Verlilog HDL語言不僅定義了語法,而且對每個(gè)語法結(jié)構(gòu)都定義了清晰的模擬,仿真語義。因此,用這種語言編寫的模型能夠使用Verlilog HDL仿真器進(jìn)行驗(yàn)證。它從C語言中繼承了多種操作符和結(jié)構(gòu),所以Verlilog HDL和C語言很相似。在設(shè)計(jì)中,我運(yùn)用到了ALWAYS語句,在置數(shù)模塊中四個(gè)并行ALWAYS同時(shí)對四個(gè)置數(shù)鍵監(jiān)控。在編程中首先要對定義一些引腳或者變量,然后定義輸入,輸出口。在進(jìn)入程序主體。在編程中要注意大小寫和各種符合,我在編譯的過程中就遇到的多
38、次錯(cuò)誤都是因?yàn)榉?hào)的疏忽導(dǎo)致的。機(jī)器語言是嚴(yán)謹(jǐn)?shù)摹?.我們運(yùn)用到的軟件是MAX+PLUS2,此軟件是個(gè)全英文軟件屬于ATLERA公司,曾經(jīng)也運(yùn)用過類似的軟件QUARTUS 2。這兩個(gè)軟件的基本運(yùn)用流程都非常相似。都可以分為“原理圖編譯”先畫出模塊圖從而生成程序。與“文本編譯”通過程序生成模塊來完成設(shè)計(jì)兩種方法。我采用的是先用編程,再建立模塊從而仿真的過程。我們運(yùn)用的MAX+PLUS2是需要LIENCE的版本,所以首先我鍵入了此碼后,之后才能完全運(yùn)用此軟件。在運(yùn)用中遇到的問題是仿真時(shí)不知道如何調(diào)整輸入口的初始值,后來摸索很久后才將各種工具運(yùn)用自如。在實(shí)驗(yàn)中也難免會(huì)出現(xiàn)各種各樣的錯(cuò)誤,在錯(cuò)誤與改正
39、的過程中才進(jìn)一步對設(shè)計(jì)有了更加深刻的了解,以下便是我在實(shí)驗(yàn)中出現(xiàn)過的錯(cuò)誤和更正方法。(1) 編譯錯(cuò)誤:在編譯過程中容易最基本的就是打印錯(cuò)誤,1和小寫的L就經(jīng)?;煜?。其他一些錯(cuò)誤多由粗心造成,所以以下幾個(gè)方面要多加注意同時(shí)也是Verilog HDL語言的幾個(gè)基本特征:1大小寫敏感。2所有關(guān)鍵字小寫。3空格只為了增加程序的可讀性。4分號(hào)用語表明一條語句的結(jié)束。 偵錯(cuò),在電路編輯完成之后,選取窗口菜單FILE,進(jìn)入PROJIECT選擇SAVE&check,即可針對電路設(shè)計(jì)文件進(jìn)行檢查,檢查完成后會(huì)出現(xiàn)錯(cuò)誤數(shù)目信息對話框,常見的錯(cuò)誤方式有:少分號(hào)或括號(hào),擴(kuò)展名格式部隊(duì),“IF”結(jié)構(gòu)少了“END IF”
40、,使用腳位沒有聲明,引用函數(shù)腳位名稱錯(cuò)誤,沒有聲明函數(shù)形式而直接使用。再者程序編譯多次無法實(shí)現(xiàn)是因?yàn)閷τ布牟涣私狻F鋵?shí)完成這個(gè)設(shè)計(jì)最基本的思想就是“硬件意識(shí)”。也就是說,在寫代碼的時(shí)候,大腦里首先想好完成的具體功能應(yīng)該是什么樣的物理電路去實(shí)現(xiàn),然后再用Verilog HDL語言將該電路描述出來,而不能憑空的去寫代碼,只有存在的電路才是可物理實(shí)現(xiàn)的。在設(shè)計(jì)中我們心中應(yīng)該先有了電路,然后再用一種計(jì)算機(jī)能夠識(shí)別的方式進(jìn)行描述。(2)建模錯(cuò)誤: 1.未曾使工程的名字與文本文件名相同,這樣就無法建立出你所需要的文件,因?yàn)橛?jì)算機(jī)就無法調(diào)出你相應(yīng)的程序進(jìn)行建模。應(yīng)該在你保存文件時(shí)候就使指定的項(xiàng)目名稱和文件
41、名相同。本步驟有兩種方法可以實(shí)現(xiàn),一種是選擇窗口菜單FILE進(jìn)入Project然后選擇Set Project to current File,即設(shè)定項(xiàng)目名稱與文件相同;另一種是選擇窗口菜單FILE進(jìn)入Project然后選擇點(diǎn)NAME,出現(xiàn)對話框,輸入與電路文件名相同的項(xiàng)目名稱(去掉擴(kuò)展名),再點(diǎn)擊OK按扭即可。2.在建立多個(gè)子模塊時(shí)將多個(gè)程序段存放到一個(gè)文件夾中,這樣很容易混淆并且為調(diào)用模塊帶來了很多麻煩,所以在編譯程序時(shí)就要建好文件夾將文件有條理的存放在該文件夾中,如我在設(shè)計(jì)中計(jì)時(shí)程序就放在取名為計(jì)時(shí)的文件夾中,相應(yīng)的顯示,置數(shù)都放在各自文件夾中。進(jìn)而再建立模塊保存到其中,以便以后調(diào)用。3.
42、將各個(gè)子模塊建立后就是頂層模塊的建立,這就存在各個(gè)模塊的連接問題。雖然僅僅是些輸入輸出的連接問題但其中也有不少小的問題。如信號(hào)輸入端和輸出端的連接上,要將鼠標(biāo)光標(biāo)停留在路基函數(shù)腳位尾端,鼠標(biāo)變成“+”的形狀,在此處才可按住鼠標(biāo)拖拽,可進(jìn)行連接,其他一些過程在設(shè)計(jì)過程中提到此處就不累贅。 (3)仿真錯(cuò)誤:本人在仿真中犯的錯(cuò)誤比較少。因?yàn)橛凶鬟^類似軟件的經(jīng)驗(yàn),所以仿真時(shí)較為順利。僅僅在給輸入端輸入初試值時(shí)沒注意一個(gè)輸入端為高電平而導(dǎo)致錯(cuò)誤。經(jīng)過修改后仿真一次成功??傊?,通過本次設(shè)計(jì)學(xué)習(xí)到了設(shè)計(jì)方面的東西,首先要清晰的了解設(shè)計(jì)的整個(gè)流程與方法,把整個(gè)系統(tǒng)的框架要明了于心。然后再按照步驟一步步完成。在對待一個(gè)新的軟件時(shí)候不要盲目的去試用,應(yīng)該把相關(guān)的書籍看得透徹后再運(yùn)用一些小的例子來試用,對軟件熟悉后最后來完成設(shè)計(jì)。這樣才便于一個(gè)設(shè)計(jì)的完整實(shí)現(xiàn)。 結(jié) 束 語本設(shè)計(jì)是基于Verilog語言的交通燈控制器的幾個(gè)模塊:顯示模塊,置數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版歷史七年級(jí)下冊第10課 《蒙古族的興起與元朝的建立》 聽課評(píng)課記錄7
- 北師大版歷史八年級(jí)上冊第10課《新文化運(yùn)動(dòng)》聽課評(píng)課記錄
- 豬場購銷合同(2篇)
- 生產(chǎn)承包合同(2篇)
- 仁愛版八年級(jí)地理上冊3.2《土地資源》聽課評(píng)課記錄
- 八年級(jí)道德與法治下冊第四單元崇尚法治精神第七課尊重自由平等第1框自由平等的真諦聽課評(píng)課記錄(新人教版)
- 蘇科版數(shù)學(xué)七年級(jí)下冊10.2.1《二元一次方程組》聽評(píng)課記錄
- 冀教版數(shù)學(xué)七年級(jí)下冊《多項(xiàng)式乘多項(xiàng)式》聽評(píng)課記錄2
- 湘教版數(shù)學(xué)七年級(jí)上冊2.3《代數(shù)式的值》聽評(píng)課記錄
- 五年級(jí)數(shù)學(xué)下冊聽評(píng)課記錄《3.1 分?jǐn)?shù)乘法(一)(4)》北師大版
- 固體廢棄物檢查記錄
- 工程設(shè)計(jì)費(fèi)取費(fèi)標(biāo)準(zhǔn)
- GB/T 5465.1-2009電氣設(shè)備用圖形符號(hào)第1部分:概述與分類
- 2023年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- CAPP教學(xué)講解課件
- 自然環(huán)境的服務(wù)功能課件 高中地理人教版(2019)選擇性必修3
- 小耳畸形課件
- 新人教版初中初三中考數(shù)學(xué)總復(fù)習(xí)課件
- 機(jī)械制造有限公司組織架構(gòu)圖模板
- 8.3 摩擦力 同步練習(xí)-2021-2022學(xué)年人教版物理八年級(jí)下冊(Word版含答案)
- 生理學(xué)教學(xué)大綱
評(píng)論
0/150
提交評(píng)論