第六章數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例_第1頁
第六章數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例_第2頁
第六章數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例_第3頁
第六章數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例_第4頁
第六章數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章第六章 數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)綜合設(shè)計(jì)實(shí)例交通燈控制器交通燈控制器任務(wù)二任務(wù)二 半整數(shù)分頻器的設(shè)計(jì)半整數(shù)分頻器的設(shè)計(jì)任務(wù)一任務(wù)一正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器的設(shè)計(jì)正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器的設(shè)計(jì)任務(wù)三任務(wù)三 數(shù)字秒表的設(shè)計(jì)數(shù)字秒表的設(shè)計(jì)任務(wù)四任務(wù)四任務(wù)一任務(wù)一 半整數(shù)分頻器的設(shè)計(jì)半整數(shù)分頻器的設(shè)計(jì)階段一階段一 小數(shù)分頻的基本原理小數(shù)分頻的基本原理 階段二階段二 電路組成電路組成 階段三階段三 VHDLVHDL程序程序 階段四階段四 仿真結(jié)果仿真結(jié)果階段一階段一小數(shù)分頻的基本原理小數(shù)分頻的基本原理采用可編程邏輯器件實(shí)現(xiàn)分頻系數(shù)為采用可編程邏輯器件實(shí)現(xiàn)分頻系數(shù)為2.52.5的的分頻器,可

2、采用以下方法:設(shè)計(jì)一個(gè)模分頻器,可采用以下方法:設(shè)計(jì)一個(gè)模3 3的的計(jì)數(shù)器,再設(shè)計(jì)一個(gè)扣除脈沖電路,加在模計(jì)數(shù)器,再設(shè)計(jì)一個(gè)扣除脈沖電路,加在模3 3計(jì)數(shù)器輸出之后,每來兩個(gè)脈沖就扣除一計(jì)數(shù)器輸出之后,每來兩個(gè)脈沖就扣除一個(gè)脈沖個(gè)脈沖( (實(shí)際上是使被扣除的脈沖變成很窄實(shí)際上是使被扣除的脈沖變成很窄的脈沖,可由異或門實(shí)現(xiàn)的脈沖,可由異或門實(shí)現(xiàn)) ),就可以得到分,就可以得到分頻系數(shù)為頻系數(shù)為2.52.5的小數(shù)分頻器。采用類似方法,的小數(shù)分頻器。采用類似方法,可以設(shè)計(jì)分頻系數(shù)為任意半整數(shù)的分頻器??梢栽O(shè)計(jì)分頻系數(shù)為任意半整數(shù)的分頻器。小數(shù)分頻的基本原理為脈沖吞小數(shù)分頻的基本原理為脈沖吞吐計(jì)數(shù)法:

3、設(shè)計(jì)兩個(gè)不同分頻吐計(jì)數(shù)法:設(shè)計(jì)兩個(gè)不同分頻比的整數(shù)分頻器,通過控制單比的整數(shù)分頻器,通過控制單位時(shí)間內(nèi)兩種分頻比出現(xiàn)的不位時(shí)間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù),從而獲得所需的小數(shù)同次數(shù),從而獲得所需的小數(shù)分頻值分頻值。 階段二階段二電路組成電路組成 圖6-1 通用半整數(shù)分頻器階段三階段三 VHDLVHDL程序程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY deccount IS PORT ( inclk: IN STD_LOGIC;-時(shí)鐘源 preset: IN STD_LOGIC

4、_VECTOR(3 DOWNTO 0); -預(yù)置分頻值Noutclk1: OUT STD_LOGIC; outclk2: BUFFER STD_LOGIC-輸出時(shí)鐘 );END deccount; ARCHITECTURE deccount_arch OF deccount ISSIGNAL clk, divide2: STD_LOGIC;SIGNAL count: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINclk=inclk XOR divide2; -inclk與divide2異或后作為模N計(jì)數(shù)器的時(shí)鐘outclk1=inclk;PROCESS(clk)BEGIN

