大型完整系統(tǒng)設(shè)計(jì)實(shí)例-交通燈和頻率計(jì).ppt_第1頁(yè)
大型完整系統(tǒng)設(shè)計(jì)實(shí)例-交通燈和頻率計(jì).ppt_第2頁(yè)
大型完整系統(tǒng)設(shè)計(jì)實(shí)例-交通燈和頻率計(jì).ppt_第3頁(yè)
大型完整系統(tǒng)設(shè)計(jì)實(shí)例-交通燈和頻率計(jì).ppt_第4頁(yè)
大型完整系統(tǒng)設(shè)計(jì)實(shí)例-交通燈和頻率計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

1、第6章 大型完整系統(tǒng)設(shè)計(jì)實(shí)例,第一部分 交通燈信號(hào)控制器的設(shè)計(jì), 設(shè)計(jì)一個(gè)主干道和支干道十字路口的交通管理系統(tǒng),并用VHDL進(jìn)行描述。該交通管理系統(tǒng)的技術(shù)要求為:如果只有一個(gè)方向有車時(shí),則保持該方向暢通;當(dāng)兩個(gè)方向都有車時(shí), 主干道和支干道交替通行, 但主干道通行的時(shí)間要比支干道長(zhǎng)一些。 ,系統(tǒng)設(shè)計(jì) 第一步:在明確技術(shù)要求的基礎(chǔ)上,首先制定系統(tǒng)的設(shè)計(jì)方案。 第二步: 系統(tǒng)劃分,得到系統(tǒng)結(jié)構(gòu)圖。 第三步:根據(jù)設(shè)計(jì)方案和系統(tǒng)結(jié)構(gòu)圖進(jìn)行算法設(shè)計(jì), 可以畫出控制系統(tǒng)的ASM圖。 第四步:設(shè)計(jì)輸入,用VHDL對(duì)該系統(tǒng)進(jìn)行描述。,根據(jù)技術(shù)要求,在主干道和支干道兩個(gè)方向上都安裝紅、黃、綠三色信號(hào)燈;Ca和C

2、b分別是安裝在主干道和支干道上的傳感器,用于檢測(cè)是否有車輛需要通過(guò)路口。在只有主干道有車時(shí), 主干道亮綠燈, 支干道亮紅燈;當(dāng)只有支干道有車時(shí),主干道亮紅燈,支干道亮綠燈;當(dāng)兩個(gè)方向都有車時(shí),則兩個(gè)方向輪流亮綠燈和紅燈,但主干道每次亮綠燈的時(shí)間不得少于60s,支干道每次亮綠燈的時(shí)間不得多于40s,在由綠燈轉(zhuǎn)紅燈之間要有10s的黃燈(公共停車時(shí)間)作為過(guò)渡。本系統(tǒng)最終采用可編程邏輯器件來(lái)實(shí)現(xiàn)。,第一步:在明確技術(shù)要求的基礎(chǔ)上,首先制定系統(tǒng)的設(shè)計(jì)方案。,交通管理系統(tǒng)的結(jié)構(gòu)圖,第二步: 系統(tǒng)劃分,得到系統(tǒng)結(jié)構(gòu)圖。 根據(jù)以上的設(shè)計(jì)方案, 可以畫出系統(tǒng)的結(jié)構(gòu)圖。,本系統(tǒng)主要由控制器和受控制的定時(shí)器組成。

3、定時(shí)器用來(lái)確定主干道、支干道通行時(shí)間以及公共停車時(shí)間;CNT是定時(shí)的值; LD是定時(shí)值的同步預(yù)置信號(hào),高電平有效;ST是這個(gè)定時(shí)器的狀態(tài)信號(hào),當(dāng)定時(shí)結(jié)束時(shí),ST輸出為1; Ca和Cb分別為主干道和支干道的傳感器輸出信號(hào),高電平表示有車需要通過(guò);clk是周期為秒的時(shí)鐘信號(hào);reset是異步復(fù)位信號(hào),低電平有效,復(fù)位后的初始狀態(tài)為主干道暢通;Ra、Ya、Ga和Rb、Yb、Gb分別為主干道和支干道的紅、黃、綠燈的控制信號(hào),高電平有效。,第三步:根據(jù)設(shè)計(jì)方案和系統(tǒng)結(jié)構(gòu)圖進(jìn)行算法設(shè)計(jì), 可以畫出控制系統(tǒng)的ASM圖。 ASM圖很清楚地表明了該交通管理系統(tǒng)共有4個(gè)狀態(tài)(S0、 S1、 S2和S3)以及各狀態(tài)

