me ajudar código VHDL

H

hahaconma

Guest
Eu sou um iniciante em VHDL, quando eu escrevi esse código, que gerou alguns erros, alguém pode me ajudar?
ERRO: HDLParsers: 164 - "D: / Chinh / FPGA laboratório / tráfego / STAT_MAC.vhd" Linha 40.parse error, unexpected TICK
ERRO: HDLParsers: 164 - "D: / Chinh / FPGA laboratório / tráfego / STAT_MAC.vhd" Linha 45.parse error, unexpected TICK
ERRO: HDLParsers: 164 - "D: / Chinh / FPGA laboratório / tráfego / STAT_MAC.vhd" Linha 51.parse error, unexpected TICK
ERRO: HDLParsers: 164 - "D: / Chinh / FPGA laboratório / tráfego / STAT_MAC.vhd" Linha 55.parse error, unexpected TICKLIBRARY ieee;
USE ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTIDADE STAT_MAC IS
PORT (CLK, RESET: in std_logic;
TIMER: in std_logic_vector (3 downto 0);
AMB, GRN, RD: out std_logic);END STAT_MAC;

ARQUITETURA DE COMPORTAMENTO DE STAT_MAC IS
- Variáveis de Estado de SREG máquina
- SIGNAL AMBER, next_AMBER, VERDE, next_GREEN, RED, next_RED, REDAMB,
- Next_REDAMB: std_logic;
SINAL next_AMB, next_GRN, next_RD: std_logic;
tmr sinal: std_logic_vector (3 downto 0);
BEGIN
P00: PROCESS (CLK, next_AMB, next_GRN, next_RD)
BEGIN
IF CLK = '1 'AND THEN CLK'event
AMB <= next_AMB;
GRN <= next_GRN;
RD <= next_RD;
END IF;
END PROCESS;
P01: processo (TIMER)
começo
if ((TIMER = '0100 'ou timer = '0101' ou timer = '0110 'ou timer = '0111' ou
Timer = '1100 'ou timer = '1101' ou timer = '1110 'ou timer = '1111') e RESET = '0 ') then
next_AMB <= '1 ';
ELSE next_AMB <= '0 ';
END IF;
if ((TIMER = '0000 'ou timer = '0001' ou timer = '0010 'ou timer = '0011' ou
Timer = '0100 'ou timer = '0101' ou timer = '0110 'ou timer = '0111') e RESET = '0 ') then
next_RD <= '1 ';
else next_RD <= '0 ';
END IF;

IF ((TIMER = '1000 'ou timer = '1001' ou timer = '1010 'ou timer = '1011') e RESET = '0 ') then
next_GRN <= '1 ';
ELSE next_GRN <= '0 ';
END IF;
if reset = '1 'then TIMER <= '0000'; END IF;
end process;

COMPORTAMENTO END;i wote-lo em XINLINX ISE 10,1

 
Apenas sobre o problema de sintaxe:

Você usa '0000 '(com aspas simples).Isso não é correto.Isso deve ser aspas, como "0000".

Para um std_logic_vector -> usar "(aspas duplas)
Para uma std_logic -> usar''(aspas simples)

Tenha em mente que há uma diferença entre "0" e '0 '-> O primeiro é um std_logic_vector (feitos de um único bit), e os std_logic uma segunda (também um único bit).Desde uma std_logic é sempre um único bit, você nunca vai ver mais do que um único caractere entre aspas simples.Adicionado após 14 minutos:Só uma dica (já que você vai ver que seu código não irá compilar):

TIMER é definido como uma entrada em sua entidade.
No segundo processo que pretende atribuir um valor a TIMER (baseado em RESET).Isso não é possível (TIMER sendo uma entrada).
Se o temporizador é um sinal, então você poderia fazer isso, mas não quando se trata de uma entrada entidade.

Isso é normalmente tratada como segue:

1.definir um sinal
tm sinal: std_logic_vector (3 downto 0);

2.(fora de um processo, a menos que queira um reset síncrono) atribuir o sinal entidade para o seu sinal
TMR <= TIMER quando (RESET = '1 ')
diferente
"0000";

3.Tmr Use 'timer é usado em qualquer lugar

From what I can see you, onde cerca de fazer isso ...(tendo tmr degined)

 

Welcome to EDABoard.com

Sponsor

Back
Top