機能
8ビット双方向バスx2ポートの機能コード.標準TTL74245のNSL記述版
信号機能
Port_A = 8ビット双方向バス
Port_B = 8ビット双方向バス
DIR = 転送方向.1のときはAポートからBポートへ,0のときはBポートからAポートへ
nOE = 出力イネーブル.0のときにDIRの要求に応じた信号伝達.1のときはHi-Z
記述特徴
本コードは,output_AtoB(),output_BtoAという名称で2つの内部制御信号を作成し,nOEとDIRの状態の組合せでこれらの制御信号が呼ばれます.
制御信号が呼ばれると,functionで書かれたプロシジャが呼び出され,この中で信号の伝達が行われます.
NSL合成ツールは,inout宣言された出力信号に対する制御が**行われていない**時(未使用時)には,Hi-Zにするコードを生成します.
備考
記述量は多いが,可読性はtypeA/TypeCに比べて高い.
NSL記述例
/* ************************************************************ */
declare TTL_74245_TypeB {
inout Port_A[8] ;
inout Port_B[8] ;
input DIR ; // Direction. 0 = Port B -> A, 1 = PortA -> PortB
input nOE ;
}
/* ************************************************************ */
module TTL_74245_TypeB {
func_self output_AtoB() ; // Data output PORT A to PORT B
func_self output_BtoA() ; // Data output PORT B to PORT A
/* Equation for biridection control */
{
if ( ~nOE ) {
any {
~DIR : output_BtoA () ;
else : output_AtoB () ;
}
}
}
/* Equation for instruction */
function output_AtoB {
Port_A = Port_B ;
}
function output_BtoA {
Port_B = Port_A ;
}
}
Verilog変換例
/*
Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:56:11 2010
Licensed to :EVALUATION USER:
*/
module TTL_74245_TypeB ( p_reset , m_clock , Port_A , Port_B , DIR , nOE );
input p_reset, m_clock;
inout [7:0] Port_A;
inout [7:0] Port_B;
input DIR;
input nOE;
wire output_AtoB;
wire output_BtoA;
wire _net_0;
wire _net_1;
assign output_AtoB = _net_0&(~_net_1);
assign output_BtoA = _net_0&_net_1;
assign _net_0 = ~nOE;
assign _net_1 = ~DIR;
assign Port_A = (output_AtoB)? ((output_AtoB)?Port_B:8'bZ):8'bz;
assign Port_B = (output_BtoA)? ((output_BtoA)?Port_A:8'bZ):8'bz;
endmodule
/*
Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:56:11 2010
Licensed to
*/