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