diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-05-03 15:49:10 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:52 -0800 |
commit | a0ded71188aa96282736a9bc13a086b71f92d965 (patch) | |
tree | 71bbb83299d9c55c5eafc4b019745c9c569f2c10 /host/include | |
parent | af35903d17d8cd314a2626f38eded72956459e23 (diff) | |
download | uhd-a0ded71188aa96282736a9bc13a086b71f92d965.tar.gz uhd-a0ded71188aa96282736a9bc13a086b71f92d965.tar.bz2 uhd-a0ded71188aa96282736a9bc13a086b71f92d965.zip |
eiscat: Added skeleton for dboard driver support
Diffstat (limited to 'host/include')
-rw-r--r-- | host/include/uhd/rfnoc/blocks/ddc_eiscat.xml | 178 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/blocks/radio_eiscat.xml | 229 |
2 files changed, 407 insertions, 0 deletions
diff --git a/host/include/uhd/rfnoc/blocks/ddc_eiscat.xml b/host/include/uhd/rfnoc/blocks/ddc_eiscat.xml new file mode 100644 index 000000000..93cf8371f --- /dev/null +++ b/host/include/uhd/rfnoc/blocks/ddc_eiscat.xml @@ -0,0 +1,178 @@ +<!--This defines one NoC-Block.--> +<nocblock> + <name>EISCAT Rx DSP (DDC/CORDIC)</name> + <blockname>DDC</blockname> + <key>DDC</key> + <!--There can be several of these:--> + <ids> + <id revision="0">DDC5E15CA7000000</id> + </ids> + <!-- Registers --> + <registers> + <!-- AXI rate change block registers --> + <setreg> + <name>N</name> + <address>128</address> + </setreg> + <setreg> + <name>M</name> + <address>129</address> + </setreg> + <setreg> + <!-- 1 bit, enable clear user --> + <name>CONFIG</name> + <address>130</address> + </setreg> + <!-- DDC block registers --> + <setreg> + <!-- CORDIC phase increment word --> + <name>CORDIC_FREQ</name> + <address>132</address> + </setreg> + <setreg> + <!-- Scaling factor to compensate for gain through filters and CORDIC --> + <name>SCALE_IQ</name> + <address>133</address> + </setreg> + <setreg> + <!-- DDC control word, 10 bits total, 2 bits for Halfbands, 8 bits for CIC rate --> + <name>DECIM_WORD</name> + <address>134</address> + </setreg> + <setreg> + <!-- Real mode, swap IQ --> + <name>MODE</name> + <address>135</address> + </setreg> + <setreg> + <!-- Filter coefficients reload --> + <name>RELOAD</name> + <address>136</address> + </setreg> + </registers> + <!-- Args --> + <args> + <arg> + <name>freq</name> + <type>double</type> + <value>0.0</value> + <port>0</port> + <!--<action>--> + <!--SR_WRITE("CORDIC_FREQ", $cordic_freq)--> + <!--</action>--> + <!--FIXME Calculate this properly--> + </arg> + <arg> + <name>input_rate</name> + <type>double</type> + <value>1.0</value> + <port>0</port> + <check>GE($input_rate, 0.0)</check> + <check_message>The input rate must be a positive value (in Hz).</check_message> + </arg> + <arg> + <name>output_rate</name> + <type>double</type> + <value>1.0</value> + <port>0</port> + <check>GE($output_rate, 0.0)</check> + <check_message>The output rate must be a positive value (in Hz).</check_message> + </arg> + <arg> + <name>fullscale</name> + <type>double</type> + <value>1.0</value> + <port>0</port> + <check>GE($fullscale, 0.0)</check> + </arg> + <arg> + <name>scalar_correction</name> + <type>double</type> + <value>1.0</value> + <port>0</port> + </arg> + <arg> + <name>freq</name> + <type>double</type> + <value>0.0</value> + <port>1</port> + <!--<action>--> + <!--SR_WRITE("CORDIC_FREQ", $cordic_freq)--> + <!--</action>--> + <!--FIXME Calculate this properly--> + </arg> + <arg> + <name>input_rate</name> + <type>double</type> + <value>1.0</value> + <port>1</port> + <check>GE($input_rate, 0.0)</check> + <check_message>The input rate must be a positive value (in Hz).</check_message> + </arg> + <arg> + <name>output_rate</name> + <type>double</type> + <value>1.0</value> + <port>1</port> + <check>GE($output_rate, 0.0)</check> + <check_message>The output rate must be a positive value (in Hz).</check_message> + </arg> + <arg> + <name>fullscale</name> + <type>double</type> + <value>1.0</value> + <port>1</port> + <check>GE($fullscale, 0.0)</check> + </arg> + <arg> + <name>scalar_correction</name> + <type>double</type> + <value>1.0</value> + <port>1</port> + </arg> + </args> + <!--All the connections to the outside world are listed in 'ports':--> + <ports> + <sink> + <name>in0</name> + <type>s16</type> + </sink> + <sink> + <name>in1</name> + <type>s16</type> + </sink> + <sink> + <name>in2</name> + <type>s16</type> + </sink> + <sink> + <name>in3</name> + <type>s16</type> + </sink> + <sink> + <name>in4</name> + <type>s16</type> + </sink> + <source> + <name>out0</name> + <type>sc16</type> + </source> + <source> + <name>out1</name> + <type>sc16</type> + </source> + <source> + <name>out2</name> + <type>sc16</type> + </source> + <source> + <name>out3</name> + <type>sc16</type> + </source> + <source> + <name>out4</name> + <type>sc16</type> + </source> + </ports> +</nocblock> + diff --git a/host/include/uhd/rfnoc/blocks/radio_eiscat.xml b/host/include/uhd/rfnoc/blocks/radio_eiscat.xml new file mode 100644 index 000000000..03b440943 --- /dev/null +++ b/host/include/uhd/rfnoc/blocks/radio_eiscat.xml @@ -0,0 +1,229 @@ +<nocblock> + <name>Radio (EISCAT)</name> + <blockname>Radio</blockname> + <key>EISCATRadio</key> + <!--There can be several of these:--> + <ids> + <id revision="0">E15CA70000000000</id> + </ids> + <!-- Registers --> + <registers> + <setreg> + <!--1-Bit register. Are we sending the upper or lower 5 beam contirbutions? --> + <name>SR_BEAMS_TO_NEIGHBOR</name> + <address>135</address> + </setreg> + <setreg> + <!--1-Bit register. Are we expecting previous contributions? 1==yes we are --> + <name>SR_PREV_OR_NULL</name> + <address>136</address> + </setreg> + <setreg> + <!--1-Bit register. Are we expecting previous contributions? 1==yes we are --> + <name>SR_FIR_COMMANDS_RELOAD</name> + <address>131</address> + </setreg> + <setreg> + <name>SR_FIR_COMMANDS_CTRL_TIME_HI</name> + <address>132</address> + </setreg> + <setreg> + <name>SR_FIR_COMMANDS_CTRL_TIME_LO</name> + <address>133</address> + </setreg> + <setreg> + <!-- Use this to actually update taps in RAM --> + <name>SR_FIR_BRAM_WRITE_TAPS</name> + <address>134</address> + </setreg> + <!--<setreg>--> + <!--<name>SR_CHANNEL_GAIN_0</name>--> + <!--<address>190</address>--> + <!--</setreg>--> + <readback> + <name>RB_NUM_TAPS</name> + <address>0</address> + </readback> + <readback> + <name>RB_NUM_CHANNELS</name> + <address>1</address> + </readback> + <readback> + <name>RB_NUM_BEAMS</name> + <address>2</address> + </readback> + <readback> + <name>RB_NUM_FILTERS</name> + <address>3</address> + </readback> + <readback> + <name>RB_VITA_TIME</name> + <address>4</address> + </readback> + </registers> + <!-- Args --> + <args> + <!--Gets applied to all channels--> + <arg> + <name>spp</name> + <type>int</type> + <value>1996</value> + </arg> + <arg> + <name>taps</name> + <type>int</type> + </arg> + <arg> + <name>use_prev</name> + <type>int</type> + <value>0</value> + <check>EQUAL($use_prev, 0) OR EQUAL($use_prev, 1)</check> + <check_message>use_prev must be 0 or 1.</check_message> + <action>SR_WRITE("SR_PREV_OR_NULL", $use_prev) AND SR_WRITE("SR_PREV_OR_NULL", $use_prev)</action> + </arg> + <arg> + <name>neighbors</name> + <type>int</type> + <value>0</value> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>0</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>1</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>2</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>3</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>4</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>5</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>6</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>7</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>8</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>9</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>10</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>11</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>12</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>13</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>14</port> + </arg> + <arg> + <name>gain</name> + <type>double</type> + <value>1.0</value> + <port>15</port> + </arg> + </args> + <ports> + <source> + <name>out0</name> + <type>s16</type> + </source> + <source> + <name>out1</name> + <type>s16</type> + </source> + <source> + <name>out2</name> + <type>s16</type> + </source> + <source> + <name>out3</name> + <type>s16</type> + </source> + <source> + <name>out4</name> + <type>s16</type> + </source> + <sink> + <name>in0</name> + <type>s16</type> + </sink> + <sink> + <name>in1</name> + <type>s16</type> + </sink> + <sink> + <name>in2</name> + <type>s16</type> + </sink> + <sink> + <name>in3</name> + <type>s16</type> + </sink> + <sink> + <name>in4</name> + <type>s16</type> + </sink> + </ports> +</nocblock> + |