summaryrefslogtreecommitdiffstats
path: root/fpga/usrp2/control_lib
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-06-14 17:29:21 -0700
committerJosh Blum <josh@joshknows.com>2011-06-14 17:29:21 -0700
commitdd157937466f3ee18b08712625eba84582a913f3 (patch)
tree6a4eadb148a2c8141032b78d3c521d56c1f34910 /fpga/usrp2/control_lib
parenta1f36ebf436fccbb6cc81bb5f32a790d444772c2 (diff)
parentc0fadece89314f3a00892122c28caf187ce1a717 (diff)
downloaduhd-dd157937466f3ee18b08712625eba84582a913f3.tar.gz
uhd-dd157937466f3ee18b08712625eba84582a913f3.tar.bz2
uhd-dd157937466f3ee18b08712625eba84582a913f3.zip
Merge branch 'fpga_next' into uhd_next
Diffstat (limited to 'fpga/usrp2/control_lib')
-rw-r--r--fpga/usrp2/control_lib/Makefile.srcs1
-rw-r--r--fpga/usrp2/control_lib/atr_controller.v17
-rw-r--r--fpga/usrp2/control_lib/atr_controller16.v17
-rw-r--r--fpga/usrp2/control_lib/bin2gray.v17
-rw-r--r--fpga/usrp2/control_lib/bootram.v17
-rw-r--r--fpga/usrp2/control_lib/clock_bootstrap_rom.v17
-rw-r--r--fpga/usrp2/control_lib/clock_control.v17
-rw-r--r--fpga/usrp2/control_lib/clock_control_tb.v17
-rw-r--r--fpga/usrp2/control_lib/dcache.v17
-rw-r--r--fpga/usrp2/control_lib/decoder_3_8.v17
-rw-r--r--fpga/usrp2/control_lib/dpram32.v17
-rw-r--r--fpga/usrp2/control_lib/fifo_tb.v151
-rw-r--r--fpga/usrp2/control_lib/fifo_to_wb.v183
-rw-r--r--fpga/usrp2/control_lib/fifo_to_wb_tb.v136
-rw-r--r--fpga/usrp2/control_lib/gray2bin.v17
-rw-r--r--fpga/usrp2/control_lib/gray_send.v17
-rw-r--r--fpga/usrp2/control_lib/icache.v17
-rw-r--r--fpga/usrp2/control_lib/longfifo.v17
-rw-r--r--fpga/usrp2/control_lib/medfifo.v17
-rw-r--r--fpga/usrp2/control_lib/mux4.v17
-rw-r--r--fpga/usrp2/control_lib/mux8.v17
-rw-r--r--fpga/usrp2/control_lib/mux_32_4.v17
-rw-r--r--fpga/usrp2/control_lib/oneshot_2clk.v17
-rw-r--r--fpga/usrp2/control_lib/priority_enc.v17
-rw-r--r--fpga/usrp2/control_lib/quad_uart.v17
-rw-r--r--fpga/usrp2/control_lib/ram_2port.v17
-rw-r--r--fpga/usrp2/control_lib/ram_2port_mixed_width.v17
-rw-r--r--fpga/usrp2/control_lib/ram_harv_cache.v17
-rw-r--r--fpga/usrp2/control_lib/ram_harvard.v17
-rw-r--r--fpga/usrp2/control_lib/ram_harvard2.v17
-rw-r--r--fpga/usrp2/control_lib/ram_loader.v17
-rw-r--r--fpga/usrp2/control_lib/ram_wb_harvard.v17
-rw-r--r--fpga/usrp2/control_lib/reset_sync.v17
-rw-r--r--fpga/usrp2/control_lib/s3a_icap_wb.v17
-rw-r--r--fpga/usrp2/control_lib/sd_spi.v17
-rw-r--r--fpga/usrp2/control_lib/sd_spi_tb.v17
-rw-r--r--fpga/usrp2/control_lib/sd_spi_wb.v17
-rw-r--r--fpga/usrp2/control_lib/setting_reg.v17
-rw-r--r--fpga/usrp2/control_lib/settings_bus.v17
-rw-r--r--fpga/usrp2/control_lib/settings_bus_16LE.v17
-rw-r--r--fpga/usrp2/control_lib/settings_bus_crossclock.v17
-rw-r--r--fpga/usrp2/control_lib/shortfifo.v17
-rw-r--r--fpga/usrp2/control_lib/simple_uart.v17
-rw-r--r--fpga/usrp2/control_lib/simple_uart_rx.v17
-rw-r--r--fpga/usrp2/control_lib/simple_uart_tx.v17
-rw-r--r--fpga/usrp2/control_lib/spi.v17
-rw-r--r--fpga/usrp2/control_lib/srl.v17
-rw-r--r--fpga/usrp2/control_lib/ss_rcvr.v17
-rw-r--r--fpga/usrp2/control_lib/system_control.v17
-rw-r--r--fpga/usrp2/control_lib/system_control_tb.v17
-rw-r--r--fpga/usrp2/control_lib/traffic_cop.v17
-rw-r--r--fpga/usrp2/control_lib/v5icap_wb.v17
-rw-r--r--fpga/usrp2/control_lib/wb_bridge_16_32.v17
-rw-r--r--fpga/usrp2/control_lib/wb_bus_writer.v17
-rw-r--r--fpga/usrp2/control_lib/wb_output_pins32.v17
-rw-r--r--fpga/usrp2/control_lib/wb_ram_block.v17
-rw-r--r--fpga/usrp2/control_lib/wb_ram_dist.v17
-rw-r--r--fpga/usrp2/control_lib/wb_readback_mux.v17
-rw-r--r--fpga/usrp2/control_lib/wb_readback_mux_16LE.v17
-rw-r--r--fpga/usrp2/control_lib/wb_regfile_2clock.v17
-rw-r--r--fpga/usrp2/control_lib/wb_semaphore.v17
-rw-r--r--fpga/usrp2/control_lib/wb_sim.v17
62 files changed, 1306 insertions, 151 deletions
diff --git a/fpga/usrp2/control_lib/Makefile.srcs b/fpga/usrp2/control_lib/Makefile.srcs
index 751b40828..a1c11c026 100644
--- a/fpga/usrp2/control_lib/Makefile.srcs
+++ b/fpga/usrp2/control_lib/Makefile.srcs
@@ -50,4 +50,5 @@ bootram.v \
nsgpio16LE.v \
settings_bus_16LE.v \
atr_controller16.v \
+fifo_to_wb.v \
))
diff --git a/fpga/usrp2/control_lib/atr_controller.v b/fpga/usrp2/control_lib/atr_controller.v
index a161b5e00..2cef8ba2b 100644
--- a/fpga/usrp2/control_lib/atr_controller.v
+++ b/fpga/usrp2/control_lib/atr_controller.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Automatic transmit/receive switching of control pins to daughterboards
// Store everything in registers for now, but could use a RAM for more
diff --git a/fpga/usrp2/control_lib/atr_controller16.v b/fpga/usrp2/control_lib/atr_controller16.v
index 74ce30a54..ff4f634c7 100644
--- a/fpga/usrp2/control_lib/atr_controller16.v
+++ b/fpga/usrp2/control_lib/atr_controller16.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Automatic transmit/receive switching of control pins to daughterboards
// Store everything in registers for now, but could use a RAM for more
diff --git a/fpga/usrp2/control_lib/bin2gray.v b/fpga/usrp2/control_lib/bin2gray.v
index 513402163..8336a5afc 100644
--- a/fpga/usrp2/control_lib/bin2gray.v
+++ b/fpga/usrp2/control_lib/bin2gray.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module bin2gray
diff --git a/fpga/usrp2/control_lib/bootram.v b/fpga/usrp2/control_lib/bootram.v
index 29d21ab5a..249a09814 100644
--- a/fpga/usrp2/control_lib/bootram.v
+++ b/fpga/usrp2/control_lib/bootram.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Boot RAM for S3A, 8KB, dual port
diff --git a/fpga/usrp2/control_lib/clock_bootstrap_rom.v b/fpga/usrp2/control_lib/clock_bootstrap_rom.v
index 46563db65..542f49380 100644
--- a/fpga/usrp2/control_lib/clock_bootstrap_rom.v
+++ b/fpga/usrp2/control_lib/clock_bootstrap_rom.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module clock_bootstrap_rom(input [15:0] addr, output [47:0] data);
diff --git a/fpga/usrp2/control_lib/clock_control.v b/fpga/usrp2/control_lib/clock_control.v
index 1bbe6bd75..000eaf1fb 100644
--- a/fpga/usrp2/control_lib/clock_control.v
+++ b/fpga/usrp2/control_lib/clock_control.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// AD9510 Register Map (from datasheet Rev. A)
diff --git a/fpga/usrp2/control_lib/clock_control_tb.v b/fpga/usrp2/control_lib/clock_control_tb.v
index 4e705cf23..9760efbe3 100644
--- a/fpga/usrp2/control_lib/clock_control_tb.v
+++ b/fpga/usrp2/control_lib/clock_control_tb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module clock_control_tb();
diff --git a/fpga/usrp2/control_lib/dcache.v b/fpga/usrp2/control_lib/dcache.v
index 9063bf02a..384c5a149 100644
--- a/fpga/usrp2/control_lib/dcache.v
+++ b/fpga/usrp2/control_lib/dcache.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module dcache
#(parameter AWIDTH=14,
diff --git a/fpga/usrp2/control_lib/decoder_3_8.v b/fpga/usrp2/control_lib/decoder_3_8.v
index 729b45d18..8f91d8263 100644
--- a/fpga/usrp2/control_lib/decoder_3_8.v
+++ b/fpga/usrp2/control_lib/decoder_3_8.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module decoder_3_8
(input [2:0] sel,
diff --git a/fpga/usrp2/control_lib/dpram32.v b/fpga/usrp2/control_lib/dpram32.v
index 4da621823..386435e70 100644
--- a/fpga/usrp2/control_lib/dpram32.v
+++ b/fpga/usrp2/control_lib/dpram32.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Dual ported RAM
// Addresses are byte-oriented, so botton 2 address bits are ignored.
diff --git a/fpga/usrp2/control_lib/fifo_tb.v b/fpga/usrp2/control_lib/fifo_tb.v
deleted file mode 100644
index 616fe4ee7..000000000
--- a/fpga/usrp2/control_lib/fifo_tb.v
+++ /dev/null
@@ -1,151 +0,0 @@
-module fifo_tb();
-
- reg clk, rst;
- wire short_full, short_empty, long_full, long_empty;
- wire casc2_full, casc2_empty;
- reg read, write;
-
- wire [7:0] short_do, long_do;
- wire [7:0] casc2_do;
- reg [7:0] di;
-
- reg clear = 0;
-
- shortfifo #(.WIDTH(8)) shortfifo
- (.clk(clk),.rst(rst),.datain(di),.dataout(short_do),.clear(clear),
- .read(read),.write(write),.full(short_full),.empty(short_empty));
-
- longfifo #(.WIDTH(8), .SIZE(4)) longfifo
- (.clk(clk),.rst(rst),.datain(di),.dataout(long_do),.clear(clear),
- .read(read),.write(write),.full(long_full),.empty(long_empty));
-
- cascadefifo2 #(.WIDTH(8), .SIZE(4)) cascadefifo2
- (.clk(clk),.rst(rst),.datain(di),.dataout(casc2_do),.clear(clear),
- .read(read),.write(write),.full(casc2_full),.empty(casc2_empty));
-
- initial rst = 1;
- initial #1000 rst = 0;
- initial clk = 0;
- always #50 clk = ~clk;
-
- initial di = 8'hAE;
- initial read = 0;
- initial write = 0;
-
- always @(posedge clk)
- if(write)
- di <= di + 1;
-
- always @(posedge clk)
- begin
- if(short_full != long_full)
- $display("Error: FULL mismatch");
- if(short_empty != long_empty)
- $display("Note: EMPTY mismatch, usually not a problem (longfifo has 2 cycle latency)");
- if(read & (short_do != long_do))
- $display("Error: DATA mismatch");
- end
-
- initial $dumpfile("fifo_tb.vcd");
- initial $dumpvars(0,fifo_tb);
-
- initial
- begin
- @(negedge rst);
- @(posedge clk);
- repeat (10)
- @(posedge clk);
- write <= 1;
- @(posedge clk);
- write <= 0;
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- read <= 1;
- @(posedge clk);
- read <= 0;
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
-
- repeat(10)
- begin
- write <= 1;
- @(posedge clk);
- write <= 0;
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- read <= 1;
- @(posedge clk);
- read <= 0;
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- end // repeat (10)
-
- write <= 1;
- repeat (4)
- @(posedge clk);
- write <= 0;
- @(posedge clk);
- read <= 1;
- repeat (4)
- @(posedge clk);
- read <= 0;
- @(posedge clk);
-
-
- write <= 1;
- repeat (4)
- @(posedge clk);
- write <= 0;
- @(posedge clk);
- repeat (4)
- begin
- read <= 1;
- @(posedge clk);
- read <= 0;
- @(posedge clk);
- end
-
- write <= 1;
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- @(posedge clk);
- read <= 1;
- repeat (5)
- @(posedge clk);
- write <= 0;
- @(posedge clk);
- @(posedge clk);
- read <= 0;
- @(posedge clk);
-
- write <= 1;
- repeat (16)
- @(posedge clk);
- write <= 0;
- @(posedge clk);
-
- read <= 1;
- repeat (16)
- @(posedge clk);
- read <= 0;
- @(posedge clk);
-
- repeat (10)
- @(posedge clk);
- $finish;
- end
-endmodule // longfifo_tb
diff --git a/fpga/usrp2/control_lib/fifo_to_wb.v b/fpga/usrp2/control_lib/fifo_to_wb.v
new file mode 100644
index 000000000..9b6b5e804
--- /dev/null
+++ b/fpga/usrp2/control_lib/fifo_to_wb.v
@@ -0,0 +1,183 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+
+module fifo_to_wb
+ #(parameter PKT_LEN = 16)
+ (input clk, input reset, input clear,
+ input [18:0] data_i, input src_rdy_i, output dst_rdy_o,
+ output [18:0] data_o, output src_rdy_o, input dst_rdy_i,
+ output reg [15:0] wb_adr_o, output [15:0] wb_dat_mosi, input [15:0] wb_dat_miso,
+ output [1:0] wb_sel_o, output wb_cyc_o, output wb_stb_o, output wb_we_o, input wb_ack_i,
+ input [7:0] triggers,
+ output [31:0] debug0, output [31:0] debug1);
+
+ wire [18:0] ctrl_data;
+ reg [18:0] resp_data;
+ wire ctrl_src_rdy, ctrl_dst_rdy, resp_src_rdy, resp_dst_rdy;
+
+ fifo_short #(.WIDTH(19)) ctrl_sfifo
+ (.clk(clk), .reset(reset), .clear(clear),
+ .datain(data_i), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o),
+ .dataout(ctrl_data), .src_rdy_o(ctrl_src_rdy), .dst_rdy_i(ctrl_dst_rdy));
+
+ fifo_short #(.WIDTH(19)) resp_sfifo
+ (.clk(clk), .reset(reset), .clear(clear),
+ .datain(resp_data), .src_rdy_i(resp_src_rdy), .dst_rdy_o(resp_dst_rdy),
+ .dataout(data_o), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i));
+
+ // Need a programmable state machine here. The program is the fifo contents.
+ // All words are 16 bits wide
+ // Word 0 Command { Read, Write, Triggers[5:0], Seqno [7:0] }
+ // Word 1 Length
+ // Word 2 Address LSW
+ // Word 3 Address MSW (should all be 0)
+
+ localparam RESP_IDLE = 0;
+ localparam RESP_LEN = 1;
+ localparam RESP_ADDR_LSW = 2;
+ localparam RESP_ADDR_MSW = 3;
+ localparam RESP_WRITE = 4;
+ localparam RESP_DUMP = 5;
+ localparam RESP_WAIT_READ = 6;
+ localparam RESP_RCMD = 7;
+ localparam RESP_RLEN = 8;
+ localparam RESP_RADDR_LSW = 9;
+ localparam RESP_RADDR_MSW = 10;
+ localparam RESP_READ = 11;
+
+ reg [3:0] resp_state;
+ reg rd, wr;
+ reg [15:0] base_addr;
+ reg [15:0] length;
+ reg [15:0] count;
+ reg [7:0] seqnum;
+ reg [5:0] which_trig;
+
+ always @(posedge clk)
+ if(reset | clear)
+ resp_state <= RESP_IDLE;
+ else
+ case(resp_state)
+ RESP_IDLE :
+ if(ctrl_src_rdy)
+ begin
+ { rd, wr, which_trig[5:0], seqnum[7:0] } <= ctrl_data[15:0];
+ if(ctrl_data[16]) // WAIT for start of packet, clean out otherwise
+ resp_state <= RESP_LEN;
+ end
+ RESP_LEN :
+ if(ctrl_src_rdy)
+ begin
+ length <= ctrl_data[15:0];
+ count <= ctrl_data[15:0];
+ resp_state <= RESP_ADDR_LSW;
+ end
+ RESP_ADDR_LSW :
+ if(ctrl_src_rdy)
+ begin
+ base_addr <= ctrl_data[15:0];
+ wb_adr_o <= ctrl_data[15:0];
+ resp_state <= RESP_ADDR_MSW;
+ end
+ RESP_ADDR_MSW :
+ if(ctrl_src_rdy)
+ if(wr)
+ resp_state <= RESP_WRITE;
+ else
+ resp_state <= RESP_DUMP;
+ RESP_WRITE :
+ if(ctrl_src_rdy & wb_ack_i)
+ if(count==1)
+ if(ctrl_data[17]) //eof
+ resp_state <= RESP_IDLE;
+ else // clean out padding
+ resp_state <= RESP_DUMP;
+ else
+ begin
+ wb_adr_o <= wb_adr_o + 2;
+ count <= count - 1;
+ end
+ RESP_DUMP :
+ if(ctrl_src_rdy & ctrl_data[17])
+ if(rd)
+ resp_state <= RESP_WAIT_READ;
+ else
+ resp_state <= RESP_IDLE;
+ RESP_WAIT_READ :
+ begin
+ wb_adr_o <= base_addr;
+ count <= length;
+ if( &(triggers | ~which_trig) )
+ resp_state <= RESP_RCMD;
+ end
+ RESP_RCMD :
+ if(resp_dst_rdy)
+ resp_state <= RESP_RLEN;
+ RESP_RLEN :
+ if(resp_dst_rdy)
+ resp_state <= RESP_RADDR_LSW;
+ RESP_RADDR_LSW :
+ if(resp_dst_rdy)
+ resp_state <= RESP_RADDR_MSW;
+ RESP_RADDR_MSW :
+ if(resp_dst_rdy)
+ resp_state <= RESP_READ;
+ RESP_READ :
+ if(resp_dst_rdy & wb_ack_i)
+ if(count==1)
+ resp_state <= RESP_IDLE;
+ else
+ begin
+ wb_adr_o <= wb_adr_o + 2;
+ count <= count - 1;
+ end
+ endcase // case (resp_state)
+
+ always @*
+ case(resp_state)
+ RESP_RCMD : resp_data <= { 3'b001, 8'hAA, seqnum };
+ RESP_RLEN : resp_data <= { 3'b000, length };
+ RESP_RADDR_LSW : resp_data <= { 3'b000, base_addr };
+ RESP_RADDR_MSW : resp_data <= { 3'b000, 16'd0 };
+ default : resp_data <= { 1'b0, (count==1), 1'b0, wb_dat_miso };
+ endcase // case (resp_state)
+
+ assign ctrl_dst_rdy = (resp_state == RESP_IDLE) |
+ (resp_state == RESP_LEN) |
+ (resp_state == RESP_ADDR_LSW) |
+ (resp_state == RESP_ADDR_MSW) |
+ ((resp_state == RESP_WRITE) & wb_ack_i) |
+ (resp_state == RESP_DUMP);
+
+ assign resp_src_rdy = (resp_state == RESP_RCMD) |
+ (resp_state == RESP_RLEN) |
+ (resp_state == RESP_RADDR_LSW) |
+ (resp_state == RESP_RADDR_MSW) |
+ ((resp_state == RESP_READ) & wb_ack_i);
+
+ assign wb_dat_mosi = ctrl_data[15:0];
+ assign wb_we_o = (resp_state == RESP_WRITE);
+ assign wb_cyc_o = wb_stb_o;
+ assign wb_sel_o = 2'b11;
+ assign wb_stb_o = (ctrl_src_rdy & (resp_state == RESP_WRITE)) | (resp_dst_rdy & (resp_state == RESP_READ));
+
+
+ assign debug0 = { 14'd0, ctrl_data[17:0] };
+ assign debug1 = { ctrl_src_rdy, ctrl_dst_rdy, resp_src_rdy, resp_dst_rdy, 2'b00, ctrl_data[17:16] };
+
+endmodule // fifo_to_wb
diff --git a/fpga/usrp2/control_lib/fifo_to_wb_tb.v b/fpga/usrp2/control_lib/fifo_to_wb_tb.v
new file mode 100644
index 000000000..37459e2c2
--- /dev/null
+++ b/fpga/usrp2/control_lib/fifo_to_wb_tb.v
@@ -0,0 +1,136 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+module fifo_to_wb_tb();
+
+ reg clk = 0;
+ reg rst = 1;
+ reg clear = 0;
+ initial #1000 rst = 0;
+ always #50 clk = ~clk;
+
+ reg trigger = 0;
+ initial #10000 trigger = 1;
+
+ wire wb_cyc, wb_stb, wb_we, wb_ack;
+ wire [15:0] wb_adr;
+ wire [15:0] wb_dat_miso, wb_dat_mosi;
+
+ reg cmd_src_rdy;
+ wire cmd_dst_rdy, resp_src_rdy, resp_dst_rdy;
+ reg [17:0] cmd;
+ wire [17:0] resp;
+
+ wire [17:0] resp_int;
+ wire resp_src_rdy_int, resp_dst_rdy_int;
+
+ fifo_to_wb fifo_to_wb
+ (.clk(clk), .reset(rst), .clear(clear),
+ .data_i(cmd), .src_rdy_i(cmd_src_rdy), .dst_rdy_o(cmd_dst_rdy),
+ .data_o(resp_int), .src_rdy_o(resp_src_rdy_int), .dst_rdy_i(resp_dst_rdy_int),
+
+ .wb_adr_o(wb_adr), .wb_dat_mosi(wb_dat_mosi), .wb_dat_miso(wb_dat_miso),
+ .wb_sel_o(), .wb_cyc_o(wb_cyc), .wb_stb_o(wb_stb),
+ .wb_we_o(wb_we), .wb_ack_i(wb_ack),
+ .triggers());
+
+ assign wb_dat_miso = {wb_adr[7:0],8'hBF};
+
+ fifo19_pad #(.LENGTH(16)) fifo19_pad
+ (.clk(clk), .reset(rst), .clear(clear),
+ .data_i(resp_int), .src_rdy_i(resp_src_rdy_int), .dst_rdy_o(resp_dst_rdy_int),
+ .data_o(resp), .src_rdy_o(resp_src_rdy), .dst_rdy_i(resp_dst_rdy));
+
+
+ // Set up monitors
+ always @(posedge clk)
+ if(wb_cyc & wb_stb & wb_ack)
+ if(wb_we)
+ $display("WB-WRITE ADDR:%h DATA:%h",wb_adr, wb_dat_mosi);
+ else
+ $display("WB-READ ADDR:%h DATA:%h",wb_adr, wb_dat_miso);
+
+ always @(posedge clk)
+ if(cmd_src_rdy & cmd_dst_rdy)
+ $display("CMD-WRITE SOF:%b EOF:%b DATA:%h",cmd[16],cmd[17],cmd[15:0]);
+
+ always @(posedge clk)
+ if(resp_src_rdy & resp_dst_rdy)
+ $display("RESP-READ SOF:%b EOF:%b DATA:%h",resp[16],resp[17],resp[15:0]);
+
+ assign wb_ack = wb_stb;
+ assign resp_dst_rdy = 1;
+
+ task InsertRW;
+ input [15:0] data_start;
+ input [5:0] triggers;
+ input [7:0] seqno;
+ input [15:0] len;
+ input [15:0] addr;
+ reg [15:0] data_val;
+
+ begin
+ data_val <= data_start;
+ @(posedge clk);
+ cmd <= {2'b01,2'b11,triggers,seqno};
+ cmd_src_rdy <= 1;
+ @(posedge clk);
+ cmd <= {2'b00,len};
+ @(posedge clk);
+ cmd <= {2'b00,addr};
+ @(posedge clk);
+ cmd <= {2'b00,16'd0};
+ @(posedge clk);
+ repeat (len)
+ begin
+ cmd <= {2'b00,data_val};
+ data_val <= data_val + 1;
+ @(posedge clk);
+ end
+ repeat (12-len-1)
+ begin
+ cmd <= {2'b00,16'hBEEF};
+ @(posedge clk);
+ end
+ cmd <= {2'b10, 16'hDEAD};
+ @(posedge clk);
+ cmd_src_rdy <= 0;
+ end
+ endtask // InsertRead
+
+ initial $dumpfile("fifo_to_wb_tb.vcd");
+ initial $dumpvars(0,fifo_to_wb_tb);
+
+ initial
+ begin
+ @(negedge rst);
+ //#10000;
+ @(posedge clk);
+ @(posedge clk);
+ @(posedge clk);
+ @(posedge clk);
+ InsertRW(16'hF00D, 6'd0, 8'hB5, 16'd7, 16'h1234);
+ #20000;
+ InsertRW(16'h9876, 6'd0, 8'h43, 16'd8, 16'hBEEF);
+ #20000;
+ InsertRW(16'h1000, 6'd0, 8'h96, 16'd4, 16'hF00D);
+ #20000;
+ InsertRW(16'h3000, 6'd0, 8'h12, 16'd10,16'hDEAD);
+ #20000 $finish;
+ end
+
+endmodule // fifo_to_wb_tb
diff --git a/fpga/usrp2/control_lib/gray2bin.v b/fpga/usrp2/control_lib/gray2bin.v
index 5df40bd52..399d5bba0 100644
--- a/fpga/usrp2/control_lib/gray2bin.v
+++ b/fpga/usrp2/control_lib/gray2bin.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module gray2bin
diff --git a/fpga/usrp2/control_lib/gray_send.v b/fpga/usrp2/control_lib/gray_send.v
index 7fc07d40c..62402f8d3 100644
--- a/fpga/usrp2/control_lib/gray_send.v
+++ b/fpga/usrp2/control_lib/gray_send.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
diff --git a/fpga/usrp2/control_lib/icache.v b/fpga/usrp2/control_lib/icache.v
index bd21f47cc..810b5fa64 100644
--- a/fpga/usrp2/control_lib/icache.v
+++ b/fpga/usrp2/control_lib/icache.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module icache
#(parameter AWIDTH=14,
diff --git a/fpga/usrp2/control_lib/longfifo.v b/fpga/usrp2/control_lib/longfifo.v
index bf3338e0b..c77f2dcb1 100644
--- a/fpga/usrp2/control_lib/longfifo.v
+++ b/fpga/usrp2/control_lib/longfifo.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// FIFO intended to be interchangeable with shortfifo, but
// based on block ram instead of SRL16's
diff --git a/fpga/usrp2/control_lib/medfifo.v b/fpga/usrp2/control_lib/medfifo.v
index 5a77e8c16..0f66f6597 100644
--- a/fpga/usrp2/control_lib/medfifo.v
+++ b/fpga/usrp2/control_lib/medfifo.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module medfifo
#(parameter WIDTH=32,
diff --git a/fpga/usrp2/control_lib/mux4.v b/fpga/usrp2/control_lib/mux4.v
index 31c85c832..b1878f011 100644
--- a/fpga/usrp2/control_lib/mux4.v
+++ b/fpga/usrp2/control_lib/mux4.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module mux4
diff --git a/fpga/usrp2/control_lib/mux8.v b/fpga/usrp2/control_lib/mux8.v
index 9db96a60f..bdb015dc3 100644
--- a/fpga/usrp2/control_lib/mux8.v
+++ b/fpga/usrp2/control_lib/mux8.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module mux8
diff --git a/fpga/usrp2/control_lib/mux_32_4.v b/fpga/usrp2/control_lib/mux_32_4.v
index fef5812e9..4a1244933 100644
--- a/fpga/usrp2/control_lib/mux_32_4.v
+++ b/fpga/usrp2/control_lib/mux_32_4.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module mux_32_4
diff --git a/fpga/usrp2/control_lib/oneshot_2clk.v b/fpga/usrp2/control_lib/oneshot_2clk.v
index 72f16a4b3..7ed5bc8f6 100644
--- a/fpga/usrp2/control_lib/oneshot_2clk.v
+++ b/fpga/usrp2/control_lib/oneshot_2clk.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Retime a single bit from one clock domain to another
// Guarantees that no matter what the relative clock rates, if the in signal is high for at least
diff --git a/fpga/usrp2/control_lib/priority_enc.v b/fpga/usrp2/control_lib/priority_enc.v
index 916192445..d30870be9 100644
--- a/fpga/usrp2/control_lib/priority_enc.v
+++ b/fpga/usrp2/control_lib/priority_enc.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module priority_enc
(input [31:0] in,
diff --git a/fpga/usrp2/control_lib/quad_uart.v b/fpga/usrp2/control_lib/quad_uart.v
index afa6fae1d..39998150d 100644
--- a/fpga/usrp2/control_lib/quad_uart.v
+++ b/fpga/usrp2/control_lib/quad_uart.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module quad_uart
#(parameter TXDEPTH = 1,
diff --git a/fpga/usrp2/control_lib/ram_2port.v b/fpga/usrp2/control_lib/ram_2port.v
index 3716a7c8a..86d7e4703 100644
--- a/fpga/usrp2/control_lib/ram_2port.v
+++ b/fpga/usrp2/control_lib/ram_2port.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module ram_2port
diff --git a/fpga/usrp2/control_lib/ram_2port_mixed_width.v b/fpga/usrp2/control_lib/ram_2port_mixed_width.v
index fae7d8de3..2910d4041 100644
--- a/fpga/usrp2/control_lib/ram_2port_mixed_width.v
+++ b/fpga/usrp2/control_lib/ram_2port_mixed_width.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module ram_2port_mixed_width
(input clk16,
diff --git a/fpga/usrp2/control_lib/ram_harv_cache.v b/fpga/usrp2/control_lib/ram_harv_cache.v
index 29fdebf7a..e68ed7f68 100644
--- a/fpga/usrp2/control_lib/ram_harv_cache.v
+++ b/fpga/usrp2/control_lib/ram_harv_cache.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Dual ported, Harvard architecture, cached ram
diff --git a/fpga/usrp2/control_lib/ram_harvard.v b/fpga/usrp2/control_lib/ram_harvard.v
index a190e20fd..00ffb1984 100644
--- a/fpga/usrp2/control_lib/ram_harvard.v
+++ b/fpga/usrp2/control_lib/ram_harvard.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Dual ported, Harvard architecture, cached ram
diff --git a/fpga/usrp2/control_lib/ram_harvard2.v b/fpga/usrp2/control_lib/ram_harvard2.v
index 67777af2a..d8fe472f5 100644
--- a/fpga/usrp2/control_lib/ram_harvard2.v
+++ b/fpga/usrp2/control_lib/ram_harvard2.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Dual ported, Harvard architecture
diff --git a/fpga/usrp2/control_lib/ram_loader.v b/fpga/usrp2/control_lib/ram_loader.v
index c53ea7aa7..85ccf91b4 100644
--- a/fpga/usrp2/control_lib/ram_loader.v
+++ b/fpga/usrp2/control_lib/ram_loader.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module ram_loader
#(parameter AWIDTH=16, RAM_SIZE=16384)
(
diff --git a/fpga/usrp2/control_lib/ram_wb_harvard.v b/fpga/usrp2/control_lib/ram_wb_harvard.v
index c3efc12e0..8d5a45247 100644
--- a/fpga/usrp2/control_lib/ram_wb_harvard.v
+++ b/fpga/usrp2/control_lib/ram_wb_harvard.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Dual ported RAM for Harvard architecture processors
// Does no forwarding
diff --git a/fpga/usrp2/control_lib/reset_sync.v b/fpga/usrp2/control_lib/reset_sync.v
index 94d966840..304aba106 100644
--- a/fpga/usrp2/control_lib/reset_sync.v
+++ b/fpga/usrp2/control_lib/reset_sync.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module reset_sync
diff --git a/fpga/usrp2/control_lib/s3a_icap_wb.v b/fpga/usrp2/control_lib/s3a_icap_wb.v
index 83d9f775e..e49b56cff 100644
--- a/fpga/usrp2/control_lib/s3a_icap_wb.v
+++ b/fpga/usrp2/control_lib/s3a_icap_wb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module s3a_icap_wb
diff --git a/fpga/usrp2/control_lib/sd_spi.v b/fpga/usrp2/control_lib/sd_spi.v
index 3f4d7f46a..fa998d19a 100644
--- a/fpga/usrp2/control_lib/sd_spi.v
+++ b/fpga/usrp2/control_lib/sd_spi.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module sd_spi
(input clk,
input rst,
diff --git a/fpga/usrp2/control_lib/sd_spi_tb.v b/fpga/usrp2/control_lib/sd_spi_tb.v
index e30a5bdf6..2b5ae083f 100644
--- a/fpga/usrp2/control_lib/sd_spi_tb.v
+++ b/fpga/usrp2/control_lib/sd_spi_tb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module sd_spi_tb;
diff --git a/fpga/usrp2/control_lib/sd_spi_wb.v b/fpga/usrp2/control_lib/sd_spi_wb.v
index 7a6258b56..b09debd70 100644
--- a/fpga/usrp2/control_lib/sd_spi_wb.v
+++ b/fpga/usrp2/control_lib/sd_spi_wb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Wishbone module for spi communications with an SD Card
// The programming interface is simple --
diff --git a/fpga/usrp2/control_lib/setting_reg.v b/fpga/usrp2/control_lib/setting_reg.v
index 3d3bb65e5..e4c84d910 100644
--- a/fpga/usrp2/control_lib/setting_reg.v
+++ b/fpga/usrp2/control_lib/setting_reg.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module setting_reg
diff --git a/fpga/usrp2/control_lib/settings_bus.v b/fpga/usrp2/control_lib/settings_bus.v
index aec179516..e2ea7e44b 100644
--- a/fpga/usrp2/control_lib/settings_bus.v
+++ b/fpga/usrp2/control_lib/settings_bus.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Grab settings off the wishbone bus, send them out to our simpler bus on the fast clock
diff --git a/fpga/usrp2/control_lib/settings_bus_16LE.v b/fpga/usrp2/control_lib/settings_bus_16LE.v
index 76061e9e0..7c42a0870 100644
--- a/fpga/usrp2/control_lib/settings_bus_16LE.v
+++ b/fpga/usrp2/control_lib/settings_bus_16LE.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Grab settings off the wishbone bus, send them out to settings bus
// 16 bits little endian, but all registers need to be written 32 bits at a time.
diff --git a/fpga/usrp2/control_lib/settings_bus_crossclock.v b/fpga/usrp2/control_lib/settings_bus_crossclock.v
index b043aa0ad..9c5912042 100644
--- a/fpga/usrp2/control_lib/settings_bus_crossclock.v
+++ b/fpga/usrp2/control_lib/settings_bus_crossclock.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// This module takes the settings bus on one clock domain and crosses it over to another domain
diff --git a/fpga/usrp2/control_lib/shortfifo.v b/fpga/usrp2/control_lib/shortfifo.v
index d8ce1428e..c7c916375 100644
--- a/fpga/usrp2/control_lib/shortfifo.v
+++ b/fpga/usrp2/control_lib/shortfifo.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module shortfifo
#(parameter WIDTH=32)
diff --git a/fpga/usrp2/control_lib/simple_uart.v b/fpga/usrp2/control_lib/simple_uart.v
index 0dd58b5f5..f44a719f4 100644
--- a/fpga/usrp2/control_lib/simple_uart.v
+++ b/fpga/usrp2/control_lib/simple_uart.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module simple_uart
#(parameter TXDEPTH = 1,
diff --git a/fpga/usrp2/control_lib/simple_uart_rx.v b/fpga/usrp2/control_lib/simple_uart_rx.v
index debdd618b..5f7646e03 100644
--- a/fpga/usrp2/control_lib/simple_uart_rx.v
+++ b/fpga/usrp2/control_lib/simple_uart_rx.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module simple_uart_rx
diff --git a/fpga/usrp2/control_lib/simple_uart_tx.v b/fpga/usrp2/control_lib/simple_uart_tx.v
index e11a347ed..f38460bd4 100644
--- a/fpga/usrp2/control_lib/simple_uart_tx.v
+++ b/fpga/usrp2/control_lib/simple_uart_tx.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module simple_uart_tx
#(parameter DEPTH=0)
diff --git a/fpga/usrp2/control_lib/spi.v b/fpga/usrp2/control_lib/spi.v
index a80c488e9..1abebee1c 100644
--- a/fpga/usrp2/control_lib/spi.v
+++ b/fpga/usrp2/control_lib/spi.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// AD9510 Register Map (from datasheet Rev. A)
diff --git a/fpga/usrp2/control_lib/srl.v b/fpga/usrp2/control_lib/srl.v
index fa28c7669..bdef30058 100644
--- a/fpga/usrp2/control_lib/srl.v
+++ b/fpga/usrp2/control_lib/srl.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module srl
#(parameter WIDTH=18)
diff --git a/fpga/usrp2/control_lib/ss_rcvr.v b/fpga/usrp2/control_lib/ss_rcvr.v
index 8e650d21b..4fb732c23 100644
--- a/fpga/usrp2/control_lib/ss_rcvr.v
+++ b/fpga/usrp2/control_lib/ss_rcvr.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Source-synchronous receiver
diff --git a/fpga/usrp2/control_lib/system_control.v b/fpga/usrp2/control_lib/system_control.v
index 5d89f13db..7e7b71f3c 100644
--- a/fpga/usrp2/control_lib/system_control.v
+++ b/fpga/usrp2/control_lib/system_control.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// System bootup order:
// 0 - Internal POR to reset this block. Maybe control it from CPLD in the future?
// 1 - Everything in reset
diff --git a/fpga/usrp2/control_lib/system_control_tb.v b/fpga/usrp2/control_lib/system_control_tb.v
index a8eff4811..8fecfd1f0 100644
--- a/fpga/usrp2/control_lib/system_control_tb.v
+++ b/fpga/usrp2/control_lib/system_control_tb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module system_control_tb();
diff --git a/fpga/usrp2/control_lib/traffic_cop.v b/fpga/usrp2/control_lib/traffic_cop.v
index e7579656a..874e4c2d9 100644
--- a/fpga/usrp2/control_lib/traffic_cop.v
+++ b/fpga/usrp2/control_lib/traffic_cop.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module traffic_cop();
diff --git a/fpga/usrp2/control_lib/v5icap_wb.v b/fpga/usrp2/control_lib/v5icap_wb.v
index c8800285a..92a6769e5 100644
--- a/fpga/usrp2/control_lib/v5icap_wb.v
+++ b/fpga/usrp2/control_lib/v5icap_wb.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module v5icap_wb
diff --git a/fpga/usrp2/control_lib/wb_bridge_16_32.v b/fpga/usrp2/control_lib/wb_bridge_16_32.v
index 405e25c3c..7c62c9cbd 100644
--- a/fpga/usrp2/control_lib/wb_bridge_16_32.v
+++ b/fpga/usrp2/control_lib/wb_bridge_16_32.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module wb_bridge_16_32
diff --git a/fpga/usrp2/control_lib/wb_bus_writer.v b/fpga/usrp2/control_lib/wb_bus_writer.v
index fc148a0ff..08e641d37 100644
--- a/fpga/usrp2/control_lib/wb_bus_writer.v
+++ b/fpga/usrp2/control_lib/wb_bus_writer.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// wb_bus_writer
//
diff --git a/fpga/usrp2/control_lib/wb_output_pins32.v b/fpga/usrp2/control_lib/wb_output_pins32.v
index 1517f2066..43e239797 100644
--- a/fpga/usrp2/control_lib/wb_output_pins32.v
+++ b/fpga/usrp2/control_lib/wb_output_pins32.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Simple 32-bit Wishbone compatible slave output port
diff --git a/fpga/usrp2/control_lib/wb_ram_block.v b/fpga/usrp2/control_lib/wb_ram_block.v
index 044d34ca4..da6c610d3 100644
--- a/fpga/usrp2/control_lib/wb_ram_block.v
+++ b/fpga/usrp2/control_lib/wb_ram_block.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Since this is a block ram, there are no byte-selects and there is a 1-cycle read latency
diff --git a/fpga/usrp2/control_lib/wb_ram_dist.v b/fpga/usrp2/control_lib/wb_ram_dist.v
index cffc2f423..491a6ae11 100644
--- a/fpga/usrp2/control_lib/wb_ram_dist.v
+++ b/fpga/usrp2/control_lib/wb_ram_dist.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module wb_ram_dist
diff --git a/fpga/usrp2/control_lib/wb_readback_mux.v b/fpga/usrp2/control_lib/wb_readback_mux.v
index 3922b03e3..a5bf224b8 100644
--- a/fpga/usrp2/control_lib/wb_readback_mux.v
+++ b/fpga/usrp2/control_lib/wb_readback_mux.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Note -- clocks must be synchronous (derived from the same source)
diff --git a/fpga/usrp2/control_lib/wb_readback_mux_16LE.v b/fpga/usrp2/control_lib/wb_readback_mux_16LE.v
index 2b01898c1..aceec601b 100644
--- a/fpga/usrp2/control_lib/wb_readback_mux_16LE.v
+++ b/fpga/usrp2/control_lib/wb_readback_mux_16LE.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// Note -- clocks must be synchronous (derived from the same source)
diff --git a/fpga/usrp2/control_lib/wb_regfile_2clock.v b/fpga/usrp2/control_lib/wb_regfile_2clock.v
index e248e5161..ce93ab3f4 100644
--- a/fpga/usrp2/control_lib/wb_regfile_2clock.v
+++ b/fpga/usrp2/control_lib/wb_regfile_2clock.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module wb_regfile_2clock
(input wb_clk_i,
diff --git a/fpga/usrp2/control_lib/wb_semaphore.v b/fpga/usrp2/control_lib/wb_semaphore.v
index a9208e6a1..e90950509 100644
--- a/fpga/usrp2/control_lib/wb_semaphore.v
+++ b/fpga/usrp2/control_lib/wb_semaphore.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
// up to 8 semaphores
diff --git a/fpga/usrp2/control_lib/wb_sim.v b/fpga/usrp2/control_lib/wb_sim.v
index b324e1457..9f2fbea54 100644
--- a/fpga/usrp2/control_lib/wb_sim.v
+++ b/fpga/usrp2/control_lib/wb_sim.v
@@ -1,3 +1,20 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
module wb_sim();