L
lzh08
Guest
LIBRARY ieee;
ieee.std_logic_1164.all utilização;
ENTIDADE MCU é
PORT
(
nDataStrobe: in std_logic;
nAddrStrobe: in std_logic;
NWRI: in std_logic;
nReset: in std_logic;
Data: inout std_logic_vector (7 DOWNTO 0);
nWait: out std_logic;
nAck: out std_logic;
SysClk: in std_logic;
Reset: in std_logic
);
END MCU;
ARQUITETURA Ação da MCU é
TIPO estado é (Idle, DataRead, DataWrite, AddrRead, AddrWrite,
DataReadEnd, DataWriteEnd, AddrReadEnd, AddrWriteEnd);
SINAL Cur_State, Next_State: Estado: = Idle;
SINAL RegDataTemp: std_logic_vector (7 downto 0);
SINAL RegAddrTemp: std_logic_vector (7 downto 0);
BEGIN
PROCESSO (Cur_State, nDataStrobe, NWRI, nAddrStrobe, RegDataTemp, RegAddrTemp, Data)
começo
nWait <= '0 ';
caso é Cur_State
quando ocioso nWait => <= '0 ';
if ((NWRI = '1 ') e (nDataStrobe = '0')) then
Next_State <= DataRead;
elsif ((NWRI = '0 ') e (nDataStrobe = '0')) then
Next_State <= DataWrite;
elsif ((NWRI = '1 ') e (nAddrStrobe = '0')) then
Next_State <= AddrRead;
elsif ((NWRI = '0 ') e (nAddrStrobe = '0')) then
Next_State <= AddrWrite;
diferente
Next_State <= Espera;
END IF;
quando DataRead => Data <= RegDataTemp;
nWait <= '1 ';
Next_State <= DataReadEnd;
quando DataWrite => RegDataTemp <= dados;
nWait <= '1 ';
Next_State <= DataWriteEnd;
quando AddrRead => Data <= RegAddrTemp;
nWait <= '1 ';
Next_State <= AddrReadEnd;
quando AddrWrite => RegAddrTemp <= dados;
nWait <= '1 ';
Next_State <= AddrWriteEnd;
quando DataReadEnd => if (nDataStrobe = '1 ') then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= DataReadEnd;
END IF;
quando AddrReadEnd => if (nAddrStrobe = '1 ') then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= AddrReadEnd;
END IF;
quando DataWriteEnd => if ((NWRI = '1 ') e (nDataStrobe = '1')) then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= DataWriteEnd;
END IF;
quando AddrWriteEnd => if ((NWRI = '1 ') e (nAddrStrobe = '1')) then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= AddrWriteEnd;
END IF;
quando outros => Next_State <= Espera;
end case;
end process;
processo (Reset, SysClk)
começo
if reset = '0 'then
Cur_State <= Espera;
elsif rising_edge (SysClk), então
Cur_State <= Next_State;
END IF;
end process;
final de Acção;
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "dados" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "Data" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "RegDataTemp" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "RegDataTemp" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "RegAddrTemp" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "RegAddrTemp" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Warning: porta de saída "NACK" na MCU.VHD (13) não tem driver
Atenção: Trava Data [0] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [1] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava Data [2] $ latch tem comportamento inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [3] $ latch tem comportamento inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [4] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [5] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [6] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [7] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: TRI ou OPNDRN buffers permanentemente habilitado
Atenção: Node "Data [0] ~ 8"
Atenção: Nó "Data [1] ~ 9"
Atenção: Nó "Data [2] ~ 10"
Atenção: Nó "Data [3] ~ 11"
Atenção: Nó "Data [4] ~ 12"
Atenção: Nó "Data [5] ~ 13"
Atenção: Nó "Data [6] ~ 14"
Atenção: Nó "Data [7] ~ 15"
Atenção: os pinos de saída são presos no VCC ou GND
Atenção: Pin "NACK" preso em GND
Warning: Design contém 1 pino de entrada (s) que não conduza a lógica
Atenção: Não há saída dependente da entrada pino "nReset"
Aviso: Os seguintes 8 pinos não tem saída ou permitir uma saída GND ou VCC permitir - às alterações posteriores a essa conectividade podem alterar resultados de montagem
Info: Pino Data [0] tem uma saída permanentemente habilitado permitir
Info: Pino Data [1] tem uma saída permanentemente habilitado permitir
Info: Pino Data [2] tem uma saída permanentemente habilitado permitir
Info: Pino Data [3] tem uma saída permanentemente habilitado permitir
Info: Pin dados [4] tem uma saída permanentemente habilitado permitir
Info: Pin dados [5] tem uma saída permanentemente habilitado permitir
Info: Pin dados [6] tem uma saída permanentemente habilitado permitir
Info: Pin dados [7], foi uma saída permanentemente habilitado permitir
Atenção: A contar de 1 de pinos não tem nada, GND, VCC ou condução porta datain - alterações a essa conectividade podem alterar os resultados montagem
Info: nAck Pin tem GND dirigindo seu porto datain
Atenção: Timing Analysis encontrado um ou mais fechos implementados como circuitos combinacionais
Atenção: Node "RegDataTemp [0]" é um trinco
Atenção: Node "RegAddrTemp [0]" é um trinco
Atenção: Nó "Data [0] $ latch" é um trinco
Atenção: Node "RegDataTemp [1]" é um trinco
Atenção: Node "RegAddrTemp [1]" é um trinco
Atenção: Nó "Data [1] $ latch" é um trinco
Atenção: Node "RegDataTemp [2]" é um trinco
Atenção: Node "RegAddrTemp [2]" é um trinco
Atenção: Nó "Data [2] $ latch" é um trinco
Atenção: Node "RegDataTemp [3]" é um trinco
Atenção: Node "RegAddrTemp [3]" é um trinco
Atenção: Nó "Data [3] $ latch" é um trinco
Atenção: Node "RegAddrTemp [4]" é um trinco
Atenção: Node "RegDataTemp [4]" é um trinco
Atenção: Nó "Data [4] $ latch" é um trinco
Atenção: Node "RegAddrTemp [5]" é um trinco
Atenção: Node "RegDataTemp [5]" é um trinco
Atenção: Nó "Data [5] $ latch" é um trinco
Atenção: Node "RegDataTemp [6]" é um trinco
Atenção: Node "RegAddrTemp [6]" é um trinco
Atenção: Nó "Data [6] $ latch" é um trinco
Atenção: Node "RegAddrTemp [7]" é um trinco
Atenção: Node "RegDataTemp [7]" é um trinco
Atenção: Nó "Data [7] $ latch" é um trinco
Atenção: os pinos encontrados funcionando como relógios indefinido e / ou memória permite
Info: nó Assumindo "SysClk" é um relógio indefinidoCódigo:
ieee.std_logic_1164.all utilização;
ENTIDADE MCU é
PORT
(
nDataStrobe: in std_logic;
nAddrStrobe: in std_logic;
NWRI: in std_logic;
nReset: in std_logic;
Data: inout std_logic_vector (7 DOWNTO 0);
nWait: out std_logic;
nAck: out std_logic;
SysClk: in std_logic;
Reset: in std_logic
);
END MCU;
ARQUITETURA Ação da MCU é
TIPO estado é (Idle, DataRead, DataWrite, AddrRead, AddrWrite,
DataReadEnd, DataWriteEnd, AddrReadEnd, AddrWriteEnd);
SINAL Cur_State, Next_State: Estado: = Idle;
SINAL RegDataTemp: std_logic_vector (7 downto 0);
SINAL RegAddrTemp: std_logic_vector (7 downto 0);
BEGIN
PROCESSO (Cur_State, nDataStrobe, NWRI, nAddrStrobe, RegDataTemp, RegAddrTemp, Data)
começo
nWait <= '0 ';
caso é Cur_State
quando ocioso nWait => <= '0 ';
if ((NWRI = '1 ') e (nDataStrobe = '0')) then
Next_State <= DataRead;
elsif ((NWRI = '0 ') e (nDataStrobe = '0')) then
Next_State <= DataWrite;
elsif ((NWRI = '1 ') e (nAddrStrobe = '0')) then
Next_State <= AddrRead;
elsif ((NWRI = '0 ') e (nAddrStrobe = '0')) then
Next_State <= AddrWrite;
diferente
Next_State <= Espera;
END IF;
quando DataRead => Data <= RegDataTemp;
nWait <= '1 ';
Next_State <= DataReadEnd;
quando DataWrite => RegDataTemp <= dados;
nWait <= '1 ';
Next_State <= DataWriteEnd;
quando AddrRead => Data <= RegAddrTemp;
nWait <= '1 ';
Next_State <= AddrReadEnd;
quando AddrWrite => RegAddrTemp <= dados;
nWait <= '1 ';
Next_State <= AddrWriteEnd;
quando DataReadEnd => if (nDataStrobe = '1 ') then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= DataReadEnd;
END IF;
quando AddrReadEnd => if (nAddrStrobe = '1 ') then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= AddrReadEnd;
END IF;
quando DataWriteEnd => if ((NWRI = '1 ') e (nDataStrobe = '1')) then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= DataWriteEnd;
END IF;
quando AddrWriteEnd => if ((NWRI = '1 ') e (nAddrStrobe = '1')) then
nWait <= '0 ';
Next_State <= Espera;
diferente
Next_State <= AddrWriteEnd;
END IF;
quando outros => Next_State <= Espera;
end case;
end process;
processo (Reset, SysClk)
começo
if reset = '0 'then
Cur_State <= Espera;
elsif rising_edge (SysClk), então
Cur_State <= Next_State;
END IF;
end process;
final de Acção;
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "dados" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "Data" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "RegDataTemp" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "RegDataTemp" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Atenção: VHDL processo de advertência na Declaração MCU.VHD (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
: Sinal ou variável "RegAddrTemp" não pode ser atribuído um novo valor em todos os caminhos possíveis através da Instrução do Processo.Sinal ou variável "RegAddrTemp" mantém seu valor anterior em cada caminho sem atribuição de novo valor, que podem criar um laço de combinações no projeto atual.
Warning: porta de saída "NACK" na MCU.VHD (13) não tem driver
Atenção: Trava Data [0] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [1] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava Data [2] $ latch tem comportamento inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [3] $ latch tem comportamento inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [4] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [5] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [6] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: Trava de dados [7] $ latch comportamento tem inseguro
Atenção: Portas D e ENA no trinco são alimentados pelo mesmo sinal Cur_State.addrread
Atenção: TRI ou OPNDRN buffers permanentemente habilitado
Atenção: Node "Data [0] ~ 8"
Atenção: Nó "Data [1] ~ 9"
Atenção: Nó "Data [2] ~ 10"
Atenção: Nó "Data [3] ~ 11"
Atenção: Nó "Data [4] ~ 12"
Atenção: Nó "Data [5] ~ 13"
Atenção: Nó "Data [6] ~ 14"
Atenção: Nó "Data [7] ~ 15"
Atenção: os pinos de saída são presos no VCC ou GND
Atenção: Pin "NACK" preso em GND
Warning: Design contém 1 pino de entrada (s) que não conduza a lógica
Atenção: Não há saída dependente da entrada pino "nReset"
Aviso: Os seguintes 8 pinos não tem saída ou permitir uma saída GND ou VCC permitir - às alterações posteriores a essa conectividade podem alterar resultados de montagem
Info: Pino Data [0] tem uma saída permanentemente habilitado permitir
Info: Pino Data [1] tem uma saída permanentemente habilitado permitir
Info: Pino Data [2] tem uma saída permanentemente habilitado permitir
Info: Pino Data [3] tem uma saída permanentemente habilitado permitir
Info: Pin dados [4] tem uma saída permanentemente habilitado permitir
Info: Pin dados [5] tem uma saída permanentemente habilitado permitir
Info: Pin dados [6] tem uma saída permanentemente habilitado permitir
Info: Pin dados [7], foi uma saída permanentemente habilitado permitir
Atenção: A contar de 1 de pinos não tem nada, GND, VCC ou condução porta datain - alterações a essa conectividade podem alterar os resultados montagem
Info: nAck Pin tem GND dirigindo seu porto datain
Atenção: Timing Analysis encontrado um ou mais fechos implementados como circuitos combinacionais
Atenção: Node "RegDataTemp [0]" é um trinco
Atenção: Node "RegAddrTemp [0]" é um trinco
Atenção: Nó "Data [0] $ latch" é um trinco
Atenção: Node "RegDataTemp [1]" é um trinco
Atenção: Node "RegAddrTemp [1]" é um trinco
Atenção: Nó "Data [1] $ latch" é um trinco
Atenção: Node "RegDataTemp [2]" é um trinco
Atenção: Node "RegAddrTemp [2]" é um trinco
Atenção: Nó "Data [2] $ latch" é um trinco
Atenção: Node "RegDataTemp [3]" é um trinco
Atenção: Node "RegAddrTemp [3]" é um trinco
Atenção: Nó "Data [3] $ latch" é um trinco
Atenção: Node "RegAddrTemp [4]" é um trinco
Atenção: Node "RegDataTemp [4]" é um trinco
Atenção: Nó "Data [4] $ latch" é um trinco
Atenção: Node "RegAddrTemp [5]" é um trinco
Atenção: Node "RegDataTemp [5]" é um trinco
Atenção: Nó "Data [5] $ latch" é um trinco
Atenção: Node "RegDataTemp [6]" é um trinco
Atenção: Node "RegAddrTemp [6]" é um trinco
Atenção: Nó "Data [6] $ latch" é um trinco
Atenção: Node "RegAddrTemp [7]" é um trinco
Atenção: Node "RegDataTemp [7]" é um trinco
Atenção: Nó "Data [7] $ latch" é um trinco
Atenção: os pinos encontrados funcionando como relógios indefinido e / ou memória permite
Info: nó Assumindo "SysClk" é um relógio indefinidoCódigo: