基于FPGA的交通燈控制器設(shè)計(jì)(VHDl代碼全,各個(gè)模塊均調(diào)_第1頁
基于FPGA的交通燈控制器設(shè)計(jì)(VHDl代碼全,各個(gè)模塊均調(diào)_第2頁
基于FPGA的交通燈控制器設(shè)計(jì)(VHDl代碼全,各個(gè)模塊均調(diào)_第3頁
基于FPGA的交通燈控制器設(shè)計(jì)(VHDl代碼全,各個(gè)模塊均調(diào)_第4頁
基于FPGA的交通燈控制器設(shè)計(jì)(VHDl代碼全,各個(gè)模塊均調(diào)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2.3 FPGA 主控實(shí)現(xiàn)方案設(shè)計(jì)結(jié)合已有的 PLC 實(shí)現(xiàn)和單片機(jī)應(yīng)用實(shí)現(xiàn)的經(jīng)驗(yàn),并吸收兩種設(shè)計(jì)的優(yōu)勢(shì)之 處,再根據(jù)交通燈控制系統(tǒng)的設(shè)計(jì)要求和 FPGA 模塊化功能實(shí)現(xiàn),確定了以下方 案,因每個(gè)方向相對(duì)的信號(hào)燈狀態(tài)及倒計(jì)時(shí)顯示器的顯示完全一致,根據(jù)設(shè)計(jì)要 求和系統(tǒng)所具有的功能,交通燈控制器系統(tǒng)框圖如圖 2-6 所示。 圖 2-6 交通燈控制器系統(tǒng)框圖確定的方案中, 系統(tǒng)具有復(fù)位功能, 能使系統(tǒng)重新開始計(jì)時(shí); 在紅綠燈交通 信號(hào)系統(tǒng)中, 大多數(shù)的情況是通過自動(dòng)控制的方式指揮交通的, 但為了配合高峰 時(shí)段,防止交通擁擠,有時(shí)還必須使用手動(dòng)控制。為此主體包括系統(tǒng)復(fù)位,手動(dòng) /自動(dòng),紅綠燈切換,主控模

2、塊,顯示器,報(bào)警器。具體主控部分用 FPGA 來實(shí) 現(xiàn)。 圖 2-7 交通燈通行示意圖結(jié)合實(shí)現(xiàn)方案,主要有東西、南北、南北左拐,東西左拐,跟手動(dòng)控制 5種工作方式,具體由 M2M0設(shè)定,具體如表 2-1。表2-1 交通燈工作方式表方式 M2(0:自動(dòng), 1:手動(dòng) M1(0:A向,1:B向M0(O:直行, 1:左拐1 0 0 02 0 0 13 0 1 04 0 1 15 1 * *當(dāng)出現(xiàn)特殊情況時(shí),可選擇方式 1 到方式 4 中的任何一種方式,停止正常運(yùn) 行,進(jìn)入特殊運(yùn)行狀態(tài)。此時(shí)交通燈按工作方式顯示,計(jì)時(shí)電路停止計(jì)時(shí),計(jì)時(shí)時(shí) 間閃爍顯示。當(dāng)系統(tǒng)總復(fù)位時(shí),控制電路和計(jì)時(shí)電路復(fù)位,信號(hào)燈全部熄滅

3、。3 各功能模塊的設(shè)計(jì)與實(shí)現(xiàn)3.1總體設(shè)計(jì)思路結(jié)合設(shè)計(jì)任務(wù)要求和確定的實(shí)現(xiàn)方案, 假設(shè)某個(gè)十字路口是由一條主干道和 一條次干道回合而成, 在每個(gè)方向設(shè)置紅綠黃 3種信號(hào)燈, 紅燈亮禁止通行, 綠 燈亮允許通行。黃燈亮允許行駛中車輛有時(shí)間??嫉浇咕€以外。按照自頂向下的層次化設(shè)計(jì)方法, 整個(gè)系統(tǒng)可分為 4個(gè)模塊, 系統(tǒng)時(shí)序發(fā)生 電路、紅綠燈計(jì)數(shù)時(shí)間選擇模塊、定時(shí)控制電路、紅綠燈信號(hào)譯碼電路。其系統(tǒng) 組成方框圖如圖 3-1所示。 圖 3-1 交通燈控制器系統(tǒng)組成框圖在自動(dòng)控制模塊時(shí),綠燈亮為 55秒,黃燈亮為 5秒,紅燈亮為 60秒。其外 部硬件電路方面包括:兩組紅綠燈(配合十字路口的雙向指揮控制

4、 、兩級(jí)七段 顯示器(配合綠燈倒計(jì)時(shí)顯示 、一組手動(dòng)與自動(dòng)控制開關(guān)(針對(duì)交通警察指揮 交通控制使用 。 圖 3-2 主干道狀態(tài)轉(zhuǎn)換 圖 3-3 支干道狀態(tài)轉(zhuǎn)換由上面的兩個(gè)干道的狀態(tài)轉(zhuǎn)換圖可知, 兩個(gè)方向的先設(shè)計(jì)成并列的, 即都是 按照倒計(jì)時(shí)信號(hào)進(jìn)行狀態(tài)跳轉(zhuǎn),然后再加入兩者之間的限制關(guān)系和 SIGNAL 信 號(hào)。交通燈的控制過程可以分為四個(gè)階段,對(duì)應(yīng)的輸出有四種狀態(tài),分別為 S0,S1,S2,S3,四個(gè)階段的燈亮狀態(tài)如表 3-2。表 3-2 四個(gè)階段的燈亮狀態(tài)表狀態(tài) 燈亮情況 格雷碼S0狀態(tài) 主干道綠燈亮,支干道紅燈亮 00S1狀態(tài) 主干道黃燈亮,支干道紅燈亮 01S2狀態(tài) 主干道紅燈亮,支干道

5、綠燈亮 11S3狀態(tài) 主干道紅燈亮,支干道黃燈亮 10對(duì)于上述的 S0和 S2狀態(tài)要加以說明:首先,當(dāng)主干道方向 55秒計(jì)時(shí)結(jié)束 時(shí),若支干道方向無車時(shí),這時(shí)控制器應(yīng)繼續(xù)運(yùn)行在 S0狀態(tài),再運(yùn)行 55秒,等 到下一次計(jì)時(shí)結(jié)束時(shí)再行判斷;當(dāng)主干道 55秒計(jì)時(shí)結(jié)束,若支干道方向有車, 則按照狀態(tài)轉(zhuǎn)換圖進(jìn)行跳轉(zhuǎn)。同理,支干道也執(zhí)行相同的處理。其次, 當(dāng)支干道開始綠燈亮?xí)r, 規(guī)定必須保持支干道方向一直有車時(shí), 支干 道方向的綠燈才能繼續(xù)維持,否則在計(jì)數(shù)未結(jié)束但支干道無車時(shí),執(zhí)行從 S2狀 態(tài)跳轉(zhuǎn)到 S3狀態(tài); 若支干道有車一直維持到 55秒計(jì)數(shù)結(jié)束, 那么也要執(zhí)行狀態(tài) 轉(zhuǎn)換。3.2 功能模塊設(shè)置及實(shí)現(xiàn)

6、結(jié)合前面的系統(tǒng)設(shè)計(jì)框圖和狀態(tài)設(shè)置,把主控部分分為主控制模塊,55秒 倒計(jì)時(shí)模塊, 5秒倒計(jì)時(shí)模塊, 倒計(jì)時(shí)時(shí)間選擇驅(qū)動(dòng)模塊, 倒計(jì)時(shí)時(shí)間選擇模塊, 1KHz 時(shí)鐘信號(hào)模塊, 1Hz 計(jì)數(shù)時(shí)鐘信號(hào)模塊,倒計(jì)時(shí)時(shí)間數(shù)據(jù)多路選擇模塊, 動(dòng) 態(tài)顯示驅(qū)動(dòng)模塊,顯示數(shù)據(jù)多路選擇模塊,顯示數(shù)據(jù)譯碼模塊。系統(tǒng)采用的是系統(tǒng)級(jí)層次設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分, 系統(tǒng)的關(guān)鍵電路用一片 FPGA 芯片實(shí)現(xiàn), 首先用 VHDL 語言編寫各個(gè)功能模塊程序, 最后通過綜合器和適配器生成最終的目標(biāo)器件, 然后用頂層原理圖將各個(gè)功能模塊連接起來。下面分別來介紹各個(gè)功能模塊的實(shí)現(xiàn)和調(diào)試過程。該模塊主要完成根據(jù)外部輸

7、入信號(hào) Reset、SW 控制輸出,用于控制交通燈的 信號(hào) Red1,Red2,Yellow1,Yellow2,Green1,Green2。這中間包含了必要的 內(nèi)部模塊之間的信號(hào) EN_in(來自倒計(jì)時(shí)時(shí)間選擇驅(qū)動(dòng)模塊 。 其源代碼見附錄 1, 其仿真結(jié)果與編譯后的結(jié)果如圖 3-4,3-5所示。 圖 3-4 主控模塊圖 3-5 仿真結(jié)果從圖 3-5可以簡(jiǎn)單地檢查主控模塊設(shè)計(jì)的邏輯上的正確性, 同時(shí)也可以看到 一些簡(jiǎn)單的延時(shí)信息。確認(rèn)基本正確后,進(jìn)行下面模塊的設(shè)計(jì)與分析。該模塊主要完成 55秒的倒計(jì)時(shí),控制紅燈的點(diǎn)亮?xí)r間。實(shí)際中在 1分鐘內(nèi) 還要有綠到黃燈的轉(zhuǎn)換以提醒車輛與行人,所以選擇了 55

8、秒作為綠燈的點(diǎn)亮?xí)r 間。其源代碼見附錄 1,其仿真結(jié)果與編譯后的結(jié)果如圖 3-6,3-7所示。 圖 3-6 55秒倒計(jì)時(shí)模塊 圖 3-7 仿真結(jié)果從圖 3-7可以簡(jiǎn)單地檢查 55秒倒計(jì)時(shí)模塊的邏輯上的正確性,同時(shí)也可以 看到一些簡(jiǎn)單的延時(shí)信息。確認(rèn)基本正確后,進(jìn)行下面模塊的設(shè)計(jì)與分析。該模塊主要完成 5秒的倒計(jì)時(shí),控制黃燈的點(diǎn)亮?xí)r間。實(shí)際中在 1分鐘內(nèi)還 要有紅到黃燈的轉(zhuǎn)換以提醒車輛與行人,所以選擇了 55秒作為紅燈的點(diǎn)亮?xí)r間 后,黃燈的點(diǎn)亮?xí)r間必定為 5秒。其源代碼見附錄 1,其仿真結(jié)果與編譯后的結(jié) 果如圖 3-8,3-9 所示。圖 3-8 5秒倒計(jì)時(shí)模塊 圖 3-9 仿真結(jié)果從圖 3-9可

9、以簡(jiǎn)單地檢查 5秒倒計(jì)時(shí)模塊的邏輯上的正確性, 同時(shí)也可以看 到一些簡(jiǎn)單的延時(shí)信息。確認(rèn)基本正確后,進(jìn)行下面模塊的設(shè)計(jì)與分析。該模塊只要完成倒計(jì)時(shí)時(shí)間長(zhǎng)短選擇的功能,輸入信號(hào)來自兩個(gè)倒計(jì)時(shí)模 塊,當(dāng)?shù)褂?jì)數(shù)完成是產(chǎn)生一個(gè)脈沖用于驅(qū)動(dòng)此模塊產(chǎn)生 00,01,10,11序列來驅(qū)動(dòng)倒計(jì)時(shí)時(shí)間選擇模塊。其源代碼見附錄 1,其編譯后的結(jié)果如圖 3-10所示。 圖 3-10 倒計(jì)時(shí)時(shí)間選擇驅(qū)動(dòng)模塊該模塊主要完成 55秒倒計(jì)時(shí)與 5秒倒計(jì)時(shí)之間的選擇功能,在實(shí)際中因?yàn)?存在著紅燈到黃燈再轉(zhuǎn)換為綠燈的這樣一個(gè)變化過程, 而紅黃綠燈的點(diǎn)亮?xí)r間不 相同,一般是綠黃兩燈的點(diǎn)亮?xí)r間剛好等于紅燈,其中,綠燈亮 55秒,黃

10、燈亮 5秒,紅燈亮 60秒。其源代碼見附錄 1,其仿真結(jié)果與編譯后的結(jié)果如圖 3-11, 3-12所示。 圖 3-11 倒計(jì)時(shí)時(shí)間選擇模塊 圖 3-12 仿真結(jié)果該模塊主要完成從開發(fā)實(shí)驗(yàn)板上 10MHz 的全局時(shí)鐘信號(hào)經(jīng)過分頻得到 1KHz 的時(shí)鐘信號(hào), 即完成一個(gè) 10000分頻的分頻器。 分頻器的設(shè)計(jì)是時(shí)序設(shè)計(jì)的比較 基礎(chǔ)的知識(shí), 在實(shí)際系統(tǒng)中用得很多, 設(shè)計(jì)過程與計(jì)數(shù)器的設(shè)計(jì)很類似。 其源代 碼見附錄 1,其編譯后的結(jié)果如圖 3-13所示。 圖 3-13 1KHz時(shí)鐘信號(hào)模塊該模塊主要完成從模塊 1KHz 中的 1KHz 時(shí)鐘信號(hào)經(jīng)過分頻得到 1Hz 的計(jì)數(shù)時(shí) 鐘信號(hào),即完成一個(gè) 100

11、0分頻的分頻器。設(shè)計(jì)過程與模塊 6的設(shè)計(jì)過程基本相 同。其源代碼見附錄 1,其編譯后的結(jié)果如圖 3-14所示。 圖 3-14 1Hz計(jì)數(shù)時(shí)鐘信號(hào)模塊該模塊主要完成兩組不同倒計(jì)時(shí)時(shí)間數(shù)據(jù)的選擇輸出到后續(xù)顯示模塊中。 其 源代碼見附錄 1,其仿真結(jié)果與編譯后的結(jié)果如圖 3-15,3-16所示。 圖 3-15 倒計(jì)時(shí)時(shí)間數(shù)據(jù)多路選擇模塊 圖 3-16 仿真結(jié)果從圖 3-16可以簡(jiǎn)單地檢查倒計(jì)時(shí)時(shí)間數(shù)據(jù)多路選擇模塊的邏輯上的正確 性, 同時(shí)也可以看到一些簡(jiǎn)單的延時(shí)信息。 確認(rèn)基本正確后, 進(jìn)行下面模塊的設(shè) 計(jì)與分析。該模塊主要完成倒計(jì)時(shí)數(shù)碼管的動(dòng)態(tài)顯示。 動(dòng)態(tài)顯示即分時(shí)顯示, 但是時(shí)間 間隔的選擇既要

12、保證人眼看起來是同時(shí)顯示,即不會(huì)出現(xiàn)兩位數(shù)字的斷續(xù)顯示, 又要保證不會(huì)覆蓋顯示數(shù)字, 即不會(huì)出現(xiàn)上個(gè)數(shù)字與下個(gè)數(shù)字之間的顯示過快使 得人眼來不及分辨。其源代碼見附錄 1,其仿真結(jié)果與編譯后的結(jié)果如圖 3-17, 3-18所示。 圖 3-17 動(dòng)態(tài)顯示驅(qū)動(dòng)模塊 圖 3-18 仿真模塊從圖 3-18可以簡(jiǎn)單地檢查動(dòng)態(tài)顯示驅(qū)動(dòng)模塊的邏輯上的正確性,同時(shí)也可 以看到一些簡(jiǎn)單的延時(shí)信息。確認(rèn)基本正確后,進(jìn)行下面模塊的設(shè)計(jì)與分析。該模塊主要完成數(shù)碼管顯示數(shù)據(jù)的分時(shí)選擇, 以實(shí)現(xiàn)分時(shí)動(dòng)態(tài)顯示。 其源代 碼見附錄 1,其仿真結(jié)果與編譯后的結(jié)果如圖 3-19,3-20所示。 圖 3-19 顯示數(shù)據(jù)多路選擇模塊圖

13、 3-20 仿真結(jié)果該模塊主要完成 4位 BCD 碼到 8位數(shù)碼管顯示數(shù)據(jù)的譯碼。 譯碼后的 8位數(shù) 據(jù)分別對(duì)應(yīng)數(shù)碼管的數(shù)據(jù)段 A、B、C、D、E、F、G、DP。其源代碼見附錄 1,其 仿真結(jié)果于編譯后的結(jié)果如圖 3-21,3-22所示。 圖 3-21 顯示數(shù)據(jù)譯碼模塊圖 3-22 仿真結(jié)果從圖 3-22可以簡(jiǎn)單地檢查顯示數(shù)據(jù)譯碼模塊的邏輯上的正確性,同時(shí)也可 以看到一些簡(jiǎn)單的延時(shí)信息。確認(rèn)基本正確后,進(jìn)行下面模塊的設(shè)計(jì)與分析。4 總體調(diào)試與結(jié)果說明4.1 頂層電路在設(shè)計(jì)完各個(gè)模塊后,需要將各個(gè)模塊有機(jī)地組合成一個(gè)整體,最后來實(shí)現(xiàn)系統(tǒng)的功能在數(shù)字頻率計(jì)的設(shè)計(jì)中,同時(shí)采用了電路原理圖的設(shè)計(jì) 以及

14、 Verilog HDL語言來編寫的頂層電路。電路原理圖見圖4-1,具體源代碼見附錄1,仿真圖如圖4-2所示。 圖 4-1 總系統(tǒng)電路圖 圖4-2 仿真結(jié)果說明:當(dāng)ga為高電平時(shí)表示a方向綠燈亮, 同時(shí)rb為高電平表示b方向紅燈亮; 經(jīng)過55秒, ga變?yōu)榈碗娖奖硎? rb不變, ya變?yōu)楦唠娖奖硎綼方向綠燈滅黃燈亮, b方向仍為紅燈;經(jīng)過5秒,gb變?yōu)楦唠娖奖硎綽方向綠燈亮,ra為高電平表示a 方向紅燈亮;再經(jīng)過5秒,gb變?yōu)榈碗娖?ra不變,yb變?yōu)楦唠娖奖硎綽方向綠燈 滅黃燈亮a方向仍為紅燈。 4.2 過程調(diào)試4.3硬件仿真效果 圖4-3 1方向綠燈亮圖4-3表示1方向綠燈亮,2方向紅燈

