]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
I2C UID works now with TMP117
authorMichael Boehmer <mboehmer@ph.tum.de>
Sun, 29 May 2022 21:27:20 +0000 (23:27 +0200)
committerMichael Boehmer <mboehmer@ph.tum.de>
Sun, 29 May 2022 21:27:20 +0000 (23:27 +0200)
special/trb_net_i2cwire.vhd
trb_net16_endpoint_hades_full_gbe.vhd
trb_net16_endpoint_hades_full_handler_record.vhd
trb_net_components.vhd
trb_net_std.vhd

index 264de3fec683632b003b024813cbf84dc7a17ebb..4445656eb32f2e477442a8e6d11a279b88b64cc3 100644 (file)
@@ -298,7 +298,6 @@ begin
     if( RESET = '1') then\r
       temp_int <= (others => '0');\r
     elsif( (CURRENT_STATE = RD_TMP) and (valid_int = '1') ) then\r
---    elsif( (temp_we = '1') ) then  \r
       temp_int <= i2c_dr_int(15 downto 4);\r
     end if;\r
   end if;\r
index ac38bc59fcd954b2a89406af92f5eda26eee826b..4fa68d7c9d01ff19c46b84db3c9e24179c440608 100644 (file)
@@ -45,7 +45,7 @@ entity trb_net16_endpoint_hades_full_gbe is
     REGIO_COMPILE_TIME           : std_logic_vector(31 downto 0) := x"00000000";
     REGIO_INCLUDED_FEATURES      : std_logic_vector(63 downto 0) := (others => '0');
     REGIO_HARDWARE_VERSION       : std_logic_vector(31 downto 0) := x"12345678";
-    REGIO_USE_1WIRE_INTERFACE    : integer := c_YES; --c_YES,c_NO,c_MONITOR,c_I2C,c_XDNA
+    REGIO_USE_1WIRE_INTERFACE    : integer := c_YES; --c_YES,c_NO,c_MONITOR,c_I2C,c_XDNA,C_I2C_TC
     REGIO_USE_VAR_ENDPOINT_ID    : integer range c_NO to c_YES := c_NO;
     CLOCK_FREQUENCY              : integer range 1 to 200 := 100;
     USE_GBE                      : integer range 0 to 1 := c_YES
@@ -892,11 +892,11 @@ begin
               STAT_ADDR_DEBUG        => STAT_ADDR_DEBUG
               );
           gen_no1wire : if REGIO_USE_1WIRE_INTERFACE = c_NO generate
-            ONEWIRE_DATA  <= REGIO_IDRAM_DATA_IN;
-            ONEWIRE_ADDR  <= REGIO_IDRAM_ADDR_IN;
-            ONEWIRE_WRITE <= REGIO_IDRAM_WR_IN;
-            REGIO_IDRAM_DATA_OUT <= buf_IDRAM_DATA_OUT;
-            REGIO_ONEWIRE_INOUT <= '0';
+            ONEWIRE_DATA              <= REGIO_IDRAM_DATA_IN;
+            ONEWIRE_ADDR              <= REGIO_IDRAM_ADDR_IN;
+            ONEWIRE_WRITE             <= REGIO_IDRAM_WR_IN;
+            REGIO_IDRAM_DATA_OUT      <= buf_IDRAM_DATA_OUT;
+            REGIO_ONEWIRE_INOUT       <= '0';
             REGIO_ONEWIRE_MONITOR_OUT <= '0';
 
           end generate;
@@ -921,9 +921,8 @@ begin
           
           gen_1wire : if REGIO_USE_1WIRE_INTERFACE = c_YES generate
 
-
             REGIO_IDRAM_DATA_OUT <= (others => '0');
-            STAT_ONEWIRE <= buf_stat_onewire;
+            STAT_ONEWIRE         <= buf_stat_onewire;
             
             onewire_interface : trb_net_onewire
               generic map(
@@ -946,6 +945,7 @@ begin
                 );
           end generate;
           gen_1wire_monitor : if REGIO_USE_1WIRE_INTERFACE = c_MONITOR generate
+
             REGIO_IDRAM_DATA_OUT <= (others => '0');
             REGIO_ONEWIRE_MONITOR_OUT <= '0';
 
@@ -966,8 +966,10 @@ begin
                 );
           end generate;
           gen_i2c : if REGIO_USE_1WIRE_INTERFACE = c_I2C generate
+
             REGIO_ONEWIRE_MONITOR_OUT <= '0';
             REGIO_ONEWIRE_INOUT       <= '0';
+            
             i2c_interface : trb_net_i2cwire
               generic map(
                 USE_TEMPERATURE_READOUT => c_YES,
@@ -989,6 +991,32 @@ begin
                 STAT              => buf_stat_onewire
                 );
           end generate;
