EDA交通灯课程设计.docx
- 文档编号:11265697
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:19
- 大小:16.46KB
EDA交通灯课程设计.docx
《EDA交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《EDA交通灯课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
EDA交通灯课程设计
pin1m.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitypin1mis
port(clkin:
instd_logic;
clk1m:
outstd_logic);
endpin1m;
architecturebehaofpin1mis
begin
process(clkin)
variablecnttemp:
INTEGERRANGE0to999999;
begin
ifclkin='1'andclkin'eventthen
ifcnttemp=999999thencnttemp:
=0;
else
ifcnttemp<500000thenclk1m<='1';
elseclk1m<='0';
endif;
cnttemp:
=cnttemp+1;
endif;
endif;
endprocess;
endbeha;
pin50.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitypin50is
port(clkin:
instd_logic;
clk1m:
outstd_logic);
endpin50;
architecturebehaofpin50is
begin
process(clkin)
variablecnttemp:
INTEGERRANGE0to49;
begin
ifclkin='1'andclkin'eventthen
ifcnttemp=49thencnttemp:
=0;
else
ifcnttemp<25thenclk1m<='1';
elseclk1m<='0';
endif;
cnttemp:
=cnttemp+1;
endif;
endif;
endprocess;
endbeha;
cnt5.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycnt5is
port(clk:
instd_logic;
reset:
instd_logic;
qh,ql:
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcnt5;
architectureartofcnt5is
begin
process(clk,reset)
begin
qh<="0000";
ifreset='1'then
ql<="0101";
elsif(clk'eventandclk='1')then
ifql="0000"then
ql<="0101";
co<='1';
else
ql<=ql-1;
co<='0';
endif;
endif;
endprocess;
endart;
Cnt45.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycnt45is
port(clk:
instd_logic;
qh,ql:
bufferstd_logic_vector(3downto0);
co:
outstd_logic;
reset:
instd_logic);
endcnt45;
architectureartofcnt45is
begin
process(clk,reset)
begin
ifreset='1'then
qh<="0100";
ql<="0101";
elsif(clk'eventandclk='1')then
if(qh="0000"andql="0000")then
qh<="0100";
ql<="0101";
co<='1';
else
co<='0';
ifql="0000"then
ql<="1001";
qh<=qh-1;
elseql<=ql-1;
endif;
endif;
endif;
endprocess;
endart;
Cnt50.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycnt50is
port(clk:
instd_logic;
qh,ql:
bufferstd_logic_vector(3downto0);
co:
outstd_logic;
reset:
instd_logic);
endcnt50;
architectureartofcnt50is
begin
process(clk,reset)
begin
ifreset='1'then
ql<="0000";
qh<="0101";
elsif(clk'eventandclk='1')then
if(ql="0000"andqh="0000")then
ql<="0000";
qh<="0101";
co<='1';
else
co<='0';
ifql="0000"then
ql<="1001";
qh<=qh-1;
elseql<=ql-1;
endif;
endif;
endif;
endprocess;
endart;
Set.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useIEEE.STD_LOGIC_ARITH.ALL;
entitysteis
port(clk:
instd_logic;
clr:
outstd_logic;
clr1:
outstd_logic;
read:
outstd_logic_vector(5downto0));
endste;
architectureartofsteis
typestateis(s0,s1,s2,s3);
signalcurrent_s:
state;
begin
process(clk)
variablecnt:
integerrange0to45;
begin
if(clk'eventandclk='1')thenclr<='0';clr1<='0';
cnt:
=cnt+1;
casecurrent_sis
whens0=>read<="001100";
ifcnt=45thencurrent_s<=s1;cnt:
=0;clr<='1';
endif;
whens1=>read<="010100";
ifcnt=6then
current_s<=s2;cnt:
=0;clr<='1';clr1<='1';
endif;
whens2=>read<="100001";
ifcnt=45then
current_s<=s3;cnt:
=0;clr<='1';
endif;
whens3=>read<="100010";
ifcnt=6then
current_s<=s0;cnt:
=0;clr<='1';clr1<='1';
endif;
whenothers=>current_s<=s0;clr<='1';
endcase;
endif;
endprocess;
endart;
Choice4.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitychoice4is
port(readin:
instd_logic_vector(5downto0);
q50,q45,q5:
instd_logic_vector(7downto0);
time_m,time_b:
outstd_logic_vector(7downto0));
endchoice4;
architectureartofchoice4is
begin
process(readin)
begin
casereadinis
when"001100"=>time_m<=q45;time_b<=q50;
when"010100"=>time_m<=q5;time_b<=q50;
when"100001"=>time_m<=q50;time_b<=q45;
when"100010"=>time_m<=q50;time_b<=q5;
whenothers=>time_m<=q45;time_b<=q50;
endcase;
endprocess;
endart;
Lcd.vhd
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useIEEE.STD_LOGIC_ARITH.ALL;
entityLCDis
generic(divide_to_100k:
integer:
=500);
port(clk:
instd_logic;
read_mr,read_my,read_mg:
instd_logic;
read_br,read_by,read_bg:
instd_logic;
read_time_m,read_time_b:
instd_logic_vector(7downto0);
rw,rs,e,lcd_rst:
outstd_logic;
lcd_data:
outstd_logic_vector(7downto0));
endLCD;
architecturetclofLCDis
signalclk_100k:
std_logic;
signalryg_buffer:
std_logic_vector(5downto0);
signaldoutmh,doutml,doutbh,doutbl:
std_logic_vector(7downto0);
typestateis(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,
s11,s12,s13,s14,s15,s16,s17);
signalcurrent_s:
state;
typedata_bufferisarray(0to15)ofstd_logic_vector(7downto0);
typedata_buffer1isarray(0to1)ofstd_logic_vector(7downto0);
signaldisp_time_m:
data_buffer1;
signaldisp_time_b:
data_buffer1;
signaldisp_led_m:
data_buffer1;
signaldisp_led_b:
data_buffer1;
--signaldisp_led_add:
data_buffer1;
--signaldisp_led_buf:
data_buffer1;
--constantdisp_led_add:
=(x"8b",x"9b");
constantdata_buf0:
data_buffer:
=(x"bb",x"aa",x"bf",x"c6",
x"b4",x"f3",x"ce",x"e4",
x"b2",x"fd",x"b7",x"d6",
x"d0",x"a3",x"20",x"20");
constantdata_buf1:
data_buffer:
=(x"d0",x"c5",x"cf",x"a2",
x"cf",x"b5",x"b5",x"e7",
x"d0",x"c5",x"30",x"36",
x"30",x"31",x"20",x"20");
constantdata_buf2:
data_buffer:
=(x"bd",x"bb",x"cd",x"a8",
x"d0",x"c5",x"ba",x"c5",
x"bf",x"d8",x"d6",x"c6",
x"c6",x"f7",x"20",x"20");
constantdata_buf3:
data_buffer:
=(x"20",x"20",x"20",x"20",
x"bd",x"b9",x"c1",x"a2",
x"b1",x"f2",x"20",x"20",
x"20",x"20",x"20",x"20");
constantdata_buf4:
data_buffer:
=(x"bd",x"bb",x"cd",x"a8",
x"d0",x"c5",x"ba",x"c5",
x"bf",x"d8",x"d6",x"c6",
x"c6",x"f7",x"20",x"20");
constantdata_buf5:
data_buffer:
=(x"c2",x"b7",x"bf",x"da",
x"20",x"20",x"d7",x"b4",
x"cc",x"ac",x"20",x"20",
x"ca",x"b1",x"bc",x"e4");
constantdata_buf6:
data_buffer:
=(x"d6",x"f7",x"b5",x"c0",
x"20",x"20",x"ba",x"ec",
x"b5",x"c6",x"20",x"20",
x"35",x"30",x"73",x"20");
constantdata_buf7:
data_buffer:
=(x"d6",x"a7",x"b5",x"c0",
x"20",x"20",x"c2",x"cc",
x"b5",x"c6",x"20",x"20",
x"34",x"35",x"73",x"20");
begin
--U1:
divclk1portmap(clk,clk_100k);
process(clk)
variablecnt:
integerrange0todivide_to_100k;
begin
if(clk'eventandclk='1')thencnt:
=cnt+1;
if(cnt=divide_to_100k)thencnt:
=0;
endif;
if(cnt elseclk_100k<='1'; endif; endif; endprocess; doutmh<=read_time_m(7downto4)+x"30"; doutml<=read_time_m(3downto0)+x"30"; doutbh<=read_time_b(7downto4)+x"30"; doutbl<=read_time_b(3downto0)+x"30"; disp_time_m(0)<=doutmh; disp_time_m (1)<=doutml; disp_time_b(0)<=doutbh; disp_time_b (1)<=doutbl; ryg_buffer<=read_mr&read_my&read_mg&read_br&read_by&read_bg; process(ryg_buffer) begin caseryg_bufferis whenb"001_100"=>disp_led_m<=(x"c2",x"cc");disp_led_b<=(x"ba",x"ec"); whenb"010_100"=>disp_led_m<=(x"bb",x"c6");disp_led_b<=(x"ba",x"ec"); whenb"100_001"=>disp_led_m<=(x"ba",x"ec");disp_led_b<=(x"c2",x"cc"); whenb"100_010"=>disp_led_m<=(x"ba",x"ec");disp_led_b<=(x"bb",x"c6"); whenothers=>null; endcase; endprocess; process(clk_100k) variablecnt1: integerrange0to10000; variablecnt_1: integerrange0to1000; variablecode_cnt: integerrange0to13; variabledata_cnt: integerrange0to480; --variableadd_cnt: integerrange0to1; begin if(clk_100k'eventandclk_100k='1')then casecurrent_sis whens0=>rw<='1';rs<='1';e<='1';cnt1: =cnt1+1; ifcnt1<500thenlcd_rst<='0'; elsifcnt1<1000thenlcd_rst<='1'; elsifcnt1=1000then lcd_rst<='1';cnt1: =0;current_s<=s1; endif; whens1=>cnt_1: =cnt_1+1; ifcnt_1<1*3thene<='1';rs<='0';rw<='0'; elsifcnt_1<2*3thenlcd_data<=x"0c"; elsifcnt_1<10*3thene<='0'; elsifcnt_1=10*3thencnt_1: =0;current_s<=s2; endif; whens2=>cnt_1: =cnt_1+1; ifcnt_1<1*3thene<='1';rs<='0';rw<='0'; elsifcnt_1<2*3thenlcd_data<=x"80"; elsifcnt_1<10*3thene<='0'; elsifcnt_1=10*3thencnt_1: =0;current_s<=s3; endif; whens3=> ifcnt_1<1*3thene<='1';rs<='1';rw<='0'; elsifcnt_1<2*3thenlcd_data<=data_buf8(data_cnt); elsifcnt_1=2*3thendata_cnt: =data_cnt+1; elsifcnt_1<100thene<='0'; endif; cnt_1: =cnt_1+1; ifcnt_1=100thencnt_1: =0; ifdata_cnt=16thencurrent_s<=s4; data_cnt: =0; endif; endif; whens4=>cnt_1: =cnt_1+1; ifcnt_1<1*3thene<='1';rs<='0';rw<='0'; elsifcnt_1<2*3thenlcd_data<=x"90"; elsifcnt_1<10*3thene<='0'; elsifcnt_1=10*3thencnt_1: =0;current_s<=s5; endif; whens5=> ifcnt_1<1*3thene<='1';rs<='1';rw<='0'; elsifcnt_1<2*3thenlcd_data<=data_buf5(data_cnt); elsifcnt_1=2*3thendata_cnt: =data_cnt+1; elsifcnt_1<100thene<='0'; endif; cnt_1: =cnt_1+1; ifcnt_1=100thencnt_1: =0; ifdata_cnt=16thencurrent_s<=s6; data_cnt: =0; endif; endif; whens6=>cnt_1: =cnt_1+1; ifcnt_1<1*3thene<='1';rs<='0';rw<='0'; elsifcnt_1<2*3thenlcd_data<=x"88"; elsifcnt_1<10*3thene<='0'; elsifcnt_1=10*3thencnt_1: =0;current_s<=s7; endif; whens7=> ifcnt_1<1*3thene<='1';rs<='1';rw<='0'; elsifcnt_1<2*3thenlcd_data<=data_buf6(data_cnt); elsifcnt_1=2*3thendata_cnt: =data_cnt+1; elsifcnt_1<100thene<='0'; endif; cnt_1: =cnt_1+1; ifcnt_1=100thencnt_1: =0; ifdata_cnt=16thencurrent_s<=s8; data_cnt: =0; endif; endif; whens8=>cnt_1: =cnt_1+1; ifcnt_1<1*3thene<='1';rs<='0';rw<='0'; elsifcnt_1<2*3then
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 交通灯 课程设计