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级毛片| www.狠狠| 一本色道久久88综合日韩精品| 久久www视频| 午夜在线不卡| 久久国产拍爱| 国产玖玖视频| 日韩久久精品无码aV| 五月激情婷婷综合| 天天激情综合| 亚洲第一成年网| 原味小视频在线www国产| 国产高清不卡视频| 亚洲伊人天堂| 亚洲第一网站男人都懂| 国产情侣一区| 福利姬国产精品一区在线| 国产毛片不卡| 一级毛片高清| 欧美成人手机在线观看网址| 亚洲天堂2014| 91精品免费高清在线| 日本爱爱精品一区二区| 高清免费毛片| 国产精品区视频中文字幕| 国产91麻豆免费观看| 在线观看免费AV网| 一级爱做片免费观看久久| av一区二区三区在线观看| 国产一级毛片yw| 九色最新网址| 亚洲成人免费看| 国产日产欧美精品| 亚洲色婷婷一区二区| 一个色综合久久| 114级毛片免费观看| 自拍中文字幕| 国产一级毛片网站| 欧美伊人色综合久久天天| 美女无遮挡被啪啪到高潮免费| 国产成人综合日韩精品无码首页 | 国产精品太粉嫩高中在线观看| 欧美一区二区三区不卡免费| 欧美午夜理伦三级在线观看 | 伊在人亞洲香蕉精品區| 日本免费高清一区| 国产精品亚洲一区二区在线观看| 99久久性生片| 亚洲精品国产成人7777| 久久精品无码一区二区国产区| 毛片最新网址| 2022国产91精品久久久久久| 久操中文在线| 国产女人在线观看| 亚洲国产欧美目韩成人综合| 98精品全国免费观看视频| 中国一级特黄大片在线观看| 色综合天天视频在线观看| 国产成熟女人性满足视频| 亚洲v日韩v欧美在线观看| 久久久久青草大香线综合精品| 亚洲综合精品香蕉久久网| 自慰网址在线观看| 久久人午夜亚洲精品无码区| 国产成人夜色91| 欧美日韩国产一级| 国产69囗曝护士吞精在线视频| 91久久精品国产| 国产伦精品一区二区三区视频优播| 国产真实乱子伦精品视手机观看| 国产成人综合日韩精品无码不卡| 午夜激情婷婷| 色综合五月婷婷| 国产成人免费观看在线视频| 欧美人人干| 国产在线视频自拍| 91精品最新国内在线播放| 日韩国产黄色网站| 欧美精品v| 97久久精品人人| 欧美成人免费午夜全| 四虎影视8848永久精品|