圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj7157_count60為
port(clk:in STD _ logic;
bcd10,BCD 1:buffer STD _ logic _ vector(3 down to 0);
present:在std_logic中;
co:out STD _ logic);
end wj 7157 _ count 60;
wj7157_count60的建築rtl為
信號co _ 1:STD _ logic;
開始
進程(時鐘,當前)
開始
如果存在='0 ',則BCD 1 & lt;="0000";
否則,如果clk='1 '和clk '事件,則
如果bcd1="1001 ",則BCD 1 & lt;="0000";
else BCD 1 & lt;= BCD 1+' 1 ';
結束if;結束if;結束if;結束進程;
進程(時鐘,當前,bcd1)
開始
如果存在='0 ',則BCD 10 & lt;="0000";co _ 1 & lt;='0';
否則,如果clk='1 '和clk '事件,則
如果bcd1="1000 "且bcd10="0101 "則co _ 1 & lt;='1';
elsif BCD 1 = " 1001 "和bcd10="0101 "然後BCD 10 & lt;="0000";co _ 1 & lt;='0';
elsif BCD 1 = " 1001 "然後BCD 10 & lt;= BCD 10+' 1 ';co _ 1 & lt;='0';
結束if;結束if;結束if;結束進程;
co & lt= not co _ 1;結束RTL;
3.時間十進制電路模塊count12的VHDL程序。
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj7157_count12是
port(clk:in STD _ logic;
bcd10,BCD 1:buffer STD _ logic _ vector(3 down to 0));
end wj 7157 _ count 12;
wj7157_count12的建築rtl為
開始
進程(時鐘)
開始
如果clk='1 '和clk '事件,則
如果bcd10="0001 "那麽如果bcd1="0001 "那麽BCD 1 & lt;="0000";
else BCD 1 & lt;= BCD 1+' 1 ';
結束if;
否則,如果bcd1="1001 ",則BCD 1 & lt;="0000";
else BCD 1 & lt;= BCD 1+' 1 ';
結束if;結束if;結束if;
結束進程;
進程(時鐘,bcd1)
開始
如果clk='1 '和clk '事件,則
如果bcd1="0001 "且bcd10="0001 ",則BCD 10 & lt;="0000";
elsif BCD 1 = " 1001 "然後BCD 10 & lt;= BCD 10+' 1 ';
結束if;結束if;結束進程;結束RTL;
時間十進制電路模塊count12時序仿真波形
4.動態解碼和顯示掃描模塊顯示的VHDL程序。
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj 7157 _顯示是
port( din0,din1,din2,din3,din4,din 5:in STD _ logic _ vector(3 down to 0);
clk:在std_logic中;
led_sa,led_sb,led_sc,led_a,led_b,led_c,led_d,led_e,led_f,led_g,led _ DP:out STD _ logic);
end wj 7157 _ display;
wj7157_display的架構表現為
信號seg:STD _ logic _ vector(6 down to 0);
信號sel:STD _ logic _ vector(2 down to 0);
信號編號:std_logic_vector(3向下到0);
信號s:STD _ logic _ vector(2 down to 0);
開始
led _ sa & lt= sel(0);led _ sb & lt= sel(1);led _ sc & lt= sel(2);led _ a & lt= seg(0);led _ b & lt= seg(1);
led _ c & lt= seg(2);led _ d & lt= seg(3);led _ e & lt= seg(4);
led _ f & lt= seg(5);led _ g & lt= seg(6);
進程(時鐘)
開始
如果clk事件和clk='1 '則
如果s="101 "那麽s & lt="000";
else s & lt= s+' 1 ';
結束if;結束if;結束進程;
過程(s,din0,din1,din2,din3,din4,din5)
開始
如果s="000 "那麽sel & lt="000";num & lt= din4led _ dp & lt='0';埃爾西弗
s="001 "然後選擇& lt="001";num & lt= din5led _ dp & lt='0';埃爾西弗
s="010 "然後選擇& lt="010";num & lt= din2led _ dp & lt='0';埃爾西弗
s="011 "然後選擇& lt="011";num & lt= din3led _ dp & lt='0';埃爾西弗
s="100 "然後選擇& lt="100";num & lt= din0led _ dp & lt='0';埃爾西弗
s="101 "然後選擇& lt="101";num & lt= din 1;led _ dp & lt='0';else sel & lt=“XXX”;num & lt=“XXXX”;led _ dp & lt='0';
結束if;結束進程;
seg & lt當num = 0時= " 011111 "
當num = 1時為“0000110”
num = 2時為“1011011”
當num = 3時為“100111”
num = 4時為“1100110”
num = 5時為“11011”
num = 6時為“11111”
當num = 7時為“0000111”
num = 8時為“111111”
當num = 9時為“110111”
當num = 10時為“110111”
“11111100”當num = 11否則
“0111001”當num = 12否則
“10111110”當num = 13否則
“1111001”當num = 14否則
“1110001”當num = 15否則
"0000000";結束行為;
動態解碼和顯示掃描模塊顯示時序模擬波形
5.報時電路設計模塊環的VHDL程序。
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj 7157 _環是
port(clk1,clk 2:in STD _ logic;
m1,m10,s1,s 10:in STD _ logic _ vector(3 down to 0);
q:out STD _ logic);
end wj 7157 _ ring;
wj 7157 _環的結構行為是
開始
流程(m1,m10,s1,s10)
開始
如果m10="0101 "和m1="1001 ",則
如果s10="0101 "則
如果s1="0101 "或s1="011 "或s1="1001 "
然後q & lt= clk 1;
結束if;結束if;
elsif m10="0000 "和m1="0000 "和s10="0000 "和s1="0000 "然後q & lt= clk2
elseq & lt='0';
結束if;結束進程;結束行為;
報時電路設計模塊的振鈴計時模擬波形
6.分頻器電路模塊div (5MHz分頻為1kHz,2kHz,5Hz)的VHDL程序
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj_div為
端口(clk_50MHz:在std_logic中;
clk_2kHz,clk_1kHz,clk _ 5Hz:out STD _ logic);
end wj _ div
wj_div的建築rtl是
信號q1,q2,q3:整數範圍0到10000100;
開始
過程(clk_50MHz)
開始
如果clk_50MHz='1 '和clk_50MHz '事件,則
如果q1=24999,則
q 1 & lt;=0;clk _ 2kHz & lt='1';
else q 1 & lt;= q 1+1;clk _ 2kHz & lt='0';
結束if;結束if;
結束進程;
過程(clk_50MHz)
開始
如果clk_50MHz='1 '和clk_50MHz '事件,則
如果q2=49999,那麽q2 & lt=0;clk _ 1 khz & lt;='1';
else q2 & lt= Q2+1;clk _ 1 khz & lt;='0';
結束if;結束if;
結束進程;
過程(clk_50MHz)
開始
如果clk_50MHz='1 '和clk_50MHz '事件,則
如果q3=9999999,那麽q3 & lt=0;clk _ 5Hz & lt='1';
else q3 & lt= Q3+1;clk _ 5Hz & lt='0';
結束if;結束if;
結束進程;
結束RTL;
由於仿真次數過多,軟件仿真條件不足,無法獲得分頻器電路模塊div時序仿真波形。
7.五頻電路模塊div5的VHDL程序。
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj7157_div5為
port(clk:in STD _ logic;
q:out STD _ logic);
end wj 7157 _ div 5;
wj7157_div5的建築rtl為
信號q 1:STD _ logic _ vector(2 down to 0);
開始
進程(時鐘)
開始
如果clk='1 '和clk '事件,則
如果q1="100 ",則q 1 & lt;="000";q & lt='1';
else q 1 & lt;= q 1+' 1 ';q & lt='0';
結束if;結束if;
結束進程;結束RTL;
時序模擬波形
8.去抖動電路模塊qudou的VHDL程序。
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj7157_qudou是
port(clk:in STD _ logic;
din:在std_logic中;
dout:out STD _ logic);
結束;
建築RTL wj 7157 _曲豆是
信號CNT:STD _ logic _ vector(6 down to 0);
開始
進程(時鐘)
開始
如果clk事件和clk='1 '則
如果din = 0,則
如果CNT = " 1100011 ",則dout & lt= '0';cnt & lt="0000000";
else cnt & lt= CNT+1;dout & lt='1';
結束if;
else dout & lt='1';
結束if;結束if;
結束進程;結束;
由於仿真次數過多,軟件仿真條件不足,無法得到去抖動電路的曲度時序仿真波形。
9.替代電路模塊mux2的VHDL程序
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
實體wj7157_mux2為
端口(a,b:以位為單位;
sel:以位為單位;
q:out bit);
端實體wj 7157 _ mu x2;
wj7157_mux2的架構壹是
開始
q & lt=a當sel='0 '否則b;
端架構壹;
二合壹電路模塊mux2時序仿真波形
10.二取四電路模塊mux4的VHDL程序設計
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ unsigned . all;
實體wj7157_mux42是
port(a,b,c,d:in STD _ logic _ vector(3 down to 0);
sel:以位為單位;
q1,Q2:out STD _ logic _ vector(3 down to 0));
端實體wj 7157 _ mux 42;
wj7157_mux42的架構之壹是
開始
流程(選擇)
開始
如果sel='0 ',那麽q 1 & lt;= c;q2 & lt= d;
else q 1 & lt;= a;q2 & lt= b;
結束if;
結束進程;
結束壹;