Help!

M

montanha

Guest
Tenho um pequeno problema sobre o inout ".

O módulo principal é TDSP, o sub-módulo é McBSP0.
"Send_Trig" é usado no McBSP0.
Eu quero usar "Send_Trig" como uma porta de entrada
/ saída para acionar a enviar bloco e alimentação para trás uma mensagem de conclusão.

Mas eu não posso dirigir o "Send_Trig" por Test_Send_FLG de TDSP.
No resultado da simulação (Modelsim), Test_Send_FLG é verde, mas o i_Test_Send_FLG é vermelho, eo Send_Trig é vermelho também.

Por favor, me ajude!

TDSP (módulo
...
...

)

reg Test_Send_FLG = 0;
i_Test_Send_FLG wire = 0;
...

atribuir i_Test_Send_FLG = Test_Send_FLG;

McBSP McBSP0 (
. RESET (TDSP_nRESET),
. CLKI (TDSP_CLKI),
. SCLK (TDSP_SCLK),
. FSR (TDSP_FSR0),
. DR (TDSP_DR0),
. FSX (TDSP_FSX1),
. DX (TDSP_DX1),
. Send_Trig (i_Test_Send_FLG),
. RINT (i_TDSP_RINT),
. TINT (i_TDSP_TINT),
. Data_Out (i_temp_Out),
. Data_In (temp_In),
. sym_pos (i_sym_pos)
);

endmodule
McBSP (módulo
RESET,
CLKI,
SCLK,
FSR,
DR,
FSX,
DX,
Send_Trig,
RINT,
MATIZ,
Data_out,
Data_In,
sym_pos
);
/************************/
/ **入出力信号の定義** /
/************************/
RESET de entrada;
entrada CLKI;
SCLK de entrada;
FSR de entrada;
DR de entrada;
entrada FSX;
DX entrada;
Send_Trig inout;reg r_DX = 1'b0;
reg r_FSX = 1'b0;

reg [15: 0] RD1_Data_MEM [15:0];
reg [3: 0] RxBit_16_CNT;
reg Send_Trig_Lat = 0;
reg r_Send_TrigO;
r_Send_Start reg;
reg Send_Trig_Drv = 1'b0;
reg r_Tx_Permit = 0;
reg [3: 0] TxBit_16_CNT;
reg [15: 0] RCV_Shift_REG;
reg [15: 0] Send_Shift_REG;
reg [3: 0] Word_16_CNT;
reg [1: 0] r_RINT;
reg [1: 0] r_TINT;
reg [15: 0] r_Data_Out;

r_sym_pos reg;

atribuir DX = r_DX;
atribuir FSX = r_FSX;
atribuir Data_out = r_Data_Out;
atribuir sym_pos = r_sym_pos;

bufif1 Send_Trig_C (Send_Trig, r_Send_TrigO, Send_Trig_Drv);

inicial
começo
Send_Trig_Drv = 1'b0;
fim/***************************************/
/***** Enviar Dados para o principal CMX *****/
/***************************************/
always @ (RESET ou posedge SCLK)
começo
if (reset == 1'h0)
Send_Trig_Lat <= 1'b0;
diferente
Send_Trig_Lat <= Send_Trig;
fimalways @ (RESET ou posedge SCLK)
começo
if (reset == 1'h0)
r_FSX <= 1'b0;
else if (Send_Trig == 1'b1 & & Send_Trig_Lat == 1'b0)
r_FSX <= 1'b1;
diferente
r_FSX <= 1'b0;
fimalways @ (RESET ou posedge CLKI)
começo
if (reset == 1'h0)
Send_Trig_Drv <= 1'b0;
else if (r_Tx_Permit == 1'b1)
Send_Trig_Drv <= 1'b1;
diferente
Send_Trig_Drv <= 1'b0;
fim...

endmodule

 
Primeiro de tudo no chip ônibus tri indicado não é permitido a menos que seja realmente necessário para ASICs!
Em segundo lugar, com ônibus estado tri que você precisa saber quando exacly dirigir o ônibus!de outra maneira
você irá enfrentar contension ônibus.Saber quando a dirigir o ônibus que você precisa do sinal qualificador!
No caso de ur pode beringout Send_Trig_Drv nível superior e impulsionar a i_Test_Send_FLG o seguinte ...

fio i_Test_Send_FLG = Send_Trig_Drv?'BZ: Test_Send_FLG;

Espero que este resolve o problema ur!

 
Obrigado pelo seu conselho.
Seguindo sua sugestão, eu chequei o meu código e encontrou i_Test_Send_FLG é initiallized para 1'b1 no módulo principal.
O que você disse é verdade, o ônibus tri estado é difícil de controlar.

Xie xie!

 
Aplicação será:

1.usar os dois primeiros in_a sinal e out_a para entrada e saída de sinais.
2.Então use o inout Pin Pad para conectá-los.

Espero que possa responder a sua pergunta.

 

Welcome to EDABoard.com

Sponsor

Back
Top