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