This commit is contained in:
maliakal_d 2020-06-22 15:02:28 +02:00
parent 801f2c4559
commit 9d3bbc0a68
6 changed files with 30 additions and 34 deletions

View File

@ -133,7 +133,6 @@ enum CLKINDEX { RUN_CLK, ADC_CLK, SYNC_CLK, DBIT_CLK, NUM_CLOCKS };
#define VIO_MIN_MV (1200) // for fpga to function
/* Defines in the Firmware */
#define MAX_PATTERN_LENGTH (0x2000)
#define DIGITAL_IO_DELAY_MAXIMUM_PS \
((OUTPUT_DELAY_0_OTPT_STTNG_MSK >> OUTPUT_DELAY_0_OTPT_STTNG_OFST) * \
OUTPUT_DELAY_0_OTPT_STTNG_STEPS)

View File

@ -117,7 +117,6 @@ enum CLKINDEX { RUN_CLK, ADC_CLK, SYNC_CLK, DBIT_CLK, NUM_CLOCKS };
#define DAC_MAX_MV (2500)
/* Defines in the Firmware */
#define MAX_PATTERN_LENGTH (0x2000)
#define DIGITAL_IO_DELAY_MAXIMUM_PS \
((OUTPUT_DELAY_0_OTPT_STTNG_MSK >> OUTPUT_DELAY_0_OTPT_STTNG_OFST) * \
OUTPUT_DELAY_0_OTPT_STTNG_STEPS)

View File

@ -37,7 +37,7 @@
#define DEFAULT_TIMING_MODE (AUTO_TIMING)
#define DEFAULT_READOUT_C0 (10) //(125000000) // rdo_clk, 125 MHz
#define DEFAULT_READOUT_C1 (10) //(125000000) // rdo_x2_clk, 125 MHz
#define DEFAULT_SYSTEM_C0 (4) //(250000000) // run_clk, 250 MHz
#define DEFAULT_SYSTEM_C0 (4) //(250000000) // run_clk, 250 MHz
#define DEFAULT_SYSTEM_C1 (8) //(125000000) // chip_clk, 125 MHz
#define DEFAULT_SYSTEM_C2 (8) //(125000000) // sync_clk, 125 MHz
#define DEFAULT_ASIC_LATCHING_NUM_PULSES (10)
@ -48,7 +48,6 @@
#define FIXED_PLL_FREQUENCY (020000000) // 20MHz
#define READOUT_PLL_VCO_FREQ_HZ (1250000000) // 1.25GHz
#define SYSTEM_PLL_VCO_FREQ_HZ (1000000000) // 1GHz
#define MAX_PATTERN_LENGTH (0x2000) // maximum number of words (64bit)
/** Other Definitions */
#define BIT16_MASK (0xFFFF)

View File

