基于FPGA的交通信号灯课程设计(以VHDL语言实现)(2)

2018-12-17 11:55

--复位的实现

ELSIF CP='1' AND CP 'EVENT THEN

IF JJ='1' THEN GL<=\--紧急状态的实现

ELSE --状态转换及状态中输出计时的实现 CASE S IS

WHEN S0=>

IF C>1 THEN C<=C-1; ELSE

S<=S1;C<=X\ T1C<=X\ END IF;

IF T1C>1 THEN T1C<=T1C-1; END IF;

IF T2C>1 THEN T2C<=T2C-1; END IF;

WHEN S1=>

IF C>1 THEN C<=C-1; ELSE

S<=S2;C<=X\ T1C<=X\ END IF;

IF T1C>1 THEN T1C<=T1C-1; END IF;

IF T2C>1 THEN T2C<=T2C-1; END IF;

WHEN S2=>

IF C>1 THEN C<=C-1; ELSE

S<=S3;C<=X\ T1C<=X\ END IF;

IF T1C>1 THEN T1C<=T1C-1; END IF;

IF T2C>1 THEN T2C<=T2C-1; END IF;

WHEN S3=>

IF C>1 THEN

C<=C-1; ELSE

S<=S0;C<=X\ T1C<=X\ END IF;

IF T1C>1 THEN T1C<=T1C-1; END IF;

IF T2C>1 THEN T2C<=T2C-1; END IF; END CASE; END IF; END IF; END PROCESS;

PROCESS(GL,ZL,T1C,T2C)--影子端口的赋值 BEGIN

SGL<=GL;SZL<=ZL;ST1C<=SAM(T1C);ST2C<=SAM(T2C); END PROCESS;

PROCESS(CPIN,R)—分频语言 BEGIN

IF R='1' THEN

CPCT<=10000000;

ELSIF CPIN='1' AND CPIN 'EVENT THEN IF CPCT=0 THEN

CPCT<=10000000;CP<=NOT CP; ELSE

CPCT<=CPCT-1; END IF; END IF;

END PROCESS;

END JGT;

LIBRARY IEEE; --所用的LCD模块的VHDL程序 USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity JTDLCD is

port (CPIN,R,BUSY :IN STD_LOGIC;

EW,SN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

EWRYG,SNRYG : IN STD_LOGIC_VECTOR(2 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

end entity ;

architecture JGT of JTDLCD is

TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES;

SIGNAL LCDPT : INTEGER RANGE 0 TO 10; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC;

SIGNAL ASCEW,ASCSN : STD_LOGIC_VECTOR(7 DOWNTO 0); begin

PROCESS(CPIN,R) BEGIN

CLK<=CPIN; IF R='1' THEN CPCT<=65535;

ELSIF CPIN='1' AND CPIN 'EVENT THEN IF CPCT=0 THEN

CPCT<=65535;CP<=NOT CP; ELSE

CPCT<=CPCT-1; END IF; END IF;

END PROCESS; --分频为500US周期

--主进程:拟采用500us时钟,即在500us后完成状态转换,修改LCDPT指针 --S0:初始状态,在R=1时,处于S0状态,LCDPT=0 -- 流程: 输出rst=1, 转S1

--S1:输出RST=0;判断BUSY=0? :Y: LCDPT+1;LCDPT到固定最后?::N: ->S2 -- ::Y: 转S3 -- ;N; NULL --S2:给出STROBE信号。转S1

--S1,S2完成初始化固定显示的功能

PROCESS(CP,R) BEGIN

IF R='1' THEN

S<=S0;LCDPT<=0;RST<='1';

ELSIF CP='1' AND CP 'EVENT THEN CASE S IS

WHEN S0=> S<=S1;LCDPT<=0;RST<='1'; WHEN S1=> RST<='0';STROBE<='0'; IF BUSY='0' THEN

LCDPT<=LCDPT+1; IF LCDPT=5 THEN S<=S3; ELSE

S<=S2; END IF; END IF;

WHEN S2=> S<=S1;STROBE<='1'; --S3~S4完成扫描显示功能

--S3:BUSY=0? :Y: LCDPT循环+1 ,转S4 --S4:给出STROBE信号,转S3 WHEN S3=> STROBE<='0'; IF BUSY='0' THEN

IF LCDPT=10 THEN LCDPT<=5; ELSE

LCDPT<=LCDPT+1; END IF; S<=S4; END IF;

WHEN S4=> STROBE<='1';S<=S3; WHEN OTHERS=> NULL; END CASE; END IF;

END PROCESS;

--选择输出进程(LCDPT) --LCDPT=0,NULL

-- =1~4 显示EW SN E 45H,5 W57H,6

PROCESS(LCDPT) BEGIN

CASE LCDPT IS WHEN 0 => NULL;

S53H,9 N4EH,10 WHEN 1=> DATA<=\WHEN 2=> DATA<=\WHEN 3=> DATA<=\WHEN 4=> DATA<=\ --LCDPT=5,6 EWBCD码 EH,5 EL,6 --LCDPT=7 EW 红绿灯 R,4

--LCDPT=89 SNBCD码 SH,9 SL,10

--LCDPT=10 SN 红绿灯。 G,8 R52H;Y59H;G47H

WHEN 5=>DATA<=\WHEN 6=>DATA<=\WHEN 7=>DATA<=ASCEW;ADDR<=\

WHEN 8=>DATA<=\WHEN 9=>DATA<=\WHEN 10=>DATA<=ASCSN;ADDR<=\WHEN OTHERS=> NULL; END CASE;

END PROCESS;

PROCESS(EWRYG) BEGIN

CASE EWRYG IS

WHEN \WHEN \WHEN \WHEN OTHERS=> NULL; END CASE; END PROCESS;

PROCESS(SNRYG) BEGIN

CASE SNRYG IS

WHEN \WHEN \WHEN \WHEN OTHERS=> NULL; END CASE; END PROCESS;

end architecture JGT;

三.仿真图形


基于FPGA的交通信号灯课程设计(以VHDL语言实现)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:测量器材项目可行性研究报告(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: