`timescale 1ns / 1ps
// SPDX-FileCopyrightText: 2020 Efabless Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// SPDX-License-Identifier: Apache-2.0

`default_nettype none
/*
 *-------------------------------------------------------------
 *
 * user_project_wrapper
 *
 * This wrapper enumerates all of the pins available to the
 * user for the user project.
 *
 * An example user project is provided in this wrapper.  The
 * example should be removed and replaced with the actual
 * user project.
 *
 *-------------------------------------------------------------
 */

module FSM #(
    parameter BITS = 32
) (
`ifdef USE_POWER_PINS
    inout vdda1,	// User area 1 3.3V supply
    inout vdda2,	// User area 2 3.3V supply

`endif
    // Logic Analyzer Signals
    input  [127:0] la_data_in,
    output [127:0] la_data_out,



    // Independent clock (on independent integer divider)
    input   user_clock2,


);

/*--------------------------------------*/
/* User project is instantiated  here   */
/*--------------------------------------*/


TOP
    #(32)//Module parametrization             //
    project(                                                         //
        // Inputs                                             //
        user_clock2,                           //
        la_data_in[32],                           //
        la_data_in[31:0],
        // Output
        la_data_out[64:33],                           //
        la_data_out[65]
    );


endmodule	// user_project_wrapper




module TOP
    #(parameter BIT = 32)//Module parametrization             //
    (                                                         //
        // Inputs                                             //
        input   clk,                            //
        input   reset,                           //
        input   [ BIT - 1 : 0 ] external_bus,
        // Output
        output  [ BIT - 1 : 0 ] output_bus,                           //
        output  series_ready
    );
    
wire [BIT-1:0] x_tent,x_log,x,CL,CT,internal_bus,x_n;
wire  [2:0] en_mode;
wire ldX,ldL,ldT,ldE;
assign output_bus = x;
controller
 #(BIT)//Module parametrization             //
 control_block(
    clk,
    reset,
    external_bus,
    x_n,
    ldE,
    ldX,
    ldL,
    ldT,
    internal_bus,
    series_ready 

    );
ld_parameter
    #(BIT)//Module parametrization             //
    X(        
        clk,
        ldX,
        internal_bus,        
        x
     )  ;
ld_parameter
    #(BIT)//Module parametrization             //
    C_L(        
        clk,
        ldL,
        internal_bus,        
        CL
     )  ;
ld_parameter
    #(BIT)//Module parametrization             //
    C_T(        
        clk,
        ldT,
        internal_bus,        
        CT
     )  ;
ld_parameter
    #(3)//Module parametrization             //
    mode(        
        clk,
        ldE,
        internal_bus[2:0],        
        en_mode
     )  ;
map
    #(BIT)//Module parametrization             //
    a(        
        x,
        CL,
        CT,
        
        x_tent,
        x_log
     )  ;
                                               //
decoder
    #(BIT)//Module parametrization             //
    b(                                                         //
        // Inputs                                             //
      x_tent,                       //
      x_log,                        //
    en_mode,        
        // Output
        x_n                           //
    );
endmodule
module decoder
    #(parameter BIT = 64)//Module parametrization             //
    (                                                         //
        // Inputs                                             //
        input   [ BIT - 1 : 0 ] x_tent,                       //
        input   [ BIT - 1 : 0 ] x_log,                        //
        input   [  2      : 0 ] en_mode,        
        // Output
        output  [ BIT - 1 : 0 ] x_n                           //
    );
wire [BIT -1 :0] flipped,unflipped,NLCS,FPCS,to_flip;
wire [ 2*BIT - 4 : 0 ] FPCS_temp; 
wire [BIT -1 :0] double_map,single_map;



assign to_flip   = (~en_mode[0]) ? (x_tent):(x_log);
assign unflipped = (~en_mode[1]) ? (x_tent):(x_log);

