b2xx: Updating FPGA source with recent bugfixes.
Original-commit: 4b4365a517938b365af57674a3ab1462432c2c3a
This commit is contained in:
@@ -23,4 +23,5 @@ axi_forwarding_cam.v \
|
||||
axi_test_vfifo.v \
|
||||
dram_2port.v \
|
||||
cvita_uart.v \
|
||||
serial_to_settings.v \
|
||||
))
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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 forms the qualification engine for a single master as
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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/>.
|
||||
//
|
||||
|
||||
`define LOG2(N) (\
|
||||
N < 2 ? 0 : \
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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/>.
|
||||
//
|
||||
`timescale 1 ps / 1 ps
|
||||
|
||||
module axi_crossbar_tb;
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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 is connected to the output port of an AXI4-STREAM FIFO that is used to move packetized data.
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2013 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 implements a highly customized TCAM that enbales forwarding
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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/>.
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
|
||||
`define LOG2(N) (\
|
||||
N < 2 ? 0 : \
|
||||
N < 4 ? 1 : \
|
||||
N < 8 ? 2 : \
|
||||
N < 16 ? 3 : \
|
||||
N < 32 ? 4 : \
|
||||
N < 64 ? 5 : \
|
||||
N < 128 ? 6 : \
|
||||
N < 256 ? 7 : \
|
||||
N < 512 ? 8 : \
|
||||
N < 1024 ? 9 : \
|
||||
10)
|
||||
|
||||
module binary_encoder
|
||||
#(
|
||||
parameter SIZE = 16
|
||||
)
|
||||
(
|
||||
input [SIZE-1:0] in,
|
||||
output [`LOG2(SIZE)-1:0] out
|
||||
);
|
||||
|
||||
genvar m,n;
|
||||
|
||||
generate
|
||||
// Loop enough times to represent the total number of input bits as an encoded value
|
||||
for (m = 0; m <= `log2(SIZE-1); m = m + 1) begin: expand_or_tree
|
||||
wire [SIZE-1:0] encoding;
|
||||
// Build enable mask by iterating through every input bit.
|
||||
for (n = 0; n < SIZE ; n = n + 1) begin: encode_this_bit
|
||||
assign encoding[n] = n[m];
|
||||
end
|
||||
// OR tree for this output bit with appropraite bits enabled.
|
||||
assign out[m] = |(encoding & in);
|
||||
end
|
||||
endgenerate
|
||||
endmodule // binary_encoder
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,19 @@
|
||||
//
|
||||
// Copyright 2013 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/>.
|
||||
//
|
||||
|
||||
//create a compressed vita based uart data interface
|
||||
|
||||
|
||||
+13
-1
@@ -2,7 +2,19 @@
|
||||
//
|
||||
// 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 gpio_atr
|
||||
|
||||
+13
-1
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2013 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 por_gen
|
||||
|
||||
+13
-1
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// 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/>.
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// 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/>.
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
|
||||
|
||||
module serial_to_settings
|
||||
(
|
||||
input clk,
|
||||
input reset,
|
||||
// Serial signals (async)
|
||||
input scl,
|
||||
input sda,
|
||||
// Settngs bus out
|
||||
output reg set_stb,
|
||||
output reg [7:0] set_addr,
|
||||
output reg [31:0] set_data
|
||||
);
|
||||
|
||||
reg [2:0] state;
|
||||
|
||||
localparam SEARCH = 3'h0;
|
||||
localparam ADDRESS = 3'h1;
|
||||
localparam DATA = 3'h2;
|
||||
localparam STOP1 = 3'h3;
|
||||
localparam STOP2 = 3'h4;
|
||||
|
||||
reg scl_pre_reg, scl_reg, scl_reg2;
|
||||
reg sda_pre_reg, sda_reg, sda_reg2;
|
||||
reg [4:0] counter;
|
||||
|
||||
|
||||
always @(posedge clk) begin
|
||||
scl_reg2 <= scl_reg;
|
||||
scl_reg <= scl_pre_reg;
|
||||
scl_pre_reg <= scl;
|
||||
sda_reg2 <= sda_reg;
|
||||
sda_reg <= sda_pre_reg;
|
||||
sda_pre_reg <= sda;
|
||||
end
|
||||
|
||||
|
||||
always @(posedge clk)
|
||||
if (reset) begin
|
||||
state <= SEARCH;
|
||||
counter <= 0;
|
||||
set_addr <= 0;
|
||||
set_data <= 0;
|
||||
set_stb <= 0;
|
||||
end else begin
|
||||
case(state)
|
||||
//
|
||||
// Search for I2C like start indication: SDA goes low whilst clock is high.
|
||||
//
|
||||
SEARCH: begin
|
||||
set_stb <= 0;
|
||||
// Look for START.
|
||||
if (scl_reg && scl_reg2 && !sda_reg && sda_reg2) begin
|
||||
state <= ADDRESS;
|
||||
counter <= 0;
|
||||
end
|
||||
end
|
||||
//
|
||||
// Count 8 Address bits.
|
||||
// Master changes SDA on falling edge of SCL, we sample on the rising edge.
|
||||
//
|
||||
ADDRESS: begin
|
||||
if (scl_reg && !scl_reg2) begin
|
||||
set_addr[7:0] <= {set_addr[6:0],sda_reg};
|
||||
if (counter == 7) begin
|
||||
state <= DATA;
|
||||
counter <= 0;
|
||||
end else
|
||||
counter <= counter + 1;
|
||||
end
|
||||
end
|
||||
//
|
||||
// Count 32 data bits.
|
||||
// Master changes SDA on falling edge of SCL, we sample on the rising edge.
|
||||
//
|
||||
DATA: begin
|
||||
if (scl_reg && !scl_reg2) begin
|
||||
set_data[31:0] <= {set_data[30:0],sda_reg};
|
||||
if (counter == 31) begin
|
||||
state <= STOP1;
|
||||
counter <= 0;
|
||||
end else
|
||||
counter <= counter + 1;
|
||||
end
|
||||
end
|
||||
//
|
||||
// Looks for rising SCL edge before STOP bit.
|
||||
//
|
||||
STOP1: begin
|
||||
if (scl_reg && !scl_reg2) begin
|
||||
state <= STOP2;
|
||||
end
|
||||
end
|
||||
//
|
||||
// Looks for STOP bit
|
||||
//
|
||||
STOP2: begin
|
||||
if (scl_reg && scl_reg2 && sda_reg && !sda_reg2) begin
|
||||
state <= SEARCH;
|
||||
counter <= 0;
|
||||
set_stb <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
endcase // case(state)
|
||||
end // else: !if(reset)
|
||||
|
||||
|
||||
|
||||
endmodule // serial_to_settings
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
|
||||
module serial_to_settings_tb();
|
||||
|
||||
|
||||
|
||||
reg clk;
|
||||
reg reset;
|
||||
|
||||
wire scl;
|
||||
wire sda;
|
||||
wire set_stb;
|
||||
wire [7:0] set_addr;
|
||||
wire [31:0] set_data;
|
||||
|
||||
//
|
||||
// These registers optionaly used
|
||||
// to drive nets through procedural assignments in test bench.
|
||||
// These drivers default to tri-stated.
|
||||
//
|
||||
reg scl_r;
|
||||
reg sda_r;
|
||||
|
||||
assign scl = scl_r;
|
||||
assign sda = sda_r;
|
||||
|
||||
initial
|
||||
begin
|
||||
scl_r <= 1'bz;
|
||||
sda_r <= 1'bz;
|
||||
end
|
||||
|
||||
|
||||
|
||||
serial_to_settings serial_to_settings_i
|
||||
(
|
||||
.clk(clk),
|
||||
.reset(reset),
|
||||
// Serial signals (async)
|
||||
.scl(scl),
|
||||
.sda(sda),
|
||||
// Settngs bus out
|
||||
.set_stb(set_stb),
|
||||
.set_addr(set_addr),
|
||||
.set_data(set_data)
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Bring in a simulation script here
|
||||
//
|
||||
`include "simulation_script.v"
|
||||
|
||||
endmodule
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2011-2012 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/>.
|
||||
//
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
//-- A settings register is a peripheral for the settings register bus.
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2011-2012 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/>.
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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 I2C core
|
||||
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
//
|
||||
// Copyright 2012 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 SPI core, the simplest, yet complete spi core I can think of
|
||||
|
||||
|
||||
Reference in New Issue
Block a user