problema com ISE6.1 sintetizador

V

Vonn

Guest
Tenho escrito um código em VHDL, este código contém dados autocarro n inout
Tenho 2 problemas quando Iam tentar synthize utilizando ISE

1 - Mesmo Se eu declarar os dados como inout porto na entidade, a synthizer
forçá-lo a ser porta de saída?
A única maneira de tornar o synthizer entender que ele é um que inout
para escrever "Z" para ele no código?

2 - Quando Iam tentar synthize,
tenho o seguinte erro:

AVISO: Xst: 1710 - FF / Trava <Mtridata_data_0> (sem init valor) é constante no bloco <testidts2>.
AVISO: Xst: 638 - em unidade testidts2 Conflito sobre MANTER propriedade em sinal Mtridata_data <15> e Mtridata_data <1> Mtridata_data <1> sinal será perdido.

qualquer organismo pode me dar uma mão?

outra pergunta.o que (Mtridata) significa?

 
Vonn escreveu:

Tenho escrito um código em VHDL, este código contém dados autocarro n inout

Tenho 2 problemas quando Iam tentar synthize utilizando ISE1 - Mesmo Se eu declarar os dados como inout porto na entidade, a synthizer

forçá-lo a ser porta de saída?

A única maneira de tornar o synthizer entender que ele é um que inout

para escrever "Z" para ele no código?2 - Quando Iam tentar synthize, tenho o seguinte erro:AVISO: Xst: 1710 - FF / Trava <Mtridata_data_0> (sem init valor) é constante no bloco <testidts2>.AVISO: Xst: 638 - em unidade testidts2 Conflito sobre MANTER propriedade em sinal Mtridata_data <15> e Mtridata_data <1> Mtridata_data <1> sinal será perdido.

qualquer organismo pode me dar uma mão?outra pergunta.
o que (Mtridata) significa?
 
Oi,

Be ware se você estiver usando bidirectional portos.Também é preciso compreender que nem todos os VHDL código é synthesizable.

Algumas partes da linguagem VHDL pode usar apenas para simulação não de síntese.

Portanto, verifique primeiro se o seu código VHDL synthesizable.Verifique arquitetura de taget dispositivo.Talvez o seu desenho não é possível para que a meta, por exemplo, que pretende utilizar assincrônico reset no dispositivo que não tem.Nesse caso, não é problema no sythesizer, porque design não é possível nesse dispositivo.

 
VHDL o código é escrito para conduzir um determinado chip
esta parte do código é usado para fazer um ciclo escrever comando
---------- biblioteca IEEE;
utilização IEEE.STD_LOGIC_1164.ALL;
utilização IEEE.STD_LOGIC_ARITH.ALL;
utilização IEEE.STD_LOGIC_UNSIGNED.ALL;

IDTini entidade é
Porta (masterreset: em std_logic;
masterclock: em std_logic;
infp: em std_logic;
inclk: em std_logic;
outled: out std_logic;
outled2: out std_logic;
outfp: out std_logic;
outclk: out std_logic;
RCL: out std_logic;
FP: out std_logic;
rst: out std_logic;
ode_1: out std_logic;
DS: out std_logic;
cs: out std_logic;
r_w: out std_logic;
DTA: em std_logic;
Endereço: out std_logic_vector (15 virou 0);
dados: inout std_logic_vector (15 virou 0));
IDTini final;

Comportamento de arquitectura é IDTini

sinal currentstate, nextstate: inteiro;
sinal countMBP: inteiro;
sinal leitura: std_logic_vector (15 virou 0);

