diff --git a/libraries/io/fpga_sense/hdllib.cfg b/libraries/io/fpga_sense/hdllib.cfg
index 8b6c32b9ebe5f6fbe525926d56ee2ccf37c98afb..c40c0ac1e105d3688b808cc981820c35840cf2b8 100644
--- a/libraries/io/fpga_sense/hdllib.cfg
+++ b/libraries/io/fpga_sense/hdllib.cfg
@@ -1,4 +1,4 @@
-hdl_lib_name = fpga__sense
+hdl_lib_name = fpga_sense
 hdl_library_clause_name = fpga_sense_lib
 hdl_lib_uses_synth = common technology tech_fpga_temp_sens tech_fpga_voltage_sens
 hdl_lib_uses_sim = 
diff --git a/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd b/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
index 793f641808f424c86fc427fc49f2abb4462630a7..8f1e62a1bd0657ccb64c65f16d5290bdb4a84634 100644
--- a/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
+++ b/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
@@ -69,9 +69,17 @@ ARCHITECTURE str OF fpga_sense IS
   CONSTANT c_mem_reg_voltage_nof_data  : NATURAL := 1;
   CONSTANT c_mem_reg_voltage_data : t_c_mem := (c_mem_reg_rd_latency, c_mem_reg_voltage_adr_w , c_mem_reg_voltage_dat_w , c_mem_reg_voltage_nof_data, 'X');
 
-  SIGNAL mm_reg_temp_data : STD_LOGIC_VECTOR(c_mem_reg_dat_w-1 downto 0);
+  SIGNAL mm_reg_temp_data : STD_LOGIC_VECTOR(c_mem_reg_temp_dat_w-1 downto 0);
   SIGNAL temp_data        : STD_LOGIC_VECTOR(9 downto 0);
   SIGNAL eoc              : STD_LOGIC;
+  signal start_sense_mm : STD_LOGIC := '0';
+  signal start_sense_mm_d1 : STD_LOGIC := '0';
+  signal start_sense_mm_d2 : STD_LOGIC := '0';
+  signal controller_csr_write : STD_LOGIC := '0';
+  SIGNAL controller_csr_writedata : STD_LOGIC_VECTOR(31 downto 0) := X"00000001"; 
+                                        -- bits 9:8 = "00" select channels 2-7
+                                        -- bits 2:1 = "00" select single conversion
+                                        -- bit 0 = '1' set the self-clearing run bit 
 
 BEGIN
 
@@ -94,7 +102,7 @@ BEGIN
       IF mm_rst = '1' THEN
         mm_reg_temp_data <= (OTHERS => '0');
       ELSIF falling_edge(eoc) THEN
-        mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_dat_w);
+        mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_temp_dat_w);
       END IF;
     END PROCESS;
 
@@ -106,7 +114,7 @@ BEGIN
                                                              
     temp_data <= TO_UVEC(460, temp_data'LENGTH);   -- choose temp = 45 degrees so adc temp_data = 460
     --temp_data <= RESIZE_UVEC(x"45",10);
-    mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_dat_w);
+    mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_temp_dat_w);
   END GENERATE;
 
   u_reg_map : ENTITY common_lib.common_reg_r_w_dc
@@ -146,26 +154,33 @@ BEGIN
       )
       PORT MAP (
         clock_clk                  => mm_clk,
-        reset_sink_reset           => mm_reset,
-        controller_csr_address     => controller_csr_address,
-        controller_csr_read        => controller_csr_read,
+        reset_sink_reset           => mm_rst,
+        controller_csr_address     => '1',
+        controller_csr_read        => '0',
         controller_csr_write       => controller_csr_write,
         controller_csr_writedata   => controller_csr_writedata,
-        controller_csr_readdata    => controller_csr_readdata,
-        sample_store_csr_address   => reg_voltage_store_mosi.address,
-        sample_store_csr_read      => reg_voltage_store_mosi.read,
-        sample_store_csr_write     => reg_voltage_store_mosi.write,
-        sample_store_csr_writedata => reg_voltage_store_mosi.writedata,
-        sample_store_csr_readdata  => reg_voltage_store_mosi.readdata,
-        sample_store_irq_irq       => sample_store_irq_irq
+        controller_csr_readdata    => open,
+        sample_store_csr_address   => reg_voltage_store_mosi.address(3 downto 0),
+        sample_store_csr_read      => reg_voltage_store_mosi.rd,
+        sample_store_csr_write     => reg_voltage_store_mosi.wr,
+        sample_store_csr_writedata => reg_voltage_store_mosi.wrdata(31 downto 0),
+        sample_store_csr_readdata  => reg_voltage_store_miso.rddata(31 downto 0),
+        sample_store_irq_irq       => open
     );
 
     PROCESS(eoc, mm_rst)
       BEGIN
         IF mm_rst = '1' THEN
-          mm_reg_temp_data <= (OTHERS => '0');
-        ELSIF falling_edge(eoc) THEN
-          mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_dat_w);
+          controller_csr_write <= '0';
+        ELSIF rising_edge(mm_clk) THEN
+          start_sense_mm <= start_sense;
+          start_sense_mm_d1 <= start_sense_mm;
+          start_sense_mm_d2 <= start_sense_mm_d1;
+          if start_sense_mm_d1 = '1' and start_sense_mm_d2 = '0' then
+            controller_csr_write <= '1';
+	  else 
+            controller_csr_write <= '0';
+          end if;
         END IF;
     END PROCESS;
 
