機能
8ビット双方向バスx2ポートの機能コード.標準TTL74245のNSL記述版
信号機能
Port_A = 8ビット双方向バス
Port_B = 8ビット双方向バス
DIR = 転送方向.1のときはAポートからBポートへ,0のときはBポートからAポートへ
nOE = 出力イネーブル.0のときにDIRの要求に応じた信号伝達.1のときはHi-Z
記述特徴
本コードでは,output_enable()名で内部制御信号を作成し,nOEがL時にこの制御信号が呼ばれます.
制御信号が呼ばれると,functionで書かれたプロシジャが呼び出され,この中でDIR信号を見て,信号の伝達方向を決めます.
NSL合成ツールは,bidirect宣言された出力信号に対する制御が**行われていない**時(未使用時)には,Hi-Zにするコードを生成します.
注意点
NSLの言語仕様規定により,functionに続く制御信号名の明示位置には論理式の記述はできません.以下のような例は文法エラーになります.
例)
・function ~nOE any{ ・・・ } ⇒ 文法エラー
・function ( ~nOE & DIR ) any{ ・・・ } ⇒ 文法エラー
NSL記述例
/* ************************************************************ */
declare TTL_74245_TypeA {
inout Port_A[8] ;
inout Port_B[8] ;
input DIR ; // Direction. 0 = Port B -> A, 1 = PortA -> PortB
input nOE ;
}
/* ************************************************************ */
module TTL_74245_TypeA {
func_self output_enable() ;
/* Equation for biridection control */
any {
~nOE : output_enable() ;
}
function output_enable any{
~DIR : Port_B = Port_A ;
else : Port_A = Port_B ;
}
}
Verilog変換例
/*
Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:56:07 2010
Licensed to :EVALUATION USER:
*/
module TTL_74245_TypeA ( 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_enable;
wire _net_0;
wire _net_1;
assign output_enable = _net_0;
assign _net_0 = ~nOE;
assign _net_1 = ~DIR;
assign Port_A = (output_enable&(~_net_1))? ((output_enable&(~_net_1))?Port_B:8'bZ):8'bz;
assign Port_B = (output_enable&_net_1)? ((output_enable&_net_1)?Port_A:8'bZ):8'bz;
endmodule
/*
Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:56:07 2010
Licensed to
*/