diff --git a/verilog/sarlogic/sarlogic.v b/verilog/sarlogic/sarlogic.v
new file mode 100755
index 0000000..fe656f5
--- /dev/null
+++ b/verilog/sarlogic/sarlogic.v
@@ -0,0 +1,152 @@
+`timescale 1ns/10ps
+
+// Classic SAR algorithm + Offset calibration.
+
+module sarlogic(
+    input           clk,
+    input           rstn,
+    input           en,
+    input           comp,
+    input           cal,
+    output          valid,
+    output  [9:0]   result,
+    output  		sample,
+    output  [9:0]   ctlp,
+    output  [9:0]   ctln,
+    output  [4:0]   trim,
+    output  [4:0]   trimb,
+    output          clkc);
+
+    reg             calibrate;
+    reg     [2:0]   state;
+    reg     [9:0]   mask;
+    reg     [4:0]   trim_mask;
+    reg     [9:0]   result;
+    reg     [4:0]   trim_val;
+    reg             sample;
+    reg             co_clk;
+    reg             en_co_clk;
+    reg     [3:0]   cal_count;
+    reg     [3:0]   cal_itt;
+    reg             res_valid;
+
+    parameter sInit=0, sWait=1, sSample=2, sConv=3, sDone=4, sCal=5;
+
+    initial begin
+        state <= sInit;
+        mask <= 0;
+        trim_mask <= 0;
+        result <= 0;
+        co_clk <= 0;
+        en_co_clk <= 0;
+        cal_itt <= 0;
+        cal_count <= 7;
+        trim_val <= 0;
+        calibrate <= 0;
+        res_valid <= 0;
+    end
+
+    always @(clk) begin
+        clkc <= (~clk & en_co_clk);
+    end
+
+    always @(posedge clk or negedge rstn) begin
+
+        if (!rstn) begin
+            state <= sInit;
+            mask <= 0;
+            trim_mask <= 0;
+            result <= 0;
+            co_clk <= 0;
+            en_co_clk <= 0;
+            cal_itt <= 0;
+            cal_count <= 7;
+            trim_val <= 0;
+            calibrate <= 0;
+            res_valid <= 0;
+        end
+        else begin
+            case (state)
+
+                sInit : begin
+                    trim_val <= 5'b10000;
+                    state <= sWait;
+                end
+
+                sWait : begin
+                    if(en) begin
+                        result <= 0;
+                        cal_itt <= 0;
+                        cal_count <= 7;
+                        state <= sSample;
+                        calibrate <= cal;
+		    		    mask <= 10'b1000000000;
+                        en_co_clk <= 1;
+                        res_valid <= 0;
+                    end
+                    else state <= sWait;
+                end
+
+		    	sSample : begin
+                    if (calibrate) begin
+                        state <= sCal;
+                        trim_val <= 5'b00000;
+		    		    trim_mask <= 5'b10000;
+                    end
+                    else begin
+                        state <= sConv;
+                    end
+		    	end
+
+                sConv : begin
+                	if (comp) result  <= result | mask;
+                    mask <= mask >> 1;                
+                    if (mask[0]) begin
+                        state <= sDone;
+                        en_co_clk <=0;
+                    end
+                end
+
+                sCal: begin
+                    if(cal_itt == 7) begin
+                        if (cal_count > 7) begin
+                            trim_val <= trim_val | trim_mask;
+                        end
+                        trim_mask <= trim_mask >> 1;
+                        if (trim_mask[0]) begin
+                            state <= sDone;
+                            en_co_clk <=0;
+                            calibrate <= 0;
+                        end else begin
+                            cal_itt = 0;
+                            state <= sCal;
+                        end 
+                        cal_count <= 7;
+                    end else begin
+                        if (comp) begin
+                            cal_count <= cal_count - 1;
+                        end else begin
+		    				cal_count <= cal_count + 1;
+                        end
+                        cal_itt <= cal_itt + 1;
+                    end 
+                end
+
+                sDone : begin
+                    state <= sWait;
+                    res_valid <= 1;
+                end
+
+            endcase
+        end
+    end
+
+    assign trim   = (trim_val | trim_mask );
+    assign trimb  = ~(trim_val | trim_mask);
+    assign sample = (state==sSample) || (state==sCal);
+    assign valid  = (1 && res_valid);
+	assign ctlp   = result | mask;
+	assign ctln   = ~(result | mask);
+
+endmodule
+