15、亮的過程。 圖4-4 2方向綠燈亮圖4-4表示2方向綠燈亮,1方向紅燈亮。從DE2調(diào)試結(jié)果來看,整個(gè)設(shè)計(jì)結(jié)果基本符合設(shè)計(jì)要求。5 總結(jié)和展望通過本次課題的研究,利用 FPGA 技術(shù)實(shí)現(xiàn)交通燈控制系統(tǒng)主控模塊功能, 是對(duì)傳統(tǒng)交通燈控制系統(tǒng)設(shè)計(jì)的一種改進(jìn)。 本文中采用 Verilog HDL語言設(shè)計(jì)交 通燈控制系統(tǒng), 借助其功能強(qiáng)大的語言結(jié)構(gòu), 簡(jiǎn)明的代碼描述復(fù)雜控制邏輯設(shè)計(jì), 與工藝無關(guān)特性, 在提高工作效率的同時(shí)達(dá)到求解目的, 并可以通過 Verilog HDL語言的綜合工具進(jìn)行相應(yīng)硬件電路生成, 具有傳統(tǒng)邏輯設(shè)計(jì)方法所無法比擬的優(yōu) 越性。本設(shè)計(jì)采用 Verilog HDL硬件描述語言文本輸入

16、方式, 在確立總體預(yù)期實(shí)現(xiàn) 功能的前提下, 分層次進(jìn)行描述, 其中所用到的數(shù)據(jù)均可依現(xiàn)場(chǎng)情況而設(shè)置, 修 改方便靈活。須注意的是,兩模擬頻率不能太高,否則將無法實(shí)現(xiàn)。并且,程序 中還規(guī)定了兩計(jì)數(shù)器的計(jì)數(shù)范圍, 與實(shí)際結(jié)合。 整體而言, 本設(shè)計(jì)所耗資源較少, 提供了較大的添加范圍。其中,人行道的設(shè)置并未完成;另外,設(shè)計(jì)中還有有待 完善的地方, 如狀態(tài)之間相互轉(zhuǎn)換的間隔時(shí)間的修改, 并不能讓任何人都能進(jìn)行 此項(xiàng)操作。 因此, 可利用數(shù)顯密碼鎖, 來有效防止機(jī)內(nèi)參數(shù)被無關(guān)人員隨意修改, 為系統(tǒng)安全提供保障。 數(shù)字化時(shí)代的到來給人們的生活帶來了極大的改變, 有理 由相信隨著數(shù)字化的深入, 交通燈控制器