4、之間的轉(zhuǎn)換關(guān)系。,當(dāng)ST=1時(shí), LD =1,CNT的值取決于當(dāng)前的狀態(tài)和Ca、Cb的值。,CNT的取值表,第四步:設(shè)計(jì)輸入,用VHDL對(duì)該系統(tǒng)進(jìn)行描述。 本設(shè)計(jì)采用分層次描述,以下為VHDL源文件。,-定時(shí)器模塊(count.vhd): LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; USE IEEE.STD-LOGIC-UNSIGNED.ALL; ENTITY counter IS PORT( reset ,clk ,LD : IN STD-LOGIC; CNT : IN INTEGER RANGE 0 TO 63; ST : OUT STD-LOGI

5、C ); END ENTITY counter; ARCHITECTURE arch OF counter IS SIGNAL Q : INTEGER RANGE 0 TO 63; BEGIN PROCESS( reset, clk )- -定時(shí)器進(jìn)程 BEGIN ,IF( reset = 0 ) THEN Q = 60; ELSIF( clkEVENT AND clk = 1 ) THEN IF( LD = 1 ) THEN Q = CNT; ELSIF ( Q /= 0 ) THEN Q = Q1; END IF; END IF; END PROCESS; PROCESS( reset ,

6、clk ) -定時(shí)器ST的進(jìn)程 BEGIN IF( reset = 0 ) THEN ST = 0; ELSIF( clkEVENT AND clk = 1 ) THEN IF( Q = 2 )THEN ST = 1; ELSE ST = 0; END IF; END IF; END PROCESS; END ARCHITECTURE arch;,-控制器模塊(control.vhd): LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; USE IEEE.STD-LOGIC-UNSIGNED.ALL; ENTITY con-trol IS PORT( res

7、et ,clk ,ST ,Ca ,Cb : IN STD-LOGIC; Ra ,Ya ,Ga ,Rb ,Yb ,Gb ,LD : OUT STD-LOGIC; CNT : OUT INTEGER RANGE 0 TO 63 ); END ENTITY con-trol; ARCHITECTURE arch OF con-trol IS CONSTANT T1 : INTEGER : = 60; CONSTANT T2 : INTEGER : = 40; CONSTANT T3 : INTEGER : = 10; TYPE STATE-TYPE IS ( S0 ,S1 ,S2 ,S3 ); SI

8、GNAL state : STATE-TYPE; SIGNAL RYG : STD-LOGIC-VECTOR( 5 DOWNTO 0 ); BEGIN,PROCESS( reset ,clk ) -描述狀態(tài)轉(zhuǎn)換 BEGIN IF( reset = 0 ) THEN state IF( Cb = 0) THEN state state IF(Ca = 0) THEN state state = S0; END CASE; END IF; END IF; END PROCESS;,-描述交通燈控制信號(hào) Ra RYG RYG RYG RYG IF( Cb = 0) THEN CNT CNT IF(

9、Ca = 0) THEN CNT CNT = T1; END CASE; END PROCESS; END ARCHITECTURE arch;,-頂層文件(traffic.vhd): LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; USE IEEE.STD-LOGIC-UNSIGNED.ALL; PACKAGE traffic-lib IS COMPONENT con-trol IS PORT( reset ,clk ,ST ,Ca ,Cb : IN STD-LOGIC; Ra ,Ya ,Ga ,Rb ,Yb ,Gb ,LD : OUT STD-LOGI

10、C; CNT : OUT INTEGER RANGE 0 TO 63 ); END COMPONENT con-trol; ,COMPONENT counter IS PORT( reset ,clk ,LD : IN STD-LOGIC; CNT : IN INTEGER RANGE 0 TO 63; ST : OUT STD-LOGIC ); END COMPONENT counter; END PACKAGE traffic-lib; LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; USE IEEE.STD-LOGIC-UNSIGNED.ALL; U

11、SE WORK.traffic-lib.ALL; ENTITY traffic IS PORT( reset ,clk ,Ca ,Cb : IN STD-LOGIC; Ra ,Ya ,Ga ,Rb ,Yb ,Gb : OUT STD-LOGIC ); END ENTITY traffic;,ARCHITECTURE arch OF traffic IS SIGNAL ST ,LD : STD-LOGIC; SIGNAL CNT : INTEGER RANGE 0 TO 63; BEGIN u1:con-trol PORT MAP( reset ,clk ,ST ,Ca ,Cb ,Ra ,Ya

12、,Ga ,Rb ,Yb ,Gb ,LD ,CNT ); u2:counter PORT MAP( reset ,clk ,LD ,CNT ,ST ); END ARCHITECTURE arch;,第二部分 數(shù)字頻率計(jì)的設(shè)計(jì),1. 設(shè)計(jì)思路 下圖是8位十進(jìn)制數(shù)字頻率計(jì)的電路邏輯圖,它由一個(gè)測(cè)頻控制信號(hào)發(fā)生器TESTCTL、8個(gè)有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器CNT10、一個(gè)32位鎖存器REG32B組成。以下分別敘述頻率計(jì)各邏輯模塊的功能與設(shè)計(jì)方法。,8位十進(jìn)制數(shù)字頻率計(jì)邏輯圖,1) 測(cè)頻控制信號(hào)發(fā)生器設(shè)計(jì) 頻率測(cè)量的基本原理是計(jì)算每秒鐘內(nèi)待測(cè)信號(hào)的脈沖個(gè)數(shù)。這就要求TESTCTL的計(jì)數(shù)使能信號(hào)TSTE

