Skip to content

Commit e784cd1

Browse files
committed
fmc250m: add template file.
Using this module, we implement a feature to automatically reset the relevant devices (ISLA216p ADCs and FPGA MMCM) when there is a transition from the device clocks being "not_locked" to "locked". This situation can happen during board startup, when the ADCs receive no clock signal, and can only be properly reset after they start receiving it; and during operation, if the clock reference is lost, making it necessary to reset the ADC and MMCM in order to guarantee stable behavior from them.
1 parent c5f3649 commit e784cd1

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

utcaApp/Db/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ DB += bpm_swap.template bpm_swap.substitutions
1515
DB += fmc_active_clk.template fmc_active_clk.substitutions
1616
DB += fmc_adc_common.template fmc_adc_common.substitutions
1717
DB += fmcpico1m_4ch.template fmcpico1m_4ch.substitutions
18+
DB += fmc250m.template
1819
DB += fofb_cc.template fofb_cc_channel.template fofb_cc.substitutions
1920
DB += fofb_processing.template fofb_processing_channel.template fofb_processing.substitutions
2021
DB += fofb_shaper_filt.template fofb_shaper_filt_channel.template fofb_shaper_filt.substitutions

utcaApp/Db/fmc250m.template

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
record(bo, "$(P)$(R)ADCRst-Cmd"){
2+
field(DTYP, "asynInt32")
3+
field(DESC, "Reset ADCs")
4+
field(OUT, "@asyn($(PORT))RST_ADCS")
5+
field(MASK, "1")
6+
field(HIGH, "1")
7+
field(ZNAM, "nothing")
8+
field(ONAM, "reset")
9+
}
10+
11+
record(bo, "$(P)$(R)ADCDivRst-Cmd"){
12+
field(DTYP, "asynInt32")
13+
field(DESC, "Reset ADC divisors")
14+
field(OUT, "@asyn($(PORT))RST_DIV_ADCS")
15+
field(MASK, "1")
16+
field(HIGH, "1")
17+
field(ZNAM, "nothing")
18+
field(ONAM, "reset")
19+
}
20+
21+
record(calcout, "$(P)$(R)ADCRstCalc") {
22+
field(INPA, "$(P)$(R)ClksLocked-Mon CP")
23+
field(CALC, "A")
24+
field(OOPT, "Transition To Non-zero")
25+
field(OUT, "$(P)$(R)ADCRstSeq PP")
26+
}
27+
28+
record(seq, "$(P)$(R)ADCRstSeq") {
29+
field(SELM, "All")
30+
field(LNK0, "$(P)$(R)ADCRst-Cmd PP")
31+
field(DOL0, "1")
32+
field(LNK1, "$(P)$(R)ADCDivRst-Cmd PP")
33+
field(DOL1, "1")
34+
field(DLY2, ".5") # guarantee time for ADCs to be reset
35+
field(LNK2, "$(P)$(R)MMCMRst-Cmd PP")
36+
field(DOL2, "1")
37+
}

0 commit comments

Comments
 (0)