#ifndef _FPGA_MAIN_CFG_H
#define _FPGA_MAIN_CFG_H

//************************************ Глобальные (публичные) константы *************************************

// Включение диагностики модуля
// Доступные значения: 1, 0
#define FPGA_DEBUG                      (1)

// Задание роли устройства на шине МКИО (контроллер шины или оконечное устройство)
#define FPGA_IS_BUS_CONTROLLER_MKIO     (0)

// Номер канала драйвера GPIO для сброса ПЛИС
// Доступные значения: см. lmcal_gpio.h
#define FPGA_RESET_CH_GPIO              (LMCAL_GPIO_CHANNEL5)

// Активное состояние сброса
// Доступные значения: 1, 0
#define FPGA_RESET_ACTIVE_STATE         (0)


// Текущее название проекта ПЛИС
#define FPGA_CUR_PRJ_NAME               (FPGA_PRJ_NAME_LTA27) // FPGA_PRJ_NAME_LTA27

//-----------------------------------------------------------------------------------------------------------

// Формат адреса [13:0]:
// [13:9] - номер логического блока (до 32 блоков)
// [8:0]  - адрес регистра (до 512 регистров на лог.блок)

// Регистры ПЛИС:

// Common registers
#define FPGA_REG_COM_ADDR_PRJ_VER        (0x0000)
#define FPGA_REG_COM_ADDR_PRJ_NAME       (0x0001)
#define FPGA_REG_COM_ADDR_FPGA_ID        (0x0002)
#define FPGA_REG_COM_ADDR_RES            (0x0003)
#define FPGA_REG_COM_ADDR_MKO_INFO       (0x0004)
#define FPGA_REG_COM_ADDR_STS1           (0x0005)
#define FPGA_REG_COM_ADDR_STS2           (0x0006)
#define FPGA_REG_COM_ADDR_CTRL1          (0x000A)
#define FPGA_REG_COM_ADDR_CTRL2          (0x000B)


// Отдельные биты регистров:

// Версия ПО
#define FPGA_PRJ_VER_ERR            (0U)

// Название проекта
#define FPGA_PRJ_NAME_ERR           (0U)
#define FPGA_PRJ_NAME_LTA001        (01U)
#define FPGA_PRJ_NAME_LTA002        (02U)
#define FPGA_PRJ_NAME_LTA27         (27U)
#define FPGA_PRJ_NAME_LTA37         (37U)
#define FPGA_PRJ_NAME_LTA11         (11U)

// Коды ПЛИС
#define FPGA_FPGA_ID_ERR            (0U)
#define FPGA_FPGA_ID_GOWIN          (1U)

// Маска адреса МКО (5 бит)
#define FPGA_MKO_ADDR_MASK          (0x0000001F)
// Маска статуса и ошибки
#define FPGA_MKO_ADDR_STS           (0x00000080)
#define FPGA_MKO_ADDR_ERR           (0x00000040)


// todo - описание регистра серийного номера крейт-контроллера

#endif

//*********************************************** КОНЕЦ ФАЙЛА ***********************************************
