UART_Rx.v


/*
 Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 19:03:52 2010

 Licensed to :EVALUATION USER:
*/

module UART_Rx ( p_reset , m_clock , RxD_i , Rx_Data_o , RxD_Ready_o , RxD_ParityError_o , RxD_FramingError_o , Freq_Divide_Param_i , Rx_BitLength_i , Rx_ParityEN_i , Rx_OddParity_i , Rx_Enable_i , Rx_operation_o , Rx_ShiftClock_o );
  input p_reset, m_clock;
  input RxD_i;
  output [7:0] Rx_Data_o;
  output RxD_Ready_o;
  output RxD_ParityError_o;
  output RxD_FramingError_o;
  input [15:0] Freq_Divide_Param_i;
  input [1:0] Rx_BitLength_i;
  input Rx_ParityEN_i;
  input Rx_OddParity_i;
  input Rx_Enable_i;
  output Rx_operation_o;
  output Rx_ShiftClock_o;
  wire [3:0] BitLength;
  reg [3:0] ShiftCount;
  reg [15:0] x16_BaudCounter;
  reg x16_ShiftTiming;
  reg [3:0] x1_BaudCounter;
  reg x1_ShiftTiming;
  reg [11:0] Rx_ShiftReg;
  reg [2:0] internal_RxD_in;
  wire [7:0] Rx_Data;
  wire Rx_Parity;
  reg Detect_StartBit;
  wire Receive_Start;
  reg shift_Operation;
  reg data_check;
  reg access_complete;
  wire _proc_access_complete_set;
  wire _proc_access_complete_reset;
  wire _net_0;
  wire _proc_data_check_set;
  wire _proc_data_check_reset;
  wire _net_1;
  wire _proc_shift_Operation_set;
  wire _proc_shift_Operation_reset;
  wire _net_2;
  wire _net_3;
  wire _net_4;
  wire _net_5;
  wire _net_6;
  wire _net_7;
  wire _net_8;
  wire _net_9;
  wire _net_10;
  wire _net_11;
  wire _net_12;
  wire _net_13;
  wire _net_14;
  wire _net_15;
  wire _net_16;
  wire _net_17;
  wire _net_18;
  wire _net_19;
  wire _net_20;
  wire _net_21;
  wire _net_22;
  wire _net_23;
  wire _net_24;
  wire _net_25;
  wire _net_26;
  wire _net_27;
  wire _net_28;
  wire _net_29;
  wire _net_30;
  wire _net_31;
  wire _net_32;
  wire _net_33;
  wire _net_34;
  wire _net_35;
  wire _net_36;
  wire _net_37;
  wire _net_38;
  wire _net_39;
  wire _net_40;
  wire _net_41;
  wire _net_42;
  wire _net_43;
  wire _net_44;
  wire _net_45;
  wire _net_46;
  wire _net_47;
  wire _net_48;
  wire _net_49;
  wire _net_50;
  wire _net_51;
  wire _net_52;
  wire _net_53;
  wire _net_54;
  wire _net_55;
  wire _net_56;
  wire _net_57;

   assign #1 BitLength = ((_net_30)?4'b1010:4'b0)|
	((_net_25|_net_23)?4'b1001:4'b0)|
	((_net_22)?4'b0110:4'b0)|
	((_net_29|_net_20)?4'b0111:4'b0)|
	((_net_27|_net_18)?4'b1000:4'b0);
   assign #1 Rx_Data = ((_net_46)?Rx_ShiftReg[9:2]:8'b0)|
	((_net_45)?{{{2{1'b1}},1'b1},Rx_ShiftReg[9:5]}:8'b0)|
	((_net_43)?{{{1{1'b1}},1'b1},Rx_ShiftReg[9:4]}:8'b0)|
	((_net_41)?{1'b1,Rx_ShiftReg[9:3]}:8'b0)|
	((_net_39)?Rx_ShiftReg[10:3]:8'b0)|
	((_net_38)?{{{2{1'b1}},1'b1},Rx_ShiftReg[10:6]}:8'b0)|
	((_net_36)?{{{1{1'b1}},1'b1},Rx_ShiftReg[10:5]}:8'b0)|
	((_net_34)?{1'b1,Rx_ShiftReg[10:4]}:8'b0);
   assign #1 Rx_Parity = ((_net_31)?^(Rx_Data):1'b0)|
	((Rx_OddParity_i)?~(^(Rx_Data)):1'b0);
   assign #1 Receive_Start = _net_11;
   assign #1 _proc_access_complete_set = data_check;
   assign #1 _proc_access_complete_reset = access_complete;
   assign #1 _net_0 = _proc_access_complete_set|_proc_access_complete_reset;
   assign #1 _proc_data_check_set = _net_51;
   assign #1 _proc_data_check_reset = data_check;
   assign #1 _net_1 = _proc_data_check_set|_proc_data_check_reset;
   assign #1 _proc_shift_Operation_set = Receive_Start;
   assign #1 _proc_shift_Operation_reset = _net_50;
   assign #1 _net_2 = _proc_shift_Operation_set|_proc_shift_Operation_reset;
   assign #1 _net_3 = (x16_BaudCounter)==(Freq_Divide_Param_i);
   assign #1 _net_4 = Rx_Enable_i&_net_3;
   assign #1 _net_5 = Rx_Enable_i&_net_3;
   assign #1 _net_6 = Rx_Enable_i&(~_net_3);
   assign #1 _net_7 = Rx_Enable_i&(~_net_3);
   assign #1 _net_8 = ~Rx_Enable_i;
   assign #1 _net_9 = ~Rx_Enable_i;
   assign #1 _net_10 = ((internal_RxD_in[2:1])==(2'b00))&(~Detect_StartBit);
   assign #1 _net_11 = x16_ShiftTiming&_net_10;
   assign #1 _net_12 = Detect_StartBit&x16_ShiftTiming;
   assign #1 _net_13 = ~Detect_StartBit;
   assign #1 _net_14 = x16_ShiftTiming&((x1_BaudCounter)==(4'b0111));
   assign #1 _net_15 = ~_net_14;
   assign #1 _net_16 = ~Rx_ParityEN_i;
   assign #1 _net_17 = (Rx_BitLength_i)==(2'b10);
   assign #1 _net_18 = _net_16&_net_17;
   assign #1 _net_19 = (Rx_BitLength_i)==(2'b01);
   assign #1 _net_20 = _net_16&_net_19;
   assign #1 _net_21 = (Rx_BitLength_i)==(2'b00);
   assign #1 _net_22 = _net_16&_net_21;
   assign #1 _net_23 = ((_net_16&(~_net_17))&(~_net_19))&(~_net_21);
   assign #1 _net_24 = (Rx_BitLength_i)==(2'b10);
   assign #1 _net_25 = (~_net_16)&_net_24;
   assign #1 _net_26 = (Rx_BitLength_i)==(2'b01);
   assign #1 _net_27 = (~_net_16)&_net_26;
   assign #1 _net_28 = (Rx_BitLength_i)==(2'b00);
   assign #1 _net_29 = (~_net_16)&_net_28;
   assign #1 _net_30 = (((~_net_16)&(~_net_24))&(~_net_26))&(~_net_28);
   assign #1 _net_31 = ~Rx_OddParity_i;
   assign #1 _net_32 = ~Rx_ParityEN_i;
   assign #1 _net_33 = (Rx_BitLength_i)==(2'b10);
   assign #1 _net_34 = _net_32&_net_33;
   assign #1 _net_35 = (Rx_BitLength_i)==(2'b01);
   assign #1 _net_36 = _net_32&_net_35;
   assign #1 _net_37 = (Rx_BitLength_i)==(2'b00);
   assign #1 _net_38 = _net_32&_net_37;
   assign #1 _net_39 = ((_net_32&(~_net_33))&(~_net_35))&(~_net_37);
   assign #1 _net_40 = (Rx_BitLength_i)==(2'b10);
   assign #1 _net_41 = (~_net_32)&_net_40;
   assign #1 _net_42 = (Rx_BitLength_i)==(2'b01);
   assign #1 _net_43 = (~_net_32)&_net_42;
   assign #1 _net_44 = (Rx_BitLength_i)==(2'b00);
   assign #1 _net_45 = (~_net_32)&_net_44;
   assign #1 _net_46 = (((~_net_32)&(~_net_40))&(~_net_42))&(~_net_44);
   assign #1 _net_47 = shift_Operation&x1_ShiftTiming;
   assign #1 _net_48 = shift_Operation&x1_ShiftTiming;
   assign #1 _net_49 = (ShiftCount)==(BitLength);
   assign #1 _net_50 = (shift_Operation&x1_ShiftTiming)&_net_49;
   assign #1 _net_51 = (shift_Operation&x1_ShiftTiming)&_net_49;
   assign #1 _net_52 = Rx_ParityEN_i&((Rx_ShiftReg[10])!=(Rx_Parity));
   assign #1 _net_53 = data_check&_net_52;
   assign #1 _net_54 = (Rx_ShiftReg[11])==(1'b0);
   assign #1 _net_55 = (data_check&(~_net_52))&_net_54;
   assign #1 _net_56 = (data_check&(~_net_52))&(~_net_54);
   assign #1 _net_57 = (data_check&(~_net_52))&(~_net_54);
   assign #1 Rx_Data_o = Rx_Data;
   assign #1 RxD_Ready_o = _net_57;
   assign #1 RxD_ParityError_o = _net_53;
   assign #1 RxD_FramingError_o = _net_55;
   assign #1 Rx_operation_o = Detect_StartBit;
   assign #1 Rx_ShiftClock_o = x1_ShiftTiming;
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 ShiftCount <= 4'b0000;
else if ((access_complete)|(_net_48))
	  ShiftCount <= ((access_complete) ?4'b0000:4'b0)|
	((_net_48) ?(ShiftCount)+(4'b0001):4'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 x16_BaudCounter <= 16'b0000000000000000;
else if ((_net_6)|(_net_8|_net_4))
	  x16_BaudCounter <= ((_net_6) ?(x16_BaudCounter)+(16'b0000000000000001):16'b0)|
	((_net_8|_net_4) ?16'b0000000000000000:16'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 x16_ShiftTiming <= 1'b0;
else if ((_net_9|_net_7)|(_net_5))
	  x16_ShiftTiming <= ((_net_9|_net_7) ?1'b0:1'b0)|
	((_net_5) ?1'b1:1'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 x1_BaudCounter <= 4'b0000;
else if ((_net_13)|(_net_12))
	  x1_BaudCounter <= ((_net_13) ?4'b0000:4'b0)|
	((_net_12) ?(x1_BaudCounter)+(4'b0001):4'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 x1_ShiftTiming <= 1'b0;
else if ((_net_15)|(_net_14))
	  x1_ShiftTiming <= ((_net_15) ?1'b0:1'b0)|
	((_net_14) ?1'b1:1'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 Rx_ShiftReg <= 12'b000000000000;
else if ((access_complete)|(_net_47))
	  Rx_ShiftReg <= ((access_complete) ?12'b000000000000:12'b0)|
	((_net_47) ?{internal_RxD_in[1],Rx_ShiftReg[11:1]}:12'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 internal_RxD_in <= 3'b000;
else   internal_RxD_in <= {internal_RxD_in[1:0],RxD_i};
end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 Detect_StartBit <= 1'b0;
else if ((access_complete)|(shift_Operation))
	  Detect_StartBit <= ((access_complete) ?1'b0:1'b0)|
	((shift_Operation) ?1'b1:1'b0);

end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 shift_Operation <= 1'b0;
else if ((_net_2))
	  shift_Operation <= _proc_shift_Operation_set;
end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 data_check <= 1'b0;
else if ((_net_1))
	  data_check <= _proc_data_check_set;
end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
	 access_complete <= 1'b0;
else if ((_net_0))
	  access_complete <= _proc_access_complete_set;
end
endmodule
/*
 Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 19:03:52 2010

 Licensed to
*/
PAGE TOP