+          gen_i2c_tomcat : if REGIO_USE_1WIRE_INTERFACE = c_I2C_TC generate
+            
+            REGIO_ONEWIRE_MONITOR_OUT <= '0';
+            REGIO_ONEWIRE_INOUT       <= '0';
+            
+            i2c_interface2 : trb_net_i2cwire2
+              generic map(
+                USE_TEMPERATURE_READOUT => c_YES,
+                CLK_PERIOD => 10
+              )
+              port map(
+                CLK               => CLK,
+                RESET             => RESET,
+                READOUT_ENABLE_IN => '1',
+                --connection to I2C interface
+                SCL_INOUT         => I2C_SCL,
+                SDA_INOUT         => I2C_SDA,
+                --connection to id ram, according to memory map in TrbNetRegIO
+                DATA_OUT          => ONEWIRE_DATA,
+                ADDR_OUT          => ONEWIRE_ADDR,
+                WRITE_OUT         => ONEWIRE_WRITE,
+                TEMP_OUT          => temperature,
+                ID_OUT            => unique_id_out_i,                
+                STAT              => buf_stat_onewire
+                );
+          end generate;
         end generate;
       end generate;
       gentermbuf: if USE_CHANNEL(i) = c_NO generate
index a7411ad0f8c40a551f6323bf18eb709f5654dff1..ccc18c665090d7c8880a328cbd7fb16febd199d3 100644 (file)
@@ -20,7 +20,7 @@ entity trb_net16_endpoint_hades_full_handler_record is
     BROADCAST_BITMASK            : std_logic_vector(7 downto 0)  := x"FF";
     REGIO_INIT_ENDPOINT_ID       : std_logic_vector(15 downto 0) := x"0001";
     REGIO_USE_VAR_ENDPOINT_ID    : integer range c_NO to c_YES   := c_NO;
-    REGIO_USE_1WIRE_INTERFACE    : integer range 0 to 4 := c_YES;
+    REGIO_USE_1WIRE_INTERFACE    : integer range 0 to 5 := c_YES;
     TIMING_TRIGGER_RAW           : integer range 0 to 1 := c_YES;
     --Configure data handler
     DATA_INTERFACE_NUMBER        : integer range 1 to 16         := 1;
index dc988f2d9d7c280f87feb0492182bc1c9f0da684..c96329e115d170ef42a8443e64fbb77954e23b08 100644 (file)
@@ -1601,6 +1601,28 @@ end component;
   end component;\r
 \r
 \r
+  component trb_net_i2cwire2 is\r
+    generic(\r
+      USE_TEMPERATURE_READOUT : integer range 0 to 1 := 1;\r
+      CLK_PERIOD : integer := 10  --clk period in ns\r
+    );\r
+    port(\r
+      CLK               : in    std_logic;\r
+      RESET             : in    std_logic;\r
+      READOUT_ENABLE_IN : in    std_logic := '1';\r
+      --connection to I2C interface\r
+      SCL_INOUT         :  inout  std_logic;\r
+      SDA_INOUT         :  inout  std_logic;\r
+      --connection to id ram, according to memory map in TrbNetRegIO\r
+      DATA_OUT          : out    std_logic_vector(15 downto 0);\r
+      ADDR_OUT          : out    std_logic_vector(2 downto 0);\r
+      WRITE_OUT         : out    std_logic;\r
+      TEMP_OUT          : out    std_logic_vector(11 downto 0);\r
+      ID_OUT            : out    std_logic_vector(63 downto 0);\r
+      STAT              : out    std_logic_vector(31 downto 0)\r
+    );\r
+  end component;\r
+\r
 \r
   component trb_net16_ibuf is\r
     generic (\r
index 2b616d98c630d9331e8897786479de1a3783cf58..c442f05c2d491e0b313a41dcb2418b315ddf4c58 100644 (file)
@@ -18,16 +18,12 @@ package trb_net_std is
 --Trigger Info
   constant TRIG_SUPPRESS_BIT : integer range 0 to 15 := 0;
 
-
-
 -- some basic definitions for the whole network
 -----------------------------------------------
-
   constant c_DATA_WIDTH        : integer   := 16;
   constant c_NUM_WIDTH         : integer   := 3;
   constant c_MUX_WIDTH         : integer   := 3; --!!!
 
-
 --assigning channel names
   constant c_TRG_LVL1_CHANNEL  : integer := 0;
   constant c_DATA_CHANNEL      : integer := 1;
@@ -60,11 +56,12 @@ package trb_net_std is
   constant c_FIFO_INFTY    : integer := 7;
 
 --simple logic
-  constant c_YES  : integer := 1;
-  constant c_NO   : integer := 0;
+  constant c_YES     : integer := 1;
+  constant c_NO      : integer := 0;
   constant c_MONITOR : integer := 2;
-  constant c_I2C  : integer := 3;
-  constant c_XDNA : integer := 4;
+  constant c_I2C     : integer := 3;
+  constant c_XDNA    : integer := 4;
+  constant c_I2C_TC  : integer := 5;
 
 --media interface steering
   constant c_IS_UNUSED   : integer := 0;