5、 IF(clkevent AND clk=1) THEN IF(count=0000) THENcount=preset-1;-置整數(shù)分頻值N outclk2=1; ELSE count=count-1;-模N計(jì)數(shù)器減法計(jì)數(shù) outclk2=0; END IF; END IF;END PROCESS; PROCESS(outclk2)BEGIN IF(outclk2event AND outclk2=1) THEN divide2=NOT divide2;-輸出時(shí)鐘二分頻 END IF;END PROCESS;END deccount_arch;階段四階段四 仿真結(jié)果仿真結(jié)果圖6-3 半整數(shù)分

6、頻器仿真波形圖任務(wù)二任務(wù)二 交通燈控制器交通燈控制器階段一階段一 功能描述功能描述階段二階段二 交通燈控制器的實(shí)現(xiàn)交通燈控制器的實(shí)現(xiàn)階段三階段三 VHDLVHDL程序程序 階段四階段四 仿真結(jié)果仿真結(jié)果 階段一階段一 功能描述功能描述設(shè)東西方向和南北方向的車流量大致相同,設(shè)東西方向和南北方向的車流量大致相同,因此紅、黃、綠燈的時(shí)長也相同,定為紅因此紅、黃、綠燈的時(shí)長也相同,定為紅燈燈45秒,黃燈秒,黃燈5秒,綠燈秒,綠燈40秒,同時(shí)用數(shù)秒,同時(shí)用數(shù)碼管指示當(dāng)前狀態(tài)碼管指示當(dāng)前狀態(tài)(紅、黃、綠燈紅、黃、綠燈)剩余時(shí)剩余時(shí)間。另外,設(shè)計(jì)一個(gè)緊急狀態(tài),當(dāng)緊急狀間。另外,設(shè)計(jì)一個(gè)緊急狀態(tài),當(dāng)緊急狀態(tài)出

7、現(xiàn)時(shí),兩個(gè)方向都禁止通行,指示紅態(tài)出現(xiàn)時(shí),兩個(gè)方向都禁止通行,指示紅燈。緊急狀態(tài)解除后,重新計(jì)數(shù)并指示時(shí)燈。緊急狀態(tài)解除后,重新計(jì)數(shù)并指示時(shí)間。間。 階段二階段二交通燈控制器的實(shí)現(xiàn)交通燈控制器的實(shí)現(xiàn) 交通燈控制器是狀態(tài)機(jī)的一個(gè)典型應(yīng)用,交通燈控制器是狀態(tài)機(jī)的一個(gè)典型應(yīng)用,除了計(jì)數(shù)器是狀態(tài)機(jī)外,還有東西、南北除了計(jì)數(shù)器是狀態(tài)機(jī)外,還有東西、南北方向的不同狀態(tài)組合方向的不同狀態(tài)組合(紅綠、紅黃、綠紅、紅綠、紅黃、綠紅、黃紅黃紅4個(gè)狀態(tài)個(gè)狀態(tài)),如表,如表6-1所示。但我們可以所示。但我們可以簡單地將其看成兩個(gè)簡單地將其看成兩個(gè)(東西、南北東西、南北)減減1計(jì)數(shù)計(jì)數(shù)的計(jì)數(shù)器,通過檢測(cè)兩個(gè)方向的計(jì)數(shù)值

8、,的計(jì)數(shù)器,通過檢測(cè)兩個(gè)方向的計(jì)數(shù)值,可以檢測(cè)紅、黃、綠燈組合的跳變。這樣可以檢測(cè)紅、黃、綠燈組合的跳變。這樣使一個(gè)較復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)變成一個(gè)較簡使一個(gè)較復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)變成一個(gè)較簡單的計(jì)數(shù)器設(shè)計(jì)。單的計(jì)數(shù)器設(shè)計(jì)。 表表6-1 交通燈的交通燈的4種可能亮燈狀態(tài)種可能亮燈狀態(tài)圖圖6-4 交通燈控制器外部接口交通燈控制器外部接口 階段三階段三 VHDLVHDL程序程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY deccount IS PORT ( inclk: IN STD_LO

9、GIC;-時(shí)鐘源 preset: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -預(yù)置分頻值Noutclk1: OUT STD_LOGIC; outclk2: BUFFER STD_LOGIC-輸出時(shí)鐘 );END deccount; ARCHITECTURE deccount_arch OF deccount ISSIGNAL clk, divide2: STD_LOGIC;SIGNAL count: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINclk=inclk XOR divide2; 表表6-2 交通燈設(shè)計(jì)中的狀態(tài)跳變點(diǎn)交通燈設(shè)計(jì)中的狀態(tài)跳變

