999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VHDL的可變速彩燈控制器的設計

2010-04-12 00:00:00劉建科段新文
現代電子技術 2010年8期

摘 要:介紹一種基于VHDL的可變速彩燈控制器的設計方案,該系統無需外加輸入信號,只需一個時鐘信號就能實現以4種不同速度循環演示8種花型。該系統較以前的傳統設計具有硬件電路簡單、體積小、功耗低、可靠性高等特點,特別是可以在不修改硬件電路的基礎上,僅通過更改軟件就能實現任意修改花型的編程控制方案,而且設計非常方便,設計的電路保密性強。

關鍵詞: VHDL; Max+PlusⅡ; 可變速彩燈控制器; 電路保密性

中圖分類號:TP312文獻標識碼:A

文章編號:1004-373X(2010)08-0019-04

Design of Variable Velocity Color lamp Controller Based on VHDL

LIU Jian-ke, DUAN Xin-wen

(Qinghai Normal University, Xi’ning 810008, China)

Abstract: A design of the variable velocity color lamp controller based on VHDL is introduced. The system can demonstrate eight kinds of flowers cyclically with four different speeds without extra input signal, but only a clock signal. Compared with traditional design, the system has some features such as simple hardware circuits, small bulk, low power consumption and high reliability. Especially, the system can realize the programmable scheme of modifying flowers randomly only by changing the software (not on the basis of modifying the hardware circuits), whose design is very convenient. The confidentiality of the designed circuit is strong.

Keywords:VHDL; Max+Plus Ⅱ; variable velocity color lamp controller; confidentiality of circuit

0 引 言

硬件描述語言(HDL)是相對于一般的計算機軟件語言如C,Pascal而言的。HDL是用于設計硬件電子系統的計算機語言,它描述電子系統的邏輯功能、電路結構和連接方式。設計者可以利用HDL程序來描述所希望的電路系統,規定其結構特征和電路的行為方式,然后利用綜合器和適配器將此程序變成能控制FPGA和CPLD內部結構,并實現相應邏輯功能的門級或更底層的結構網表文件和下載文件。VHDL(Very High Speed Integrated Circuit Hardware description Language)主要用于描述數字系統的結構、行為、功能和接口。與其他的HDL語言相比,VHDL具有更強的行為描述能力,從而決定了它成為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。在文獻[1-6]中作者從不同的角度闡述了EDA技術的應用,它具有功能強大、描述能力強、可移植性好、研制周期短、成本低等特點,即使設計者不懂硬件的結構,也能進行獨立的設計[7]。本文以Alter公司提供的Max+PlusⅡ為平臺,設計一個可變速的彩燈控制器,可以在不修改硬件電路的基礎上,僅通過更改軟件就能實現任意修改花型的編程控制方案,實現控制16只LED以8種花型和4種速度循環變化顯示,而且設計非常方便,設計的電路保密性強。

1 設計原理

用VHDL進行設計,首先應該理解,VHDL語言是一種全方位硬件描述語言,包括系統行為級,寄存器傳輸級和邏輯門級多個設計層次。應充分利用VHDL“自頂向下”的設計優點以及層次化的設計概念,層次概念對于設計復雜的數字系統是非常有用的,它使得我們可以從簡單的單元入手,逐漸構成龐大而復雜的系統[8]。

首先應進行系統模塊的劃分,規定每一個模塊的功能以及各模塊之間的接口,最終設計方案分為三大模塊:16路花樣彩燈控制器、四頻率輸出分頻器、四選一控制器。四選一控制器從分頻器中選擇不同頻率的時鐘信號輸送到彩燈花樣控制器,從而達到控制彩燈閃爍速度的快慢和花型的的變換。

下面是本次設計的頂層模塊原理圖如圖1所示。

圖1 頂層模塊原理圖

2 子模塊及其功能

(1) 四頻率輸出分頻器。根據要求有4種速度的變化,每種都要顯示8種花樣,就要用到三位計數器和16位數字譯碼器。其次,速度有4種變化,而只有一個輸入的時鐘信號,所以要對輸入的時鐘信號進行分頻,本次設計采用了二分頻、四分頻、八分頻和15分頻得到4種不同頻率的信號。

