zase uroven skoly
Daniel Valuch
daniel.valuch na orange.fr
Pondělí Srpen 13 11:34:17 CEST 2012
skolitel to vymyslel, urcite vie viacej :-)
Firmware sme objednali na kluc takze to nemaju na stranke. Toto bola
uplne prva specifikacia http://dvaluch.web.cern.ch/dvaluch/temp/VHI.pdf
medzicasom sa to celkom vyvinulo, pribudli nove typy dat a par nejake
drobne ficury ktore ulahcuju obsluhu.
Funguje to tak ze v FPGA (alebo riadenom obvode) je mapa registrov do
ktorych sa z VHI zapisuje alebo z nich cita. V prvom pripade to sluzi na
riadenie, v druhom na sledovanei prevadzkovych parametrov. Jednotlive
polozky su zoradene za sebou v plne definovatelnom menu, kazdy ma
niekolko parametrov (nazov, dlzka, typ, scaling, jednotka, komentar,
read/write, minimum, maximum a pod.). Procesor robi vsetko skalovanie a
translaciu z uzivatelsky citatelneho formatu do pozadovaneho formatu pre
fpga.
Casom k tomu Tom napisal aj automaticky generator vhdl kodu, takze
editacia menu teraz zabere asi 10 minut vratane vygenerovania bloku do fpga.
Tu je priklad definicie celeho menu, je to naozaj velmi univerzalne.
Vyrobili sme ich vyse 100, vsetky bezia spolahlivo uz niekolko rokov.
Jediny problem je ze prestali vyrabat tie displeje so zasuvnym
konektorom, uz maju len pajkovacie co je dost velka komplikacia.
// Parameters.
const plist_item vlist_ActivePickup[] = { LIST_STARTING_STRING, "Err 0",
"Err 1", "Err 2", "Err 3", "Err 4", "M208 A210", "Err 6", "Err 7", "Err
8", "Err 9", "M212 A214", "Err 11", "Err 12", "Err 13", "Err 14", "Err
15", LIST_TERMINATION_STRING };
volatile parameter p_ActivePickup = { PARAM_READBACK, LIST, "Active
pickups", "", 9, 0, 0, 16, 1.0, 8, 0x10, 0.0, 1,
(unsigned)(&vlist_ActivePickup[0]) };
const plist_item vlist_ActiveCycle[] = { LIST_STARTING_STRING, "No
Cycle", "LHC", "SFT", "Err 3", "IONS", "Err 5", "Err 6", "Err 7",
"CNGS", "Err 9", "Err 10", "Err 11", "Err 12", "Err 13", "Err 14", "Err
15", LIST_TERMINATION_STRING };
volatile parameter p_ActiveCycle = { PARAM_READBACK, LIST, "Active
cycle", "", 9, 0, 0, 16, 1.0, 8, 0x11, 0.0, 1,
(unsigned)(&vlist_ActiveCycle[0]) };
volatile parameter p_Phase1 = { PARAM_READBACK, SIGNED, "Phase 1",
"[deg]", 5, 1, 0.0, 0.0, 0.0078125, 16, 0x12, 0.0, 1, NILPTR };
volatile parameter p_Phase2 = { PARAM_READBACK, SIGNED, "Phase 2",
"[deg]", 5, 1, 0.0, 0.0, 0.0078125, 16, 0x13, 0.0, 1, NILPTR };
volatile parameter p_M1B1 = { PARAM_READBACK, SIGNED, "M1B1", "[V]", 5,
3, 0.0, 0.0, 0.00048828125, 16, 0x14, 0.0, 1, NILPTR };
volatile parameter p_M1B2 = { PARAM_READBACK, SIGNED, "M1B2", "[V]", 5,
3, 0.0, 0.0, 0.00048828125, 16, 0x15, 0.0, 1, NILPTR };
volatile parameter p_M2B1 = { PARAM_READBACK, SIGNED, "M2B1", "[V]", 5,
3, 0.0, 0.0, 0.00048828125, 16, 0x16, 0.0, 1, NILPTR };
volatile parameter p_M2B2 = { PARAM_READBACK, SIGNED, "M2B2", "[V]", 5,
3, 0.0, 0.0, 0.00048828125, 16, 0x17, 0.0, 1, NILPTR };
const plist_item vlist_ModeSel[] = { LIST_STARTING_STRING, "Phase",
"Vector", "Timing Sel", LIST_TERMINATION_STRING };
volatile parameter p_ModeSel = { PARAM_EDIT, LIST, "Mode", "", 10, 0, 0,
3, 1.0, 8, 0x18, 0.0, 1, (unsigned)(&vlist_ModeSel[0]) };
volatile parameter p_SelMsbLsb = { PARAM_EDIT, BOOLEAN, "Sel. MSB/LSB",
"0=MSB, 1=LSB", 1, 0, 0.0, 1.0, 1.0, 8, 0x19, 0.0, 1, NILPTR };
// Required params.
volatile parameter fw_ver = { PARAM_READBACK, UNSIGNED, "Firmware
Version", "", 8, 0, 0.0, 0.0, 1.0, 32, 0x00, 0.0, 0, NILPTR };
volatile parameter mm_ver = { PARAM_READBACK, UNSIGNED, "Mem Map
Version", "", 8, 0, 0.0, 0.0, 1.0, 32, 0x01, 0.0, 0, NILPTR };
volatile parameter write_menu = { PARAM_MENU, FPGA_WRITE, "FPGA STORE",
"Push to store parameters", 0, 0, 0.0, 0.0, 0.0, 8, 0x00, 0.0, 0, NILPTR };
#define MAX_PARAMETERS (sizeof(plist)/4)
// Params list.
volatile parameter *plist[] = { &p_ActivePickup, &p_ActiveCycle,
&p_Phase1, &p_Phase2, &p_M1B1, &p_M1B2, &p_M2B1, &p_M2B2, &p_ModeSel,
&p_SelMsbLsb, &write_menu, &fw_ver /*, &mm_ver*/ };
On 8/13/2012 10:50, Marek Peca wrote:
>> potencial urcite ma. Na nase veci kde nie je VME interface na
>> komunikaciu to pouzivame vsade a co je na termostatoch ma az tak
>> nezaujima :-)))
>
> Ja tim chtel rict, ze by to mohlo resit ovladani jednodussich pristroju
> -- jako je hyperuniverzalni citac nebo DDS. Pokud je to ovsem dostatecne
> obecne a rozsiritelne navrzeno.
>
> Skoda, ze k tomu nikde neni dokumentace, na webu MarkusLabs je prd a
> neni tusit, zda to ma nekde repozitar zdrojaku a jaka je licence...
> Skolitel vi vic?
>
> Diky,
> MP
Další informace o konferenci Hw-list