10、點(diǎn)階段三階段三 VHDLVHDL程序程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY traffic ISPORT(clk,urgency: IN STD_LOGIC; led: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); East_West,South_North:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END traffic;ARCHITECTURE rtl OF traffic ISBEGIN PROCESS(

11、clk) BEGIN IF urgency=0 THEN led=10000001; East_West=00000000; South_North01000110 OR South_North01000110 THEN East_West=01000101; South_North=01000000; led=10000100; ELSIFEast_West=00000110AND South_North=00000001 THEN East_West=00000101; South_North=00000101; led=10000010;ELSIFEast_West=00000001AN

12、D South_North=00000001 AND led=10000010 THEN East_West=01000000; South_North=01000101; led=00100001; ELSIFEast_West=00000001AND South_North=00000110 THEN East_West=00000101; South_North=00000101; led=01000001;ELSIFEast_West=00000001AND South_North=00000001 AND led=01000001 THEN East_West=01000101; S

13、outh_North=01000000; led=10000100; ELSIF East_West(3 DOWNTO 0)=0 THEN East_West=East_West-7; South_North=South_North-1;ELSIF South_North(3 DOWNTO 0)=0 THEN East_West=East_West-1; South_North=South_North-7; ELSE East_West=East_West-1; South_North=South_North-1; END IF; END IF; END PROCESS;END rtl;階段四

14、階段四 仿真結(jié)果仿真結(jié)果 圖圖6-5 交通燈控制器仿真波形圖交通燈控制器仿真波形圖任務(wù)三正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器任務(wù)三正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器的設(shè)計(jì)的設(shè)計(jì) 階段一階段一 設(shè)計(jì)思路設(shè)計(jì)思路階段二階段二 VHDLVHDL程序程序 階段一階段一 設(shè)計(jì)思路設(shè)計(jì)思路圖圖6-6是脈寬數(shù)控調(diào)制信號(hào)發(fā)生器邏輯圖,是脈寬數(shù)控調(diào)制信號(hào)發(fā)生器邏輯圖,此信號(hào)發(fā)生器是由兩個(gè)完全相同的可自加此信號(hào)發(fā)生器是由兩個(gè)完全相同的可自加載加法計(jì)數(shù)器載加法計(jì)數(shù)器LCNT8組成的,它的輸出信組成的,它的輸出信號(hào)的高低電平脈寬可分別由兩組號(hào)的高低電平脈寬可分別由兩組8位預(yù)置數(shù)位預(yù)置數(shù)進(jìn)行控制。進(jìn)行控制。圖圖6-6 脈寬數(shù)控調(diào)制信號(hào)發(fā)

15、生器邏輯圖脈寬數(shù)控調(diào)制信號(hào)發(fā)生器邏輯圖階段二階段二 VHDLVHDL程序程序 (1)8位可自加載加法計(jì)數(shù)器的源程序LCNT8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164,.ALL;ENTITY LCNT8 IS -8位可自加載加法計(jì)數(shù)器PORT(CLK,LD:IN STD_LOGIC; -工作時(shí)鐘/預(yù)置值加載信號(hào) D:IN INTEGER RANGE 0 TO 255;-8位分頻預(yù)置數(shù) CAO:OUT STD_LOGIC); -計(jì)數(shù)溢出輸出END ENTITY LCNT8;ARCHITECTURE ART OF LCNT8 IS SIGNAL COUNT:I

16、NTEGER RANGE 0 TO 255; -8位計(jì)數(shù)器設(shè)置BEGINPROCESS ( CLK ) ISBEGINIF CLKEVENT AND CLK= 1 THEN IF LD= 1 THEN COUNT=D; -LD為高電平時(shí)加載預(yù)置數(shù)ELSE COUNT=COUNT+1; -否則繼續(xù)計(jì)數(shù) END IF; END IF;END PROCESS;PROCESS (CLK, COUNT) ISBEGIN IF CLKEVENT AND CLK=1 THEN IF COUNT=255 THEN CAO= 1;ELSE CAOCLK,LD=LD1,D=A,CAO=CAO1);U2:LCNT8

