當前位置:編程學習大全網 - 編程語言 - eda編程

eda編程

1的VHDL程序。分秒六十進制電路模塊計數60

圖書館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;

結束進程;

結束壹;

  • 上一篇:學習編程壹般要怎麽做
  • 下一篇:小男孩學什麽特長好?
  • copyright 2024編程學習大全網