aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-05-03 15:49:10 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:52 -0800
commita0ded71188aa96282736a9bc13a086b71f92d965 (patch)
tree71bbb83299d9c55c5eafc4b019745c9c569f2c10 /host/include
parentaf35903d17d8cd314a2626f38eded72956459e23 (diff)
downloaduhd-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.xml178
-rw-r--r--host/include/uhd/rfnoc/blocks/radio_eiscat.xml229
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>
+