/*
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
*/