完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这个是简易交通灯控制系统。脑快爆了
(1) 南北干道绿灯和东西干道的绿灯不能同时亮;如果同时亮,则应自动立即关闭信号灯系统,并立即发出报警信号(如LED灯)。 (2) 系统的初始状态是两个干道的红灯全亮。 (3) 系统工作后,首先东西干道红灯亮并维持20s,数码管的显示起始时间为19s,然后依次递减至0。前17s南北干道绿灯亮,后3s黄灯亮,期间数码管不显示。 (4) 然后,南北干道红灯亮并维持25s,数码管的显示起始时间为24s,然后依次递减至0。前20s东西干道绿灯亮,后5s黄灯亮,期间数码管不显示。 (5) 允许在紧急状态下,比如十字路口恶性交通事故时,两方向均为红灯,车辆禁止通行。当紧急状态解除后,重新计时并指示时间。 (6) 系统的南北干道和东西干道亮红灯的时间可由用户根据路况自设。比如在白天某一时段,南北干道的路段较繁忙,对应的通行时间较长。 (7) 如系统出现故障,不能正常显示,则黄灯全部闪烁以提醒车辆注意。 对 了。板子用的是MAS7000S 的EPM7128LS84-15 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENtiTY JTD IS PORT(CLK:IN STD_LOGIC; START,GZ,SG,RST:IN STD_LOGIC; RED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--------4红灯 YELLOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-----4黄灯 GREEN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -----4绿灯 CNT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);------7端数码管的控制。 DISPLAY:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-----7端数码管显示 SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); --片选 END JTD; -------------------------------------------------------- ARCHITECTURE behave OF JTD IS SIGNAL COUNT:INTEGER RANGE 250 DOWNTO 0; SIGNAL A,LOAD,CLK1HZ:STD_LOGIC; SIGNAL DX,NB:STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL CNT1,CNT2,LOAD1,LOAD2:STD_LOGIC_VECTOR(3 DOWNTO 0); TYPE states IS (guzhang,shigu,s0,s1,s2,s3); SIGNAL current_state,next_state : states; SIGNAL time_data:integer RANGE 0 TO 25; BEGIN -------------------------------------------------------- p1: PROCESS(CLK,CLK1HZ,COUNT) --分频电路 BEGIN IF CLK'EVENT AND CLK='1' THEN COUNT<=0; IF COUNT<250 THEN COUNT<=COUNT+1; ELSE CLK1HZ<=NOT CLK1HZ;COUNT<=0; END IF;END IF; END PROCESS; ------------------------------------------------------- p2: PROCESS(RST,GZ,START,CLK1HZ) --状态条件 BEGIN IF CLK1HZ'EVENT AND CLK1HZ='1' THEN IF RST='1' THEN current_state<=shigu; ELSIF SG='1' THEN current_state<=shigu; ELSIF GZ='1' THEN current_state<=guzhang; ELSIF START='1' THEN current_state<=next_state; ELSE current_state<=current_state; END IF; END IF; END PROCESS; ------------------------------------------------------ p3: PROCESS(current_state,CLK1HZ,GZ,SG)--状态主进程 VARIABLE d0:STD_LOGIC_VECTOR(3 DOWNTO 0):="1111"; VARIABLE d1:STD_LOGIC_VECTOR(3 DOWNTO 0):="1010"; VARIABLE d2:STD_LOGIC_VECTOR(3 DOWNTO 0):="0101"; VARIABLE d3:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; BEGIN IF START='1' THEN IF RST='1' THEN CNT2<="0010"; CNT1<="0100"; ELSIF CLK1HZ'EVENT AND CLK1HZ='1' THEN IF LOAD='1' THEN CNT2<=LOAD2;CNT1<=LOAD1; ELSIF CNT2="0000"AND CNT1="0000"THEN CNT2<="0000";CNT1<="0000"; ELSIF CNT1=9 THEN CNT1<="0000"; IF CNT2=2 THEN CNT2<="0000"; ELSE CNT2<=CNT2-1; END IF; ELSE CNT1<=CNT1-1; END IF; END IF; ELSE CNT2<="0000";CNT1<="0000"; END IF; CASE current_state IS WHEN guzhang=> YELLOW<=CLK1HZ; WHEN shigu=>IF SG='1' OR START='0' THEN RED<=d0;YELLOW<=d3;GREEN<=d3; ELSE current_state<=s0;LOAD<='0'; WHEN s0=>LOAD<='1';LOAD2<="0001";LOAD1<="1111"; IF CNT2<2 THEN RED<=d1;GREEN<=d2;YELLOW<=d3; ELSIF CNT2=0 AND CNT1<3 THEN RED<=d1;GREEN<=d3;YELLOW<=d2;A<='0'; ELSIF CNT2=0 AND CNT1=0 THEN current_state<=s1; A='1'; WHEN s1=>LOAD<='1';LOAD2<="0010";LOAD1<="0100"; IF CNT2<3 THEN RED<=d2;GREEN<=d1;YELLOW<=d3; ELSIF CNT2=0 AND CNT1<5 THEN RED<=d2;GREEN<=d3;YELLOW<=d1;A<='0'; ELSIF CNT2=0 AND CNT1=0 THEN current_state<=shigu;A='1'; END PROCESS; ----------------------------------------------------- P4: PROCESS(CLK) --显示电路 VARIABLE Q:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK='1' THEN IF Q<1 THEN Q:=Q+1; ELSE Q:=(OTHERS=>'0'); END IF; END IF; IF A='1' THEN IF Q="000" THEN CNT<=CNT1; ELSE IF Q="001" THEN CNT<=CNT2; END IF;END IF; ELSE CNT<="0000"; END IF; SEL<=Q; CASE CNT IS WHEN "0000" => DISPLAY <="0111111"; --显示0 WHEN "0001" => DISPLAY <="0000110"; --显示1 WHEN "0010" => DISPLAY <="1011011"; --显示2 WHEN "0011" => DISPLAY <="1001111"; --显示3 WHEN "0100" => DISPLAY <="1100110"; --显示4 WHEN "0101" => DISPLAY <="1101101"; --显示5 WHEN "0110" => DISPLAY <="1111101"; --显示6 WHEN "0111" => DISPLAY <="0000111"; --显示7 WHEN "1000" => DISPLAY <="1111111"; --显示8 WHEN "1001" => DISPLAY <="1101111"; --显示9 WHEN "1010" => DISPLAY <="1000100"; --显示左转 WHEN "1011" => DISPLAY <="1010000"; --显示右转 WHEN OTHERS=>NULL; END CASE; END PROCESS; END behave; 编译结果。。。。看不懂。找不出 Info: Running Quartus II Analysis & Synthesis Info: Version 4.1 Build 181 06/29/2004 SJ Full Version Info: Processing started: Sat Jun 04 22:46:28 2011 Info: Command: quartus_map --import_settings_files=on --export_settings_files=off JTD -c JTD Info: ******************************************************************* Error: VHDL error at JTD.vhd(73): type of identifier clk1hz does not agree with its usage as std_logic_vector type Error: VHDL syntax error at JTD.vhd(77) near text "WHEN"; expecting "loop" Error: VHDL syntax error at JTD.vhd(82) near text "="; expecting "'" or "(" or "." Error: VHDL syntax error at JTD.vhd(88) near text "="; expecting "'" or "(" or "." Error: VHDL syntax error at JTD.vhd(92) near text "VARIABLE"; expecting ":=" or "<=" Error: VHDL Type Conversion error at JTD.vhd(92): converted type of object near text or symbol std_logic_vector must match void type of target object Error: VHDL syntax error at JTD.vhd(93) near text "BEGIN"; expecting "end" Error: VHDL Variable Assignment Statement error at JTD.vhd(95): target object q must be variable or aggregate Error: VHDL Variable Assignment Statement error at JTD.vhd(96): target object q must be variable or aggregate Error: VHDL expression error at JTD.vhd(95): illegal q in expression Error: VHDL expression error at JTD.vhd(101): illegal q in expression Error: VHDL expression error at JTD.vhd(100): illegal q in expression Error: VHDL expression error at JTD.vhd(105): illegal q in expression Error: VHDL error at JTD.vhd(105): type of identifier q does not agree with its usage as std_logic_vector type Error: VHDL Interface Declaration error in JTD.vhd(106): interface object cnt of mode out cannot be read. Change object mode to buffer or inout. Error: VHDL syntax error at JTD.vhd(121) near text "PROCESS"; expecting "if" Error: VHDL error at JTD.vhd(122): type of identifier behave does not agree with its usage as void type Info: Found 0 design units, including 0 entities, in source file JTD.vhd Error: Quartus II Analysis & Synthesis was unsuccessful. 17 errors, 0 warnings Error: Processing ended: Sat Jun 04 22:46:29 2011 Error: Elapsed time: 00:00:00 Error: Quartus II Full Compilation was unsuccessful. 17 errors, 0 warnings |
|
相关推荐
2个回答
|
|
Error: VHDL error at JTD.vhd(73): type of identifier clk1hz does not agree with its usage as std_logic_vector type
这个错误的类型是你定义的类型和实际用法不对,可以更改clk1hz为interger, 对于每一个错误要结合错误上面的右键弹出help去更改。程序中每一个if开始语句最后都要加end if,每个case语句要加end case等等,一个错误一个错误的排除。 |
|
|
|
Error: VHDL Variable Assignment Statement error at JTD.vhd(95): target object q must be variable or aggregate Error: VHDL Variable Assignment Statement error at JTD.vhd(96): target object q must be variable or aggregate Error: VHDL expression error at JTD.vhd(95): illegal q in expression Error: VHDL expression error at JTD.vhd(101): illegal q in expression Error: VHDL expression error at JTD.vhd(100): illegal q in expression Error: VHDL expression error at JTD.vhd(105): illegal q in expression Error: VHDL error at JTD.vhd(105): type of identifier q does not agree with its usage as std_logic_vector type 这几项错误都是与Q的定义有关 把Q定义为整形
交通灯控制器的设计(EDA设计_VHDL语言_毕业设计).doc
(1.75 MB, 下载次数: 15
)
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
518 浏览 0 评论
845 浏览 0 评论
1683 浏览 0 评论
454 浏览 0 评论
631 浏览 0 评论
1218 浏览 23 评论
5451 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-2 23:25 , Processed in 0.511719 second(s), Total 77, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号