基于VHDL實(shí)現(xiàn)的十六路彩燈控制系統(tǒng)
VHDL是美國(guó)國(guó)防部提出的一種經(jīng)過標(biāo)準(zhǔn)化認(rèn)證的硬件描述語(yǔ)言,使用VHDL語(yǔ)言進(jìn)行硬件設(shè)計(jì)有如下特點(diǎn):將一項(xiàng)工程設(shè)計(jì)(或稱設(shè)計(jì)實(shí)體)分成外部(或稱可視部分,即端口)和內(nèi)部(或稱不可視部分),即設(shè)計(jì)實(shí)體的內(nèi)部功能和算法完成部分。
本文介紹應(yīng)用美國(guó)ALTERA公司的MAX+PLUSⅡ平臺(tái),使用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)的十六路彩燈控制系統(tǒng)。
十六路彩燈控制系統(tǒng)的實(shí)現(xiàn)
在電路中以1代表燈亮,以0代表燈滅,由0、1按不同的規(guī)律組合代表不同的燈光圖案,同時(shí)使其選擇不同的頻率,從而實(shí)現(xiàn)多種圖案多種頻率的花樣功能顯示。在該電路中只需簡(jiǎn)單的修改程序就可以靈活地調(diào)整彩燈圖案和變化方式。下面就以一個(gè)十六路彩燈控制系統(tǒng)的實(shí)現(xiàn)為例進(jìn)行簡(jiǎn)單說明。
功能描述
此十六路彩燈控制系統(tǒng)設(shè)定有四種花樣變化,這四種花樣可以進(jìn)行自動(dòng)切換,且每種花樣可以選擇不同的頻率,四種花樣分別為:
(1)彩燈從右到左,然后從左到右逐次產(chǎn)閃爍。
(2)彩燈從右到左點(diǎn)亮,然后從左到右逐次依次熄滅,全亮全滅。
(3)彩燈兩邊同時(shí)亮2個(gè)逐次向中間移動(dòng)再散開。
(4)彩燈兩邊同時(shí)亮4個(gè),4亮4滅。
設(shè)計(jì)原理
用VHDL進(jìn)行設(shè)計(jì),首先應(yīng)該理解,VHDL語(yǔ)言是一種全方位硬件描述語(yǔ)言,包括系統(tǒng)行為級(jí),寄存器傳輸級(jí)和邏輯門級(jí)多個(gè)設(shè)計(jì)層次。應(yīng)充分利用VHDL“自頂向下”的設(shè)計(jì)優(yōu)點(diǎn)以及層次化的設(shè)計(jì)概念,層次概念對(duì)于設(shè)計(jì)復(fù)雜的數(shù)字系統(tǒng)是非常有用的,它使得我們可以從簡(jiǎn)單的單元入手,逐漸構(gòu)成龐大而復(fù)雜的系統(tǒng)。
首先應(yīng)進(jìn)行系統(tǒng)模塊的劃分,規(guī)定每一模塊的功能以及各個(gè)模塊之問的接口。最終設(shè)計(jì)方案為:以一個(gè)十六路彩燈花樣控制器、一個(gè)四頻率輸出分頻器,一個(gè)四選一控制器和一個(gè)時(shí)間選擇器總共四部分來(lái)完成設(shè)計(jì)。四選一控制器從分頻器選擇不同頻率的時(shí)鐘信號(hào)輸送到彩燈花樣控制器,從而達(dá)到控制彩燈閃爍速度的快慢,時(shí)間選擇器控制每種速度維持的時(shí)間長(zhǎng)短。
整個(gè)十六路彩燈控制系統(tǒng)設(shè)計(jì)的模塊圖如圖1所示。
子模塊及其功能
本次設(shè)計(jì)分為四個(gè)子模塊,即十六路彩燈花樣控制器、四頻率輸出分頻器,四選一控制器和時(shí)問選擇器,其子模塊及其功能如下:
(1)四頻率輸出分頻器:在本次設(shè)計(jì)中,我們只設(shè)計(jì)了四種花樣,我們要求這四種花樣以不同的頻率顯示,而只有一個(gè)輸入的時(shí)鐘信號(hào),所以我們對(duì)所輸入的時(shí)鐘信號(hào)進(jìn)行2分頻、4分頻、8分頻、16分頻,得到四種頻率信號(hào),CLKDIV模塊就是來(lái)完成此功能。
(2)時(shí)間選擇器:時(shí)間選擇器實(shí)際上是兩個(gè)分頻器,其中一個(gè)頻率是另一個(gè)頻率的兩倍。本來(lái)這兩個(gè)分頻器可以在上述的四頻率輸出器中實(shí)現(xiàn)的,但為了方便地為四選一控制器提供不同的時(shí)間選擇條件,就將這兩個(gè)分頻器獨(dú)立開來(lái)。這兩個(gè)輸出的的時(shí)鐘信號(hào)組合起來(lái)就可以為四選一控制器提供00、01、10、11四個(gè)時(shí)間選擇條件,如圖2所示。
(3)四選一控制器:四選一控制器功能是從分頻器中選擇不同頻率的時(shí)鐘信號(hào)送給彩燈控制器,實(shí)現(xiàn)彩燈閃爍的頻率變化。
(4)彩燈控制器:彩燈控制電路是整個(gè)設(shè)計(jì)的核心,它負(fù)責(zé)整個(gè)設(shè)計(jì)的輸出效果即各種彩燈圖案的樣式變化。該程序充分地說明了用VHDL設(shè)計(jì)電路的“彈”性,即可通過改變程序中輸出變量Q的位數(shù)來(lái)改變彩燈的數(shù)目。其中,P1進(jìn)程對(duì)燈閃的速度進(jìn)行控制,有兩種方式可改變燈閃的速度:一是改變外部時(shí)鐘的賦值,二是改變信號(hào)U的位數(shù)。P2進(jìn)程能進(jìn)行彩燈的圖案控制,改變s的位數(shù)即可改變要控制圖案的數(shù)目,改變輸出變量O的組合即可變幻彩燈圖案。彩燈控制器的實(shí)現(xiàn)程序如下:
Librarv ieee;
其仿真波形如圖3所示,模塊符號(hào)如圖4所示。
仿真結(jié)果
最后,當(dāng)各個(gè)模塊均完成上述操作之后,即可利用MAXPLLUS2的原理圖輸入,調(diào)用各個(gè)元器件(底層文件),以原理圖的形式形成最后的十六路彩燈顯示系統(tǒng)(頂層文件),并且進(jìn)行仿真。仿真通過,即可下載到指定的CPLD芯片里面,并進(jìn)行實(shí)際連線,進(jìn)行最后的硬件測(cè)試。當(dāng)然,可以將各個(gè)模塊所生成的元件符號(hào)存放在元件庫(kù)中,以被其他人或其他的設(shè)計(jì)所重復(fù)調(diào)用,以簡(jiǎn)化后面的設(shè)計(jì)。
與其它硬件設(shè)計(jì)方法相比,用VHDL進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的:VHDL具有很強(qiáng)的行為描述能力,支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用,可讀性好,易于修改和發(fā)現(xiàn)錯(cuò)誤,可以使用仿真器對(duì)VHDL源代碼進(jìn)行仿真,允許設(shè)計(jì)者不依賴于器件,容易發(fā)現(xiàn)設(shè)計(jì)中出現(xiàn)的問題,以便及時(shí)處理。能實(shí)現(xiàn)設(shè)計(jì)與工藝無(wú)關(guān),可移植性好,上市時(shí)間快,成本低,ASI(:移植等優(yōu)點(diǎn)。應(yīng)用FPGA可以實(shí)現(xiàn)復(fù)雜電路的控制,本文只是應(yīng)用其簡(jiǎn)單的控制設(shè)計(jì)的一個(gè)具體實(shí)現(xiàn)過程。
分頻器相關(guān)文章:分頻器原理
評(píng)論