diff --git a/libraries/io/fpga_temp_sens/hdllib.cfg b/libraries/io/fpga_temp_sens/hdllib.cfg
deleted file mode 100644
index 09f6dc7d66f23538711bccdad36c67e2e3c579ae..0000000000000000000000000000000000000000
--- a/libraries/io/fpga_temp_sens/hdllib.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-hdl_lib_name = fpga_temp_sens
-hdl_library_clause_name = fpga_temp_sens_lib
-hdl_lib_uses_synth = common technology tech_fpga_temp_sens
-hdl_lib_uses_sim = 
-
-hdl_lib_technology = 
-
-synth_files =
-    src/vhdl/fpga_temp_sens.vhd
-
-test_bench_files = 
-
diff --git a/libraries/io/fpga_temp_sens/src/vhdl/fpga_temp_sens.vhd b/libraries/io/fpga_temp_sens/src/vhdl/fpga_temp_sens.vhd
deleted file mode 100644
index a9e9142f029ab2dc894d2bd5d1dd20bf4803202b..0000000000000000000000000000000000000000
--- a/libraries/io/fpga_temp_sens/src/vhdl/fpga_temp_sens.vhd
+++ /dev/null
@@ -1,131 +0,0 @@
--------------------------------------------------------------------------------
---
--- Copyright (C) 2015
--- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
--- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
---
--- This program is free software: you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation, either version 3 of the License, or
--- (at your option) any later version.
---
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with this program.  If not, see <http://www.gnu.org/licenses/>.
---
--------------------------------------------------------------------------------
-
--- Purpose:
--- Description:
---  
-
-
-LIBRARY IEEE, common_lib, technology_lib, tech_fpga_temp_sens_lib;
-USE IEEE.std_logic_1164.ALL;
-USE IEEE.numeric_std.ALL;
-USE common_lib.common_pkg.ALL;
-USE common_lib.common_mem_pkg.ALL;
-USE technology_lib.technology_select_pkg.ALL;
-USE technology_lib.technology_pkg.ALL;
---USE tech_temp_sense_lib.tech_temp_sense_component_pkg.ALL;
-
-
-ENTITY fpga_temp_sens IS
-  GENERIC (
-    g_technology     : NATURAL := c_tech_select_default;
-    g_sim            : BOOLEAN
-  );
-  PORT (
-    -- MM interface
-    mm_rst      : IN  STD_LOGIC;
-    mm_clk      : IN  STD_LOGIC;
-
-    start_sense : IN  STD_LOGIC;
-    
-    reg_mosi    : IN  t_mem_mosi := c_mem_mosi_rst;
-    reg_miso    : OUT t_mem_miso
-  );
-END fpga_temp_sens;
-
-
-ARCHITECTURE str OF fpga_temp_sens IS
-
-  CONSTANT c_mem_reg_adr_w     : NATURAL := 1;
-  CONSTANT c_mem_reg_dat_w     : NATURAL := 32;
-  CONSTANT c_mem_reg_nof_data  : NATURAL := 1;
-  CONSTANT c_mem_reg_temp_data : t_c_mem := (c_mem_reg_rd_latency, c_mem_reg_adr_w , c_mem_reg_dat_w , c_mem_reg_nof_data, 'X');
-
-  SIGNAL mm_reg_temp_data : STD_LOGIC_VECTOR(c_mem_reg_dat_w-1 downto 0);
-  SIGNAL temp_data        : STD_LOGIC_VECTOR(9 downto 0);
-  SIGNAL eoc              : STD_LOGIC;
-
-BEGIN
-
-  gen_tech_fpga_temp_sens: IF g_sim=FALSE GENERATE
-    u_tech_fpga_temp_sens : ENTITY tech_fpga_temp_sens_lib.tech_fpga_temp_sens
-    GENERIC MAP (
-      g_technology => g_technology
-    )
-    PORT MAP (
-      corectl => start_sense,
-      eoc     => eoc,      --: OUT STD_LOGIC;
-      reset   => mm_rst,
-      tempout => temp_data --: OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
-    );
-
-    PROCESS(eoc, mm_rst)
-    BEGIN
-      IF mm_rst = '1' THEN
-        mm_reg_temp_data <= (OTHERS => '0');
-      ELSIF falling_edge(eoc) THEN
-        mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_dat_w);
-      END IF;
-    END PROCESS;
-
-  END GENERATE;
-
-
-
-  gen_no_tech_fpga_temp_sens: IF g_sim=TRUE GENERATE
-    -- temp = (708 * adc)/1024 - 273 => adc = (temp + 273)*1024/708
-    temp_data <= TO_UVEC(460, temp_data'LENGTH);   -- choose temp = 45 degrees so adc temp_data = 460
-    mm_reg_temp_data <= RESIZE_UVEC(temp_data,c_mem_reg_dat_w);
-  END GENERATE;
-
-
-
-
-
-
-
-  u_reg_map : ENTITY common_lib.common_reg_r_w_dc
-  GENERIC MAP (
-    g_cross_clock_domain => FALSE,
-    g_in_new_latency     => 0,
-    g_readback           => FALSE,
-    g_reg                => c_mem_reg_temp_data,
-    g_init_reg           => (OTHERS => '0')
-  )
-  PORT MAP (
-    -- Clocks and reset
-    mm_rst      => mm_rst,
-    mm_clk      => mm_clk,
-    st_rst      => mm_rst,
-    st_clk      => mm_clk,
-
-    -- Memory Mapped Slave in mm_clk domain
-    sla_in      => reg_mosi,
-    sla_out     => reg_miso,
-
-    -- MM registers in st_clk domain
-    reg_wr_arr  => OPEN,
-    reg_rd_arr  => OPEN,
-    in_new      => '1',
-    in_reg      => mm_reg_temp_data,
-    out_reg     => OPEN
-  );
-END str;