Newer
Older
`include "corr_matrix.vh" //automatically created and added by fwk with conf variables such a C_VERSION ...
/* default values of defined variables */
`ifndef C_ID
`define C_ID 0x507E1730
`endif
`ifndef C_VERSION
`define C_VERSION 0x00000000
`endif
name = "PI corrector with matrix multiplier";
desyrdl_interface = "AXI4L";
reg {
desc="Module Identification Number.";
default sw = r;
default hw = r;
field {} data[32] = `C_ID;
} ID @0x00;
reg {
desc="Module Version Number.";
default sw = r;
desc="X-plane control of the corrector.";
default sw=rw; default hw=r;
field {} ENABLE_CORR;
field {} RST_CORR;
} CONTROL_X;
reg {
desc="Y-plane control of the corrector.";
default sw=rw; default hw=r;
field {} ENABLE_CORR;
field {} RST_CORR;
} CONTROL_Y;
reg {
desc="Theshold autostop.";
default sw=rw; default hw=r;
field {} ENABLE;
field {} RST;
} THRESH;
reg {
desc="Global status of the corrector.";
default sw=r; default hw=rw;
field {} THRESH_REACHED;
} STATUS;
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1A_X;
reg {
desc="Correction coefficient B.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1B_X;
reg {
desc="Correction coefficient (inverse) C.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1IC_X;
reg {
desc="Correction coefficient D.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1D_X;
reg {
desc="Correction coefficient A.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K2A_X;
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Correction coefficient (inverse) C.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Correction coefficient D.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K2D_X;
reg {
desc="Correction coefficient A.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1A_Y;
reg {
desc="Correction coefficient B.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1B_Y;
reg {
desc="Correction coefficient (inverse) C.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1IC_Y;
reg {
desc="Correction coefficient D.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
} CORR_K1D_Y;
reg {
desc="Correction coefficient A.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Correction coefficient B.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Correction coefficient (inverse) C.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Correction coefficient D.";
field {sw = rw; hw = r;} data[`C_W_COR_COEF];
reg {
desc="Number of ID to count for matrix multiplication.";
field {sw = rw; hw = r;} data[`C_W_MM_IDCNT] = `C_N_MM_BPM;
mementries = 2**`C_W_MM_IDCNT;
} external REFORBITX;
mem {
desc = "Y Reference orbit.";
mementries = 2**`C_W_MM_IDCNT;
} external REFORBITY;
mem {
desc = "PSC identifier table.";
} external PSCIDTABLE;
mem {
desc = "Matrix multiplication coefficients.";
mem {
desc = "X Average orbit error";
sw=r;
memwidth = 32;
mementries = 2**`C_W_MM_IDCNT;
} external ERRORBITX;
mem {
desc = "Y Average orbit error";
sw=r;
memwidth = 32;
mementries = 2**`C_W_MM_IDCNT;
} external ERRORBITY;
mem {
desc = "Average correction, both planes";
sw=r;
memwidth = 32;
mementries = 2**`C_W_PSCID;
} external CORRCMD;