17、的功能將日趨完善。 而且, Verilog HDL語言對(duì) EDA 產(chǎn)生的影響也是深遠(yuǎn)的,它縮短了電子產(chǎn)品的設(shè)計(jì)周期,為設(shè)計(jì)者 提供了方便。6 致謝同時(shí)也感謝在開題答辯中針對(duì)我的設(shè)計(jì)指出了許多不足之處的老 師們, 正是有了你們對(duì)我設(shè)計(jì)的嚴(yán)格要求才能讓我在以后的設(shè)計(jì)過程中去發(fā)現(xiàn)自 身設(shè)計(jì)的缺點(diǎn), 讓我有了不斷改進(jìn)設(shè)計(jì)的機(jī)會(huì)和空間, 幫助我能夠順利的實(shí)現(xiàn)設(shè) 計(jì)的預(yù)期目標(biāo)。 在設(shè)計(jì)過程中我時(shí)常遇到一些技術(shù)上的問題, 通過查閱資料并和 老師交流自己的想法而且在指導(dǎo)老師的指導(dǎo)下解決了技術(shù)上的問題, 循序漸進(jìn)地 完成每個(gè)階段的任務(wù), 對(duì)于設(shè)計(jì)方案進(jìn)行一次次的改進(jìn)做到精益求精, 這樣漸漸 地培養(yǎng)了自身獨(dú)立思考