@ -7362,16 +7362,16 @@ int set_veto(int file_des) {
int set_pattern(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));
uint64_t word[MAX_PATTERN_LENGTH];
memset(word, 0, sizeof(word));
uint64_t patwords[MAX_PATTERN_LENGTH];
memset(patwords, 0, sizeof(patwords));
uint64_t patioctrl = 0;
uint64_t patclkctrl = 0;
uint32_t patlimits[2] = {0, 0};
uint32_t patloop[6] = {0, 0, 0, 0, 0, 0};
uint32_t patnloop[3] = {0, 0, 0};
uint32_t patwait[3] = {0, 0, 0};
int patlimits[2] = {0, 0};
int patloop[6] = {0, 0, 0, 0, 0, 0};
int patnloop[3] = {0, 0, 0};
int patwait[3] = {0, 0, 0};
uint64_t patwaittime[3] = {0, 0, 0};
if (receiveData(file_des, word, sizeof(word), INT64) < 0)
if (receiveData(file_des, patwords, sizeof(patwords), INT64) < 0)
return printSocketReadError();
if (receiveData(file_des, &patioctrl, sizeof(patioctrl), INT64) < 0)
return printSocketReadError();
@ -7381,9 +7381,9 @@ int set_pattern(int file_des) {
return printSocketReadError();
if (receiveData(file_des, patloop, sizeof(patloop), INT32) < 0)
return printSocketReadError();
if (receiveData(file_des, patwait, sizeof(patwait), INT32) < 0)
if (receiveData(file_des, patnloop, sizeof(patnloop), INT32) < 0)
return printSocketReadError();
if (receiveData(file_des, patlimits, sizeof(patlimits), INT32) < 0)
if (receiveData(file_des, patwait, sizeof(patwait), INT32) < 0)
return printSocketReadError();
if (receiveData(file_des, patwaittime, sizeof(patwaittime), INT64) < 0)
return printSocketReadError();
@ -7392,9 +7392,10 @@ int set_pattern(int file_des) {
functionNotImplemented();
#else
if (Server_VerifyLock() == OK) {
LOG(logINFO, ("Setting Pattern Word\n");
LOG(logINFO, ("Setting Pattern\n"));
LOG(logINFO, ("Setting Pattern Word\n"));
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
writePatternWord(i, word[i]);
writePatternWord(i, patwords[i]);
}
int numLoops = -1, retval0 = -1, retval1 = -1;
uint64_t retval64 = -1;
@ -7413,7 +7414,6 @@ int set_pattern(int file_des) {
retval0 = patlimits[0];
retval1 = patlimits[1];
setPatternLoop(-1, &retval0, &retval1, &numLoops);
setPatternLoop(-1, &retval0, &retval1, &numLoops);
validate(patlimits[0], retval0, "Pattern Limits start address",
HEX);
validate(patlimits[1], retval1, "Pattern Limits start address",
@ -7421,55 +7421,55 @@ int set_pattern(int file_des) {
}
if (ret == OK) {
retval0 = patloop[0];
retval1 = patnloop[1];
retval1 = patloop[1];
numLoops = patnloop[0];
setPatternLoop(0, &patloop[0], &patloop[1], &patnloop[0]);
setPatternLoop(0, &patloop[0], &patloop[1], &numLoops);
validate(patloop[0], retval0, "Pattern Loop 0 start address", HEX);
validate(patloop[1], retval1, "Pattern Loop 0 stop address", HEX);
validate(patnloop[0], numLoops, "Pattern Loop 0 num loops", HEX);
validate(patnloop[0], numLoops, "Pattern Loop 0 num loops", HEX);
}
if (ret == OK) {
retval0 = patloop[2];
retval1 = patnloop[3];
retval1 = patloop[3];
numLoops = patnloop[1];
setPatternLoop(1, &patloop[2], &patloop[3], &patnloop[1]);
setPatternLoop(1, &patloop[2], &patloop[3], &numLoops);
validate(patloop[2], retval0, "Pattern Loop 1 start address", HEX);
validate(patloop[3], retval1, "Pattern Loop 1 stop address", HEX);
validate(patnloop[1], numLoops, "Pattern Loop 1 num loops", HEX);
validate(patnloop[1], numLoops, "Pattern Loop 1 num loops", HEX);
}
if (ret == OK) {
retval0 = patloop[4];
retval1 = patnloop[5];
retval1 = patloop[5];
numLoops = patnloop[2];
setPatternLoop(2, &patloop[4], &patloop[5], &patnloop[2]);
setPatternLoop(2, &patloop[4], &patloop[5], &numLoops);
validate(patloop[4], retval0, "Pattern Loop 2 start address", HEX);
validate(patloop[5], retval1, "Pattern Loop 2 stop address", HEX);
validate(patnloop[2], numLoops, "Pattern Loop 2 num loops", HEX);
validate(patnloop[2], numLoops, "Pattern Loop 2 num loops", HEX);
}
if (ret == OK) {
retval0 = setPatternWaitAddress(0, &patwait[0]);
retval0 = setPatternWaitAddress(0, patwait[0]);
validate(patwait[0], retval0, "Pattern Loop 0 wait address", HEX);
}
if (ret == OK) {
retval0 = setPatternWaitAddress(1, &patwait[1]);
retval0 = setPatternWaitAddress(1, patwait[1]);
validate(patwait[1], retval0, "Pattern Loop 1 wait address", HEX);
}
if (ret == OK) {
retval0 = setPatternWaitAddress(2, &patwait[2]);
retval0 = setPatternWaitAddress(2, patwait[2]);
validate(patwait[2], retval0, "Pattern Loop 2 wait address", HEX);
}
if (ret == OK) {
uint64_t retval64 = setPatternWaitTime(0, &patwaittime[0]);
uint64_t retval64 = setPatternWaitTime(0, patwaittime[0]);
validate64(patwaittime[0], retval64, "Pattern Loop 0 wait time",
HEX);
}
if (ret == OK) {
retval64 = setPatternWaitTime(1, &patwaittime[1]);
retval64 = setPatternWaitTime(1, patwaittime[1]);
validate64(patwaittime[1], retval64, "Pattern Loop 1 wait time",
HEX);
}
if (ret == OK) {
retval64 = setPatternWaitTime(2, &patwaittime[2]);
retval64 = setPatternWaitTime(2, patwaittime[2]);
validate64(patwaittime[1], retval64, "Pattern Loop 2 wait time",
HEX);
}

View File

@ -1855,8 +1855,7 @@ void Module::setPattern(const std::string &fname) {
}
}
input_file.close();
std::cout << "sizeof pat:" << sizeof(pat) << std::endl;
sendToDetector<uint64_t>(F_SET_PATTERN, pat);
sendToDetector(F_SET_PATTERN, pat, nullptr);
}
uint64_t Module::getPatternIOControl() {

View File

@ -89,7 +89,7 @@ std::string ToString(const slsDetectorDefs::patternParameters &r) {
<< "patwait1 0x" << r.patwait[1] << std::endl
<< "patwaittime1 " << std::dec << r.patwaittime[1] << std::hex
<< std::endl
<< "patwait1 0x" << r.patwait[1] << std::endl
<< "patwait2 0x" << r.patwait[1] << std::endl
<< "patwaittime2 " << std::dec << r.patwaittime[2] << std::hex
<< std::endl
<< ']';