começo
outfp <= infp;
outclk <= inclk;
RCL <= inclk;
fp <= infp;
-------------------------------------------
processo (masterclock, masterreset)
começo
Se (masterreset ='1 ')
thencurrentstate <= 0;
elsif (masterclock ='1 'e masterclock'event) então
currentstate <= nextstate;
diferente
end if;
processo final;
--------------------------------------------
--------------------------------------------
processo (currentstate, DTA)
Começo
Processo currentstate é
quando 0 =>
rst <='0 '; - redefinir o chip e preparar os outros portos
ode_1 <='0 ';
ds <='1 ';
cs <='1 ';
r_w <='0 ';
endereço <= "0100000000000000";
dados <= "ZZZZZZZZZZZZZZZZ";
countMBP <= 3;
outled <='0 ';
outled2 <='0 ';
nextstate <= 1;

quando 1 =>
rst <='1 ';
dados <= "0000000000000000";
cs <='0 ';
nextstate <= 2;

quando 2 =>
ds <='0 ';
nextstate <= 3;

quando 3 =>
if (DTA ='0 '), entãonextstate <= 4 ; diferente
nextstate <= 3;
end if;

quando 4 =>
ds <='1 ';
nextstate <= 5;

quando 5 =>
if (DTA ='1 ')
thennextstate <= 6;
diferente
nextstate <= 5;
end if;

quando 6 =>
cs <='1 ';
nextstate <= 7;

quando outros =>
Fim caso;
Terminar processo;
--------------------------------------------
final Comportamental;
---------------------------------------------Agora, quando você tenta synthize este código você terá:
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_13> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <15> Mtridata_data <15> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_15> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <14> Mtridata_data <14> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_14> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <0> Mtridata_data <0> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_0> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <1> Mtridata_data <1> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_1> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <2> Mtridata_data <2> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_2> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <3> Mtridata_data <3> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_3> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <4> Mtridata_data <4> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_4> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <5> Mtridata_data <5> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_5> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <6> Mtridata_data <6> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_6> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <7> Mtridata_data <7> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_7> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <8> Mtridata_data <8> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_8> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <9> Mtridata_data <9> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_9> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <10> Mtridata_data <10> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_10> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <11> Mtridata_data <11> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_11> (sem init valor) é constante no bloco <idtini>.
AVISO: Xst: 638 - em unidade idtini Conflito sobre MANTER propriedade em sinal Mtridata_data <13> e Mtridata_data <12> Mtridata_data <12> sinal será perdido.
AVISO: Xst: 1710 - FF / Trava <Mtridata_data_12> (sem init valor) é constante no bloco <idtini>.Qualquer órgão pode ajudar?

 
Oi,

Seus dados é considerado como um autocarro outuput pelo sintetizador porque você nunca ter em conta o valor de dados como uma entrada.Você só usá-la como uma saída (ex: dados <= "1000ZZ00"

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />

.
Você deve ter uma equação como: memorized_data <= dados; no seu vhdl para utilizar os dados como uma entrada.

Eu acho que você deve utilizar uma trava sinal para os seus dados, não só combinatory:

processo (masterclock, masterreset)
começo
Se (masterreset ='1 ')
thencurrentstate <= 0;
dados <= (others => 'Z');
elsif (masterclock ='1 'e masterclock'event) então
currentstate <= nextstate;
out_latch_data <= out_comb_data;
diferente
end if;
processo final;

dados <= out_latch_data quando (output_enable ='1 ') else (others =>' Z ');

--------------------------------------------
processo (currentstate, DTA)
Começo
Processo currentstate é
quando 0 =>
rst <='0 '; - redefinir o chip e preparar os outros portos
ode_1 <='0 ';
ds <='1 ';
cs <='1 ';
r_w <='0 ';
endereço <= "0100000000000000";
out_comb_data <= "ZZZZZZZZZZZZZZZZ";
countMBP <= 3;
outled <='0 ';
outled2 <='0 ';
nextstate <= 1;

quando 1 =>
rst <='1 ';
...Não tente isso, mas acho que vou trabalhar
Espero que este irá ajudá-lo<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 
declaração de um porto em inout VHDL não significa que o synthezer vai entender que é um inout porto,
de forma a fazer um inout porto "dizem que
o nome de dados", você terá que declarar dois sinais "data_in e data_out" o sinal de dados será a entrada de dados a partir do porto inout e esta será declarada em você VHDL código como "data_in <= dados;", os dados out é a saída de dados que mus ser controlada com um tr-estado-tampão "porque você não pode ler quando está escrito ".assim que o ônibus dados serão dados de saída quando você tem sinal e permitir que façamos esse sinal como nome "pt", assim o código para instalar o tri-state bufffer será "dados <= data_out quando pt ='1 'else ( OTHERS => 'Z'); "
that's all folks

 

Welcome to EDABoard.com

Sponsor

Back
Top