二分頻電路的程序代碼如下:

library ieee;//庫的使用

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;

entity fp2 is;//實體說明

port(clk,rst:in stdlogic;

clk1:buffer stdlogic);

end fp2;

architecture behave of fp2 is;//結構體說明

begin

process(clk,rst)

variable q1:stdlogicvector(3 downto 0);

begin

if rst=′1′ then q1:=(others=>′0′);

elsif clk′event and clk=′1′then

if q1<\"0001\" then q1:=q1+1;

else q1:=(others=>′0′);

end if;

end if;

if q1=\"0001\" then clk1<=′1′;

else clk1<=′0′;

end if;

end process;

end behave;

四分頻電路的設計有兩種方案:一是把兩個二分頻電路串聯起來(見圖2,3),實現四分頻;二是修改二分頻電路的程序代碼來實現,做如下修改:

把“if q1<\"0001\" then q1:=q1+1;”中的q1<\"0001\"改為q1<\"0011\"

同理,八分頻電路的設計也有兩種方案:一種是把兩個四分頻電路串聯起來,實現八分頻;一種是修改二分頻電路的程序代碼,只需做如下修改即可:

把“if q1<\"0001\" then q1:=q1+1;”中的q1<\"0001\"改為q1<\"0111\"。

圖2 二分頻電路模塊符號

圖3 四分頻電路模塊符號

15分頻電路如圖4所示,仿真圖如圖5所示。代碼如下:

library ieee;

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;

entity fp15 is

port(clk,rst:in stdlogic;

clk1:out stdlogic);

end fp15;

architecture behave of fp15 is

begin

process(clk,rst)

variable q1:stdlogicvector(3 downto 0);

begin

if rst=′1′ then q1:=(others=>′0′);

elsif clk′event and clk=′1′then

if q1<\"1110\" then q1:=q1+1;

else q1:=(others=>′0′);

end if;

end if;

if q1=\"1110\" then clk1<=′1′;

else clk1<=′0′;

end if;

end process;

end behave;

圖4 15分頻電路模塊符號

四頻率輸出分頻器的頂層模塊原理圖如圖6所示,仿真波形如圖7所示。

圖5 15分頻電路的仿真波形

圖6 分頻器的頂層模塊原理圖

圖7 分頻器仿真波形圖

(2) 四選一控制器。四選一控制器的功能是從分頻器中選擇不同的時鐘信號送給彩燈控制器,實現彩燈閃爍頻率的變化,如圖8,9所示。源代碼如下:

library ieee;

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;

entity jsq is

port(clk,clk1,clk2,clk3,clk4:in stdlogic;

z:out stdlogic);

end jsq;

architecture behave of jsq is

signal s:stdlogicvector(1 downto 0);//s為兩位的標準邏輯位矢量

begin

jsq1:process(clk);//進程1,s用來計數

begin

if clk′event and clk=′1′then

s<=s+1;

end if;

end process jsq1;

jsq2:process(s,clk1,clk2,clk3,clk4);//進程2,根據s的值來選擇分頻后的時鐘信號

begin

case s is

when\"00\"=>z<=clk1;

when\"01\"=>z<=clk2;

when\"10\"=>z<=clk3;

when\"11\"=>z<=clk4;

when others=>z<=1;

end case;

end process jsq2;

end behave;

(3) 彩燈控制器。彩燈控制器電路是整個設計的核心,它控制整個設計的輸出效果也就是圖案的樣式變化。在電路中用1代表燈亮,用0代表燈滅,由0,1按不同的規律組合代表不同的燈光圖案,同時使其選擇不同的頻率,以實現多種圖案及多種頻率的花樣功能顯示[9-10]。該程序充分證明了用VHDL設計電路的靈活性,即可以通過改變程序中輸出變量的位數來改變彩燈的數目。如圖10,11所示。

圖8 四選一控制器的模塊符號

圖9 四選一控制器的輸出仿真波形

圖10 花樣控制模塊的符號

圖11 彩燈控制器的仿真波形

代碼如下:

library IEEE;

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;//打開庫和標準程序包

entity huay is;//實體說明

port(clk:in stdlogic;

jw:buffer stdlogic;

light:OUT stdlogicvector(15 downto 0));

//定義16位輸出變量light,彩燈的數目可通過改變輸出變量light的位數來控制

end huay;

architecture behave of huay is;//結構體說明

signal q1:stdlogicvector(7 downto 0);//定義8位變量q1

begin

huaya:process(clk)

begin

if clk′event and clk=′1′then

if q1<\"00110000\" then q1<=q1+1;

else q1<=(others=>′0′);

end if;

end if;

if q1=\"00110000\" then jw<=′1′;

else jw<=′0′;

end if;

end process huaya;

huayb:process(q1)

begin

case q1 is;

//第一種花型,彩燈從右向左依次閃亮

when \"00000000\"=>light<=\"0000000000000001\";

when \"00000001\"=>light<=\"0000000000000010\";

when \"00000010\"=>light<=\"0000000000000100\";

when \"00000011\"=>light<=\"0000000000001000\";

when \"00000100\"=>light<=\"0000000000010000\";

when \"00000101\"=>light<=\"0000000000100000\";

when \"00000110\"=>light<=\"0000000001000000\";

when \"00000111\"=>light<=\"1000000000000000\";

//第二種花型,燈從左向右閃亮

when \"00001000\"=>light<=\"0100000000000000\";

when \"00001001\"=>light<=\"0010000000000000\";

when \"00001010\"=>light<=\"0001000000000000\";

when \"00001011\"=>light<=\"0000100000000000\";

when \"00001100\"=>light<=\"0000010000000000\";

when \"00001101\"=>light<=\"0000001000000000\";

when \"00001110\"=>light<=\"0000000100000000\";

when \"00001111\"=>light<=\"0000000010000000\";

when \"00010000\"=>light<=\"0000100000010000\";

//第三種花型

when \"00010001\"=>light<=\"0001110000011100\";

when \"00010010\"=>light<=\"0011111000111110\";

when \"00010011\"=>light<=\"0111111111011111\";

when \"00010101\"=>light<=\"1111111111111111\";

when \"00010110\"=>light<=\"0111111001111110\";

when \"00010111\"=>light<=\"0011110000111100\";

when \"00011000\"=>light<=\"0001100000011000\";

when \"00011001\"=>light<=\"0000100000001000\";

when \"00011010\"=>light<=\"0000000000000000\";

//第四種花型

when \"00011011\"=>light<=\"0101010101010101\";

when \"00011100\"=>light<=\"0100010001000100\";

when \"00011101\"=>light<=\"0001000100010001\";

when \"00011110\"=>light<=\"0101010101010101\";

//第五種花型

when \"00011111\"=>light<=\"1000100010001000\";

when \"00100000\"=>light<=\"0010001000100010\";

when \"00100001\"=>light<=\"1010101010101010\";

//第六種花型

when \"00100010\"=>light<=\"1000000110000001\";

when \"00100011\"=>light<=\"1100001111000011\";

when \"00100100\"=>light<=\"1110011111100111\";

when \"00100101\"=>light<=\"1111111111111111\";

when \"00100110\"=>light<=\"0000001100000011\";

//第七種花型

when \"00100111\"=>light<=\"0000110000001100\";

when \"00101000\"=>light<=\"0011000000110000\";

when \"00101001\"=>light<=\"1100000011000000\";

when \"00101010\"=>light<=\"1100001111000011\";

when \"00101011\"=>light<=\"0100000110000010\"

//第八種花型

when \"00101100\"=>light<=\"0001010000101000\";

when \"00101101\"=>light<=\"0101010110101010\";

when \"00101110\"=>light<=\"1000001001000001\";

when \"00101111\"=>light<=\"0010100000010100\";

when \"00110000\"=>light<=\"1010101001010100\";

when others=>light<=\"0000000000000000\";

end case;

end process huayb;

end behave;

3 結 語

使用VHDL語言設計電路,思路簡單,功能明了。使用Max+Plus Ⅱ設計電路不僅可以進行邏輯仿真,還可以進行時序仿真,使用PLD不僅省去了電路制作的麻煩,還可以反復進行硬件的實驗,非常方便地修改設計,且設計的電路的保密性強。總之,采用EDA技術使得復雜的電子系統的設計變的簡單易行,提高了設計的效率。