18、和動(dòng)手設(shè)計(jì)能力, 對(duì)于一個(gè)電子信息專業(yè)的學(xué)生來說這將 對(duì)我起到了相當(dāng)大的幫助。我還要感謝在一起愉快的度過本科生活的 51樓 416各位同學(xué),正是由于你們 的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。 在論文 即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可 敬的師長(zhǎng)、 同學(xué)、 朋友給了我無言的幫助,在這里請(qǐng)接受我誠摯的謝意!最后我還 要感謝培養(yǎng)我長(zhǎng)大含辛茹苦的父母,謝謝你們!參考文獻(xiàn)1 周潤(rùn)景等.基于 Quartus的 FPGA/CPLD數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例M.北京:電子 工業(yè)出版社,2007年 8月2 楊曉慧等.基于 FPGA 的 EDA/SOPC技

19、術(shù)與 VHDLM.北京:國防工業(yè)出版社, 2007年 10月3 王誠等.Altera FPGACPLD設(shè)計(jì)(基礎(chǔ)篇M.北京:人民郵電出版社, 2005年 7月4 Stephen Brown,Zvonko Vranesic.Fundamentals of Digital Logic with Verilog Design(2nd EditionM.New York:McGraw-Hill,2007,5. 5 Ming-Bo Lin.Digital System Designs and Practices: Using Verilog HDL and FPGAsM.New York:McGraw-

20、Hill,2008,8.6 徐光輝.基于 FPGA 的嵌入式開發(fā)與應(yīng)用M.北京:電子工業(yè)出版社,2006年 9月7 文暢.基于 FPGA/CPLD和 VHDL 語言的交通燈控制系統(tǒng)設(shè)計(jì)J.電腦知識(shí)與 技術(shù)(學(xué)術(shù)交流,2007,06-08.8 瞿逐春.EDA 技術(shù)綜合應(yīng)用實(shí)例與分析M.西安:西安電子科技大學(xué)出版 社,2004年 11月9 楊少軍.基于 DSP 的移頻機(jī)車信號(hào)分析研究與實(shí)現(xiàn)D.武漢:武漢大 學(xué),2006.10 譚衛(wèi)澤,徐暢.面向 FPGA 器件的 VHDL 語言優(yōu)化設(shè)計(jì)方法J.南寧職業(yè)技術(shù) 學(xué)院學(xué)報(bào),2008年,13(4:98100.12 任曉東 文博.CPLD/FPGA高級(jí)應(yīng)用開

21、發(fā)指南M.北京:電子工業(yè)出版社, 2003年 9月.12 任愛鋒.基于 FPGA 的嵌入式系統(tǒng)設(shè)計(jì)M.西安:西安電子科技大學(xué)出版社, 2004年 10月 .13 余俊.基于 FPGA 的 IDE 協(xié)議實(shí)現(xiàn)的研究J.電子科技. 2008年 9月, 12(8 144156.附錄 1 程序代碼. . . . . . . . . . . . . . . . . . . . . . . . .主控制模塊 Modulecontrol(EN_in,SW1,RST,Red1,Red2,Yellow1,Yellow2,Green1,Green2;output Red1;output Red2;output Ye

22、llow1;output Yellow2;output Green1;output Green2;input 1:0 EN_in;input SW1;input RST;reg Red1,Red2,Yellow1,Yellow2,Green1,Green2,D_out;always (EN_in,RST,SW1beginif(SW1=0|RST=0 Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'b0;elsebegincase(EN_in2'b00: Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'

23、;b010010;2'b01: Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'b011000;2'b10: Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'b100001;2'b11: Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'b100100;default : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6'b0;endcaseendendendmodule. . . . . . . .

24、 . . . . . . . . . . . . . . . . . . . . 55秒倒計(jì)時(shí)模塊 module counter55(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out;output C_out;output 3:0 D_OUT1;output 3:0 D_OUT0;input C_CLK;input RST;input C_EN;reg 3:0 D_OUT1;reg 3:0 D_OUT0;reg C_out;reg 3:0 CData1;reg 3:0 CData0;reg 7:0 DATA;always (posedge C_CLKbeginif(RST=

25、0|C_EN=0beginC_out <= 1'b0;CData1 <= 4'b0000;CData0 <= 4'b0000;endelsebeginif(CData0 = 4'b0101 && CData1 = 4'b0101 beginCData1 <= 4'b0000;CData0 <= 4'b0000;C_out = 1'b1;endelse if(CData0 != 4'b1001beginCData0 <= CData0 + 1;C_out <= 1&#

26、39;b0;endelse if(CData0 = 4'b1001 && CData1 != 4'b0110 beginCData1 <= CData1 + 1;CData0 <= 4'b0000;C_out <= 1'b0;endelsebeginCData1 <= 4'b0000;CData0 <= 4'b0000;C_out = 1'b1;endendendalwaysbeginDATA <= 8'b01010101-(CData1<<4+CData0;if(D

27、ATA>>4&4'b1111>4'b0101D_OUT1 <= (DATA>>4&4'b1111-4'b1111;elseD_OUT1 <= (DATA>>4&4'b1111;if(DATA&4'b1111>4'b1001D_OUT0 <= (DATA&4'b1111-4'b0110;elseD_OUT0 <= DATA&4'b1111;endendmodule. . . . . . . . .

28、. . . . . . . . . . . . . . . . . . . . . 5秒倒計(jì)時(shí)模塊 module counter05(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out;output C_out;output 3:0 D_OUT1;output 3:0 D_OUT0;input C_CLK;input RST;input C_EN;reg 3:0 D_OUT1;reg 3:0 D_OUT0;reg C_out;reg 3:0 CData1;reg 3:0 CData0;reg 7:0 DATA;always (posedge C_CLKbeginif(RST=

29、0|C_EN=0beginC_out <= 1'b0;CData1 <= 4'b0000;CData0 <= 4'b0000;endelsebeginif(CData0 != 4'b0101beginCData0 <= CData0 + 1;C_out <= 1'b0;endelsebeginCData1 <= 4'b0000;CData0 <= 4'b0000;C_out = 1'b1;endendendalwaysbeginDATA <= 8'b00000101-(CDa

30、ta1<<4+CData0;D_OUT1 <= 4'b0000;if(DATA&4'b1111>4'b0101D_OUT0 <= DATA&4'b1111-4'b1011;elseD_OUT0 <= DATA&4'b1111;endendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 倒計(jì)時(shí)時(shí)間選擇

31、驅(qū)動(dòng)模塊 module scan(EN_in1,EN_in0,sdata;output 1:0 sdata;input EN_in1;input EN_in0;reg 1:0 sdata;wire EN_in;assign EN_in = EN_in1 | EN_in0;always (posedge EN_inbeginsdata <= sdata + 2'b01;endendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32、. . . . . . . . . . . . . 倒計(jì)時(shí)時(shí)間選擇模塊 module countersel(D_IN,D_OUT1,D_OUT0;output D_OUT1;output D_OUT0;input 1:0 D_IN;reg D_OUT1;reg D_OUT0;alwaysbegincase(D_IN2'b00 : D_OUT1,D_OUT0 <= 2'b10;2'b01 : D_OUT1,D_OUT0 <= 2'b01;2'b10 : D_OUT1,D_OUT0 <= 2'b10;2'b11 : D_OU

33、T1,D_OUT0 <= 2'b01;default : D_OUT1,D_OUT0 <= 2'b00;endcaseendendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1KHz 時(shí)鐘信號(hào)模塊 module fdiv1khz(clk_in,clk_out;output clk_out;input clk_in;reg clk_out;integer cn

34、t=0;always (posedge clk_inbeginif(cnt<9999 /實(shí)際系統(tǒng)分頻值/if(cnt<19 /仿真時(shí)的分頻值begincnt = cnt + 1;clk_out <= 1'b0;endelsebegincnt = 0;clk_out <= 1'b1;endendendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Hz 計(jì)數(shù)

35、時(shí)鐘信號(hào)模塊 module fdiv1hz(clk_in,clk_out;output clk_out;input clk_in;reg clk_out;integer cnt=0;always (posedge clk_inbeginif(cnt<999 /實(shí)際系統(tǒng)的分頻值/if(cnt<9 /仿真時(shí)采用的分頻值begincnt = cnt + 1;clk_out <= 1'b0;endelsebegincnt = 0;clk_out <= 1'b1;endendendmodule. . . . . . . . . . . . . . . . . .

36、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 倒計(jì)時(shí)時(shí)間數(shù)據(jù)多路選擇模塊 module datamux(D_IN3,D_IN2,D_IN1,D_IN0,SEL,D_OUT1,D_OUT0;output 3:0 D_OUT1;output 3:0 D_OUT0;input 3:0 D_IN3;input 3:0 D_IN2;input 3:0 D_IN0;input 1:0 SEL;reg 3:0 D_OUT1;reg 3:0 D_OUT0;alwaysbegincase(SEL2'b00 :

37、beginD_OUT0 <= D_IN0;D_OUT1 <= D_IN1;end2'b01 : beginD_OUT0 <= D_IN2;D_OUT1 <= D_IN3;end2'b10 : beginD_OUT0 <= D_IN0;D_OUT1 <= D_IN1;end2'b11 : beginD_OUT0 <= D_IN2;D_OUT1 <= D_IN3;enddefault : beginD_OUT0 <= 4'b0000;D_OUT1 <= 4'b0000;endendcaseenden

38、dmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動(dòng)態(tài)顯示驅(qū)動(dòng)模塊 module dispselect(CLK,D_OUT;output 1:0 D_OUT;input CLK;reg 1:0 D_OUT;always (posedge CLKbeginif(D_OUT < 2'b10D_OUT <= D_OUT + 2'b01;elseD_OUT &l

39、t;= 2'b01;endendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 顯示數(shù)據(jù)多路選擇模塊 module dispmux(SEL,D_IN1,D_IN0,D_OUT;output 3:0 D_OUT;input 3:0 D_IN1;input 3:0 D_IN0;reg 3:0 D_OUT;alwaysbegincase(SEL2'b01 : D_OUT <= D_

40、IN0;2'b10 : D_OUT <= D_IN1;default : D_OUT <= 4'b0000;endcaseendendmodule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 顯示數(shù)據(jù)譯碼模塊 module dispdecoder(data_in,data_out;output 7:0 data_out;input 3:0 data_in;reg

41、7:0 data_out;always (data_inbegincase(data_in4'b0000 : data_out <= 8'b11111100; /04'b0001 : data_out <= 8'b01100000; /14'b0010 : data_out <= 8'b11011010; /24'b0011 : data_out <= 8'b11110010; /34'b0100 : data_out <= 8'b01100110; /44'b0101 : d

42、ata_out <= 8'b10110110; /54'b0110 : data_out <= 8'b10111110; /64'b0111 : data_out <= 8'b11100000; /74'b1000 : data_out <= 8'b11111110; /84'b1001 : data_out <= 8'b11100110; /9default : data_out <= 8'b00000000;endcaseendendmodule. . . . . . . .

43、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .頂層電路module trafficlight(Reset,SW,CLK,Red1,Red2,Yellow1,Yellow2,Green1,Green2,SEG_Data,SEG_Sel;input Reset;input SW;input CLK;output Red1;output Red2;output Yellow1;output Yello

44、w2;output Green1;output Green2;output 7:0 SEG_Data;output 1:0 SEG_Sel;wire SYNTHESIZED_WIRE_0;wire SYNTHESIZED_WIRE_1;wire SYNTHESIZED_WIRE_19;wire SYNTHESIZED_WIRE_3;wire SYNTHESIZED_WIRE_20;wire 1:0 SYNTHESIZED_WIRE_21;wire SYNTHESIZED_WIRE_7;wire 3:0 SYNTHESIZED_WIRE_9;wire 3:0 SYNTHESIZED_WIRE_10;wire 3:0 SYNTHESIZED_WIRE_11;wire 3:0 SYNTHESIZED_WIRE_12;wi

溫馨提示

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