matlab_23550/Inu/Src/N12_Xilinx/Spartan2E_Functions.h
Razvalyaev 7e0063eee0 #3 Скомпилилось, но пока ничего не вызывается
Все основные файлы подтянуты без изменений

Изменены (только папка main_matlab):
- заглушки для ненужных функций (main_matlab.c)
- iq библиотека (IQmathLib_matlab.c)
- библиотеки DSP281x
2025-01-13 11:09:58 +03:00

265 lines
6.9 KiB
C

#ifndef _SPARTAN2E_FUNCTIONS_H
#define _SPARTAN2E_FUNCTIONS_H
#include "DSP281x_Device.h"
#define SIZE_XILINX200 90126 // count words
struct XControll_reg_bit {
unsigned int OE_BUF_Is_ON:1;
unsigned int RemotePlane_Is_Reset:1;
unsigned int Int_for_XNMI_XINT13_ON:1;
unsigned int Int_for_XINT1_XBIO_ON:1;
unsigned int line_Z_ER0_OUT_Is:1;
unsigned int line_SET_MODE_Is:1;
unsigned int line_ER0_OUT_Sorce_Is_Tms:1;
unsigned int line_ER0_OUT_Is:1;
unsigned int line_CLKS_Sorce_Is_Tms:1;
unsigned int line_CLKS_Is:1;
unsigned int line_P7_4_Sorce_Is_Tms:1;
unsigned int line_P7_4_Is:4; // 4 bits
unsigned int line_ER0_IN_Is:1; // WR has no effect
};
typedef union {
unsigned int all;
struct XControll_reg_bit bit;
} XControll_reg;
union XSeeprom_command_reg {
unsigned int all;
struct {
unsigned int WR0:1;
unsigned int P0:1;
unsigned int A1:1;
unsigned int bit3:1;
unsigned int bit4:1;
unsigned int bit5:1;
unsigned int bit6:1;
unsigned int bit7:1;
} bit;
};
struct XSerial_bus_config_bit {
unsigned int Use_Config:1;
unsigned int Number_of_Frequency_is:3;
unsigned int Use_Timer:1;
unsigned int Range_CountTimer:4;
unsigned int Use_Filtr_on_din:1;
unsigned int Use_only_fast_Filtr_on_din:1;
unsigned int Use_Tweaking:1;
unsigned int Use_compensation_delay_on_Tweaking:1;
unsigned int Use_SyncRdWr:1;
unsigned int reserve_bits:2; // unused 2 bits
};
union XSerial_bus_config_reg {
unsigned int all;
struct XSerial_bus_config_bit bit;
};
struct XSerial_bus_intc_din_bit {
unsigned int State_Is_Idle:1;
unsigned int Error_CRC:1;
unsigned int Error_Comand:1;
unsigned int Timeout_Is_Complete:1;
unsigned int Mode_Is_Config:1;
unsigned int rezerv:3;
};
typedef volatile union {
unsigned int all;
struct XSerial_bus_intc_din_bit bit;
} XSerial_bus_intc_din_reg;
struct XSerial_bus_adr_bit {
unsigned int AdrPlane:4;
unsigned int reserve_bits:3; // unused 3 bits
unsigned int RdWR:1; // '0' - WR, '1' - RD
unsigned int AdrReg:8;
};
union XSerial_bus_adr_reg {
unsigned int all;
struct XSerial_bus_adr_bit bit;
};
typedef struct {
unsigned int TypeAccess;
unsigned int AdrPlane;
unsigned int AdrReg;
unsigned int DataWr;
unsigned int DataRd;
} Xmemory_uni;
typedef volatile struct {
unsigned int BaseAddress; // Base address of registers //
unsigned int DataWr; // Data for write to selected register //
unsigned int DataRd; // Reading data from selected register //
union XSerial_bus_adr_reg Adr;
XSerial_bus_intc_din_reg ISR;
union XSerial_bus_config_reg Config;
unsigned int IsReady:1; // Device is initialized and ready //
} XSerial_bus;
struct XSeeprom_s {
unsigned int Adr_device;
unsigned long Adr;
unsigned long Adr_seeprom;
unsigned long size;
unsigned long ok_write;
unsigned long write_error;
unsigned long repeat_error;
};
typedef volatile struct XSeeprom_s XSeeprom_t;
struct XSerial_bus_intc_mer_bit {
unsigned int Master_Enable:1;
unsigned int Hardware_Int_Enable:1;
};
union XSerial_bus_intc_mer_reg {
unsigned int all;
struct XSerial_bus_intc_mer_bit bit;
};
struct XSerial_bus_INTC {
XSerial_bus_intc_din_reg ISR;
XSerial_bus_intc_din_reg IER;
XSerial_bus_intc_din_reg IPR;
union XSerial_bus_intc_mer_reg MER;
};
struct XSerial_Tweaking_Data {
unsigned int Tweaking_tr_line:4;
unsigned int Tweaking_rec_line:4;
};
/*
struct XSerial_bus_Config_Data {
unsigned int Constant_for_Timer;
unsigned int Number_Wait_State_for_TrRec:4;
unsigned int Number_Wait_State_for_Pause:4;
struct XSerial_Tweaking_Data Tweaking_chanal[8];
unsigned int Delay_clk_for_Tr:7;
unsigned int Delay_clk_for_Rec:7;
unsigned int Use_fast_Filtr:1;
unsigned int Use_fast_Transmit:1;
unsigned int Tweaking_tbuf_en:4;
};
*/
/*
typedef volatile struct {
unsigned int PlaneIsLive; // For selected DelayLine chanal is visible: QualityTrRec = 100%, bit per chanal
unsigned int CountErrors; // count errors transmit-recieve
XSerial_bus *Bus;
struct XSerial_bus_INTC INTC;
struct XSerial_bus_Config_Data Config_Data;
unsigned int Number_Chanal;
} XSerial_bus_stats;
*/
/*
struct PARALLEL_BITS { // bits description
Uint16 res0:1; // 0
Uint16 res1:1; // 1
Uint16 res2:1; // 2
Uint16 res3:1; // 3
Uint16 res4:1; // 4
Uint16 res5:1; // 5
Uint16 res6:1; // 6
Uint16 res7:1; // 7
Uint16 res8:1; // 8
Uint16 res9:1; // 9
Uint16 res10:1; // 10
Uint16 res11:1; // 11
Uint16 res12:1; // 12
Uint16 res13:1; // 13
Uint16 res14:1; // 14
Uint16 res15:1; // 15
};
struct PARALLEL_STATUS_BITS { // bits description
Uint16 err_crc:1; // 0
Uint16 not_ready:1; // 1
Uint16 res2:1; // 2
Uint16 res3:1; // 3
Uint16 res4:1; // 4
Uint16 res5:1; // 5
Uint16 res6:1; // 6
Uint16 res7:1; // 7
Uint16 res8:1; // 8
Uint16 res9:1; // 9
Uint16 res10:1; // 10
Uint16 res11:1; // 11
Uint16 res12:1; // 12
Uint16 res13:1; // 13
Uint16 res14:1; // 14
Uint16 res15:1; // 15
};
union PARALLEL1_REG {
Uint16 all;
struct PARALLEL_BITS bit;
};
union PARALLEL2_REG {
Uint16 all;
struct PARALLEL_BITS bit;
};
union PARALLEL3_REG {
Uint16 all;
struct PARALLEL_BITS bit;
};
union PARALLEL4_REG {
Uint16 all;
struct PARALLEL_BITS bit;
};
union PARALLEL5_REG {
Uint16 all;
struct PARALLEL_BITS bit;
};
union PARALLEL_STATUS_REG {
Uint16 all;
struct PARALLEL_STATUS_BITS bit;
};
typedef volatile struct { // bits description
union PARALLEL1_REG reg1;
union PARALLEL2_REG reg2;
union PARALLEL3_REG reg3;
union PARALLEL4_REG reg4;
union PARALLEL5_REG reg5;
union PARALLEL_STATUS_REG status;
} PARALLEL_REGS;
*/
int load_xilinx_new(unsigned long adr,unsigned long size);
int xflash_remote_eeprom(unsigned int adr_device, unsigned long adr,
unsigned long adr_eeprom, unsigned long size, unsigned long *ok_write,
unsigned long *write_error, unsigned long *repeat_error );
long xread_remote_eeprom(unsigned int adr_device, unsigned long adr_eeprom,
unsigned long adr, unsigned long size, unsigned long *ok_write,
unsigned long *write_error, unsigned long *repeat_error );
long xverify_remote_eeprom(unsigned int adr_device, unsigned long adr,
unsigned long adr_eeprom, unsigned long size, unsigned long *ok_write,
unsigned long *write_error, unsigned long *repeat_error );
int test_xilinx_live(void);
int enable_er0_control(void);
void ResetNPeriphPlane(unsigned int np);
#endif