參考文獻

[1]朱正偉. EDA技術及應用[M]. 北京: 清華大學出版社, 2005.

[2]郭勇. EDA 技術基礎[M]. 2版. 北京: 機械工業出版社, 2005.

[3]潘松, 黃繼業. EDA 技術實用教程[M]. 北京: 科學出版社, 2002.

[4]李景華, 杜玉遠. 可編程邏輯器件與EDA 技術[M]. 長春:東北大學出版社, 2001.

[5]潘松. VHDL使用教程[M]. 西安: 西安電子科技大學出版社, 2000.

[6]譚會生, 張昌凡. EDA技術及應用[M]. 西安: 西安電子科技大學出版社, 2001.

[7]潘澤強. VHDL語言在數字電路教學中的應用[J]. 科技資訊, 2008(35): 15.

[8]呂曉蘭. 基于VHDL實現的16路彩燈控制系統[J]. 信息技術, 2007, 34(2): 48-51.

[9]范秋華, 趙艷秋, 何香玲. 基于VHDL的彩燈控制[J]. 現代電子技術, 2004, 27(2): 5-6,8.

[10]陳華容, 姚勝興. 基于CPLD的大型彩燈控制器的設計[J]. 微計算機信息, 2008,24(5): 181-182,312.

主站蜘蛛池模板: 亚洲精品国产精品乱码不卞 | 国产成人精品视频一区二区电影| 精品国产三级在线观看| 又爽又黄又无遮挡网站| 欧美性久久久久| 亚洲男人在线天堂| 老司机aⅴ在线精品导航| 99er精品视频| 一级看片免费视频| 666精品国产精品亚洲| 亚洲中文字幕av无码区| 国产剧情一区二区| 国产综合网站| 久久亚洲国产最新网站| 日韩国产高清无码| 在线免费不卡视频| 欧美成人午夜视频| 精品成人一区二区三区电影 | 小13箩利洗澡无码视频免费网站| 国产日韩AV高潮在线| 国产在线精品人成导航| 中文字幕欧美成人免费| 丰满少妇αⅴ无码区| 91九色国产porny| 97免费在线观看视频| 亚洲人在线| 国产乱人视频免费观看| 国模沟沟一区二区三区 | 中文字幕一区二区人妻电影| 在线不卡免费视频| 999精品视频在线| 国产精品无码久久久久久| 18禁色诱爆乳网站| 丁香婷婷激情网| 91在线无码精品秘九色APP | 国产在线一区视频| 91亚瑟视频| 欧美成人第一页| www.91中文字幕| 国产偷国产偷在线高清| 欧美日韩专区| 女人爽到高潮免费视频大全| 成人午夜在线播放| 亚洲综合经典在线一区二区| 免费av一区二区三区在线| 91精品国产无线乱码在线| 亚洲三级视频在线观看| 色135综合网| 永久在线播放| 久久国产拍爱| 91精品啪在线观看国产| 亚洲日本一本dvd高清| 狠狠色成人综合首页| 日韩欧美国产中文| 成人一区专区在线观看| 99视频有精品视频免费观看| 真实国产乱子伦视频| 91精品国产91久久久久久三级| 91精品伊人久久大香线蕉| 一本大道香蕉久中文在线播放| 久久公开视频| 国产精鲁鲁网在线视频| 亚洲欧美在线综合一区二区三区| 国产一在线观看| 亚洲一区二区三区在线视频| a毛片在线| 国产精品亚洲日韩AⅤ在线观看| 爱色欧美亚洲综合图区| 欧美区日韩区| 扒开粉嫩的小缝隙喷白浆视频| 欧美午夜一区| 国产成人亚洲综合A∨在线播放| 国产女人18毛片水真多1| 日韩毛片视频| 国产一级毛片在线| 久久久久亚洲精品成人网| 国产香蕉国产精品偷在线观看 | 青青草a国产免费观看| 国产一二视频| 国产精品久久久久久久久久久久| 亚洲色图狠狠干| 亚洲成a人在线观看|