13、N能產(chǎn)生一個(gè)1秒脈寬的周期信號(hào),并對(duì)頻率計(jì)的每一計(jì)數(shù)器CNT10的ENA使能端進(jìn)行同步控制。當(dāng)TSTEN高電平時(shí),允許計(jì)數(shù);低電平時(shí),停止計(jì)數(shù),并保持其所計(jì)的數(shù)。在停止計(jì)數(shù)期間,首先需要一個(gè)鎖存信號(hào)LOAD的上跳沿將計(jì)數(shù)器在前1秒鐘的計(jì)數(shù)值鎖存進(jìn)32位鎖存器REG32B中,并由外部的7段譯碼器譯出并穩(wěn)定顯示。鎖存信號(hào)之后,必須有一清零信號(hào)CLR_CNT對(duì)計(jì)數(shù)器進(jìn)行清零,為下1秒鐘的計(jì)數(shù)操作作準(zhǔn)備。測(cè)頻控制信號(hào)發(fā)生器的工作時(shí)序如圖所示。為了產(chǎn)生這個(gè)時(shí)序圖,需首先建立一個(gè)由D觸發(fā)器構(gòu)成的二分頻器,在每次時(shí)鐘CLK上沿到來(lái)時(shí)其值翻轉(zhuǎn)。,其中控制信號(hào)時(shí)鐘CLK的頻率取1 Hz,而信號(hào)TSTEN的脈寬恰

14、好為1 s,可以用作閘門信號(hào)。此時(shí),根據(jù)測(cè)頻的時(shí)序要求,可得出信號(hào)LOAD和CLR_CNT的邏輯描述。由圖可見(jiàn),在計(jì)數(shù)完成后,即計(jì)數(shù)使能信號(hào)TSTEN在1 s的高電平后,利用其反相值的上跳沿產(chǎn)生一個(gè)鎖存信號(hào)LOAD,0.5 s后,CLR_CNT產(chǎn)生一個(gè)清零信號(hào)上跳沿。 高質(zhì)量的測(cè)頻控制信號(hào)發(fā)生器的設(shè)計(jì)十分重要,設(shè)計(jì)中要對(duì)其進(jìn)行仔細(xì)的實(shí)時(shí)仿真(TIMING SIMULATION),防止可能產(chǎn)生的毛刺。,測(cè)頻控制信號(hào)發(fā)生器工作時(shí)序,2) 寄存器REG32B設(shè)計(jì) 設(shè)置鎖存器的好處是,顯示的數(shù)據(jù)穩(wěn)定,不會(huì)由于周期性的清零信號(hào)而不斷閃爍。若已有32位BCD碼存在于此模塊的輸入口,在信號(hào)LOAD的上升沿后

15、即被鎖存到寄存器REG32B的內(nèi)部,并由REG32B的輸出端輸出,然后由實(shí)驗(yàn)板上的7段譯碼器譯成能在數(shù)碼管上顯示輸出的相對(duì)應(yīng)的數(shù)值。,3) 十進(jìn)制計(jì)數(shù)器CNT10的設(shè)計(jì) 如圖所示,此十進(jìn)制計(jì)數(shù)器的特殊之處是,有一時(shí)鐘使能輸入端ENA,用于鎖定計(jì)數(shù)值。當(dāng)高電平時(shí)計(jì)數(shù)允許,低電平時(shí)禁止計(jì)數(shù)。,2. VHDL源程序 1) 有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器的源程序CNT10.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; -有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器 ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -計(jì)數(shù)時(shí)鐘信號(hào) CLR:IN STD

16、_LOGIC; -清零信號(hào) END:IN STD_LOGIC; -計(jì)數(shù)使能信號(hào) CQ:OUT INTEGER RANGE 0 TO 15;-4位計(jì)數(shù)結(jié)果輸出 CARRY_OUT:OUT STD_LOGIC); -計(jì)數(shù)進(jìn)位 END CNT10; ARCHITECTURE ART OF CNT10 IS,SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK,CLR,ENA) BEGIN IF CLR= 1 THEN CQI= 0; -計(jì)數(shù)器異步清零 ELSIF CLKEVENT AND CLK= 1 THEN IF ENA= 1 THEN IF