17、 PORT MAP(CLK=CLK,LD=LD2,D=B,CAO=CAO2);PROCESS(CAO1,CAO2) ISBEGINIF CAO1= 1 THEN PSINT= 0;ELSIF CAO2 EVENT AND CAO2= 1 THEN PSINT=1;END IF;END PROCESS;LD1=NOT PSINT;LD2=PSINT;PSOUT=PSINT;END ARCHITECTURE ART; 任務(wù)四任務(wù)四 數(shù)字秒表的設(shè)計(jì)數(shù)字秒表的設(shè)計(jì) 階段一階段一 設(shè)計(jì)思路設(shè)計(jì)思路階段二階段二 VHDLVHDL程序程序 階段一階段一 設(shè)計(jì)思路設(shè)計(jì)思路今需設(shè)計(jì)一個(gè)計(jì)時(shí)范圍為今需設(shè)計(jì)一個(gè)計(jì)時(shí)

18、范圍為0.01秒秒1小時(shí)的小時(shí)的數(shù)字秒表,首先需要獲得一個(gè)比較精確的數(shù)字秒表,首先需要獲得一個(gè)比較精確的計(jì)時(shí)基準(zhǔn)信號(hào),這里是周期為計(jì)時(shí)基準(zhǔn)信號(hào),這里是周期為1/100 s的計(jì)的計(jì)時(shí)脈沖。其次,除了對(duì)每一計(jì)數(shù)器需設(shè)置時(shí)脈沖。其次,除了對(duì)每一計(jì)數(shù)器需設(shè)置清零信號(hào)輸入外,還需在六個(gè)計(jì)數(shù)器設(shè)置清零信號(hào)輸入外,還需在六個(gè)計(jì)數(shù)器設(shè)置時(shí)鐘使能信號(hào),即計(jì)時(shí)允許信號(hào),以便作時(shí)鐘使能信號(hào),即計(jì)時(shí)允許信號(hào),以便作為秒表的計(jì)時(shí)起、??刂崎_關(guān)為秒表的計(jì)時(shí)起、停控制開關(guān) 。因此數(shù)字秒表可由一個(gè)分頻器、四個(gè)十進(jìn)因此數(shù)字秒表可由一個(gè)分頻器、四個(gè)十進(jìn)制計(jì)數(shù)器制計(jì)數(shù)器(1/100秒、秒、1/10秒、秒、1秒、秒、1分分)以以及兩

19、個(gè)六進(jìn)制計(jì)數(shù)器及兩個(gè)六進(jìn)制計(jì)數(shù)器(10秒、秒、10分分)組成,組成,如圖如圖6-7所示。所示。圖圖6-7 數(shù)字秒表電路邏輯圖數(shù)字秒表電路邏輯圖階段二階段二 VHDLVHDL程序程序 1) 3 MHz100 Hz分頻器的源程序CLKGEN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLKGEN IS PORT (CLK:IN STD_LOGIC; -3 MHz信號(hào)輸入 NEWCLK:OUT STD_LOGIC); -100 Hz計(jì)時(shí)時(shí)鐘信號(hào)輸出END ENTITY CLKGEN;ARCHITECTURE ART OF CLKGEN IS

20、 SIGNAL CNTER:INTEGER RANGE 0 TO 10#29999#; -十進(jìn)制計(jì)數(shù)預(yù)制數(shù)BEGINPROCESS(CLK) IS -分頻計(jì)數(shù)器,由3 MHz時(shí)鐘產(chǎn)生100 Hz信號(hào)BEGIN IS IF CLKEVENT AND CLK=1 THEN IF CNTER=10#29999# THEN CNTER=0;-3 MHz信號(hào)變?yōu)?00 Hz,計(jì)數(shù)常數(shù)為30 000ELSE CNTER=CNTER+1; END IF; END IF;END PROCESS;PROCESS(CNTER) IS -計(jì)數(shù)溢出信號(hào)控制BEGIN IF CNTER=10#29999# THEN N

21、EWCLK=1; ELSE NEWCLK=0; END IF;END PROCESS;END ARCHITECTURE ART; 2) 六進(jìn)制計(jì)數(shù)器的源程序CNT6.VHD(十進(jìn)制計(jì)數(shù)器的源程序CNT10.VHD與此類似)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA: IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT: OUT STD_LOGIC ); END ENTITY C

溫馨提示

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