From 9fb526af70e7af43da1418384df3bc76067b7b9d Mon Sep 17 00:00:00 2001 From: Manuel Penschuck Date: Sun, 2 Mar 2014 20:37:54 +0100 Subject: [PATCH] CTS extensions - not working yet --- web/CtsPlugins/CtsMod12.pm | 11 +- web/CtsPlugins/CtsMod13.pm | 47 +- web/CtsPlugins/CtsMod14.pm | 42 + web/CtsPlugins/CtsMod15.pm | 58 + web/htdocs/cts/cts.htm | 79 +- web/htdocs/layout/cts.css | 1 + web/htdocs/scripts/cts.js | 141 +-- web/httpi | 41 +- web/include/Cts.pm | 8 +- web/include/CtsCommands.pm | 2 +- web/include/Digest/SHA/PurePerl.pm | 1589 ++++++++++++++++++++++++++++ 11 files changed, 1878 insertions(+), 141 deletions(-) mode change 100644 => 100755 web/CtsPlugins/CtsMod12.pm create mode 100644 web/CtsPlugins/CtsMod14.pm create mode 100755 web/CtsPlugins/CtsMod15.pm mode change 100644 => 100755 web/include/Cts.pm create mode 100644 web/include/Digest/SHA/PurePerl.pm diff --git a/web/CtsPlugins/CtsMod12.pm b/web/CtsPlugins/CtsMod12.pm old mode 100644 new mode 100755 index 7713b47..3f44e47 --- a/web/CtsPlugins/CtsMod12.pm +++ b/web/CtsPlugins/CtsMod12.pm @@ -17,12 +17,15 @@ sub init { my $regs = $self->{'_registers'}; my $prop = $self->{'_properties'}; + my $cprop = $self->{'_cts'}{'_properties'}; my $header = $self->{'_cts'}{'_enum'}{0x12}->read(); + die "Trigger Modules 0x12 and 0x15 cannot be instantiated in the same design\n" if exists $self->{'_cts'}{'_enum'}{0x15}; + # registers for(my $i = 0; $i < $header->{'len'}; $i++) { - my $key = "trg_addon_config$i"; + my $key = "trg_input_mux$i"; $regs->{$key} = new TrbRegister($address + 1 + $i, $trb, { 'input' => {'lower' => 0, 'len' => 7, 'type' => 'enum', 'enum' => @@ -37,7 +40,7 @@ sub init { 'accessmode' => "rw", 'export' => 1, 'monitor' => '1', - 'label' => "AddOn Multiplexer $i" + 'label' => "AddOn Input Multiplexer $i" }); } @@ -46,8 +49,8 @@ sub init { } # properties - $prop->{"trg_addon_count"} = $header->{'len'}; - $prop->{"trg_addon_itc_base"} = $header->{'itc_base'}; + $prop->{"trg_inp_mux_count"} = $header->{'len'}; + $prop->{"trg_inp_mux_itc_base"} = $header->{'itc_base'}; } diff --git a/web/CtsPlugins/CtsMod13.pm b/web/CtsPlugins/CtsMod13.pm index e595a21..f11290d 100755 --- a/web/CtsPlugins/CtsMod13.pm +++ b/web/CtsPlugins/CtsMod13.pm @@ -7,7 +7,7 @@ use warnings; use strict; use TrbRegister; -sub moduleName {"AddOn Input Multiplexer"} +sub moduleName {"AddOn Output Multiplexer"} sub init { my $self = $_[0]; @@ -17,25 +17,42 @@ sub init { my $regs = $self->{'_registers'}; my $prop = $self->{'_properties'}; + my $cprop = $self->{'_cts'}{'_properties'}; my $header = $self->{'_cts'}{'_enum'}{0x13}->read(); + print "WARNING: Enumeration of Trigger Module 0x13 has to be performed AFTER module 0x10 and 0x12 (if existing). Check FPGA design!\n" unless (exists $cprop->{"trg_input_count"}); + +# enum + my $enum = {}; + for(my $i=0; $i<16; $i++) { + $enum->{$i} = "itc[$i]"; + } + for(my $i=0; $i<$cprop->{"trg_input_count"}; $i++) { + $enum->{$i+16} = "triggers_in[$i] before pp"; + $enum->{$i+16+$cprop->{"trg_input_count"}} = "triggers_in[$i] after pp"; + } + for(my $i=0; $i<$cprop->{"trg_inp_mux_count"}; $i++) { + $enum->{$i+16+ $cprop->{"trg_input_count"}-$cprop->{"trg_inp_mux_count"}} = "addon_mul[$i] before pp"; + $enum->{$i+16+2*$cprop->{"trg_input_count"}-$cprop->{"trg_inp_mux_count"}} = "addon_mul[$i] after pp"; + } + # registers - my $key = "trg_periph_config"; - $regs->{$key} = new TrbRegister($address + 1, $trb, { - 'mask' => {'lower' => 0, 'len' => 4, 'type' => 'mask'} - }, { - 'accessmode' => "rw", - 'export' => 1, - 'monitor' => '1', - 'label' => "Periph. Trigger" - }); - - $self->{'_cts'}->getProperties->{'itc_assignments'}[$header->{'itc_base'}] = "Periph. FPGA Inputs"; + for(my $i = 0; $i < $header->{'len'}; $i++) { + my $key = "trg_addon_output_multi$i"; + + $regs->{$key} = new TrbRegister($address + $i + 1, $trb, { + 'input' => {'lower' => 0, 'len' => 7, 'type' => 'enum', 'enum' => $enum} + }, { + 'accessmode' => "rw", + 'export' => 1, + 'monitor' => '1', + 'label' => "AddOn Output Multiplexer $i" + }); + } # properties - $prop->{"trg_periph_count"} = $header->{'len'}; - $prop->{"trg_periph_itc_base"} = $header->{'itc_base'}; + $prop->{"trg_addon_output_multiplexer_count"} = $header->{'len'}; } -1; \ No newline at end of file +1; diff --git a/web/CtsPlugins/CtsMod14.pm b/web/CtsPlugins/CtsMod14.pm new file mode 100644 index 0000000..a49ef04 --- /dev/null +++ b/web/CtsPlugins/CtsMod14.pm @@ -0,0 +1,42 @@ +# Module: Periph FPGA Trigger Inputs +package CtsMod14; + +@ISA = (CtsBaseModule); + +use warnings; +use strict; +use TrbRegister; + +sub moduleName {"Periph Trigger Inputs"} + +sub init { + my $self = $_[0]; + my $address = $_[1]; + + my $trb = $self->{'_cts'}{'_trb'}; + + my $regs = $self->{'_registers'}; + my $prop = $self->{'_properties'}; + + my $header = $self->{'_cts'}{'_enum'}{0x14}->read(); + +# registers + for(my $i = 0; $i < $header->{'len'}; $i++) { + my $key = "trg_periph_config$i"; + $regs->{$key} = new TrbRegister($address + 1 + $i, $trb, { + 'mask' => {'lower' => 0, 'len' => 20, 'type' => 'mask'} + }, { + 'accessmode' => "rw", + 'export' => 1, + 'monitor' => '1', + 'label' => "Periph. Trigger $i" + }); + $self->{'_cts'}->getProperties->{'itc_assignments'}[$header->{'itc_base'}+$i] = "Periph. FPGA Inputs $i"; + } + +# properties + $prop->{"trg_periph_count"} = $header->{'len'}; + $prop->{"trg_periph_itc_base"} = $header->{'itc_base'}; +} + +1; \ No newline at end of file diff --git a/web/CtsPlugins/CtsMod15.pm b/web/CtsPlugins/CtsMod15.pm new file mode 100755 index 0000000..c54412c --- /dev/null +++ b/web/CtsPlugins/CtsMod15.pm @@ -0,0 +1,58 @@ +# Module: Unified AddOn Module +package CtsMod15; + +@ISA = (CtsBaseModule); + +use warnings; +use strict; +use TrbRegister; + +sub moduleName {"AddOn Input Multiplexer"} + +sub init { + my $self = $_[0]; + my $address = $_[1]; + + my $trb = $self->{'_cts'}{'_trb'}; + + my $regs = $self->{'_registers'}; + my $prop = $self->{'_properties'}; + my $cprop = $self->{'_cts'}{'_properties'}; + + my $header = $self->{'_cts'}{'_enum'}{0x15}->read(); + + print "Trigger Modules 0x12 and 0x15 cannot be instantiated in the same design\n" if exists $self->{'_cts'}{'_enum'}{0x12}; + +# registers + for(my $i = 0; $i < $header->{'len'}; $i++) { + my $key = "trg_input_mux$i"; + + $regs->{$key} = new TrbRegister($address + 1 + $i, $trb, { + 'input' => {'lower' => 0, 'len' => 7, 'type' => 'enum', 'enum' => + { + 0 => 'extclk[0]', 1 => 'extclk[1]', 2 => 'trgext[2]', 3 => 'trgext[3]', # rj45 jacks on trb3 + 4 => 'jeclin[0]', 5 => 'jeclin[1]', 6 => 'jeclin[2]', 7 => 'jeclin[3]', + 8 => 'jin1[0]', 9 => 'jin1[1]', 10 => 'jin1[2]', 11 => 'jin1[3]', + 12 => 'jin2[0]', 13 => 'jin2[1]', 14 => 'jin2[2]', 15 => 'jin2[3]', + 16 => 'nimin1', 17 => 'nimin2', 18 => 'any[jeclin]', 19 => 'any[jin1]', + 20 => 'any[jin2]',21 => 'any[nimin]' + } + } + }, { + 'accessmode' => "rw", + 'export' => 1, + 'monitor' => '1', + 'label' => "Input Multiplexer $i" + }); + } + + for(my $i = 0; $i < $header->{'itc_len'}; $i++) { + $self->{'_cts'}->getProperties->{'itc_assignments'}[$i + $header->{'itc_base'}] = "AddOn Multiplexer $i"; + } + +# properties + $prop->{"trg_inp_mux_count"} = $header->{'len'}; + $prop->{"trg_inp_mux_itc_base"} = $header->{'itc_base'}; +} + +1; \ No newline at end of file diff --git a/web/htdocs/cts/cts.htm b/web/htdocs/cts/cts.htm index a882def..45631eb 100644 --- a/web/htdocs/cts/cts.htm +++ b/web/htdocs/cts/cts.htm @@ -128,6 +128,7 @@ + + + +