⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcm.vm

📁 PCM数据采集
💻 VM
字号:
//
// Written by Synplify
// Product Version "Version 8.8L2"
// Program "Synplify", Mapper "8.8.0, Build 018R"
// Thu Jun 19 11:12:50 2008
//
// Source file index table:
// Object locations will have the form <file>:<line>
// file 0 "noname"
// file 1 "\d:\isptools7_0\synpbase\lib\vhd\std.vhd "
// file 2 "\d:\isptools7_0\ispcpld\..\cae_library\synthesis\vhdl\xp2.vhd "
// file 3 "\d:\isptools7_0\synpbase\lib\vhd\std1164.vhd "
// file 4 "\d:\cpld\fpga\getpcm\pcm.vhd "
// file 5 "\d:\isptools7_0\synpbase\lib\vhd\unsigned.vhd "
// file 6 "\d:\isptools7_0\synpbase\lib\vhd\arith.vhd "

`timescale 100 ps/100 ps
module PCM (
  Reset,
  PCLK,
  S_Data,
  FSYNC,
  Slot,
  PCM_Data,
  L_Data
)
;
input Reset ;
input PCLK ;
input S_Data ;
input FSYNC ;
input [7:0] Slot ;
output [7:0] PCM_Data ;
output L_Data ;
wire Reset ;
wire PCLK ;
wire S_Data ;
wire FSYNC ;
wire L_Data ;
wire [2:0] count;
wire [7:0] databuf;
wire [7:0] chunnel;
wire [2:0] \un7_chunnel_0.data_tmp ;
wire [6:0] chunnel_cry;
wire [7:0] chunnel_s;
wire [7:0] chunnel_lm;
wire [0:0] chunnel_cry_0_S0;
wire [7:7] chunnel_s_0_S1;
wire [7:7] chunnel_s_0_COUT;
wire [7:0] Slot_c;
wire [7:0] PCM_Data_c;
wire [7:0] chunnel_QN;
wire [2:0] count_QN;
wire [7:1] databuf_QN;
wire lastfsync ;
wire un1_fsync_0_a2 ;
wire I_28_0_S1 ;
wire un2_chunnel_0_a2 ;
wire count_n0 ;
wire N_6 ;
wire N_10 ;
wire un7_chunnel_a_4_p4 ;
wire un7_chunnel_a_4_p7 ;
wire un7_chunnel_a_4_c2 ;
wire un7_chunnel_a_4_ac0_7 ;
wire un1_fsync_i ;
wire N_15_i ;
wire N_12_i ;
wire \un7_chunnel_0.I_14_0  ;
wire \un7_chunnel_0.I_23_0  ;
wire \un7_chunnel_0.I_32_0  ;
wire \un7_chunnel_0.I_33_0  ;
wire I_1_0_S0 ;
wire I_1_0_S1 ;
wire I_10_0_S0 ;
wire I_10_0_S1 ;
wire I_28_0_S0 ;
wire I_28_0_COUT ;
wire L_Data_1_sqmuxa_i_s_1 ;
wire un7_chunnel_a_4_p7_sx ;
wire un7_chunnel_a_4_p4_x ;
wire GND ;
wire VCC ;
wire Reset_c ;
wire PCLK_c ;
wire S_Data_c ;
wire FSYNC_c ;
wire L_Data_c ;
wire lastfsync_QN ;
wire PCLK_c_i ;
wire GND_Z ;
wire VCC_Z ;
  PUR PUR_INST (
	.PUR(VCC)
);
  VHI VCC_0 (
	.Z(VCC)
);
  VLO GND_0 (
	.Z(GND)
);
  INV PCLK_c_i_cZ (
	.A(PCLK_c),
	.Z(PCLK_c_i)
);
assign N_12_i = (count[1] & ~count[0] & lastfsync) | (~count[1] & count[0] & 
   lastfsync) | (count[1] & ~count[0] & ~FSYNC_c) | (~count[1] & count[0] & 
   ~FSYNC_c) | (count[1] & ~count[0] & lastfsync & FSYNC_c) | (~count[1] & 
   count[0] & lastfsync & FSYNC_c);
assign chunnel_lm[7] = (chunnel_s[7] & lastfsync) | (chunnel_s[7] & ~FSYNC_c) | 
   (chunnel_s[7] & lastfsync & FSYNC_c);
assign chunnel_lm[6] = (chunnel_s[6] & lastfsync) | (chunnel_s[6] & ~FSYNC_c) | 
   (chunnel_s[6] & lastfsync & FSYNC_c);
assign chunnel_lm[5] = (chunnel_s[5] & lastfsync) | (chunnel_s[5] & ~FSYNC_c) | 
   (chunnel_s[5] & lastfsync & FSYNC_c);
assign chunnel_lm[4] = (chunnel_s[4] & lastfsync) | (chunnel_s[4] & ~FSYNC_c) | 
   (chunnel_s[4] & lastfsync & FSYNC_c);
assign chunnel_lm[3] = (chunnel_s[3] & lastfsync) | (chunnel_s[3] & ~FSYNC_c) | 
   (chunnel_s[3] & lastfsync & FSYNC_c);
assign chunnel_lm[2] = (chunnel_s[2] & lastfsync) | (chunnel_s[2] & ~FSYNC_c) | 
   (chunnel_s[2] & lastfsync & FSYNC_c);
assign chunnel_lm[1] = (chunnel_s[1] & lastfsync) | (chunnel_s[1] & ~FSYNC_c) | 
   (chunnel_s[1] & lastfsync & FSYNC_c);
assign chunnel_lm[0] = (chunnel_s[0] & lastfsync) | (chunnel_s[0] & ~FSYNC_c) | 
   (chunnel_s[0] & lastfsync & FSYNC_c);
assign count_n0 = (~count[0] & lastfsync) | (~count[0] & ~FSYNC_c) | (~count[0] & 
   lastfsync & FSYNC_c);
// @4:61
  IFS1P3DX \databuf_0io_Z[0]  (
	.D(S_Data_c),
	.SP(un1_fsync_i),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(databuf[0])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[0]  (
	.D(databuf[0]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[0])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[1]  (
	.D(databuf[1]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[1])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[2]  (
	.D(databuf[2]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[2])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[3]  (
	.D(databuf[3]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[3])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[4]  (
	.D(databuf[4]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[4])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[5]  (
	.D(databuf[5]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[5])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[6]  (
	.D(databuf[6]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[6])
);
// @4:61
  OFS1P3DX \PCM_Data_0io_Z[7]  (
	.D(databuf[7]),
	.SP(un2_chunnel_0_a2),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(PCM_Data_c[7])
);
// @4:61
  OFS1P3DX L_Data_0io_Z (
	.D(un1_fsync_i),
	.SP(N_6),
	.SCLK(PCLK_c_i),
	.CD(GND),
	.Q(L_Data_c)
);
// @4:61
  FD1S3AX lastfsync_Z (
	.D(FSYNC_c),
	.CK(PCLK_c_i),
	.Q(lastfsync)
);
// @4:61
  FD1P3AX \databuf_Z[1]  (
	.D(databuf[0]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[1])
);
// @4:61
  FD1P3AX \databuf_Z[2]  (
	.D(databuf[1]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[2])
);
// @4:61
  FD1P3AX \databuf_Z[3]  (
	.D(databuf[2]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[3])
);
// @4:61
  FD1P3AX \databuf_Z[4]  (
	.D(databuf[3]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[4])
);
// @4:61
  FD1P3AX \databuf_Z[5]  (
	.D(databuf[4]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[5])
);
// @4:61
  FD1P3AX \databuf_Z[6]  (
	.D(databuf[5]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[6])
);
// @4:61
  FD1P3AX \databuf_Z[7]  (
	.D(databuf[6]),
	.SP(un1_fsync_i),
	.CK(PCLK_c_i),
	.Q(databuf[7])
);
// @4:61
  FD1S3AX \count_Z[0]  (
	.D(count_n0),
	.CK(PCLK_c_i),
	.Q(count[0])
);
// @4:61
  FD1S3AX \count_Z[1]  (
	.D(N_12_i),
	.CK(PCLK_c_i),
	.Q(count[1])
);
// @4:61
  FD1S3AX \count_Z[2]  (
	.D(N_15_i),
	.CK(PCLK_c_i),
	.Q(count[2])
);
// @4:61
  FD1P3AX \chunnel_Z[0]  (
	.D(chunnel_lm[0]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[0])
);
// @4:61
  FD1P3AX \chunnel_Z[1]  (
	.D(chunnel_lm[1]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[1])
);
// @4:61
  FD1P3AX \chunnel_Z[2]  (
	.D(chunnel_lm[2]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[2])
);
// @4:61
  FD1P3AX \chunnel_Z[3]  (
	.D(chunnel_lm[3]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[3])
);
// @4:61
  FD1P3AX \chunnel_Z[4]  (
	.D(chunnel_lm[4]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[4])
);
// @4:61
  FD1P3AX \chunnel_Z[5]  (
	.D(chunnel_lm[5]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[5])
);
// @4:61
  FD1P3AX \chunnel_Z[6]  (
	.D(chunnel_lm[6]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[6])
);
// @4:61
  FD1P3AX \chunnel_Z[7]  (
	.D(chunnel_lm[7]),
	.SP(N_10),
	.CK(PCLK_c_i),
	.Q(chunnel[7])
);
  GSR GSR_INST (
	.GSR(Reset_c)
);
// @4:14
  OB L_Data_pad (
	.I(L_Data_c),
	.O(L_Data)
);
// @4:13
  OB \PCM_Data_pad[7]  (
	.I(PCM_Data_c[7]),
	.O(PCM_Data[7])
);
// @4:13
  OB \PCM_Data_pad[6]  (
	.I(PCM_Data_c[6]),
	.O(PCM_Data[6])
);
// @4:13
  OB \PCM_Data_pad[5]  (
	.I(PCM_Data_c[5]),
	.O(PCM_Data[5])
);
// @4:13
  OB \PCM_Data_pad[4]  (
	.I(PCM_Data_c[4]),
	.O(PCM_Data[4])
);
// @4:13
  OB \PCM_Data_pad[3]  (
	.I(PCM_Data_c[3]),
	.O(PCM_Data[3])
);
// @4:13
  OB \PCM_Data_pad[2]  (
	.I(PCM_Data_c[2]),
	.O(PCM_Data[2])
);
// @4:13
  OB \PCM_Data_pad[1]  (
	.I(PCM_Data_c[1]),
	.O(PCM_Data[1])
);
// @4:13
  OB \PCM_Data_pad[0]  (
	.I(PCM_Data_c[0]),
	.O(PCM_Data[0])
);
// @4:12
  IB \Slot_pad[7]  (
	.I(Slot[7]),
	.O(Slot_c[7])
);
// @4:12
  IB \Slot_pad[6]  (
	.I(Slot[6]),
	.O(Slot_c[6])
);
// @4:12
  IB \Slot_pad[5]  (
	.I(Slot[5]),
	.O(Slot_c[5])
);
// @4:12
  IB \Slot_pad[4]  (
	.I(Slot[4]),
	.O(Slot_c[4])
);
// @4:12
  IB \Slot_pad[3]  (
	.I(Slot[3]),
	.O(Slot_c[3])
);
// @4:12
  IB \Slot_pad[2]  (
	.I(Slot[2]),
	.O(Slot_c[2])
);
// @4:12
  IB \Slot_pad[1]  (
	.I(Slot[1]),
	.O(Slot_c[1])
);
// @4:12
  IB \Slot_pad[0]  (
	.I(Slot[0]),
	.O(Slot_c[0])
);
// @4:11
  IB FSYNC_pad (
	.I(FSYNC),
	.O(FSYNC_c)
);
// @4:10
  IB S_Data_pad (
	.I(S_Data),
	.O(S_Data_c)
);
// @4:9
  IB PCLK_pad (
	.I(PCLK),
	.O(PCLK_c)
);
// @4:8
  IB Reset_pad (
	.I(Reset),
	.O(Reset_c)
);
assign un7_chunnel_a_4_p4 = (Slot_c[0] & Slot_c[1] & Slot_c[2] & Slot_c[3]);
assign un1_fsync_0_a2 = (FSYNC_c & ~lastfsync);
assign un7_chunnel_a_4_c2 = (Slot_c[0] & Slot_c[1]);
assign \un7_chunnel_0.I_14_0  = (Slot_c[3] & ~chunnel[3]) | (~Slot_c[3] & 
   chunnel[3]);
assign \un7_chunnel_0.I_23_0  = (Slot_c[5] & ~chunnel[5]) | (~Slot_c[5] & 
   chunnel[5]);
assign \un7_chunnel_0.I_32_0  = (Slot_c[7] & ~chunnel[7]) | (~Slot_c[7] & 
   chunnel[7]);
assign \un7_chunnel_0.I_33_0  = (Slot_c[6] & ~chunnel[6]) | (~Slot_c[6] & 
   chunnel[6]);
assign N_10 = (count[0] & count[1] & count[2]) | (count[0] & count[1] & 
   count[2] & ~un1_fsync_0_a2) | (un1_fsync_0_a2);
assign un2_chunnel_0_a2 = (~count[0] & ~count[1] & ~count[2] & I_28_0_S1);
assign N_15_i = (count[0] & count[1] & ~count[2] & ~un1_fsync_0_a2) | (~count[0] & 
   count[2] & ~un1_fsync_0_a2) | (~count[1] & count[2] & ~un1_fsync_0_a2) | 
   (~count[0] & count[1] & count[2] & ~un1_fsync_0_a2);
assign L_Data_1_sqmuxa_i_s_1 = (~count[0] & ~count[1]);
assign N_6 = (un1_fsync_0_a2) | (un1_fsync_0_a2 & ~I_28_0_S1) | (L_Data_1_sqmuxa_i_s_1 & 
   ~count[2] & I_28_0_S1) | (L_Data_1_sqmuxa_i_s_1 & ~count[2] & ~un1_fsync_0_a2 & 
   I_28_0_S1) | (un1_fsync_0_a2 & I_28_0_S1);
assign un7_chunnel_a_4_p7_sx = (~Slot_c[0]) | (~Slot_c[2]) | (~Slot_c[0] & 
   Slot_c[2]) | (~Slot_c[3]) | (~Slot_c[0] & Slot_c[3]) | (~Slot_c[2] & 
   Slot_c[3]) | (~Slot_c[0] & Slot_c[2] & Slot_c[3]) | (~Slot_c[6]) | 
   (~Slot_c[0] & Slot_c[6]) | (~Slot_c[2] & Slot_c[6]) | (~Slot_c[0] & 
   Slot_c[2] & Slot_c[6]) | (~Slot_c[3] & Slot_c[6]) | (~Slot_c[0] & Slot_c[3] & 
   Slot_c[6]) | (~Slot_c[2] & Slot_c[3] & Slot_c[6]) | (~Slot_c[0] & Slot_c[2] & 
   Slot_c[3] & Slot_c[6]);
assign un7_chunnel_a_4_p7 = (Slot_c[1] & Slot_c[4] & Slot_c[5] & ~un7_chunnel_a_4_p7_sx);
assign un7_chunnel_a_4_p4_x = (Slot_c[1] & Slot_c[2] & Slot_c[3]);
assign un7_chunnel_a_4_ac0_7 = (un7_chunnel_a_4_p4_x & Slot_c[0] & Slot_c[4] & 
   Slot_c[5]);
assign un1_fsync_i = (lastfsync) | (~FSYNC_c) | (lastfsync & FSYNC_c);
  CCU2B \un7_chunnel_0.I_28_0  (
	.A0(\un7_chunnel_0.I_32_0 ),
	.B0(\un7_chunnel_0.I_33_0 ),
	.C0(un7_chunnel_a_4_ac0_7),
	.D0(un7_chunnel_a_4_p7),
	.A1(GND),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(\un7_chunnel_0.data_tmp [2]),
	.COUT(I_28_0_COUT),
	.S0(I_28_0_S0),
	.S1(I_28_0_S1)
);
defparam \un7_chunnel_0.I_28_0 .INIT0=16'h8241;
defparam \un7_chunnel_0.I_28_0 .INIT1=16'h0a0c;
defparam \un7_chunnel_0.I_28_0 .INJECT1_0="YES";
defparam \un7_chunnel_0.I_28_0 .INJECT1_1="NO";
  CCU2B \un7_chunnel_0.I_10_0  (
	.A0(Slot_c[2]),
	.B0(chunnel[2]),
	.C0(\un7_chunnel_0.I_14_0 ),
	.D0(un7_chunnel_a_4_c2),
	.A1(Slot_c[4]),
	.B1(chunnel[4]),
	.C1(\un7_chunnel_0.I_23_0 ),
	.D1(un7_chunnel_a_4_p4),
	.CIN(\un7_chunnel_0.data_tmp [0]),
	.COUT(\un7_chunnel_0.data_tmp [2]),
	.S0(I_10_0_S0),
	.S1(I_10_0_S1)
);
defparam \un7_chunnel_0.I_10_0 .INIT0=16'h2409;
defparam \un7_chunnel_0.I_10_0 .INIT1=16'h2409;
defparam \un7_chunnel_0.I_10_0 .INJECT1_0="YES";
defparam \un7_chunnel_0.I_10_0 .INJECT1_1="YES";
  CCU2B \un7_chunnel_0.I_1_0  (
	.A0(GND),
	.B0(VCC),
	.C0(GND),
	.D0(VCC),
	.A1(Slot_c[0]),
	.B1(Slot_c[1]),
	.C1(chunnel[0]),
	.D1(chunnel[1]),
	.CIN(GND),
	.COUT(\un7_chunnel_0.data_tmp [0]),
	.S0(I_1_0_S0),
	.S1(I_1_0_S1)
);
defparam \un7_chunnel_0.I_1_0 .INIT0=16'h0a0c;
defparam \un7_chunnel_0.I_1_0 .INIT1=16'h4218;
defparam \un7_chunnel_0.I_1_0 .INJECT1_0="NO";
defparam \un7_chunnel_0.I_1_0 .INJECT1_1="YES";
// @4:61
  CCU2B \chunnel_s_0[7]  (
	.A0(chunnel[7]),
	.B0(GND),
	.C0(GND),
	.D0(VCC),
	.A1(GND),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(chunnel_cry[6]),
	.COUT(chunnel_s_0_COUT[7]),
	.S0(chunnel_s[7]),
	.S1(chunnel_s_0_S1[7])
);
defparam \chunnel_s_0[7] .INIT0=16'h060a;
defparam \chunnel_s_0[7] .INIT1=16'h0a0c;
defparam \chunnel_s_0[7] .INJECT1_0="NO";
defparam \chunnel_s_0[7] .INJECT1_1="NO";
// @4:61
  CCU2B \chunnel_cry_0[5]  (
	.A0(chunnel[5]),
	.B0(GND),
	.C0(GND),
	.D0(VCC),
	.A1(chunnel[6]),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(chunnel_cry[4]),
	.COUT(chunnel_cry[6]),
	.S0(chunnel_s[5]),
	.S1(chunnel_s[6])
);
defparam \chunnel_cry_0[5] .INIT0=16'h0600;
defparam \chunnel_cry_0[5] .INIT1=16'h0600;
defparam \chunnel_cry_0[5] .INJECT1_0="NO";
defparam \chunnel_cry_0[5] .INJECT1_1="NO";
// @4:61
  CCU2B \chunnel_cry_0[3]  (
	.A0(chunnel[3]),
	.B0(GND),
	.C0(GND),
	.D0(VCC),
	.A1(chunnel[4]),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(chunnel_cry[2]),
	.COUT(chunnel_cry[4]),
	.S0(chunnel_s[3]),
	.S1(chunnel_s[4])
);
defparam \chunnel_cry_0[3] .INIT0=16'h0600;
defparam \chunnel_cry_0[3] .INIT1=16'h0600;
defparam \chunnel_cry_0[3] .INJECT1_0="NO";
defparam \chunnel_cry_0[3] .INJECT1_1="NO";
// @4:61
  CCU2B \chunnel_cry_0[1]  (
	.A0(chunnel[1]),
	.B0(GND),
	.C0(GND),
	.D0(VCC),
	.A1(chunnel[2]),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(chunnel_cry[0]),
	.COUT(chunnel_cry[2]),
	.S0(chunnel_s[1]),
	.S1(chunnel_s[2])
);
defparam \chunnel_cry_0[1] .INIT0=16'h0600;
defparam \chunnel_cry_0[1] .INIT1=16'h0600;
defparam \chunnel_cry_0[1] .INJECT1_0="NO";
defparam \chunnel_cry_0[1] .INJECT1_1="NO";
  CCU2B \chunnel_cry_0[0]  (
	.A0(GND),
	.B0(VCC),
	.C0(GND),
	.D0(VCC),
	.A1(chunnel[0]),
	.B1(GND),
	.C1(GND),
	.D1(VCC),
	.CIN(GND),
	.COUT(chunnel_cry[0]),
	.S0(chunnel_cry_0_S0[0]),
	.S1(chunnel_s[0])
);
defparam \chunnel_cry_0[0] .INIT0=16'h0a0c;
defparam \chunnel_cry_0[0] .INIT1=16'h0600;
defparam \chunnel_cry_0[0] .INJECT1_0="NO";
defparam \chunnel_cry_0[0] .INJECT1_1="NO";
  assign GND_Z = 1'b0;
  assign VCC_Z = 1'b1;
endmodule /* PCM */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -