diff --git a/boards/uniboard2b/libraries/unb2b_board/hdllib.cfg b/boards/uniboard2b/libraries/unb2b_board/hdllib.cfg
index f259881a91659e750efe1e23be4c9270134bd9d9..4bd8057a2fed687f925d01d3ab478d32194472d5 100644
--- a/boards/uniboard2b/libraries/unb2b_board/hdllib.cfg
+++ b/boards/uniboard2b/libraries/unb2b_board/hdllib.cfg
@@ -26,7 +26,6 @@ synth_files =
     src/vhdl/unb2b_board_hmc_ctrl.vhd
     src/vhdl/unb2b_board_sens.vhd
     src/vhdl/unb2b_board_sens_reg.vhd
-    src/vhdl/unb2b_fpga_sens_reg.vhd
     src/vhdl/mms_unb2b_board_sens.vhd
     src/vhdl/mms_unb2b_fpga_sens.vhd
     src/vhdl/unb2b_board_wdi_reg.vhd
diff --git a/boards/uniboard2b/libraries/unb2b_board/src/vhdl/mms_unb2b_fpga_sens.vhd b/boards/uniboard2b/libraries/unb2b_board/src/vhdl/mms_unb2b_fpga_sens.vhd
index 3b80d6548698d3f4a776987d8322c77f79185b6d..9db4496059eaa928afed5c9f0d20ed492f30fdaf 100644
--- a/boards/uniboard2b/libraries/unb2b_board/src/vhdl/mms_unb2b_fpga_sens.vhd
+++ b/boards/uniboard2b/libraries/unb2b_board/src/vhdl/mms_unb2b_fpga_sens.vhd
@@ -22,7 +22,7 @@
 -- Purpose : MMS for unb2b_fpga_sens
 -- Description: See unb2b_fpga_sens.vhd
 
-LIBRARY IEEE, technology_lib, common_lib;
+LIBRARY IEEE, technology_lib, common_lib, fpga_sense_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.NUMERIC_STD.ALL;
 USE common_lib.common_pkg.ALL;
@@ -43,10 +43,10 @@ ENTITY mms_unb2b_fpga_sens IS
     mm_start          : IN  STD_LOGIC;
     
     -- Memory-mapped clock domain
-    reg_temp_mosi          : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
-    reg_temp_miso          : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
-    reg_voltage_mosi          : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
-    reg_voltage_miso          : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
+    reg_temp_mosi     : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
+    reg_temp_miso     : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
+    reg_voltage_mosi  : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
+    reg_voltage_miso  : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
     
     -- Temperature alarm output
     temp_alarm        : OUT STD_LOGIC
@@ -56,67 +56,27 @@ END mms_unb2b_fpga_sens;
 
 ARCHITECTURE str OF mms_unb2b_fpga_sens IS
 
-  CONSTANT c_sens_nof_result : NATURAL := 1;  -- 
-  CONSTANT c_temp_high_w     : NATURAL := 7;  -- Allow user to use only 7 (no sign, only positive) of 8 bits to set set max temp
-
-  SIGNAL sens_err  : STD_LOGIC;
-  SIGNAL sens_data : t_slv_8_arr(0 TO c_sens_nof_result-1);
-
-  SIGNAL temp_high : STD_LOGIC_VECTOR(c_temp_high_w-1 DOWNTO 0);
-
 BEGIN
 
-  u_unb2b_fpga_sens_reg : ENTITY work.unb2b_fpga_sens_reg
+  u_fpga_sense: ENTITY fpga_sense_lib.fpga_sense
   GENERIC MAP (
-    g_sim             => g_sim,
-    g_technology      => g_technology,
-    g_sens_nof_result => c_sens_nof_result,
-    g_temp_high       => g_temp_high  
+    g_technology => g_technology,
+    g_sim        => g_sim,
+    g_temp_high  => g_temp_high
   )
   PORT MAP (
-    -- Clocks and reset
-    mm_rst       => mm_rst,
-    mm_clk       => mm_clk,
-    start        => mm_start,
-    
-    -- Memory Mapped Slave in mm_clk domain
-    sla_temp_in       => reg_temp_mosi,
-    sla_temp_out      => reg_temp_miso,
-    sla_voltage_in    => reg_voltage_mosi,
-    sla_voltage_out   => reg_voltage_miso,
-    
-    -- MM registers
-    --sens_err     => sens_err,  -- using same protocol list for both node2 and all nodes implies that sens_err is only valid for node2.
-    --sens_data    => sens_data,
+    mm_clk      => mm_clk,
+    mm_rst      => mm_rst,
 
-    -- Max temp threshold
-    temp_high    => temp_high
-  );
-  
---  u_unb2b_board_sens : ENTITY work.unb2b_board_sens
---  GENERIC MAP (
---    g_sim             => g_sim,
---    g_clk_freq        => g_clk_freq,
---    g_temp_high       => g_temp_high,
---    g_sens_nof_result => c_sens_nof_result
---  )
---  PORT MAP (
---    clk          => mm_clk,
---    rst          => mm_rst,
---    start        => mm_start,
---    -- i2c bus
---    scl          => scl,
---    sda          => sda,
---    -- read results
---    sens_evt     => OPEN,
---    sens_err     => sens_err,
---    sens_data    => sens_data
---  );
+    start_sense => mm_start,
+    temp_alarm  => temp_alarm,
 
-  -- Temperature: 7 bits (1 bit per degree) plus sign. A faulty readout (never pulled down = all ones) 
-  -- would produce -1 degrees so does not trigger a temperature alarm.
-  -- temp_high is 7 bits, preceded by a '0' to allow only positive temps to be set. 
-  temp_alarm <= '0';--<= '1' WHEN (SIGNED(sens_data(0)) > SIGNED('0' & temp_high)) ELSE '0';
+    reg_temp_mosi    => reg_temp_mosi, 
+    reg_temp_miso    => reg_temp_miso, 
+
+    reg_voltage_store_mosi    => reg_voltage_mosi,
+    reg_voltage_store_miso    => reg_voltage_miso
+  );
     
 END str;
 
diff --git a/boards/uniboard2b/libraries/unb2b_board/src/vhdl/unb2b_fpga_sens_reg.vhd b/boards/uniboard2b/libraries/unb2b_board/src/vhdl/unb2b_fpga_sens_reg.vhd
deleted file mode 100644
index 11dc73c393f704ef8c43addd8961186eaf41d425..0000000000000000000000000000000000000000
--- a/boards/uniboard2b/libraries/unb2b_board/src/vhdl/unb2b_fpga_sens_reg.vhd
+++ /dev/null
@@ -1,89 +0,0 @@
--------------------------------------------------------------------------------
---
--- Copyright (C) 2012-2014
--- 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: Provide MM slave register for unb2b_fpga_sens
---
-
-LIBRARY IEEE, common_lib, technology_lib, fpga_sense_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_pkg.ALL;
-
-
-ENTITY unb2b_fpga_sens_reg IS
-  GENERIC (
-    g_sim             : BOOLEAN;
-    g_technology      : NATURAL := c_tech_arria10;
-    g_sens_nof_result : NATURAL := 1;
-    g_temp_high       : NATURAL := 85
-  );
-  PORT (
-    -- Clocks and reset
-    mm_rst     : IN  STD_LOGIC;   -- reset synchronous with mm_clk
-    mm_clk     : IN  STD_LOGIC;   -- memory-mapped bus clock
-    start      : IN  STD_LOGIC;
-    
-    -- Memory Mapped Slave in mm_clk domain
-    sla_temp_in     : IN  t_mem_mosi;  -- actual ranges defined by c_mm_reg
-    sla_temp_out    : OUT t_mem_miso;  -- actual ranges defined by c_mm_reg
-    
-    sla_voltage_in     : IN  t_mem_mosi;  -- actual ranges defined by c_mm_reg
-    sla_voltage_out    : OUT t_mem_miso;  -- actual ranges defined by c_mm_reg
-
-    -- MM registers
-    --sens_err   : IN  STD_LOGIC := '0';
-    --sens_data  : IN  t_slv_8_arr(0 TO g_sens_nof_result-1); -- FIXME should be OUT
-
-    -- Max temp output
-    temp_high  : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
-  );
-END unb2b_fpga_sens_reg;
-
-
-ARCHITECTURE str OF unb2b_fpga_sens_reg IS
-
-  --SIGNAL i_temp_high    : STD_LOGIC_VECTOR(6 DOWNTO 0);
-                                  
-BEGIN
-
-  temp_high <= (others => '0'); --i_temp_high;
-
-  u_fpga_sense: ENTITY fpga_sense_lib.fpga_sense
-  GENERIC MAP (
-    g_technology => g_technology,
-    g_sim        => g_sim
-  )
-  PORT MAP (
-    mm_clk      => mm_clk,
-    mm_rst      => mm_rst,
-
-    start_sense => start,
-
-    reg_temp_mosi    => sla_temp_in,
-    reg_temp_miso    => sla_temp_out,
-
-    reg_voltage_store_mosi    => sla_voltage_in,
-    reg_voltage_store_miso    => sla_voltage_out
-  );
-
-END str;
diff --git a/boards/uniboard2c/libraries/unb2c_board/hdllib.cfg b/boards/uniboard2c/libraries/unb2c_board/hdllib.cfg
index 93583a2b56bf78bd132632a723dcbddd675cc9ac..2c8c0275e1c60cd36b8fe99c65faeb1023bafd95 100644
--- a/boards/uniboard2c/libraries/unb2c_board/hdllib.cfg
+++ b/boards/uniboard2c/libraries/unb2c_board/hdllib.cfg
@@ -20,7 +20,6 @@ synth_files =
     src/vhdl/unb2c_board_clk125_pll.vhd
     src/vhdl/unb2c_board_wdi_extend.vhd
     src/vhdl/unb2c_board_node_ctrl.vhd
-    src/vhdl/unb2c_fpga_sens_reg.vhd
     src/vhdl/mms_unb2c_fpga_sens.vhd
     src/vhdl/unb2c_board_wdi_reg.vhd
     src/vhdl/unb2c_board_qsfp_leds.vhd
diff --git a/boards/uniboard2c/libraries/unb2c_board/src/vhdl/mms_unb2c_fpga_sens.vhd b/boards/uniboard2c/libraries/unb2c_board/src/vhdl/mms_unb2c_fpga_sens.vhd
index 4308051f7f46c47865ba634b23626dfc79955b45..d95aa316d5d29337ddf2de1e814c2a1e13f1be80 100644
--- a/boards/uniboard2c/libraries/unb2c_board/src/vhdl/mms_unb2c_fpga_sens.vhd
+++ b/boards/uniboard2c/libraries/unb2c_board/src/vhdl/mms_unb2c_fpga_sens.vhd
@@ -43,10 +43,10 @@ ENTITY mms_unb2c_fpga_sens IS
     mm_start          : IN  STD_LOGIC;
     
     -- Memory-mapped clock domain
-    reg_temp_mosi          : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
-    reg_temp_miso          : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
-    reg_voltage_mosi          : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
-    reg_voltage_miso          : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
+    reg_temp_mosi     : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
+    reg_temp_miso     : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
+    reg_voltage_mosi  : IN  t_mem_mosi := c_mem_mosi_rst;  -- actual ranges defined by c_mm_reg
+    reg_voltage_miso  : OUT t_mem_miso;                    -- actual ranges defined by c_mm_reg
     
     -- Temperature alarm output
     temp_alarm        : OUT STD_LOGIC
@@ -56,67 +56,27 @@ END mms_unb2c_fpga_sens;
 
 ARCHITECTURE str OF mms_unb2c_fpga_sens IS
 
-  CONSTANT c_sens_nof_result : NATURAL := 1;  -- 
-  CONSTANT c_temp_high_w     : NATURAL := 7;  -- Allow user to use only 7 (no sign, only positive) of 8 bits to set set max temp
-
-  SIGNAL sens_err  : STD_LOGIC;
-  SIGNAL sens_data : t_slv_8_arr(0 TO c_sens_nof_result-1);
-
-  SIGNAL temp_high : STD_LOGIC_VECTOR(c_temp_high_w-1 DOWNTO 0);
-
 BEGIN
