日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > EDA > 電子設計自動化
[導讀]一、多路彩燈控制器設計原理設計一個彩燈控制程序器??梢詫崿F四種花型循環(huán)變化,有復位開關。整個系統(tǒng)共有三個輸入信號CLK,RST,SelMode,八個輸出信號控制八個彩燈。時鐘信號CLK脈沖由系統(tǒng)的晶振產生。各種不同花

一、多路彩燈控制器設計原理

設計一個彩燈控制程序器??梢詫崿F四種花型循環(huán)變化,有復位開關。整個系統(tǒng)共有三個輸入信號CLK,RST,SelMode,八個輸出信號控制八個彩燈。時鐘信號CLK脈沖由系統(tǒng)的晶振產生。各種不同花樣彩燈的變換由SelMode控制.硬件電路的設計要求在彩燈的前端加74373鎖存器。用來對彩燈進行鎖存控制。此彩燈控制系統(tǒng)設定有四種花樣變化,這四種花樣可以進行切換,四種花樣分別為:

(1)彩燈從左到右逐次閃亮。然后從右到左逐次熄滅。

(2)彩燈兩邊同時亮兩個,然后逐次向中間點亮。

(3)彩燈從左到右兩個兩個點亮,然后從右到左兩個兩個逐次點亮。

(4)彩燈中間兩個點亮。然后同時向兩邊散開。

二、多路彩燈控制器的VHDL的實現

本控制電路采用VHDL語言設計。運用自頂而下的設計思想,按功能逐層分割實現層次化設計。根據多路彩燈控制器的設計原理,將整個控制器分為四個部分,分別對應彩燈的四種變化模式、利用VHDL語言實現該功能程序如下:

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

USE IEEE.std_loglc_ARITH.ALL;

USE IEEE.std_logic_UNSIGNED.ALL;

ENTITY CaiDeng IS

port(CLK:IN std_logic;

RST:in std_logic;

SelMode:in std_logic_vector(1 downto 0);--彩燈花樣控制

Light:out std_logic_vector(7 downto 0));

END CaiDeng;

ARCHIteCTURE control OF CaiDeng IS

SIGNAL clk1ms:std_logic:='0';

SIGNAL cnt1:std_logic_vector(3 downto 0):="0000";

SIGNAL ent2:std_logic_vector(1 downto 0):="00";

SIGNAL cnt3:std_logic_vector(3 downto 0):="0000";

SIGNAL cnt4:std_logic_vector(1 downto 0):="00";

BEGIN

P1:PR0CESS(clk1ms)

BEGIN

if(clk1ms'EVENT AND clk1ms='1')then

if selmode="00" then --第一種彩燈花樣的程序

if cnt1="1111" then

cnt1<="0000";

else cnt1<= cnt1+1;

end if;

case cnt1 is

when "0000"=>light<="10000000";

when "0001"=>light<="11000000";

when "0010"=>light<="11100000";

when "0011"=>light<="11110000";

when "0100"=>light<="11111000";

when "0101"=>light<="11111100";

when "0110"=>light<="11111110";

when "0111"=>light<="11111111";

when "1000"=>light<="11111110";

when "1001"=>light<="11111100";

when "1010"=>light<="11111000";

when "1011"=>light<="11110000";

when "1100"=>light<="11100000";

when "1101"=>light<="11000000";

when "1110"=>light<="10000000";

when others=>light<="00000000";

end case;

eLSIf selmode="01" then -- 第二種彩燈花樣的程序

if cnt2="11" then

cnt2<="00";

else cnt2<= cnt2+1;

end if;

case cnt2 is

when "00"=>light<="10000001";

when "01"=>light<="11000011";

when "10"=>light<="11100111";

when "11"=>light<="11111111";

when others=>light<="00000000";

end ease;

elsif selmode="10" then --第三種彩燈花樣的程序

if cnt3="1111" then

cnt3<="0000";

else cnt3<=cnt3+1;

end if;

case cnt3 is

when "0000"=>light<="11000000";

when "0001"=>light<="01100000";

when "0010"=>light<="00110000";

when "0011"=>light<="00011000";

when "0100"=>light<="00001100";

when "0101"=>light<="00000110";

when "0110"=>light<="00000011";

when "0111"=>light<="00000110";

when "1000"=>light<="00001100";

when "1001"=>light<="00011000";

when "1010"=>light<="00110000";

when "1011"=>light<="01100000";

when "1100"=>light<="11000000";

when others=>light<="00000000";

end case;

elsif selmode="11" then -- 第四種彩燈花樣的程序

if cnt4="11" then

cnt4<="00";

else cnt4<= cnt4+1;

end if;

case cnt4 is

when "00"=>light<="00011000";

when "01"=>light<="00111100";

when "10"=>light<="01111110";

when "11"=>light<="11111111";

when others=>light<="00000000";

end ease;

end if;

end if;

END PROCESS P1;

P2:PROCESS(clk) --分頻進程

variable cnt:integer range 0 to 1000;

BEGIN

IF(RST='0')then

cnt:=0:

ELSIF(clk'EVENT AND clk='1')then

if cnt<999 then

cnt:=cnt+1;

clk1ms<='0';

else

cnt:=0;

clk1ms<='1';

end if;

end if;

end PROCESS P2;

end cONtrol;

三、功能仿真及下載驗證

各模塊VHDL程序經過編譯優(yōu)化后,選擇合適的目標芯片進行綜合、管腳配置。本電路選用ALTERA公司的可編程邏輯芯片EPM7128SLC84-6,由MAX+Plus II進行仿真,從仿真波形可以看出,此程序可以實現四種不同花樣彩燈的相互變換,每種花樣彩燈可以循環(huán)變化。但是如果系統(tǒng)的固有頻率很大,彩燈的閃爍速度非???,看到的現象是每個花樣的八個彩燈同時被點亮,為了實現絢麗多彩的景象,必須要在程序中加一個分頻進程如上述程序的進程P2。

四、結束語

本次設計的程序已經在硬件系統(tǒng)上得到了驗證,實驗表明。此設計方法能夠滿足四種不同花樣彩燈的變化要求,并且該方法便于擴展不同變化模式的彩燈花樣,各個不同花樣的相互轉變是手動切換實現的。自動切換的方法筆者不再累述。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