diff --git a/libraries/io/i2c/src/vhdl/i2c_commander_unb2_pmbus_pkg.vhd b/libraries/io/i2c/src/vhdl/i2c_commander_unb2_pmbus_pkg.vhd new file mode 100644 index 0000000000000000000000000000000000000000..9464b96d8b0a91b070f1ec7288b2963b4f37f280 --- /dev/null +++ b/libraries/io/i2c/src/vhdl/i2c_commander_unb2_pmbus_pkg.vhd @@ -0,0 +1,121 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2011 +-- 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: I2C commander settings for the UniBoard2 I2C SENS bus +-- sensors. +-- Remark: +-- . Adapted from i2c_commander_unbh_pkg +-- reduce the number of protocol lists to 4 + +LIBRARY IEEE, common_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE common_lib.common_pkg.ALL; +USE work.i2c_pkg.ALL; +USE work.i2c_commander_pkg.ALL; +USE work.i2c_dev_unb2_pkg.ALL; + + +PACKAGE i2c_commander_unb2_pmbus_pkg IS + + ------------------------------------------------------------------------------ + -- Local constants (with prefix 'k_') + ------------------------------------------------------------------------------ + + -- Define the protocol lists for the commander (c_i2c_cmdr_max_nof_protocols=16) + CONSTANT k_protocol_list_0 : t_nat_natural_arr := c_i2c_unb2_pmbus_protocol_list_read_all; + CONSTANT k_protocol_list_1 : t_nat_natural_arr := c_i2c_cmdr_protocol_list_end; + CONSTANT k_protocol_list_2 : t_nat_natural_arr := c_i2c_cmdr_protocol_list_end; + CONSTANT k_protocol_list_3 : t_nat_natural_arr := c_i2c_cmdr_protocol_list_end; + + CONSTANT k_protocol_ram_init : t_nat_natural_arr := k_protocol_list_0 & + k_protocol_list_1 & + k_protocol_list_2 & + k_protocol_list_3; + + -- Define the corresponding mask words for the result data + CONSTANT k_expected_mask_0 : STD_LOGIC_VECTOR := c_i2c_unb2_pmbus_expected_mask_read_all; + CONSTANT k_expected_mask_1 : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_end; + CONSTANT k_expected_mask_2 : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_end; + CONSTANT k_expected_mask_3 : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_end; + + CONSTANT k_expected_mask_arr : t_slv_32_arr(0 TO c_i2c_unb2_nof_protocol_lists-1) := (k_expected_mask_0, + k_expected_mask_1, + k_expected_mask_2, + k_expected_mask_3); + + -- Define the corresponding expected nof read data + CONSTANT k_nof_result_data_0 : NATURAL := c_i2c_unb2_pmbus_nof_result_data_read_all; + CONSTANT k_nof_result_data_1 : NATURAL := c_i2c_cmdr_nof_result_data_none; + CONSTANT k_nof_result_data_2 : NATURAL := c_i2c_cmdr_nof_result_data_none; + CONSTANT k_nof_result_data_3 : NATURAL := c_i2c_cmdr_nof_result_data_none; + + CONSTANT k_nof_result_data_arr : t_nat_natural_arr := (k_nof_result_data_0, + k_nof_result_data_1, + k_nof_result_data_2, + k_nof_result_data_3); + + -- Define the corresponding protocol list offsets + CONSTANT k_protocol_ofs_0 : NATURAL := 0; + CONSTANT k_protocol_ofs_1 : NATURAL := k_protocol_list_0'LENGTH + k_protocol_ofs_0; + CONSTANT k_protocol_ofs_2 : NATURAL := k_protocol_list_1'LENGTH + k_protocol_ofs_1; + CONSTANT k_protocol_ofs_3 : NATURAL := k_protocol_list_2'LENGTH + k_protocol_ofs_2; + + CONSTANT k_protocol_ofs_arr : t_natural_arr(0 TO c_i2c_unb2_nof_protocol_lists-1) := (k_protocol_ofs_0, + k_protocol_ofs_1, + k_protocol_ofs_2, + k_protocol_ofs_3); + + -- RAM sizes + CONSTANT k_protocol_ram_nof_dat : NATURAL := ceil_div(k_protocol_ram_init'LENGTH, c_i2c_cmdr_mem_block_sz) * c_i2c_cmdr_mem_block_sz; + CONSTANT k_protocol_ram_adr_w : NATURAL := ceil_log2(k_protocol_ram_nof_dat); + CONSTANT k_result_adr_w : NATURAL := k_protocol_ram_adr_w-1; -- assume < 1 result byte per 2 protocol bytes + CONSTANT k_result_nof_dat : NATURAL := 2**k_result_adr_w; + + -- Commander settings + CONSTANT k_nof_protocols : NATURAL := 2; -- Must be >= actually used nof protocol lists in k_protocol_ram_init and <= c_i2c_cmdr_max_nof_protocols=16 protocols. + CONSTANT k_nof_result_data_max : NATURAL := 4; -- Must be >= the maximum nof read bytes in any protocol list in k_protocol_ram_init + CONSTANT k_result_cnt_w : NATURAL := k_result_adr_w; + + + ------------------------------------------------------------------------------ + -- Global constants (with prefix 'c_i2c_cmdr_unbh_') + ------------------------------------------------------------------------------ + + CONSTANT c_i2c_cmdr_unbh_protocol_ram_init : t_nat_natural_arr := k_protocol_ram_init; + CONSTANT c_i2c_cmdr_unbh_nof_result_data_arr : t_nat_natural_arr := k_nof_result_data_arr; + + CONSTANT c_i2c_cmdr_unbh_i2c_mm : t_c_i2c_mm := (c_i2c_control_adr_w, + k_protocol_ram_adr_w, + k_protocol_ram_nof_dat, + k_result_adr_w, + k_result_nof_dat); + + CONSTANT c_i2c_cmdr_unbh_protocol_commander : t_c_i2c_cmdr_commander := (k_nof_protocols, + k_protocol_ofs_arr, + k_expected_mask_arr, + k_result_cnt_w, + k_nof_result_data_max); + +END i2c_commander_unb2_pmbus_pkg; + + +PACKAGE BODY i2c_commander_unb2_pmbus_pkg IS +END i2c_commander_unb2_pmbus_pkg; diff --git a/libraries/io/i2c/src/vhdl/i2c_commander_unb2_sens_pkg.vhd b/libraries/io/i2c/src/vhdl/i2c_commander_unb2_sens_pkg.vhd new file mode 100644 index 0000000000000000000000000000000000000000..a8dad33accef964f126ac22bfd4f8e0b90dd7fe3 --- /dev/null +++ b/libraries/io/i2c/src/vhdl/i2c_commander_unb2_sens_pkg.vhd @@ -0,0 +1,121 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2011 +-- 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: I2C commander settings for the UniBoard2 I2C SENS bus +-- sensors. +-- Remark: +-- . Adapted from i2c_commander_unbh_pkg +-- reduce the number of protocol lists to 4 + +LIBRARY IEEE, common_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE common_lib.common_pkg.ALL; +USE work.i2c_pkg.ALL; +USE work.i2c_commander_pkg.ALL; +USE work.i2c_dev_unb2_pkg.ALL; -- slave addresses and commands for all unb2 i2c interfaces + + +PACKAGE i2c_commander_unb2_sens_pkg IS + + ------------------------------------------------------------------------------ + -- Local constants (with prefix 'k_') + ------------------------------------------------------------------------------ + + -- Define the protocol lists for the commander (c_i2c_cmdr_max_nof_protocols=16) + CONSTANT k_protocol_list_0 : t_nat_natural_arr := c_i2c_unb2_sens_max1617_protocol_list_read_config; + CONSTANT k_protocol_list_1 : t_nat_natural_arr := c_i2c_unb2_sens_max1617_protocol_list_read_temp; + CONSTANT k_protocol_list_2 : t_nat_natural_arr := c_i2c_unb2_sens_protocol_list_read_all; + CONSTANT k_protocol_list_3 : t_nat_natural_arr := c_i2c_cmdr_protocol_list_end; + + CONSTANT k_protocol_ram_init : t_nat_natural_arr := k_protocol_list_0 & + k_protocol_list_1 & + k_protocol_list_2 & + k_protocol_list_3; + + -- Define the corresponding mask words for the result data + CONSTANT k_expected_mask_0 : STD_LOGIC_VECTOR := c_i2c_unb2_sens_max1617_expected_mask_read_config; + CONSTANT k_expected_mask_1 : STD_LOGIC_VECTOR := c_i2c_unb2_sens_max1617_expected_mask_read_temp; + CONSTANT k_expected_mask_2 : STD_LOGIC_VECTOR := c_i2c_unb2_sens_expected_mask_read_all; + CONSTANT k_expected_mask_3 : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_end; + + CONSTANT k_expected_mask_arr : t_slv_32_arr(0 TO c_i2c_unb2_nof_protocol_lists-1) := (k_expected_mask_0, + k_expected_mask_1, + k_expected_mask_2, + k_expected_mask_3); + + -- Define the corresponding expected nof read data + CONSTANT k_nof_result_data_0 : NATURAL := c_i2c_unb2_sens_max1617_nof_result_data_read_config; + CONSTANT k_nof_result_data_1 : NATURAL := c_i2c_unb2_sens_max1617_nof_result_data_read_temp; + CONSTANT k_nof_result_data_2 : NATURAL := c_i2c_unb2_sens_nof_result_data_read_all; + CONSTANT k_nof_result_data_3 : NATURAL := c_i2c_cmdr_nof_result_data_none; + + CONSTANT k_nof_result_data_arr : t_nat_natural_arr := (k_nof_result_data_0, + k_nof_result_data_1, + k_nof_result_data_2, + k_nof_result_data_3); + + -- Define the corresponding protocol list offsets + CONSTANT k_protocol_ofs_0 : NATURAL := 0; + CONSTANT k_protocol_ofs_1 : NATURAL := k_protocol_list_0'LENGTH + k_protocol_ofs_0; + CONSTANT k_protocol_ofs_2 : NATURAL := k_protocol_list_1'LENGTH + k_protocol_ofs_1; + CONSTANT k_protocol_ofs_3 : NATURAL := k_protocol_list_2'LENGTH + k_protocol_ofs_2; + + CONSTANT k_protocol_ofs_arr : t_natural_arr(0 TO c_i2c_unb2_nof_protocol_lists-1) := (k_protocol_ofs_0, + k_protocol_ofs_1, + k_protocol_ofs_2, + k_protocol_ofs_3); + + -- RAM sizes + CONSTANT k_protocol_ram_nof_dat : NATURAL := ceil_div(k_protocol_ram_init'LENGTH, c_i2c_cmdr_mem_block_sz) * c_i2c_cmdr_mem_block_sz; + CONSTANT k_protocol_ram_adr_w : NATURAL := ceil_log2(k_protocol_ram_nof_dat); + CONSTANT k_result_adr_w : NATURAL := k_protocol_ram_adr_w-1; -- assume < 1 result byte per 2 protocol bytes + CONSTANT k_result_nof_dat : NATURAL := 2**k_result_adr_w; + + -- Commander settings + CONSTANT k_nof_protocols : NATURAL := 2; -- Must be >= actually used nof protocol lists in k_protocol_ram_init and <= c_i2c_cmdr_max_nof_protocols=16 protocols. + CONSTANT k_nof_result_data_max : NATURAL := 4; -- Must be >= the maximum nof read bytes in any protocol list in k_protocol_ram_init + CONSTANT k_result_cnt_w : NATURAL := k_result_adr_w; + + + ------------------------------------------------------------------------------ + -- Global constants (with prefix 'c_i2c_cmdr_unbh_') + ------------------------------------------------------------------------------ + + CONSTANT c_i2c_cmdr_unbh_protocol_ram_init : t_nat_natural_arr := k_protocol_ram_init; + CONSTANT c_i2c_cmdr_unbh_nof_result_data_arr : t_nat_natural_arr := k_nof_result_data_arr; + + CONSTANT c_i2c_cmdr_unbh_i2c_mm : t_c_i2c_mm := (c_i2c_control_adr_w, + k_protocol_ram_adr_w, + k_protocol_ram_nof_dat, + k_result_adr_w, + k_result_nof_dat); + + CONSTANT c_i2c_cmdr_unbh_protocol_commander : t_c_i2c_cmdr_commander := (k_nof_protocols, + k_protocol_ofs_arr, + k_expected_mask_arr, + k_result_cnt_w, + k_nof_result_data_max); + +END i2c_commander_unb2_sens_pkg; + + +PACKAGE BODY i2c_commander_unb2_sens_pkg IS +END i2c_commander_unb2_sens_pkg; diff --git a/libraries/io/i2c/src/vhdl/i2c_dev_unb2_pkg.vhd b/libraries/io/i2c/src/vhdl/i2c_dev_unb2_pkg.vhd new file mode 100644 index 0000000000000000000000000000000000000000..1603ccdf5e1796db2b77f57ed3aaf45c4a816737 --- /dev/null +++ b/libraries/io/i2c/src/vhdl/i2c_dev_unb2_pkg.vhd @@ -0,0 +1,149 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2012 +-- 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/>. +-- +------------------------------------------------------------------------------- + +-- Uniboard2 version derived from i2c_dev_unb_pkg + +LIBRARY IEEE, common_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE common_lib.common_pkg.ALL; +USE work.i2c_smbus_pkg.ALL; +USE work.i2c_dev_max1617_pkg.ALL; +USE work.i2c_dev_max6652_pkg.ALL; +USE work.i2c_commander_pkg.ALL; + + +PACKAGE i2c_dev_unb2_pkg IS + + -- I2C slave addresses of the devices on the I2C sens bus on UniBoard2 + CONSTANT I2C_UNB2_SENS_TEMP_MAX1617_ADR : NATURAL := MAX1617_ADR_MID_LOW; -- temperature sensor, slave address is 0x29 + CONSTANT I2C_UNB2_SENS_DCDC_BMR456_ADR : NATURAL := X"2C"; -- dc/dc converter, slave address is 0x2c + CONSTANT I2C_UNB2_SENS_PIM_PIM4328PD_ADR : NATURAL := X"2b"; -- power input module, slave address is 0x2b + CONSTANT I2C_UNB2_SENS_1V2_BMR461_ADR : NATURAL := X"0f"; -- 1.2V power supply, slave address is 0x0f + CONSTANT I2C_UNB2_SENS_3V3_BMR461_ADR : NATURAL := X"0e"; -- 3.3V power supply, slave address is 0x0e + CONSTANT I2C_UNB2_SENS_CLK_BMR461_ADR : NATURAL := X"0d"; -- clock power supply, slave address is 0x0d + CONSTANT I2C_UNB2_SENS_QSFP0_BMR464_ADR : NATURAL := X"02"; -- qsfp0 power supply, slave address is 0x02 + CONSTANT I2C_UNB2_SENS_QSFP1_BMR464_ADR : NATURAL := X"01"; -- qsfp1 power supply, slave address is 0x01 + CONSTANT I2C_UNB2_SENS_EEPROM_CAT24C02_ADR : NATURAL := X"a0"; -- eeprom , slave address is 0xa0 + CONSTANT I2C_UNB2_SENS_TEMP_TMP451_ADR : NATURAL := X"ac"; -- temperature sensor, slave address is 0x4c + + -- I2C slave addresses of the devices on the I2C pm bus on UniBoard2 + CONSTANT I2C_UNB2_PMB_CORE_BMR464_ADR : NATURAL := X"01"; -- core supply, slave address is 0x01 + CONSTANT I2C_UNB2_PMB_VCCRAM_BMR461_ADR : NATURAL := X"0d"; -- vcc ram supply, slave address is 0x0d + CONSTANT I2C_UNB2_PMB_TCVR0_BMR461_ADR : NATURAL := X"0e"; -- transceiver0 supply, slave address is 0x0e + CONSTANT I2C_UNB2_PMB_TCVR1_BMR461_ADR : NATURAL := X"0f"; -- transceiver1 supply, slave address is 0x0f + CONSTANT I2C_UNB2_PMB_CTRL_BMR461_ADR : NATURAL := X"10"; -- control supply, slave address is 0x10 + CONSTANT I2C_UNB2_PMB_FPGAIO_BMR461_ADR : NATURAL := X"11"; -- fpga io supply, slave address is 0x11 + + -- I2C slave addresses of the devices on the I2C ddr4 memory bus on UniBoard2 + CONSTANT I2C_UNB2_MB_I_DDR4_ADR : NATURAL := X"18"; -- ddr4 module I, slave address is 0x18 + CONSTANT I2C_UNB2_MB_II_DDR4_ADR : NATURAL := X"19"; -- ddr4 module II, slave address is 0x19 + + CONSTANT c_i2c_unb_temp_high : NATURAL := 85; + + -- commands + -- these can later go into device specific packages + CONSTANT PMBUS_REG_READ_VIN : NATURAL := X"88"; -- common to all PMB devices + CONSTANT PMBUS_REG_READ_VCAP : NATURAL := X"8a"; -- used in the PIM4328PD + CONSTANT PMBUS_REG_READ_VOUT : NATURAL := X"8b"; -- common to all PMB devices + CONSTANT PMBUS_REG_READ_IOUT : NATURAL := X"8c"; -- common to all PMB devices + CONSTANT PMBUS_REG_READ_TEmP : NATURAL := X"8d"; -- common to all PMB devices + + CONSTANT c_i2c_unb2_nof_protocol_lists : NATURAL := 4; -- for now we allow four protocol lists for each i2c interface + + -- Commander protocol lists for UNB sens bus + + -- > Temperature sensor: + -- . c_i2c_unb_protocol_list_read_config + -- . c_i2c_unb_protocol_list_read + + CONSTANT c_i2c_unb2_sens_max1617_expected_mask_read_config : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_read_one_byte; + CONSTANT c_i2c_unb2_sens_max1617_nof_result_data_read_config : NATURAL := c_i2c_cmdr_nof_result_data_read_one_byte; + CONSTANT c_i2c_unb2_sens_max1617_protocol_list_read_config : t_nat_natural_arr := ( + SMBUS_READ_BYTE, I2C_UNB2_SENS_TEMP_MAX1617_ADR, MAX1617_CMD_READ_REMOTE_TEMP, + SMBUS_WRITE_BYTE, I2C_UNB2_SENS_TEMP_MAX1617_ADR, MAX1617_CMD_WRITE_CONFIG, MAX1617_CONFIG_ID+MAX1617_CONFIG_THERM, + SMBUS_WRITE_BYTE, I2C_UNB2_SENS_TEMP_MAX1617_ADR, MAX1617_CMD_WRITE_REMOTE_HIGH, c_i2c_unb_temp_high, + SMBUS_C_END + ); + + CONSTANT c_i2c_unb2_sens_max1617_expected_mask_read_temp : STD_LOGIC_VECTOR := c_i2c_cmdr_expected_mask_read_one_byte; + CONSTANT c_i2c_unb2_sens_max1617_nof_result_data_read_temp : NATURAL := c_i2c_cmdr_nof_result_data_read_one_byte; + CONSTANT c_i2c_unb2_sens_max1617_protocol_list_read_temp : t_nat_natural_arr := ( + SMBUS_READ_BYTE, I2C_UNB2_SENS_TEMP_MAX1617_ADR, MAX1617_CMD_READ_REMOTE_TEMP, + SMBUS_C_END + ); + + + CONSTANT c_i2c_unb2_sens_expected_mask_read_all : STD_LOGIC_VECTOR := RESIZE_UVEC("001010101010101010101010101010101010101010101", c_word_w); + CONSTANT c_i2c_unb2_sens_nof_result_data_read_all : NATURAL := 22; + CONSTANT c_i2c_unb2_sens_protocol_list_read_all : t_nat_natural_arr := ( + SMBUS_READ_BYTE , I2C_UNB2_SENS_TEMP_MAX1617_ADR, MAX1617_CMD_READ_REMOTE_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_DCDC_BMR456_ADR, PMBUS_REG_READ_VIN, + SMBUS_READ_BYTE , I2C_UNB2_SENS_DCDC_BMR456_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_DCDC_BMR456_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_PIM_PIM4328PD_ADR, PMBUS_REG_READ_VIN, + SMBUS_READ_BYTE , I2C_UNB2_SENS_PIM_PIM4328PD_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_PIM_PIM4328PD_ADR, PMBUS_REG_READ_VCAP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_1V2_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_1V2_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_1V2_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_3V3_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_3V3_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_3V3_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_CLK_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_CLK_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_CLK_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP0_BMR464_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP0_BMR464_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP0_BMR464_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP1_BMR464_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP1_BMR464_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_SENS_QSFP1_BMR464_ADR, PMBUS_REG_READ_TEMP, + SMBUS_C_END + ); + + + -- Commander protocol lists for UNB2 PMBUS + + CONSTANT c_i2c_unb2_pmbus_expected_mask_read_all : STD_LOGIC_VECTOR := RESIZE_UVEC("0010101010101010101010101010101010101", c_word_w); + CONSTANT c_i2c_unb2_pmbus_nof_result_data_read_all : NATURAL := 18; + CONSTANT c_i2c_unb2_pmbus_protocol_list_read_all : t_nat_natural_arr := ( + SMBUS_READ_BYTE , I2C_UNB2_PMB_CORE_BMR464_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_CORE_BMR464_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_CORE_BMR464_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_PMB_VCCRAM_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_VCCRAM_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_VCCRAM_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR0_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR0_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR0_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR1_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR1_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_TCVR1_BMR461_ADR, PMBUS1_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_PMB_CTRL_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_CTRL_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_CTRL_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_READ_BYTE , I2C_UNB2_PMB_FPGIO_BMR461_ADR, PMBUS_REG_READ_VOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_FPGIO_BMR461_ADR, PMBUS_REG_READ_IOUT, + SMBUS_READ_BYTE , I2C_UNB2_PMB_FPGIO_BMR461_ADR, PMBUS_REG_READ_TEMP, + SMBUS_C_END + ); + +END PACKAGE;