-
-  u_unb2c_fpga_sens_reg : ENTITY work.unb2c_fpga_sens_reg
+ 
+  u_fpga_sense: ENTITY fpga_sense_lib.fpga_sense
   GENERIC MAP (
-    g_sim             => g_sim,
-    g_technology      => g_technology,
-    g_sens_nof_result => c_sens_nof_result,
-    g_temp_high       => g_temp_high  
+    g_technology => g_technology,
+    g_sim        => g_sim,
+    g_temp_high  => g_temp_high
   )
   PORT MAP (
-    -- Clocks and reset
-    mm_rst       => mm_rst,
-    mm_clk       => mm_clk,
-    start        => mm_start,
-    
-    -- Memory Mapped Slave in mm_clk domain
-    sla_temp_in       => reg_temp_mosi,
-    sla_temp_out      => reg_temp_miso,
-    sla_voltage_in    => reg_voltage_mosi,
-    sla_voltage_out   => reg_voltage_miso,
-    
-    -- MM registers
-    --sens_err     => sens_err,  -- using same protocol list for both node2 and all nodes implies that sens_err is only valid for node2.
-    --sens_data    => sens_data,
+    mm_clk      => mm_clk,
+    mm_rst      => mm_rst,
 
-    -- Max temp threshold
-    temp_high    => temp_high
-  );
-  
---  u_unb2c_board_sens : ENTITY work.unb2c_board_sens
---  GENERIC MAP (
---    g_sim             => g_sim,
---    g_clk_freq        => g_clk_freq,
---    g_temp_high       => g_temp_high,
---    g_sens_nof_result => c_sens_nof_result
---  )
---  PORT MAP (
---    clk          => mm_clk,
---    rst          => mm_rst,
---    start        => mm_start,
---    -- i2c bus
---    scl          => scl,
---    sda          => sda,
---    -- read results
---    sens_evt     => OPEN,
---    sens_err     => sens_err,
---    sens_data    => sens_data
---  );
+    start_sense => mm_start,
+    temp_alarm  => temp_alarm,
 
-  -- Temperature: 7 bits (1 bit per degree) plus sign. A faulty readout (never pulled down = all ones) 
-  -- would produce -1 degrees so does not trigger a temperature alarm.
-  -- temp_high is 7 bits, preceded by a '0' to allow only positive temps to be set. 
-  temp_alarm <= '0';--<= '1' WHEN (SIGNED(sens_data(0)) > SIGNED('0' & temp_high)) ELSE '0';
-    
+    reg_temp_mosi    => reg_temp_mosi, 
+    reg_temp_miso    => reg_temp_miso, 
+
+    reg_voltage_store_mosi    => reg_voltage_mosi,
+    reg_voltage_store_miso    => reg_voltage_miso
+  );
+       
 END str;
 