17、CQI9 THEN CQI=CQI+1; ELSE CQI=0;END IF; -等于9,則計(jì)數(shù)器清零 END IF; END IF; END PROCESS; PROCESS (CQI) BEGIN IF CQI=9 THEN CARRY_OUT= 1; -進(jìn)位輸出 ELSE CARRY_OUT= 0;END IF; END PROCESS; CQ=CQI; END ART;,2) 32位鎖存器的源程序REG32B.VHD LIBRARY IEEE; -32位鎖存器 USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS PORT(LOAD:IN STD_

18、LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGEC_VECTOR(31 DOWNTO 0); END REG32B; ARCHITECTURE ART OF REG32B IS BEGIN PROCESS ( LOAD, DIN ) BEGIN IF LOAD EVENT AND LOAD= 1 THEN DOUT=DIN; -鎖存輸入數(shù)據(jù) END IF ; END PROCESS; END ART;,3) 測(cè)頻控制信號(hào)發(fā)生器的源程序TESTCTL.VHD LIBRARY IEEE; USE IEEE.STD_LOGI

19、C_1164.ALL; -測(cè)頻控制信號(hào)發(fā)生器 USE IEEE.STD_LOGIC_UNSIGNED.ALL ENTITY TESTCTL IS PORT (CLK:IN STD_LOGIC; -1 Hz測(cè)頻控制時(shí)鐘 TSTEN:OUT STD_LOGIC; -計(jì)數(shù)器時(shí)鐘使能 CLR_CNT:OUT STD_LOGIC; -計(jì)數(shù)器清零 LOAD:OUT STD_LOGIC); -輸出鎖存信號(hào) END TESTCTL; ARCHITECTURE ART OF TESTCTL IS SIGNAL Dvi2CLK :STD_LOGIC; BEGIN,PROCESS ( CLK ) BEGIN IF

20、CLKEVENT AND CLK= 1 THEN -1 Hz時(shí)鐘二分頻 Div2CLK=NOT Div2CLK; END IF ; END PROCESS; PROCESS ( CLK,Div2CLK ) BEGIN IF CLK= 0 AND Div2CLK = 0 THEN -產(chǎn)生計(jì)數(shù)器清零信號(hào) CLR_CNT= 1; ELSE CLR_CNT= 0 ; END IF; END PROCESS; LOAD=NOT Div2CLK; TSTEN=Div2CLK; END ART;,4) 數(shù)字頻率計(jì)的源程序FREQ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_11

21、64.ALL; ENTITY FREQ IS PORT(FSIN:IN STD_LOGIC; CLK:IN STD_LOGIC; DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0); END FREQ; ARCHITECTURE ART OF FREQ IS COMPONENT CNT10 -待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器端口定義 PORT(CLK,CLR,ENA:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC);,END COMPONENT; COMPONENT

22、REG32B -待調(diào)用的32位鎖存器端口定義 COMPONENT TESTCTL -待調(diào)用的測(cè)頻控制信號(hào)發(fā)生器端口定義 SIGNAL TSTEN:STD_LOGIC; SIGNAL CLR_CNT:STD_LOGIC; SIGNAL LOAD:STD_LOGIC; SIGNAL CARRY1:STD_LOGIC; SIGNAL CARRY2:STD_LOGIC; SIGNAL CARRY3:STD_LOGIC; SIGNAL CARRY4:STD_LOGIC; SIGNAL CARRY5:STD_LOGIC; SIGNAL CARRY6:STD_LOGIC; SIGNAL CARRY7:STD

23、_LOGIC; SIGNAL CARRY8:STD_LOGIC; SIGNAL DIN:STD_LOGIC_VECTOR(31 DOWNTO 0);,BEGIN U0:TESTCTL PORT MAP(CLK=CLK,TSTEN=TSTEN, CLR_CNT=CLR_CNT,LOAD=LOAD); U1:CNT10 PORT MAP(CLK=FSIN,CLR=CLR_CNT,ENA=TSTEN, CQ=DIN (3 DOWNTO 0),CARRY_OUT=CARRY1); U2:CNT10 PORT MAP(CLK=CARRY1,CLR=CLR_CNT,ENA=TSTEN, CQ=DIN (7 DOWNTO 4),CARRY_OUT=CARRY2); U3:CNT10 PORT MAP(CLK=CARRY2,CLR=CLR_CNT,ENA=TS

溫馨提示

  • 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)論