assign flipped= {~|to_flip[BIT-1:0],~to_flip[BIT-2:0]+1'b1};
assign FPCS_temp= flipped*unflipped;
assign NLCS= x_tent+x_log;
assign FPCS =FPCS_temp[ 2*BIT - 4 : BIT   - 3 ];

assign double_map = (~en_mode[1] | en_mode[0]) ? (FPCS):(NLCS);
assign single_map = (en_mode[1] ^  en_mode[0]) ? (flipped):(unflipped);
assign x_n        = (~en_mode[2]             ) ? (double_map):(single_map);



endmodule
module ld_parameter
    #(parameter BIT = 64)//Module parametrization             //
    (    
        input clk,
        input ld,
        input [BIT-1:0] internal_bus,
        output reg [BIT -1:0] para_meter  
    );

always @(posedge clk)
    begin
        if (ld) para_meter <= internal_bus;
    end
endmodule
module map
    #(parameter BIT = 64)//Module parametrization             //
    (                                                         //
        // Inputs                                             //
        input   [ BIT - 1 : 0 ] x,                            //
        input   [ BIT - 1 : 0 ] CL,                           //
        input   [ BIT - 1 : 0 ] CT, 
                                                              //
        // Outputs                                            //
        output  [ BIT - 1 : 0 ] x_tent,                        //
        output  [ BIT - 1 : 0 ] x_log                         //
    );
wire [BIT -1 :0] one_minux_x, x_input;
wire [ 2*BIT -3 : 0 ] tent;                          //
wire [ 3*BIT -5 : 0 ] log; 
wire router;


assign router = x[BIT-2]||x[BIT-1];

assign one_minux_x= {~|x[BIT-1:0],~x[BIT-2:0]+1'b1};

assign x_input = (router) ? (one_minux_x):(x);


assign tent = x_input* CT;
assign log  = x*one_minux_x * CL;

assign x_tent = tent[ 2*BIT - 3 : BIT   - 2 ];
assign x_log  = log [ 3*BIT - 5 : 2*BIT - 4 ];

endmodule





module controller
 #(parameter BIT = 64)//Module parametrization             //
 (
    input CLK,
    input reset,
    input [BIT-1:0]external_bus,
    input [BIT-1:0] x_n,
    output reg ldE,
    output reg ldX,
    output reg ldL,
    output reg ldT,
    output  [BIT-1:0] internal_bus,
    output series_ready 

    );
reg [2:0] state;
localparam S0=3'b000,S1=3'b001,S2=3'b010,S3=3'b011,S4=3'b100,S5=3'b101,S6=3'b110,S7=3'b111; 
reg [12:0] counter=0;
reg bus_mode=1;


wire control_signal,repeate_signal;
assign control_signal=&external_bus[BIT-1:BIT-3];
assign repeate_signal=(&counter);
assign internal_bus=(bus_mode)?(external_bus): (x_n);
assign series_ready = ldX;

always @(posedge CLK )
    begin
        case (state)
            S0: if (control_signal) state <=S1;
            S1: state<=S2;
            S2: state<=S3;
            S3: state<=S4;
            S4: begin state<=S5; counter<=0; end
            S5:begin 
                counter<=counter+1;                
                if (reset) state <= S7;
                else if (control_signal) state <= S6;
               end
            S6: if (control_signal) state <= S5;
            S7: state<=S0;
            default :state <=S0;
        endcase
     end
always @(state or counter)
    begin
        case (state)
            S0: begin ldE = 0; ldX = 0; ldL = 0; ldT = 0; bus_mode =1 ;end
            S1: begin ldE = 1; ldX = 0; ldL = 0; ldT = 0; bus_mode =1 ;end
            S2: begin ldE = 0; ldX = 1; ldL = 0; ldT = 0; bus_mode =1 ;end
            S3: begin ldE = 0; ldX = 0; ldL = 1; ldT = 0; bus_mode =1 ;end
            S4: begin ldE = 0; ldX = 0; ldL = 0; ldT = 1; bus_mode =1 ;end
            S5: begin 
                if (counter==13'b1111111111111) begin
                    ldX=1;
                end else begin ldX=0; end
                bus_mode = 0 ;ldE = 0;  ldL = 0; ldT = 0;
            end
            S6: begin ldE = 0; ldX = 0; ldL = 0; ldT = 0;  bus_mode = 0 ; end
            S7: begin ldE = 1; ldX = 1; ldL = 1; ldT = 1;  bus_mode = 1 ; end
        endcase
    end
              
endmodule
`default_nettype wire
