Skip to content

Commit

Permalink
fmc250m: add template file.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ericonr committed Oct 16, 2024
1 parent c5f3649 commit e784cd1
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions utcaApp/Db/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ DB += bpm_swap.template bpm_swap.substitutions
DB += fmc_active_clk.template fmc_active_clk.substitutions
DB += fmc_adc_common.template fmc_adc_common.substitutions
DB += fmcpico1m_4ch.template fmcpico1m_4ch.substitutions
DB += fmc250m.template
DB += fofb_cc.template fofb_cc_channel.template fofb_cc.substitutions
DB += fofb_processing.template fofb_processing_channel.template fofb_processing.substitutions
DB += fofb_shaper_filt.template fofb_shaper_filt_channel.template fofb_shaper_filt.substitutions
Expand Down
37 changes: 37 additions & 0 deletions utcaApp/Db/fmc250m.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
record(bo, "$(P)$(R)ADCRst-Cmd"){
field(DTYP, "asynInt32")
field(DESC, "Reset ADCs")
field(OUT, "@asyn($(PORT))RST_ADCS")
field(MASK, "1")
field(HIGH, "1")
field(ZNAM, "nothing")
field(ONAM, "reset")
}

record(bo, "$(P)$(R)ADCDivRst-Cmd"){
field(DTYP, "asynInt32")
field(DESC, "Reset ADC divisors")
field(OUT, "@asyn($(PORT))RST_DIV_ADCS")
field(MASK, "1")
field(HIGH, "1")
field(ZNAM, "nothing")
field(ONAM, "reset")
}

record(calcout, "$(P)$(R)ADCRstCalc") {
field(INPA, "$(P)$(R)ClksLocked-Mon CP")
field(CALC, "A")
field(OOPT, "Transition To Non-zero")
field(OUT, "$(P)$(R)ADCRstSeq PP")
}

record(seq, "$(P)$(R)ADCRstSeq") {
field(SELM, "All")
field(LNK0, "$(P)$(R)ADCRst-Cmd PP")
field(DOL0, "1")
field(LNK1, "$(P)$(R)ADCDivRst-Cmd PP")
field(DOL1, "1")
field(DLY2, ".5") # guarantee time for ADCs to be reset
field(LNK2, "$(P)$(R)MMCMRst-Cmd PP")
field(DOL2, "1")
}

0 comments on commit e784cd1

Please sign in to comment.