diff --git a/boards/uniboard2c/libraries/unb2c_board/src/vhdl/unb2c_fpga_sens_reg.vhd b/boards/uniboard2c/libraries/unb2c_board/src/vhdl/unb2c_fpga_sens_reg.vhd
deleted file mode 100644
index aa9686461aa060149f3ebfbc546077a52e124036..0000000000000000000000000000000000000000
--- a/boards/uniboard2c/libraries/unb2c_board/src/vhdl/unb2c_fpga_sens_reg.vhd
+++ /dev/null
@@ -1,89 +0,0 @@
--------------------------------------------------------------------------------
---
--- Copyright (C) 2012-2014
--- 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: Provide MM slave register for unb2c_fpga_sens
---
-
-LIBRARY IEEE, common_lib, technology_lib, fpga_sense_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_pkg.ALL;
-
-
-ENTITY unb2c_fpga_sens_reg IS
-  GENERIC (
-    g_sim             : BOOLEAN;
-    g_technology      : NATURAL := c_tech_arria10;
-    g_sens_nof_result : NATURAL := 1;
-    g_temp_high       : NATURAL := 85
-  );
-  PORT (
-    -- Clocks and reset
-    mm_rst     : IN  STD_LOGIC;   -- reset synchronous with mm_clk
-    mm_clk     : IN  STD_LOGIC;   -- memory-mapped bus clock
-    start      : IN  STD_LOGIC;
-    
-    -- Memory Mapped Slave in mm_clk domain
-    sla_temp_in     : IN  t_mem_mosi;  -- actual ranges defined by c_mm_reg
-    sla_temp_out    : OUT t_mem_miso;  -- actual ranges defined by c_mm_reg
-    
-    sla_voltage_in     : IN  t_mem_mosi;  -- actual ranges defined by c_mm_reg
-    sla_voltage_out    : OUT t_mem_miso;  -- actual ranges defined by c_mm_reg
-
-    -- MM registers
-    --sens_err   : IN  STD_LOGIC := '0';
-    --sens_data  : IN  t_slv_8_arr(0 TO g_sens_nof_result-1); -- FIXME should be OUT
-
-    -- Max temp output
-    temp_high  : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
-  );
-END unb2c_fpga_sens_reg;
-
-
-ARCHITECTURE str OF unb2c_fpga_sens_reg IS
-
-  --SIGNAL i_temp_high    : STD_LOGIC_VECTOR(6 DOWNTO 0);
-                                  
-BEGIN
-
-  temp_high <= (others => '0'); --i_temp_high;
-
-  u_fpga_sense: ENTITY fpga_sense_lib.fpga_sense
-  GENERIC MAP (
-    g_technology => g_technology,
-    g_sim        => g_sim
-  )
-  PORT MAP (
-    mm_clk      => mm_clk,
-    mm_rst      => mm_rst,
-
-    start_sense => start,
-
-    reg_temp_mosi    => sla_temp_in,
-    reg_temp_miso    => sla_temp_out,
-
-    reg_voltage_store_mosi    => sla_voltage_in,
-    reg_voltage_store_miso    => sla_voltage_out
-  );
-
-END str;
diff --git a/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd b/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
index a03a8b77815e3eaf75827c842d94e0193119c9db..8c6fd89085bc3e8b18dd3f2027e30187078d36f9 100644
--- a/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
+++ b/libraries/io/fpga_sense/src/vhdl/fpga_sense.vhd
@@ -37,7 +37,8 @@ USE technology_lib.technology_pkg.ALL;
 ENTITY fpga_sense IS
   GENERIC (
     g_technology     : NATURAL := c_tech_select_default;
-    g_sim            : BOOLEAN
+    g_sim            : BOOLEAN;
+    g_temp_high      : NATURAL := 85
   );
   PORT (
     -- MM interface
@@ -45,6 +46,7 @@ ENTITY fpga_sense IS
     mm_clk      : IN  STD_LOGIC;
 
     start_sense : IN  STD_LOGIC;
+    temp_alarm  : OUT STD_LOGIC;
     
     reg_temp_mosi          : IN  t_mem_mosi := c_mem_mosi_rst;
     reg_temp_miso          : OUT t_mem_miso;
@@ -63,6 +65,9 @@ ARCHITECTURE str OF fpga_sense IS
   CONSTANT c_mem_reg_temp_nof_data  : NATURAL := 1;
   CONSTANT c_mem_reg_temp_data : t_c_mem := (c_mem_reg_rd_latency, c_mem_reg_temp_adr_w , c_mem_reg_temp_dat_w , c_mem_reg_temp_nof_data, 'X');
 
+  -- temp = (708 * adc)/1024 - 273 => adc = (temp + 273)*1024/708                                                             
+  CONSTANT c_temp_high_raw : STD_LOGIC_VECTOR(9 downto 0) := TO_UVEC(((g_temp_high + 273) * 1024) / 708, 10);
+
   -- constants for the voltage sensor	
   CONSTANT c_mem_reg_voltage_adr_w     : NATURAL := 1;
   CONSTANT c_mem_reg_voltage_dat_w     : NATURAL := 32;
@@ -84,7 +89,7 @@ ARCHITECTURE str OF fpga_sense IS
 BEGIN
 
   -- temperature sensor
-
+  temp_alarm <= '1' WHEN (SIGNED(temp_data) > SIGNED(c_temp_high_raw)) ELSE '0';
   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 (
@@ -173,13 +178,16 @@ BEGIN
       BEGIN
         IF mm_rst = '1' THEN
           controller_csr_write <= '0';
+          start_sense_mm       <= '0';
+          start_sense_mm_d1    <= '0';
+          start_sense_mm_d2    <= '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 
+	        else 
             controller_csr_write <= '0';
           end if;
         END IF;