From 9d1423b9506c89a51a10b6119d01ce9a82a13b0c Mon Sep 17 00:00:00 2001 From: eb Date: Wed, 30 Apr 2008 03:52:31 +0000 Subject: [PATCH] Merged features/inband-usb -r6431:8293 into trunk. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@8295 221aa14e-8319-0410-a670-987f0aec2ac5 --- mblock/src/lib/mb_message.cc | 9 +- pmt/src/lib/pmt.cc | 6 + pmt/src/lib/pmt.h | 5 + pmt/src/lib/pmt_pool.cc | 17 +- pmt/src/lib/pmt_pool.h | 8 +- pmt/src/lib/qa_pmt_prims.cc | 14 + pmt/src/lib/qa_pmt_prims.h | 2 + usrp/fpga/Makefile.extra | 3 - usrp/fpga/inband_lib/chan_fifo_reader.v | 262 ++++--- usrp/fpga/inband_lib/channel_demux.v | 38 +- usrp/fpga/inband_lib/channel_ram.v | 175 +++-- usrp/fpga/inband_lib/cmd_reader.v | 565 +++++++------- usrp/fpga/inband_lib/data_packet_fifo.v | 118 --- usrp/fpga/inband_lib/packet_builder.v | 84 ++- usrp/fpga/inband_lib/register_io.v | 94 ++- usrp/fpga/inband_lib/rx_buffer_inband.v | 388 +++++----- usrp/fpga/inband_lib/tx_buffer_inband.v | 305 +++----- usrp/fpga/inband_lib/usb_fifo_reader.v | 25 - usrp/fpga/inband_lib/usb_fifo_writer.v | 183 ----- usrp/fpga/megacells/fifo_1kx16.bsf | 2 +- usrp/fpga/megacells/fifo_1kx16.v | 6 +- usrp/fpga/megacells/fifo_1kx16_bb.v | 4 +- usrp/fpga/rbf/Makefile.am | 4 + usrp/fpga/rbf/rev2/inband_1rxhb_1tx.rbf | Bin 0 -> 161180 bytes usrp/fpga/rbf/rev2/inband_2rxhb_2tx.rbf | Bin 0 -> 191849 bytes usrp/fpga/rbf/rev4/inband_1rxhb_1tx.rbf | Bin 0 -> 161180 bytes usrp/fpga/rbf/rev4/inband_2rxhb_2tx.rbf | Bin 0 -> 191849 bytes usrp/fpga/toplevel/usrp_inband_usb/config.vh | 2 +- .../usrp_inband_usb/usrp_inband_usb.qsf | 7 +- .../usrp_inband_usb/usrp_inband_usb.v | 81 +- usrp/host/apps-inband/Makefile.am | 31 +- usrp/host/apps-inband/gmac.cc | 690 ------------------ usrp/host/apps-inband/gmac.h | 91 --- usrp/host/apps-inband/gmac.mbh | 146 ---- usrp/host/apps-inband/gmac_symbols.h | 47 -- usrp/host/apps-inband/test_gmac_tx.cc | 330 --------- usrp/host/apps-inband/test_usrp_inband_2rx.cc | 371 ++++++++++ ...p_inband_cs.cc => test_usrp_inband_2tx.cc} | 212 +++--- .../apps-inband/test_usrp_inband_overrun.cc | 5 +- .../apps-inband/test_usrp_inband_registers.cc | 2 +- usrp/host/apps-inband/test_usrp_inband_rx.cc | 26 +- .../test_usrp_inband_timestamps.cc | 2 +- usrp/host/apps-inband/test_usrp_inband_tx.cc | 83 +-- .../apps-inband/test_usrp_inband_underrun.cc | 8 +- usrp/host/lib/inband/Makefile.am | 7 +- usrp/host/lib/inband/fake_usrp.cc | 135 ---- usrp/host/lib/inband/fake_usrp.h | 43 -- usrp/host/lib/inband/qa_inband_usrp_server.cc | 239 +++++- usrp/host/lib/inband/qa_inband_usrp_server.h | 2 + usrp/host/lib/inband/test_usrp_inband.cc | 298 -------- .../host/lib/inband/usrp_inband_usb_packet.cc | 235 +++--- usrp/host/lib/inband/usrp_inband_usb_packet.h | 5 + usrp/host/lib/inband/usrp_rx.cc | 63 +- usrp/host/lib/inband/usrp_rx.h | 6 +- usrp/host/lib/inband/usrp_rx_stub.cc | 181 +++-- usrp/host/lib/inband/usrp_rx_stub.h | 12 +- usrp/host/lib/inband/usrp_server.cc | 512 ++++++++++++- usrp/host/lib/inband/usrp_server.h | 12 + usrp/host/lib/inband/usrp_server.mbh | 2 +- usrp/host/lib/inband/usrp_tx.cc | 14 +- usrp/host/lib/inband/usrp_tx_stub.cc | 6 +- usrp/host/lib/inband/usrp_usb_interface.cc | 114 ++- usrp/host/lib/inband/usrp_usb_interface.h | 4 +- usrp/host/lib/legacy/fusb_linux.cc | 26 +- 64 files changed, 2755 insertions(+), 3612 deletions(-) delete mode 100755 usrp/fpga/inband_lib/data_packet_fifo.v delete mode 100755 usrp/fpga/inband_lib/usb_fifo_reader.v delete mode 100755 usrp/fpga/inband_lib/usb_fifo_writer.v create mode 100755 usrp/fpga/rbf/rev2/inband_1rxhb_1tx.rbf create mode 100755 usrp/fpga/rbf/rev2/inband_2rxhb_2tx.rbf create mode 100755 usrp/fpga/rbf/rev4/inband_1rxhb_1tx.rbf create mode 100755 usrp/fpga/rbf/rev4/inband_2rxhb_2tx.rbf delete mode 100644 usrp/host/apps-inband/gmac.cc delete mode 100644 usrp/host/apps-inband/gmac.h delete mode 100644 usrp/host/apps-inband/gmac.mbh delete mode 100644 usrp/host/apps-inband/gmac_symbols.h delete mode 100644 usrp/host/apps-inband/test_gmac_tx.cc create mode 100644 usrp/host/apps-inband/test_usrp_inband_2rx.cc rename usrp/host/apps-inband/{test_usrp_inband_cs.cc => test_usrp_inband_2tx.cc} (66%) delete mode 100644 usrp/host/lib/inband/fake_usrp.cc delete mode 100644 usrp/host/lib/inband/fake_usrp.h delete mode 100644 usrp/host/lib/inband/test_usrp_inband.cc diff --git a/mblock/src/lib/mb_message.cc b/mblock/src/lib/mb_message.cc index 0bce455c..ce98a931 100644 --- a/mblock/src/lib/mb_message.cc +++ b/mblock/src/lib/mb_message.cc @@ -26,12 +26,13 @@ #include #include -static const int CACHE_LINE_SIZE = 64; // good guess - - +static const int CACHE_LINE_SIZE = 64; // good guess +static const int MAX_MESSAGES = 1024; // KLUDGE max number of messages in sys + // 0 -> no limit #if MB_MESSAGE_LOCAL_ALLOCATOR -static pmt_pool global_msg_pool(sizeof(mb_message), CACHE_LINE_SIZE); +static pmt_pool +global_msg_pool(sizeof(mb_message), CACHE_LINE_SIZE, 16*1024, MAX_MESSAGES); void * mb_message::operator new(size_t size) diff --git a/pmt/src/lib/pmt.cc b/pmt/src/lib/pmt.cc index a141224b..537b7a05 100644 --- a/pmt/src/lib/pmt.cc +++ b/pmt/src/lib/pmt.cc @@ -962,6 +962,12 @@ pmt_list6(pmt_t x1, pmt_t x2, pmt_t x3, pmt_t x4, pmt_t x5, pmt_t x6) return pmt_cons(x1, pmt_cons(x2, pmt_cons(x3, pmt_cons(x4, pmt_cons(x5, pmt_cons(x6, PMT_NIL)))))); } +pmt_t +pmt_list_add(pmt_t list, pmt_t item) +{ + return pmt_reverse(pmt_cons(item, pmt_reverse(list))); +} + pmt_t pmt_caar(pmt_t pair) { diff --git a/pmt/src/lib/pmt.h b/pmt/src/lib/pmt.h index fa368a6a..970dd6c7 100644 --- a/pmt/src/lib/pmt.h +++ b/pmt/src/lib/pmt.h @@ -609,6 +609,11 @@ pmt_t pmt_list5(pmt_t x1, pmt_t x2, pmt_t x3, pmt_t x4, pmt_t x5); */ pmt_t pmt_list6(pmt_t x1, pmt_t x2, pmt_t x3, pmt_t x4, pmt_t x5, pmt_t x6); +/*! + * \brief Return \p list with \p item added to it. + */ +pmt_t pmt_list_add(pmt_t list, pmt_t item); + /* * ------------------------------------------------------------------------ diff --git a/pmt/src/lib/pmt_pool.cc b/pmt/src/lib/pmt_pool.cc index 8f1329a7..05d9c005 100644 --- a/pmt/src/lib/pmt_pool.cc +++ b/pmt/src/lib/pmt_pool.cc @@ -32,10 +32,13 @@ ROUNDUP(size_t x, size_t stride) return ((((x) + (stride) - 1)/(stride)) * (stride)); } -pmt_pool::pmt_pool(size_t itemsize, size_t alignment, size_t allocation_size) - : d_itemsize(ROUNDUP(itemsize, alignment)), +pmt_pool::pmt_pool(size_t itemsize, size_t alignment, + size_t allocation_size, size_t max_items) + : d_cond(&d_mutex), + d_itemsize(ROUNDUP(itemsize, alignment)), d_alignment(alignment), d_allocation_size(std::max(allocation_size, 16 * itemsize)), + d_max_items(max_items), d_n_items(0), d_freelist(0) { } @@ -53,9 +56,15 @@ pmt_pool::malloc() omni_mutex_lock l(d_mutex); item *p; + if (d_max_items != 0){ + while (d_n_items >= d_max_items) + d_cond.wait(); + } + if (d_freelist){ // got something? p = d_freelist; d_freelist = p->d_next; + d_n_items++; return p; } @@ -79,6 +88,7 @@ pmt_pool::malloc() // now return the first one p = d_freelist; d_freelist = p->d_next; + d_n_items++; return p; } @@ -93,4 +103,7 @@ pmt_pool::free(void *foo) item *p = (item *) foo; p->d_next = d_freelist; d_freelist = p; + d_n_items--; + if (d_max_items != 0) + d_cond.signal(); } diff --git a/pmt/src/lib/pmt_pool.h b/pmt/src/lib/pmt_pool.h index ac0c07bb..42276a14 100644 --- a/pmt/src/lib/pmt_pool.h +++ b/pmt/src/lib/pmt_pool.h @@ -38,10 +38,13 @@ class pmt_pool { }; omni_mutex d_mutex; + omni_condition d_cond; size_t d_itemsize; size_t d_alignment; size_t d_allocation_size; + size_t d_max_items; + size_t d_n_items; item *d_freelist; std::vector d_allocations; @@ -50,8 +53,11 @@ public: * \param itemsize size in bytes of the items to be allocated. * \param alignment alignment in bytes of all objects to be allocated (must be power-of-2). * \param allocation_size number of bytes to allocate at a time from the underlying allocator. + * \param max_items is the maximum number of items to allocate. If this number is exceeded, + * the allocate blocks. 0 implies no limit. */ - pmt_pool(size_t itemsize, size_t alignment = 16, size_t allocation_size = 4096); + pmt_pool(size_t itemsize, size_t alignment = 16, + size_t allocation_size = 4096, size_t max_items = 0); ~pmt_pool(); void *malloc(); diff --git a/pmt/src/lib/qa_pmt_prims.cc b/pmt/src/lib/qa_pmt_prims.cc index 26b3e26d..57db4a1a 100644 --- a/pmt/src/lib/qa_pmt_prims.cc +++ b/pmt/src/lib/qa_pmt_prims.cc @@ -301,6 +301,20 @@ qa_pmt_prims::test_io() CPPUNIT_ASSERT_EQUAL(std::string("k0"), pmt_write_string(k0)); } +void +qa_pmt_prims::test_lists() +{ + pmt_t s0 = pmt_intern("s0"); + pmt_t s1 = pmt_intern("s1"); + pmt_t s2 = pmt_intern("s2"); + pmt_t s3 = pmt_intern("s3"); + + pmt_t l1 = pmt_list4(s0, s1, s2, s3); + pmt_t l2 = pmt_list3(s0, s1, s2); + pmt_t l3 = pmt_list_add(l2, s3); + CPPUNIT_ASSERT(pmt_equal(l1, l3)); +} + // ------------------------------------------------------------------------ // class foo is used in test_any below. diff --git a/pmt/src/lib/qa_pmt_prims.h b/pmt/src/lib/qa_pmt_prims.h index be49a30e..919fc2dc 100644 --- a/pmt/src/lib/qa_pmt_prims.h +++ b/pmt/src/lib/qa_pmt_prims.h @@ -40,6 +40,7 @@ class qa_pmt_prims : public CppUnit::TestCase { CPPUNIT_TEST(test_dict); CPPUNIT_TEST(test_any); CPPUNIT_TEST(test_io); + CPPUNIT_TEST(test_lists); CPPUNIT_TEST(test_serialize); CPPUNIT_TEST_SUITE_END(); @@ -56,6 +57,7 @@ class qa_pmt_prims : public CppUnit::TestCase { void test_dict(); void test_any(); void test_io(); + void test_lists(); void test_serialize(); }; diff --git a/usrp/fpga/Makefile.extra b/usrp/fpga/Makefile.extra index 8154e2eb..56df23c9 100644 --- a/usrp/fpga/Makefile.extra +++ b/usrp/fpga/Makefile.extra @@ -4,14 +4,11 @@ EXTRA_DIST = \ inband_lib/channel_demux.v \ inband_lib/channel_ram.v \ inband_lib/cmd_reader.v \ - inband_lib/data_packet_fifo.v \ inband_lib/packet_builder.v \ inband_lib/register_io.v \ inband_lib/rx_buffer_inband.v \ inband_lib/tx_buffer_inband.v \ inband_lib/tx_packer.v \ - inband_lib/usb_fifo_reader.v \ - inband_lib/usb_fifo_writer.v \ inband_lib/usb_packet_fifo.v \ megacells/accum32.bsf \ megacells/accum32.cmp \ diff --git a/usrp/fpga/inband_lib/chan_fifo_reader.v b/usrp/fpga/inband_lib/chan_fifo_reader.v index a6edf2c6..69da9ec5 100755 --- a/usrp/fpga/inband_lib/chan_fifo_reader.v +++ b/usrp/fpga/inband_lib/chan_fifo_reader.v @@ -1,106 +1,102 @@ module chan_fifo_reader - ( reset, tx_clock, tx_strobe, adc_time, samples_format, + (reset, tx_clock, tx_strobe, timestamp_clock, samples_format, fifodata, pkt_waiting, rdreq, skip, tx_q, tx_i, underrun, tx_empty, debug, rssi, threshhold, rssi_wait) ; - input wire reset ; - input wire tx_clock ; - input wire tx_strobe ; //signal to output tx_i and tx_q - input wire [31:0] adc_time ; //current time - input wire [3:0] samples_format ;// not useful at this point - input wire [31:0] fifodata ; //the data input - input wire pkt_waiting ; //signal the next packet is ready - output reg rdreq ; //actually an ack to the current fifodata - output reg skip ; //finish reading current packet - output reg [15:0] tx_q ; //top 16 bit output of fifodata - output reg [15:0] tx_i ; //bottom 16 bit output of fifodata - output reg underrun ; - output reg tx_empty ; //cause 0 to be the output - input wire [31:0] rssi; - input wire [31:0] threshhold; - input wire [31:0] rssi_wait; + input wire reset ; + input wire tx_clock ; + input wire tx_strobe ; //signal to output tx_i and tx_q + input wire [31:0] timestamp_clock ; //current time + input wire [3:0] samples_format ;// not useful at this point + input wire [31:0] fifodata ; //the data input + input wire pkt_waiting ; //signal the next packet is ready + output reg rdreq ; //actually an ack to the current fifodata + output reg skip ; //finish reading current packet + output reg [15:0] tx_q ; //top 16 bit output of fifodata + output reg [15:0] tx_i ; //bottom 16 bit output of fifodata + output reg underrun ; + output reg tx_empty ; //cause 0 to be the output + input wire [31:0] rssi; + input wire [31:0] threshhold; + input wire [31:0] rssi_wait; - output wire [14:0] debug; - assign debug = {reader_state, trash, skip, timestamp[4:0], adc_time[4:0]}; - // Should not be needed if adc clock rate < tx clock rate - // Used only to debug - `define JITTER 5 - - //Samples format - // 16 bits interleaved complex samples - `define QI16 4'b0 + output wire [14:0] debug; + assign debug = {7'd0, rdreq, skip, reader_state, pkt_waiting, tx_strobe, tx_clock}; + + //Samples format + // 16 bits interleaved complex samples + `define QI16 4'b0 - // States - parameter IDLE = 3'd0; - parameter HEADER = 3'd1; - parameter TIMESTAMP = 3'd2; - parameter WAIT = 3'd3; - parameter WAITSTROBE = 3'd4; - parameter SEND = 3'd5; + // States + parameter IDLE = 3'd0; + parameter HEADER = 3'd1; + parameter TIMESTAMP = 3'd2; + parameter WAIT = 3'd3; + parameter WAITSTROBE = 3'd4; + parameter SEND = 3'd5; - // Header format - `define PAYLOAD 8:2 - `define ENDOFBURST 27 - `define STARTOFBURST 28 - `define RSSI_FLAG 26 + // Header format + `define PAYLOAD 8:2 + `define ENDOFBURST 27 + `define STARTOFBURST 28 + `define RSSI_FLAG 26 - /* State registers */ - reg [2:0] reader_state; - /* Local registers */ - reg [6:0] payload_len; - reg [6:0] read_len; - reg [31:0] timestamp; - reg burst; - reg trash; - reg rssi_flag; - reg [31:0] time_wait; + /* State registers */ + reg [2:0] reader_state; + /* Local registers */ + reg [6:0] payload_len; + reg [6:0] read_len; + reg [31:0] timestamp; + reg burst; + reg trash; + reg rssi_flag; + reg [31:0] time_wait; - always @(posedge tx_clock) - begin - if (reset) - begin - reader_state <= IDLE; - rdreq <= 0; - skip <= 0; - underrun <= 0; - burst <= 0; - tx_empty <= 1; - tx_q <= 0; - tx_i <= 0; - trash <= 0; - rssi_flag <= 0; - time_wait <= 0; + always @(posedge tx_clock) + begin + if (reset) + begin + reader_state <= IDLE; + rdreq <= 0; + skip <= 0; + underrun <= 0; + burst <= 0; + tx_empty <= 1; + tx_q <= 0; + tx_i <= 0; + trash <= 0; + rssi_flag <= 0; + time_wait <= 0; end else - begin + begin case (reader_state) - IDLE: + IDLE: begin - /* - * reset all the variables and wait for a tx_strobe - * it is assumed that the ram connected to this fifo_reader - * is a short hand fifo meaning that the header to the next packet - * is already available to this fifo_reader when pkt_waiting is on - */ - skip <=0; - time_wait <= 0; - if (pkt_waiting == 1) - begin - reader_state <= HEADER; - rdreq <= 1; - underrun <= 0; - end - if (burst == 1 && pkt_waiting == 0) - underrun <= 1; - - if (tx_strobe == 1) - tx_empty <= 1 ; + /* + * reset all the variables and wait for a tx_strobe + * it is assumed that the ram connected to this fifo_reader + * is a short hand fifo meaning that the header to the next packet + * is already available to this fifo_reader when pkt_waiting is on + */ + skip <=0; + time_wait <= 0; + if (pkt_waiting == 1) + begin + reader_state <= HEADER; + rdreq <= 1; + underrun <= 0; + end + if (burst == 1 && pkt_waiting == 0) + underrun <= 1; + if (tx_strobe == 1) + tx_empty <= 1 ; end - /* Process header */ + /* Process header */ HEADER: - begin + begin if (tx_strobe == 1) tx_empty <= 1 ; @@ -114,68 +110,64 @@ module chan_fifo_reader else if (fifodata[`ENDOFBURST] == 1) burst <= 0; - if (trash == 1 && fifodata[`STARTOFBURST] == 0) - begin - skip <= 1; - reader_state <= IDLE; - rdreq <= 0; - end - else - begin - payload_len <= fifodata[`PAYLOAD] ; - read_len <= 0; - rdreq <= 1; - reader_state <= TIMESTAMP; - end - end + if (trash == 1 && fifodata[`STARTOFBURST] == 0) + begin + skip <= 1; + reader_state <= IDLE; + rdreq <= 0; + end + else + begin + payload_len <= fifodata[`PAYLOAD] ; + read_len <= 0; + rdreq <= 1; + reader_state <= TIMESTAMP; + end + end TIMESTAMP: - begin + begin timestamp <= fifodata; reader_state <= WAIT; if (tx_strobe == 1) tx_empty <= 1 ; rdreq <= 0; - end + end - // Decide if we wait, send or discard samples + // Decide if we wait, send or discard samples WAIT: - begin + begin if (tx_strobe == 1) tx_empty <= 1 ; time_wait <= time_wait + 32'd1; - // Outdated - if ((timestamp < adc_time) || - (time_wait >= rssi_wait && rssi_wait != 0 && rssi_flag)) + // Outdated + if ((timestamp < timestamp_clock) || + (time_wait >= rssi_wait && rssi_wait != 0 && rssi_flag)) begin - trash <= 1; - reader_state <= IDLE; - skip <= 1; + trash <= 1; + reader_state <= IDLE; + skip <= 1; end // Let's send it - else if ((timestamp <= adc_time + `JITTER - && timestamp > adc_time) + else if (timestamp == timestamp_clock || timestamp == 32'hFFFFFFFF) - begin - if (rssi <= threshhold || rssi_flag == 0) - begin - trash <= 0; - reader_state <= WAITSTROBE; - end - else - reader_state <= WAIT; - end - else - reader_state <= WAIT; - // Wait a little bit more - //else if (timestamp > adc_time + `JITTER) - // reader_state <= WAIT; - end + begin + if (rssi <= threshhold || rssi_flag == 0) + begin + trash <= 0; + reader_state <= WAITSTROBE; + end + else + reader_state <= WAIT; + end + else + reader_state <= WAIT; + end // Wait for the transmit chain to be ready WAITSTROBE: - begin + begin // If end of payload... if (read_len == payload_len) begin @@ -189,11 +181,11 @@ module chan_fifo_reader reader_state <= SEND; rdreq <= 1; end - end + end - // Send the samples to the tx_chain + // Send the samples to the tx_chain SEND: - begin + begin reader_state <= WAITSTROBE; read_len <= read_len + 7'd1; tx_empty <= 0; @@ -213,13 +205,13 @@ module chan_fifo_reader tx_q <= fifodata[31:16]; end endcase - end + end default: - begin - //error handling + begin + //error handling reader_state <= IDLE; - end + end endcase end end diff --git a/usrp/fpga/inband_lib/channel_demux.v b/usrp/fpga/inband_lib/channel_demux.v index d46be939..cca5cdb6 100644 --- a/usrp/fpga/inband_lib/channel_demux.v +++ b/usrp/fpga/inband_lib/channel_demux.v @@ -1,24 +1,24 @@ module channel_demux - #(parameter NUM_CHAN = 2, parameter CHAN_WIDTH = 2) ( //usb Side - input [31:0]usbdata_final, - input WR_final, - - // TX Side - input reset, - input txclk, - output reg [CHAN_WIDTH:0] WR_channel, - output reg [31:0] ram_data, - output reg [CHAN_WIDTH:0] WR_done_channel ); -/* Parse header and forward to ram */ - reg [2:0]reader_state; - reg [4:0]channel ; - reg [6:0]read_length ; + #(parameter NUM_CHAN = 2) ( //usb Side + input [31:0]usbdata_final, + input WR_final, + // TX Side + input reset, + input txclk, + output reg [NUM_CHAN:0] WR_channel, + output reg [31:0] ram_data, + output reg [NUM_CHAN:0] WR_done_channel ); + /* Parse header and forward to ram */ + + reg [2:0]reader_state; + reg [4:0]channel ; + reg [6:0]read_length ; // States - parameter IDLE = 3'd0; - parameter HEADER = 3'd1; - parameter WAIT = 3'd2; - parameter FORWARD = 3'd3; + parameter IDLE = 3'd0; + parameter HEADER = 3'd1; + parameter WAIT = 3'd2; + parameter FORWARD = 3'd3; `define CHANNEL 20:16 `define PKT_SIZE 127 @@ -27,7 +27,7 @@ module channel_demux NUM_CHAN : (usbdata_final[`CHANNEL]); always @(posedge txclk) - begin + begin if (reset) begin reader_state <= IDLE; diff --git a/usrp/fpga/inband_lib/channel_ram.v b/usrp/fpga/inband_lib/channel_ram.v index 60450f02..9621246c 100755 --- a/usrp/fpga/inband_lib/channel_ram.v +++ b/usrp/fpga/inband_lib/channel_ram.v @@ -1,114 +1,107 @@ module channel_ram - ( // System - input txclk, - input reset, + ( // System + input txclk, input reset, + // USB side + input [31:0] datain, input WR, input WR_done, output have_space, + // Reader side + output [31:0] dataout, input RD, input RD_done, output packet_waiting); - // USB side - input [31:0] datain, - input WR, - input WR_done, - output have_space, - - // Reader side - output [31:0] dataout, - input RD, - input RD_done, - output packet_waiting); - - reg [6:0] wr_addr, rd_addr; - reg [1:0] which_ram_wr, which_ram_rd; - reg [2:0] nb_packets; + reg [6:0] wr_addr, rd_addr; + reg [1:0] which_ram_wr, which_ram_rd; + reg [2:0] nb_packets; - reg [31:0] ram0 [0:127]; - reg [31:0] ram1 [0:127]; - reg [31:0] ram2 [0:127]; - reg [31:0] ram3 [0:127]; + reg [31:0] ram0 [0:127]; + reg [31:0] ram1 [0:127]; + reg [31:0] ram2 [0:127]; + reg [31:0] ram3 [0:127]; - reg [31:0] dataout0; - reg [31:0] dataout1; - reg [31:0] dataout2; - reg [31:0] dataout3; + reg [31:0] dataout0; + reg [31:0] dataout1; + reg [31:0] dataout2; + reg [31:0] dataout3; - wire wr_done_int; - wire rd_done_int; - wire [6:0] rd_addr_final; - wire [1:0] which_ram_rd_final; + wire wr_done_int; + wire rd_done_int; + wire [6:0] rd_addr_final; + wire [1:0] which_ram_rd_final; - // USB side - always @(posedge txclk) - if(WR & (which_ram_wr == 2'd0)) ram0[wr_addr] <= datain; + // USB side + always @(posedge txclk) + if(WR & (which_ram_wr == 2'd0)) ram0[wr_addr] <= datain; - always @(posedge txclk) - if(WR & (which_ram_wr == 2'd1)) ram1[wr_addr] <= datain; + always @(posedge txclk) + if(WR & (which_ram_wr == 2'd1)) ram1[wr_addr] <= datain; - always @(posedge txclk) - if(WR & (which_ram_wr == 2'd2)) ram2[wr_addr] <= datain; + always @(posedge txclk) + if(WR & (which_ram_wr == 2'd2)) ram2[wr_addr] <= datain; - always @(posedge txclk) - if(WR & (which_ram_wr == 2'd3)) ram3[wr_addr] <= datain; + always @(posedge txclk) + if(WR & (which_ram_wr == 2'd3)) ram3[wr_addr] <= datain; assign wr_done_int = ((WR && (wr_addr == 7'd127)) || WR_done); - always @(posedge txclk) - if(reset) - wr_addr <= 0; - else if (WR_done) - wr_addr <= 0; - else if (WR) - wr_addr <= wr_addr + 7'd1; + always @(posedge txclk) + if(reset) + wr_addr <= 0; + else if (WR_done) + wr_addr <= 0; + else if (WR) + wr_addr <= wr_addr + 7'd1; - always @(posedge txclk) - if(reset) - which_ram_wr <= 0; - else if (wr_done_int) - which_ram_wr <= which_ram_wr + 2'd1; + always @(posedge txclk) + if(reset) + which_ram_wr <= 0; + else if (wr_done_int) + which_ram_wr <= which_ram_wr + 2'd1; - assign have_space = (nb_packets < 3'd3); + assign have_space = (nb_packets < 3'd3); - // Reader side - // short hand fifo - // rd_addr_final is what rd_addr is going to be next clock cycle - // which_ram_rd_final is what which_ram_rd is going to be next clock cycle - always @(posedge txclk) dataout0 <= ram0[rd_addr_final]; - always @(posedge txclk) dataout1 <= ram1[rd_addr_final]; - always @(posedge txclk) dataout2 <= ram2[rd_addr_final]; - always @(posedge txclk) dataout3 <= ram3[rd_addr_final]; + // Reader side + // short hand fifo + // rd_addr_final is what rd_addr is going to be next clock cycle + // which_ram_rd_final is what which_ram_rd is going to be next clock cycle + always @(posedge txclk) dataout0 <= ram0[rd_addr_final]; + always @(posedge txclk) dataout1 <= ram1[rd_addr_final]; + always @(posedge txclk) dataout2 <= ram2[rd_addr_final]; + always @(posedge txclk) dataout3 <= ram3[rd_addr_final]; - assign dataout = (which_ram_rd_final[1]) ? - (which_ram_rd_final[0] ? dataout3 : dataout2) : - (which_ram_rd_final[0] ? dataout1 : dataout0); + assign dataout = (which_ram_rd_final[1]) ? + (which_ram_rd_final[0] ? dataout3 : dataout2) : + (which_ram_rd_final[0] ? dataout1 : dataout0); - //RD_done is the only way to signal the end of one packet - assign rd_done_int = RD_done; + //RD_done is the only way to signal the end of one packet + assign rd_done_int = RD_done; - always @(posedge txclk) - if (reset) - rd_addr <= 0; - else if (RD_done) - rd_addr <= 0; - else if (RD) rd_addr <= rd_addr + 7'd1; + always @(posedge txclk) + if (reset) + rd_addr <= 0; + else if (RD_done) + rd_addr <= 0; + else if (RD) + rd_addr <= rd_addr + 7'd1; - assign rd_addr_final = (reset|RD_done) ? (6'd0) : - ((RD)?(rd_addr+7'd1):rd_addr); - always @(posedge txclk) - if (reset) - which_ram_rd <= 0; - else if (rd_done_int) - which_ram_rd <= which_ram_rd + 2'd1; + assign rd_addr_final = (reset|RD_done) ? (6'd0) : + ((RD)?(rd_addr+7'd1):rd_addr); + + always @(posedge txclk) + if (reset) + which_ram_rd <= 0; + else if (rd_done_int) + which_ram_rd <= which_ram_rd + 2'd1; - assign which_ram_rd_final = (reset) ? (2'd0): + assign which_ram_rd_final = (reset) ? (2'd0): ((rd_done_int) ? (which_ram_rd + 2'd1) : which_ram_rd); - //packet_waiting is set to zero if rd_done_int is high - //because there is no guarantee that nb_packets will be pos. - //assign packet_waiting = (nb_packets != 0) & (~rd_done_int); - assign packet_waiting = (nb_packets > 1) | ((nb_packets == 1)&(~rd_done_int)); - always @(posedge txclk) - if (reset) - nb_packets <= 0; - else if (wr_done_int & ~rd_done_int) - nb_packets <= nb_packets + 3'd1; - else if (rd_done_int & ~wr_done_int) - nb_packets <= nb_packets - 3'd1; + //packet_waiting is set to zero if rd_done_int is high + //because there is no guarantee that nb_packets will be pos. + + assign packet_waiting = (nb_packets > 1) | ((nb_packets == 1)&(~rd_done_int)); + always @(posedge txclk) + if (reset) + nb_packets <= 0; + else if (wr_done_int & ~rd_done_int) + nb_packets <= nb_packets + 3'd1; + else if (rd_done_int & ~wr_done_int) + nb_packets <= nb_packets - 3'd1; -endmodule \ No newline at end of file +endmodule diff --git a/usrp/fpga/inband_lib/cmd_reader.v b/usrp/fpga/inband_lib/cmd_reader.v index 7604321e..b69ea02b 100755 --- a/usrp/fpga/inband_lib/cmd_reader.v +++ b/usrp/fpga/inband_lib/cmd_reader.v @@ -1,292 +1,305 @@ -module cmd_reader( - //System - input reset, - input txclk, - input [31:0] adc_time, - //FX2 Side - output reg skip, - output reg rdreq, - input [31:0] fifodata, - input pkt_waiting, - //Rx side - input rx_WR_enabled, - output reg [15:0] rx_databus, - output reg rx_WR, - output reg rx_WR_done, - //register io - input wire [31:0] reg_data_out, - output reg [31:0] reg_data_in, - output reg [6:0] reg_addr, - output reg [1:0] reg_io_enable, - output wire [14:0] debug - ); +module cmd_reader + (//System + input reset, input txclk, input [31:0] timestamp_clock, + //FX2 Side + output reg skip, output reg rdreq, + input [31:0] fifodata, input pkt_waiting, + //Rx side + input rx_WR_enabled, output reg [15:0] rx_databus, + output reg rx_WR, output reg rx_WR_done, + //register io + input wire [31:0] reg_data_out, output reg [31:0] reg_data_in, + output reg [6:0] reg_addr, output reg [1:0] reg_io_enable, + output wire [14:0] debug, output reg stop, output reg [15:0] stop_time); - // States - parameter IDLE = 4'd0; - parameter HEADER = 4'd1; - parameter TIMESTAMP = 4'd2; - parameter WAIT = 4'd3; - parameter TEST = 4'd4; - parameter SEND = 4'd5; - parameter PING = 4'd6; - parameter WRITE_REG = 4'd7; - parameter WRITE_REG_MASKED = 4'd8; - parameter READ_REG = 4'd9; - parameter DELAY = 4'd14; + // States + parameter IDLE = 4'd0; + parameter HEADER = 4'd1; + parameter TIMESTAMP = 4'd2; + parameter WAIT = 4'd3; + parameter TEST = 4'd4; + parameter SEND = 4'd5; + parameter PING = 4'd6; + parameter WRITE_REG = 4'd7; + parameter WRITE_REG_MASKED = 4'd8; + parameter READ_REG = 4'd9; + parameter DELAY = 4'd14; - `define OP_PING_FIXED 8'd0 - `define OP_PING_FIXED_REPLY 8'd1 - `define OP_WRITE_REG 8'd2 - `define OP_WRITE_REG_MASKED 8'd3 - `define OP_READ_REG 8'd4 - `define OP_READ_REG_REPLY 8'd5 - `define OP_DELAY 8'd12 + `define OP_PING_FIXED 8'd0 + `define OP_PING_FIXED_REPLY 8'd1 + `define OP_WRITE_REG 8'd2 + `define OP_WRITE_REG_MASKED 8'd3 + `define OP_READ_REG 8'd4 + `define OP_READ_REG_REPLY 8'd5 + `define OP_DELAY 8'd12 - reg [6:0] payload; - reg [6:0] payload_read; - reg [3:0] state; - reg [15:0] high; - reg [15:0] low; - reg pending; - reg [31:0] value0; - reg [31:0] value1; - reg [31:0] value2; - reg [1:0] lines_in; - reg [1:0] lines_out; - reg [1:0] lines_out_total; + reg [6:0] payload; + reg [6:0] payload_read; + reg [3:0] state; + reg [15:0] high; + reg [15:0] low; + reg pending; + reg [31:0] value0; + reg [31:0] value1; + reg [31:0] value2; + reg [1:0] lines_in; + reg [1:0] lines_out; + reg [1:0] lines_out_total; - `define JITTER 5 - `define OP_CODE 31:24 - `define PAYLOAD 8:2 + `define JITTER 5 + `define OP_CODE 31:24 + `define PAYLOAD 8:2 - wire [7:0] ops; - assign ops = value0[`OP_CODE]; - assign debug = {state[3:0], lines_out[1:0], pending, rx_WR, rx_WR_enabled, value0[2:0], ops[2:0]}; + wire [7:0] ops; + assign ops = value0[`OP_CODE]; + assign debug = {state[3:0], lines_out[1:0], pending, rx_WR, rx_WR_enabled, value0[2:0], ops[2:0]}; - always @(posedge txclk) - if (reset) - begin - pending <= 0; - state <= IDLE; - skip <= 0; - rdreq <= 0; - rx_WR <= 0; - reg_io_enable <= 0; - reg_data_in <= 0; - reg_addr <= 0; - end - else case (state) - IDLE : begin - payload_read <= 0; - skip <= 0; - lines_in <= 0; - if (pkt_waiting) - begin - state <= HEADER; - rdreq <= 1; - end - end + always @(posedge txclk) + if (reset) + begin + pending <= 0; + state <= IDLE; + skip <= 0; + rdreq <= 0; + rx_WR <= 0; + reg_io_enable <= 0; + reg_data_in <= 0; + reg_addr <= 0; + stop <= 0; + end + else case (state) + IDLE : + begin + payload_read <= 0; + skip <= 0; + lines_in <= 0; + if(pkt_waiting) + begin + state <= HEADER; + rdreq <= 1; + end + end + + HEADER : + begin + payload <= fifodata[`PAYLOAD]; + state <= TIMESTAMP; + end + + TIMESTAMP : + begin + value0 <= fifodata; + state <= WAIT; + rdreq <= 0; + end - HEADER : begin - payload <= fifodata[`PAYLOAD]; - state <= TIMESTAMP; - end + WAIT : + begin + // Let's send it + if ((value0 <= timestamp_clock + `JITTER + && value0 > timestamp_clock) + || value0 == 32'hFFFFFFFF) + state <= TEST; + // Wait a little bit more + else if (value0 > timestamp_clock + `JITTER) + state <= WAIT; + // Outdated + else if (value0 < timestamp_clock) + begin + state <= IDLE; + skip <= 1; + end + end - TIMESTAMP : begin - value0 <= fifodata; - state <= WAIT; - rdreq <= 0; - end - - WAIT : begin - // Let's send it - if ((value0 <= adc_time + `JITTER - && value0 > adc_time) - || value0 == 32'hFFFFFFFF) - state <= TEST; - // Wait a little bit more - else if (value0 > adc_time + `JITTER) - state <= WAIT; - // Outdated - else if (value0 < adc_time) - begin - state <= IDLE; + TEST : + begin + reg_io_enable <= 0; + rx_WR <= 0; + rx_WR_done <= 1; + stop <= 0; + if (payload_read == payload) + begin + skip <= 1; + state <= IDLE; + rdreq <= 0; + end + else + begin + value0 <= fifodata; + lines_in <= 2'd1; + rdreq <= 1; + payload_read <= payload_read + 7'd1; + lines_out <= 0; + case (fifodata[`OP_CODE]) + `OP_PING_FIXED: + begin + state <= PING; + end + `OP_WRITE_REG: + begin + state <= WRITE_REG; + pending <= 1; + end + `OP_WRITE_REG_MASKED: + begin + state <= WRITE_REG_MASKED; + pending <= 1; + end + `OP_READ_REG: + begin + state <= READ_REG; + end + `OP_DELAY: + begin + state <= DELAY; + end + default: + begin + //error, skip this packet skip <= 1; - end - end - - TEST : begin - reg_io_enable <= 0; - rx_WR <= 0; - rx_WR_done <= 1; - if (payload_read == payload) - begin - skip <= 1; - state <= IDLE; - rdreq <= 0; - end - else - begin - value0 <= fifodata; - lines_in <= 2'd1; - rdreq <= 1; - payload_read <= payload_read + 7'd1; - lines_out <= 0; - case (fifodata[`OP_CODE]) - `OP_PING_FIXED: begin - state <= PING; - end - `OP_WRITE_REG: begin - state <= WRITE_REG; - pending <= 1; - end - `OP_WRITE_REG_MASKED: begin - state <= WRITE_REG_MASKED; - pending <= 1; - end - `OP_READ_REG: begin - state <= READ_REG; - end - `OP_DELAY: begin - state <= DELAY; - end - default: begin - //error, skip this packet - skip <= 1; - state <= IDLE; - end - endcase - end - end + state <= IDLE; + end + endcase + end + end - SEND: begin - rdreq <= 0; - rx_WR_done <= 0; - if (pending) - begin - rx_WR <= 1; - rx_databus <= high; - pending <= 0; - if (lines_out == lines_out_total) - state <= TEST; - else case (ops) - `OP_READ_REG: begin - state <= READ_REG; - end - default: begin - state <= TEST; - end - endcase - end - else - begin - if (rx_WR_enabled) - begin - rx_WR <= 1; - rx_databus <= low; - pending <= 1; - lines_out <= lines_out + 2'd1; - end - else - rx_WR <= 0; - end - end + SEND: + begin + rdreq <= 0; + rx_WR_done <= 0; + if (pending) + begin + rx_WR <= 1; + rx_databus <= high; + pending <= 0; + if (lines_out == lines_out_total) + state <= TEST; + else case (ops) + `OP_READ_REG: + begin + state <= READ_REG; + end + default: + begin + state <= TEST; + end + endcase + end + else + begin + if (rx_WR_enabled) + begin + rx_WR <= 1; + rx_databus <= low; + pending <= 1; + lines_out <= lines_out + 2'd1; + end + else + rx_WR <= 0; + end + end - PING: begin - rx_WR <= 0; - rdreq <= 0; - rx_WR_done <= 0; - lines_out_total <= 2'd1; - pending <= 0; - state <= SEND; - high <= {`OP_PING_FIXED_REPLY, 8'd2}; - low <= value0[15:0]; - end + PING: + begin + rx_WR <= 0; + rdreq <= 0; + rx_WR_done <= 0; + lines_out_total <= 2'd1; + pending <= 0; + state <= SEND; + high <= {`OP_PING_FIXED_REPLY, 8'd2}; + low <= value0[15:0]; + end - READ_REG: begin - rx_WR <= 0; - rx_WR_done <= 0; - rdreq <= 0; - lines_out_total <= 2'd2; - pending <= 0; - state <= SEND; - if (lines_out == 0) - begin - high <= {`OP_READ_REG_REPLY, 8'd6}; - low <= value0[15:0]; - reg_io_enable <= 2'd3; - reg_addr <= value0[6:0]; - end - else - begin - high <= reg_data_out[31:16]; - low <= reg_data_out[15:0]; - end - end + READ_REG: + begin + rx_WR <= 0; + rx_WR_done <= 0; + rdreq <= 0; + lines_out_total <= 2'd2; + pending <= 0; + state <= SEND; + if (lines_out == 0) + begin + high <= {`OP_READ_REG_REPLY, 8'd6}; + low <= value0[15:0]; + reg_io_enable <= 2'd3; + reg_addr <= value0[6:0]; + end + else + begin + high <= reg_data_out[31:16]; + low <= reg_data_out[15:0]; + end + end - WRITE_REG: begin - rx_WR <= 0; - if (pending) - pending <= 0; - else - begin - if (lines_in == 2'd1) - begin - payload_read <= payload_read + 7'd1; - lines_in <= lines_in + 2'd1; - value1 <= fifodata; - rdreq <= 0; - end - else - begin - reg_io_enable <= 2'd2; - reg_data_in <= value1; - reg_addr <= value0[6:0]; - state <= TEST; - end - end - end + WRITE_REG: + begin + rx_WR <= 0; + if (pending) + pending <= 0; + else + begin + if (lines_in == 2'd1) + begin + payload_read <= payload_read + 7'd1; + lines_in <= lines_in + 2'd1; + value1 <= fifodata; + rdreq <= 0; + end + else + begin + reg_io_enable <= 2'd2; + reg_data_in <= value1; + reg_addr <= value0[6:0]; + state <= TEST; + end + end + end - WRITE_REG_MASKED: begin - rx_WR <= 0; - if (pending) - pending <= 0; - else - begin - if (lines_in == 2'd1) - begin - rdreq <= 1; - payload_read <= payload_read + 7'd1; - lines_in <= lines_in + 2'd1; - value1 <= fifodata; - end - else if (lines_in == 2'd2) - begin - rdreq <= 0; - payload_read <= payload_read + 7'd1; - lines_in <= lines_in + 2'd1; - value2 <= fifodata; - end - else - begin - reg_io_enable <= 2'd2; - reg_data_in <= (value1 & value2); - reg_addr <= value0[6:0]; - state <= TEST; - end - end - end + WRITE_REG_MASKED: + begin + rx_WR <= 0; + if (pending) + pending <= 0; + else + begin + if (lines_in == 2'd1) + begin + rdreq <= 1; + payload_read <= payload_read + 7'd1; + lines_in <= lines_in + 2'd1; + value1 <= fifodata; + end + else if (lines_in == 2'd2) + begin + rdreq <= 0; + payload_read <= payload_read + 7'd1; + lines_in <= lines_in + 2'd1; + value2 <= fifodata; + end + else + begin + reg_io_enable <= 2'd2; + reg_data_in <= (value1 & value2); + reg_addr <= value0[6:0]; + state <= TEST; + end + end + end - DELAY : begin - rdreq <= 0; - value1 <= value1 + 32'd1; - if (value0[15:0] == value1[15:0]) - state <= TEST; - end + DELAY : + begin + rdreq <= 0; + stop <= 1; + stop_time <= value0[15:0]; + state <= TEST; + end - default : begin - //error state handling - state <= IDLE; - end - endcase -endmodule \ No newline at end of file + default : + begin + //error state handling + state <= IDLE; + end + endcase +endmodule diff --git a/usrp/fpga/inband_lib/data_packet_fifo.v b/usrp/fpga/inband_lib/data_packet_fifo.v deleted file mode 100755 index a9bcbdae..00000000 --- a/usrp/fpga/inband_lib/data_packet_fifo.v +++ /dev/null @@ -1,118 +0,0 @@ -module data_packet_fifo - ( input reset, - input clock, - input [31:0]ram_data_in, - input write_enable, - output reg have_space, - output reg [31:0]ram_data_out, - output reg pkt_waiting, - output reg isfull, - output reg [1:0]usb_ram_packet_out, - output reg [1:0]usb_ram_packet_in, - input read_enable, - input pkt_complete, - input skip_packet) ; - - /* Some parameters for usage later on */ - parameter DATA_WIDTH = 32 ; - parameter PKT_DEPTH = 128 ; - parameter NUM_PACKETS = 4 ; - - /* Create the RAM here */ - reg [DATA_WIDTH-1:0] usb_ram [PKT_DEPTH*NUM_PACKETS-1:0] ; - - /* Create the address signals */ - reg [6:0] usb_ram_offset_out ; - //reg [1:0] usb_ram_packet_out ; - reg [6:0] usb_ram_offset_in ; - //reg [1:0] usb_ram_packet_in ; - - wire [6-2+NUM_PACKETS:0] usb_ram_aout ; - wire [6-2+NUM_PACKETS:0] usb_ram_ain ; - //reg isfull; - - assign usb_ram_aout = {usb_ram_packet_out, usb_ram_offset_out} ; - assign usb_ram_ain = {usb_ram_packet_in, usb_ram_offset_in} ; - - // Check if there is one full packet to process - always @(usb_ram_ain, usb_ram_aout, isfull) - begin - if (usb_ram_ain == usb_ram_aout) - pkt_waiting <= isfull ; - else if (usb_ram_ain > usb_ram_aout) - pkt_waiting <= (usb_ram_ain - usb_ram_aout) >= PKT_DEPTH; - else - pkt_waiting <= (usb_ram_ain + 10'b1000000000 - usb_ram_aout) >= PKT_DEPTH; - end - - // Check if there is room - always @(usb_ram_ain, usb_ram_aout, isfull) - begin - if (usb_ram_ain == usb_ram_aout) - have_space <= ~isfull; - else if (usb_ram_ain > usb_ram_aout) - have_space <= ((usb_ram_ain - usb_ram_aout) <= PKT_DEPTH * (NUM_PACKETS - 1))? 1'b1 : 1'b0; - else - have_space <= (usb_ram_aout - usb_ram_ain) >= PKT_DEPTH; - end - - - - /* RAM Writing/Reading process */ - always @(posedge clock) - begin - if( write_enable ) - begin - usb_ram[usb_ram_ain] <= ram_data_in ; - end - ram_data_out <= usb_ram[usb_ram_aout] ; - end - - /* RAM Write/Read Address process */ - always @(posedge clock) - begin - if( reset ) - begin - usb_ram_packet_out <= 0 ; - usb_ram_offset_out <= 0 ; - usb_ram_offset_in <= 0 ; - usb_ram_packet_in <= 0 ; - isfull <= 0; - end - else - begin - if( skip_packet ) - begin - usb_ram_packet_out <= usb_ram_packet_out + 1 ; - usb_ram_offset_out <= 0 ; - isfull <= 0; - end - else if(read_enable) - begin - if( usb_ram_offset_out == 7'b1111111 ) - begin - isfull <= 0 ; - usb_ram_offset_out <= 0 ; - usb_ram_packet_out <= usb_ram_packet_out + 1 ; - end - else - usb_ram_offset_out <= usb_ram_offset_out + 1 ; - end - if( pkt_complete ) - begin - usb_ram_packet_in <= usb_ram_packet_in + 1 ; - usb_ram_offset_in <= 0 ; - if ((usb_ram_packet_in + 2'b1) == usb_ram_packet_out) - isfull <= 1 ; - end - else if( write_enable ) - begin - if (usb_ram_offset_in == 7'b1111111) - usb_ram_offset_in <= 7'b1111111 ; - else - usb_ram_offset_in <= usb_ram_offset_in + 1 ; - end - end - end - -endmodule diff --git a/usrp/fpga/inband_lib/packet_builder.v b/usrp/fpga/inband_lib/packet_builder.v index fbf0a656..2c912239 100755 --- a/usrp/fpga/inband_lib/packet_builder.v +++ b/usrp/fpga/inband_lib/packet_builder.v @@ -1,8 +1,8 @@ -module packet_builder #(parameter NUM_CHAN = 1)( +module packet_builder #(parameter NUM_CHAN = 2)( // System input rxclk, input reset, - input [31:0] adctime, + input [31:0] timestamp_clock, input [3:0] channels, // ADC side input [15:0]chan_fifodata, @@ -14,17 +14,17 @@ module packet_builder #(parameter NUM_CHAN = 1)( output reg WR, output reg [15:0]fifodata, input have_space, - input wire [31:0]rssi_0, input wire [31:0]rssi_1, input wire [31:0]rssi_2, - input wire [31:0]rssi_3, output wire [7:0] debugbus, - input [NUM_CHAN:0] overrun, input [NUM_CHAN:0] underrun); + input wire [31:0]rssi_0, input wire [31:0]rssi_1, input wire [31:0]rssi_2, + input wire [31:0]rssi_3, output wire [7:0] debugbus, + input [NUM_CHAN:0] underrun); // States `define IDLE 3'd0 `define HEADER1 3'd1 - `define HEADER2 3'd2 + `define HEADER2 3'd2 `define TIMESTAMP 3'd3 - `define FORWARD 3'd4 + `define FORWARD 3'd4 `define MAXPAYLOAD 504 @@ -39,51 +39,67 @@ module packet_builder #(parameter NUM_CHAN = 1)( `define UNDERRUN 14 `define OVERRUN 15 + reg [NUM_CHAN:0] overrun; reg [2:0] state; reg [8:0] read_length; reg [8:0] payload_len; - reg tstamp_complete; + reg timestamp_complete; reg [3:0] check_next; - wire [8:0] chan_used; + wire [31:0] true_rssi; - wire [4:0] true_channel; + wire [4:0] true_channel; + wire ready_to_send; + + assign debugbus = {chan_empty[0], rd_select[0], have_space, + (chan_usedw >= 10'd504), (chan_usedw ==0), + ready_to_send, state[1:0]}; - assign debugbus = {state, chan_empty[0], underrun[0], check_next[0], - have_space, rd_select[0]}; - assign chan_used = chan_usedw[8:0]; - assign true_rssi = (rd_select[1]) ? ((rd_select[0]) ? rssi_3:rssi_2) : + assign true_rssi = (rd_select[1]) ? ((rd_select[0]) ? rssi_3:rssi_2) : ((rd_select[0]) ? rssi_1:rssi_0); - assign true_channel = (check_next == 4'd0 ? 5'h1f : {1'd0, check_next - 4'd1}); + assign true_channel = (check_next == 4'd0 ? 5'h1f : {1'd0, check_next - 4'd1}); + assign ready_to_send = (chan_usedw >= 10'd504) || (chan_usedw == 0) || + ((rd_select == NUM_CHAN)&&(chan_usedw > 0)); + always @(posedge rxclk) begin if (reset) begin + overrun <= 0; WR <= 0; rd_select <= 0; chan_rdreq <= 0; - tstamp_complete <= 0; + timestamp_complete <= 0; check_next <= 0; state <= `IDLE; end else case (state) `IDLE: begin - chan_rdreq <= #1 0; - if (have_space) - begin - if(~chan_empty[check_next]) - begin - state <= #1 `HEADER1; - rd_select <= #1 check_next; - end - check_next <= #1 (check_next == channels ? 4'd0 : check_next + 4'd1); - end + chan_rdreq <= #1 0; + //check if the channel is full + if(~chan_empty[check_next]) + begin + if (have_space) + begin + //transmit if the usb buffer have space + //check if we should send + if (ready_to_send) + state <= #1 `HEADER1; + + overrun[check_next] <= 0; + end + else + begin + state <= #1 `IDLE; + overrun[check_next] <= 1; + end + rd_select <= #1 check_next; + end + check_next <= #1 (check_next == channels ? 4'd0 : check_next + 4'd1); end `HEADER1: begin - fifodata[`PAYLOAD_LEN] <= #1 (chan_used > 9'd252 - ? 9'd252 : chan_used << 1); - payload_len <= #1 (chan_used > 9'd252 - ? 9'd252 : chan_used << 1); + fifodata[`PAYLOAD_LEN] <= #1 9'd504; + payload_len <= #1 9'd504; fifodata[`TAG] <= #1 0; fifodata[`MBZ] <= #1 0; WR <= #1 1; @@ -103,13 +119,13 @@ module packet_builder #(parameter NUM_CHAN = 1)( end `TIMESTAMP: begin - fifodata <= #1 (tstamp_complete ? adctime[31:16] : adctime[15:0]); - tstamp_complete <= #1 ~tstamp_complete; + fifodata <= #1 (timestamp_complete ? timestamp_clock[31:16] : timestamp_clock[15:0]); + timestamp_complete <= #1 ~timestamp_complete; - if (~tstamp_complete) + if (~timestamp_complete) chan_rdreq <= #1 1; - state <= #1 (tstamp_complete ? `FORWARD : `TIMESTAMP); + state <= #1 (timestamp_complete ? `FORWARD : `TIMESTAMP); end `FORWARD: begin diff --git a/usrp/fpga/inband_lib/register_io.v b/usrp/fpga/inband_lib/register_io.v index b116b3ac..2b0cd173 100755 --- a/usrp/fpga/inband_lib/register_io.v +++ b/usrp/fpga/inband_lib/register_io.v @@ -1,15 +1,38 @@ module register_io - (input clk, input reset, input wire [1:0] enable, input wire [6:0] addr, - input wire [31:0] datain, output reg [31:0] dataout, output wire [15:0] debugbus, - input wire [31:0] rssi_0, input wire [31:0] rssi_1, - input wire [31:0] rssi_2, input wire [31:0] rssi_3, - output wire [31:0] threshhold, output wire [31:0] rssi_wait); - + (clk, reset, enable, addr, datain, dataout, debugbus, addr_wr, data_wr, strobe_wr, + rssi_0, rssi_1, rssi_2, rssi_3, threshhold, rssi_wait, reg_0, reg_1, reg_2, reg_3, + debug_en, misc, txmux); + + input clk; + input reset; + input wire [1:0] enable; + input wire [6:0] addr; + input wire [31:0] datain; + output reg [31:0] dataout; + output wire [15:0] debugbus; + output reg [6:0] addr_wr; + output reg [31:0] data_wr; + output wire strobe_wr; + input wire [31:0] rssi_0; + input wire [31:0] rssi_1; + input wire [31:0] rssi_2; + input wire [31:0] rssi_3; + output wire [31:0] threshhold; + output wire [31:0] rssi_wait; + input wire [15:0] reg_0; + input wire [15:0] reg_1; + input wire [15:0] reg_2; + input wire [15:0] reg_3; + input wire [3:0] debug_en; + input wire [7:0] misc; + input wire [31:0] txmux; + reg strobe; - wire [31:0] out[7:0]; + wire [31:0] out[2:1]; assign debugbus = {clk, enable, addr[2:0], datain[4:0], dataout[4:0]}; assign threshhold = out[1]; assign rssi_wait = out[2]; + assign strobe_wr = strobe; always @(*) if (reset | ~enable[1]) @@ -22,41 +45,38 @@ module register_io if (enable[0]) begin //read - if (addr == 7'd9) - dataout <= rssi_0; - else if (addr == 7'd10) - dataout <= rssi_1; - else if (addr == 7'd11) - dataout <= rssi_2; - else if (addr == 7'd12) - dataout <= rssi_3; - else - dataout <= out[addr[2:0]]; - strobe <= 0; - end + if (addr <= 7'd52 && addr > 7'd50) + dataout <= out[addr-7'd50]; + else + dataout <= 32'hFFFFFFFF; + strobe <= 0; + end else begin //write dataout <= dataout; strobe <= 1; + data_wr <= datain; + addr_wr <= addr; end end - //register declarations - setting_reg #(0) setting_reg0(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[0])); - setting_reg #(1) setting_reg1(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[1])); - setting_reg #(2) setting_reg2(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[2])); - setting_reg #(3) setting_reg3(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[3])); - setting_reg #(4) setting_reg4(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[4])); - setting_reg #(5) setting_reg5(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[5])); - setting_reg #(6) setting_reg6(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[6])); - setting_reg #(7) setting_reg7(.clock(clk),.reset(reset), - .strobe(strobe),.addr(addr),.in(datain),.out(out[7])); -endmodule \ No newline at end of file +//register declarations + /*setting_reg #(50) setting_reg0(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[0]));*/ + setting_reg #(51) setting_reg1(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[1])); + setting_reg #(52) setting_reg2(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[2])); + /*setting_reg #(53) setting_reg3(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[3])); + setting_reg #(54) setting_reg4(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[4])); + setting_reg #(55) setting_reg5(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[5])); + setting_reg #(56) setting_reg6(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[6])); + setting_reg #(57) setting_reg7(.clock(clk),.reset(reset), + .strobe(strobe_wr),.addr(addr_wr),.in(data_wr),.out(out[7]));*/ + +endmodule diff --git a/usrp/fpga/inband_lib/rx_buffer_inband.v b/usrp/fpga/inband_lib/rx_buffer_inband.v index 1eaecabe..cbd2d895 100755 --- a/usrp/fpga/inband_lib/rx_buffer_inband.v +++ b/usrp/fpga/inband_lib/rx_buffer_inband.v @@ -1,179 +1,209 @@ -//`include "../../firmware/include/fpga_regs_common.v" -//`include "../../firmware/include/fpga_regs_standard.v" -module rx_buffer_inband - ( input usbclk, - input bus_reset, - input reset, // DSP side reset (used here), do not reset registers - input reset_regs, //Only reset registers - output [15:0] usbdata, - input RD, - output wire have_pkt_rdy, - output reg rx_overrun, - input wire [3:0] channels, - input wire [15:0] ch_0, - input wire [15:0] ch_1, - input wire [15:0] ch_2, - input wire [15:0] ch_3, - input wire [15:0] ch_4, - input wire [15:0] ch_5, - input wire [15:0] ch_6, - input wire [15:0] ch_7, - input rxclk, - input rxstrobe, - input clear_status, - input [6:0] serial_addr, - input [31:0] serial_data, - input serial_strobe, - output wire [15:0] debugbus, - - //Connection with tx_inband - input rx_WR, - input [15:0] rx_databus, - input rx_WR_done, - output reg rx_WR_enabled, - //signal strength - input wire [31:0] rssi_0, input wire [31:0] rssi_1, - input wire [31:0] rssi_2, input wire [31:0] rssi_3, - input wire [1:0] tx_overrun, input wire [1:0] tx_underrun - ); - - parameter NUM_CHAN = 1; - genvar i ; - - // FX2 Bug Fix - reg [8:0] read_count; - always @(negedge usbclk) - if(bus_reset) - read_count <= #1 9'd0; - else if(RD & ~read_count[8]) - read_count <= #1 read_count + 9'd1; - else - read_count <= #1 RD ? read_count : 9'b0; - - // Time counter - reg [31:0] adctime; - always @(posedge rxclk) - if (reset) - adctime <= 0; - else if (rxstrobe) - adctime <= adctime + 1; - - // USB side fifo - wire [11:0] rdusedw; - wire [11:0] wrusedw; - wire [15:0] fifodata; - wire WR; - wire have_space; - - fifo_4kx16_dc rx_usb_fifo ( - .aclr ( reset ), - .data ( fifodata ), - .rdclk ( ~usbclk ), - .rdreq ( RD & ~read_count[8] ), - .wrclk ( rxclk ), - .wrreq ( WR ), - .q ( usbdata ), - .rdempty ( ), - .rdusedw ( rdusedw ), - .wrfull ( ), - .wrusedw ( wrusedw ) ); - - assign have_pkt_rdy = (rdusedw >= 12'd256); - assign have_space = (wrusedw < 12'd760); - - // Rx side fifos - wire chan_rdreq; - wire [15:0] chan_fifodata; - wire [9:0] chan_usedw; - wire [NUM_CHAN:0] chan_empty; - wire [3:0] rd_select; - wire [NUM_CHAN:0] rx_full; - - packet_builder #(NUM_CHAN) rx_pkt_builer ( - .rxclk ( rxclk ), - .reset ( reset ), - .adctime ( adctime ), - .channels ( 4'd1 ), - .chan_rdreq ( chan_rdreq ), - .chan_fifodata ( chan_fifodata ), - .chan_empty ( chan_empty ), - .rd_select ( rd_select ), - .chan_usedw ( chan_usedw ), - .WR ( WR ), - .fifodata ( fifodata ), - .have_space ( have_space ), - .rssi_0(rssi_0), .rssi_1(rssi_1), - .rssi_2(rssi_2),.rssi_3(rssi_3), .debugbus(debug), - .overrun(tx_overrun), .underrun(tx_underrun)); - - // Detect overrun - always @(posedge rxclk) - if(reset) - rx_overrun <= 1'b0; - else if(rx_full[0]) - rx_overrun <= 1'b1; - else if(clear_status) - rx_overrun <= 1'b0; - - reg [6:0] test; - always @(posedge rxclk) - if (reset) - test <= 0; - else - test <= test + 7'd1; - - // TODO write this genericly - wire [15:0]ch[NUM_CHAN:0]; - assign ch[0] = ch_0; - - wire cmd_empty; - always @(posedge rxclk) - if(reset) - rx_WR_enabled <= 1; - else if(cmd_empty) - rx_WR_enabled <= 1; - else if(rx_WR_done) - rx_WR_enabled <= 0; - - wire [15:0] dataout [0:NUM_CHAN]; - wire [9:0] usedw [0:NUM_CHAN]; - wire empty[0:NUM_CHAN]; - - generate for (i = 0 ; i < NUM_CHAN; i = i + 1) - begin : generate_channel_fifos - wire rdreq; - - assign rdreq = (rd_select == i) & chan_rdreq; - //assign chan_empty[i] = usedw[i] < 10'd126; - fifo_1kx16 rx_chan_fifo ( - .aclr ( reset ), - .clock ( rxclk ), - .data ( ch[i] ), - .rdreq ( rdreq ), - .wrreq ( ~rx_full[i] & rxstrobe), - .empty (empty[i]), - .full (rx_full[i]), - .q ( dataout[i]), - .usedw ( usedw[i]), - .almost_empty(chan_empty[i]) - ); - end - endgenerate - wire [7:0] debug; - fifo_1kx16 rx_cmd_fifo ( - .aclr ( reset ), - .clock ( rxclk ), - .data ( rx_databus ), - .rdreq ( (rd_select == NUM_CHAN) & chan_rdreq ), - .wrreq ( rx_WR & rx_WR_enabled), - .empty ( cmd_empty), - .full ( rx_full[NUM_CHAN] ), - .q ( dataout[NUM_CHAN]), - .usedw ( usedw[NUM_CHAN] ) - ); - assign chan_empty[NUM_CHAN] = cmd_empty | rx_WR_enabled; - assign chan_fifodata = dataout[rd_select]; - assign chan_usedw = usedw[rd_select]; - assign debugbus = {rxstrobe, chan_rdreq, debug, - rx_full[0], chan_empty[0], empty[0], have_space, RD, rxclk}; -endmodule +//`include "../../firmware/include/fpga_regs_common.v" +//`include "../../firmware/include/fpga_regs_standard.v" +module rx_buffer_inband + ( input usbclk, + input bus_reset, + input reset, // DSP side reset (used here), do not reset registers + input reset_regs, //Only reset registers + output [15:0] usbdata, + input RD, + output wire have_pkt_rdy, + output reg rx_overrun, + input wire [3:0] channels, + input wire [15:0] ch_0, + input wire [15:0] ch_1, + input wire [15:0] ch_2, + input wire [15:0] ch_3, + input wire [15:0] ch_4, + input wire [15:0] ch_5, + input wire [15:0] ch_6, + input wire [15:0] ch_7, + input rxclk, + input rxstrobe, + input clear_status, + input [6:0] serial_addr, + input [31:0] serial_data, + input serial_strobe, + output wire [15:0] debugbus, + + //Connection with tx_inband + input rx_WR, + input [15:0] rx_databus, + input rx_WR_done, + output reg rx_WR_enabled, + //signal strength + input wire [31:0] rssi_0, input wire [31:0] rssi_1, + input wire [31:0] rssi_2, input wire [31:0] rssi_3, + input wire [1:0] tx_underrun + ); + + parameter NUM_CHAN = 1; + genvar i ; + + // FX2 Bug Fix + reg [8:0] read_count; + always @(negedge usbclk) + if(bus_reset) + read_count <= #1 9'd0; + else if(RD & ~read_count[8]) + read_count <= #1 read_count + 9'd1; + else + read_count <= #1 RD ? read_count : 9'b0; + + // Time counter + reg [31:0] timestamp_clock; + always @(posedge rxclk) + if (reset) + timestamp_clock <= 0; + else + timestamp_clock <= timestamp_clock + 1; + + // USB side fifo + wire [11:0] rdusedw; + wire [11:0] wrusedw; + wire [15:0] fifodata; + wire [15:0] fifodata_il[0:NUM_CHAN]; + wire WR; + wire have_space; + reg sel; + reg wr; + + always@(posedge rxclk) + begin + if(reset) + begin + sel<=1; + wr<=0; + end + else if(rxstrobe) + begin + sel<=0; + wr<=1; + end + else if(wr&~sel) + sel<=1; + else if(wr&sel) + wr<=0; + else + wr<=0; + end + + assign fifodata_il[0] = (sel)?ch_1:ch_0; + assign fifodata_il[1] = (sel)?ch_3:ch_2; + + fifo_4kx16_dc rx_usb_fifo ( + .aclr ( reset ), + .data ( fifodata ), + .rdclk ( ~usbclk ), + .rdreq ( RD & ~read_count[8] ), + .wrclk ( rxclk ), + .wrreq ( WR ), + .q ( usbdata ), + .rdempty ( ), + .rdusedw ( rdusedw ), + .wrfull ( ), + .wrusedw ( wrusedw ) ); + + assign have_pkt_rdy = (rdusedw >= 12'd256); + assign have_space = (wrusedw < 12'd760); + + // Rx side fifos + // These are of size [NUM_CHAN:0] because the extra channel is used for the + // RX command channel. If there were no command channel, they would be + // NUM_CHAN-1. + wire chan_rdreq; + wire [15:0] chan_fifodata; + wire [9:0] chan_usedw; + wire [NUM_CHAN:0] chan_empty; + wire [3:0] rd_select; + wire [NUM_CHAN:0] rx_full; + + packet_builder #(NUM_CHAN) rx_pkt_builer ( + .rxclk ( rxclk ), + .reset ( reset ), + .timestamp_clock ( timestamp_clock ), + .channels ( NUM_CHAN ), + .chan_rdreq ( chan_rdreq ), + .chan_fifodata ( chan_fifodata ), + .chan_empty ( chan_empty ), + .rd_select ( rd_select ), + .chan_usedw ( chan_usedw ), + .WR ( WR ), + .fifodata ( fifodata ), + .have_space ( have_space ), + .rssi_0(rssi_0), .rssi_1(rssi_1), + .rssi_2(rssi_2),.rssi_3(rssi_3), .debugbus(debug), + .underrun(tx_underrun)); + + // Detect overrun + always @(posedge rxclk) + if(reset) + rx_overrun <= 1'b0; + else if(rx_full[0]) + rx_overrun <= 1'b1; + else if(clear_status) + rx_overrun <= 1'b0; + + + // FIXME: what is the purpose of these two lines? + wire [15:0]ch[NUM_CHAN:0]; + assign ch[0] = ch_0; + + wire cmd_empty; + + always @(posedge rxclk) + if(reset) + rx_WR_enabled <= 1; + else if(cmd_empty) + rx_WR_enabled <= 1; + else if(rx_WR_done) + rx_WR_enabled <= 0; + + + // Of Size 0:NUM_CHAN due to extra command channel. + wire [15:0] dataout [0:NUM_CHAN]; + wire [9:0] usedw [0:NUM_CHAN]; + wire empty[0:NUM_CHAN]; + + generate for (i = 0 ; i < NUM_CHAN; i = i + 1) + begin : generate_channel_fifos + + wire rdreq; + + assign rdreq = (rd_select == i) & chan_rdreq; + + fifo_1kx16 rx_chan_fifo ( + .aclr ( reset ), + .clock ( rxclk ), + .data ( fifodata_il[i] ), + .rdreq ( rdreq ), + .wrreq ( ~rx_full[i] & wr), + .empty (empty[i]), + .full (rx_full[i]), + .q ( dataout[i]), + .usedw ( usedw[i]), + .almost_empty(chan_empty[i]) + ); + end + endgenerate + + wire [7:0] debug; + + fifo_1kx16 rx_cmd_fifo ( + .aclr ( reset ), + .clock ( rxclk ), + .data ( rx_databus ), + .rdreq ( (rd_select == NUM_CHAN) & chan_rdreq ), + .wrreq ( rx_WR & rx_WR_enabled), + .empty ( cmd_empty), + .full ( rx_full[NUM_CHAN] ), + .q ( dataout[NUM_CHAN]), + .usedw ( usedw[NUM_CHAN] ) + ); + + assign chan_empty[NUM_CHAN] = cmd_empty | rx_WR_enabled; + assign chan_fifodata = dataout[rd_select]; + assign chan_usedw = usedw[rd_select]; + assign debugbus = {4'd0, rxclk, rxstrobe, rx_full[0], rx_full[1], sel, wr}; + +endmodule diff --git a/usrp/fpga/inband_lib/tx_buffer_inband.v b/usrp/fpga/inband_lib/tx_buffer_inband.v index fec9dbe3..2dd75f42 100755 --- a/usrp/fpga/inband_lib/tx_buffer_inband.v +++ b/usrp/fpga/inband_lib/tx_buffer_inband.v @@ -1,224 +1,143 @@ module tx_buffer_inband - ( usbclk, bus_reset, reset, usbdata, WR, have_space, - channels, tx_i_0, tx_q_0, tx_i_1, tx_q_1, - tx_i_2, tx_q_2, tx_i_3, tx_q_3, txclk, txstrobe, - clear_status, tx_empty, debugbus, - rx_databus, rx_WR, rx_WR_done, rx_WR_enabled, reg_io_enable, - reg_data_in, reg_data_out, reg_addr, rssi_0, rssi_1, rssi_2, - rssi_3, rssi_wait, threshhold, tx_underrun - ); + ( //System + input wire usbclk, input wire bus_reset, input wire reset, + input wire [15:0] usbdata, output wire have_space, input wire [3:0] channels, + //output transmit signals + output wire [15:0] tx_i_0, output wire [15:0] tx_q_0, + output wire [15:0] tx_i_1, output wire [15:0] tx_q_1, + output wire [15:0] tx_i_2, output wire [15:0] tx_q_2, + output wire [15:0] tx_i_3, output wire [15:0] tx_q_3, + input wire txclk, input wire txstrobe, input wire WR, + input wire clear_status, output wire tx_empty, output wire [15:0] debugbus, + //command reader io + output wire [15:0] rx_databus, output wire rx_WR, output wire rx_WR_done, + input wire rx_WR_enabled, + //register io + output wire [1:0] reg_io_enable, output wire [31:0] reg_data_in, output wire [6:0] reg_addr, + input wire [31:0] reg_data_out, + //input characteristic signals + input wire [31:0] rssi_0, input wire [31:0] rssi_1, input wire [31:0] rssi_2, + input wire [31:0] rssi_3, input wire [31:0] rssi_wait, input wire [31:0] threshhold, + output wire [1:0] tx_underrun, + //system stop + output wire stop, output wire [15:0] stop_time); - parameter NUM_CHAN = 2 ; - /* Debug paramters */ - parameter STROBE_RATE_0 = 8'd1 ; - parameter STROBE_RATE_1 = 8'd2 ; + parameter NUM_CHAN = 1 ; - input wire usbclk ; - input wire bus_reset ; // Used here for the 257-Hack to fix the FX2 bug - input wire reset ; // standard DSP-side reset - input wire [15:0] usbdata ; - input wire WR ; - input wire txclk ; - input wire txstrobe ; - input wire rx_WR_enabled; - /* Not used yet */ - input wire [3:0] channels ; - input wire clear_status ; - /*register io*/ - input wire [31:0]reg_data_out; - // rssi - input wire [31:0]rssi_0; - input wire [31:0]rssi_1; - input wire [31:0]rssi_2; - input wire [31:0]rssi_3; - input wire [31:0]threshhold; - input wire [31:0]rssi_wait; - - output wire have_space ; - output wire tx_empty ; - output wire [15:0] tx_i_0 ; - output wire [15:0] tx_q_0 ; - output wire [15:0] tx_i_1 ; - output wire [15:0] tx_q_1 ; - output wire [15:0] debugbus ; - /* Not used yet */ - output wire [15:0] tx_i_2 ; - output wire [15:0] tx_q_2 ; - output wire [15:0] tx_i_3 ; - output wire [15:0] tx_q_3 ; - - output wire [15:0] rx_databus ; - output wire rx_WR; - output wire rx_WR_done; - /* reg_io */ - output wire [31:0] reg_data_in; - output wire [6:0] reg_addr; - output wire [1:0] reg_io_enable; - output wire [NUM_CHAN-1:0] tx_underrun; - - /* To generate channel readers */ - genvar i ; + /* To generate channel readers */ + genvar i ; - /* These will eventually be external register */ - reg [31:0] adc_time ; - wire [7:0] txstrobe_rate [NUM_CHAN-1:0] ; - wire [31:0] rssi [3:0]; - assign rssi[0] = rssi_0; - assign rssi[1] = rssi_1; - assign rssi[2] = rssi_2; - assign rssi[3] = rssi_3; + /* These will eventually be external register */ + reg [31:0] timestamp_clock ; + wire [7:0] txstrobe_rate [NUM_CHAN-1:0] ; + wire [31:0] rssi [3:0]; + assign rssi[0] = rssi_0; + assign rssi[1] = rssi_1; + assign rssi[2] = rssi_2; + assign rssi[3] = rssi_3; - always @(posedge txclk) - if (reset) - adc_time <= 0; - else if (txstrobe) - adc_time <= adc_time + 1; + always @(posedge txclk) + if (reset) + timestamp_clock <= 0; + else + timestamp_clock <= timestamp_clock + 1; /* Connections between tx_usb_fifo_reader and cnannel/command processing blocks */ - wire [31:0] tx_data_bus ; - wire [NUM_CHAN:0] chan_WR ; - wire [NUM_CHAN:0] chan_done ; + wire [31:0] tx_data_bus ; + wire [NUM_CHAN:0] chan_WR ; + wire [NUM_CHAN:0] chan_done ; /* Connections between data block and the FX2/TX chains */ - wire [NUM_CHAN:0] chan_underrun ; - wire [NUM_CHAN:0] chan_txempty ; + wire [NUM_CHAN:0] chan_underrun; + wire [NUM_CHAN:0] chan_txempty; - /* Conections between tx_data_packet_fifo and + /* Conections between tx_data_packet_fifo and its reader + strobe generator */ - wire [31:0] chan_fifodata [NUM_CHAN:0] ; - wire chan_pkt_waiting [NUM_CHAN:0] ; - wire chan_rdreq [NUM_CHAN:0] ; - wire chan_skip [NUM_CHAN:0] ; - wire [NUM_CHAN:0] chan_have_space ; - wire chan_txstrobe [NUM_CHAN-1:0] ; + wire [31:0] chan_fifodata [NUM_CHAN:0] ; + wire chan_pkt_waiting [NUM_CHAN:0] ; + wire chan_rdreq [NUM_CHAN:0] ; + wire chan_skip [NUM_CHAN:0] ; + wire chan_have_space [NUM_CHAN:0] ; - wire [14:0] debug; + wire [14:0] debug [NUM_CHAN:0]; - /* Outputs to transmit chains */ - wire [15:0] tx_i [NUM_CHAN-1:0] ; - wire [15:0] tx_q [NUM_CHAN-1:0] ; + /* Outputs to transmit chains */ + wire [15:0] tx_i [NUM_CHAN:0] ; + wire [15:0] tx_q [NUM_CHAN:0] ; + + assign tx_i[NUM_CHAN] = 0; + assign tx_q[NUM_CHAN] = 0; - /* TODO: Figure out how to write this genericly */ - assign have_space = chan_have_space[0] & chan_have_space[1]; - assign tx_empty = chan_txempty[0] & chan_txempty[1] ; - assign tx_i_0 = chan_txempty[0] ? 16'b0 : tx_i[0] ; - assign tx_q_0 = chan_txempty[0] ? 16'b0 : tx_q[0] ; - assign tx_i_1 = chan_txempty[1] ? 16'b0 : tx_i[1] ; - assign tx_q_1 = chan_txempty[1] ? 16'b0 : tx_q[1] ; + assign have_space = chan_have_space[0] & chan_have_space[1]; + assign tx_empty = chan_txempty[0] & chan_txempty[1] ; + + assign tx_i_0 = chan_txempty[0] ? 16'b0 : tx_i[0] ; + assign tx_q_0 = chan_txempty[0] ? 16'b0 : tx_q[0] ; + assign tx_i_1 = chan_txempty[1] ? 16'b0 : tx_i[1] ; + assign tx_q_1 = chan_txempty[1] ? 16'b0 : tx_q[1] ; - /* Debug statement */ - assign txstrobe_rate[0] = STROBE_RATE_0 ; - assign txstrobe_rate[1] = STROBE_RATE_1 ; - assign tx_q_2 = 16'b0 ; - assign tx_i_2 = 16'b0 ; - assign tx_q_3 = 16'b0 ; - assign tx_i_3 = 16'b0 ; - assign tx_i_3 = 16'b0 ; + assign tx_q_2 = 16'b0 ; + assign tx_i_2 = 16'b0 ; + assign tx_q_3 = 16'b0 ; + assign tx_i_3 = 16'b0 ; + assign tx_i_3 = 16'b0 ; - assign debugbus = {debug, txclk}; + assign debugbus = {have_space, txclk, WR, WR_final, chan_WR, chan_done, + chan_pkt_waiting[0], chan_pkt_waiting[1], + chan_rdreq[0], chan_rdreq[1], chan_txempty[0], chan_txempty[1]}; - wire [31:0] usbdata_final; - wire WR_final; + wire [31:0] usbdata_final; + wire WR_final; - tx_packer tx_usb_packer - ( - .bus_reset (bus_reset), - .usbclk (usbclk), - .WR_fx2 (WR), - .usbdata (usbdata), - .reset (reset), - .txclk (txclk), - .usbdata_final (usbdata_final), - .WR_final (WR_final) - ); + tx_packer tx_usb_packer + (.bus_reset(bus_reset), .usbclk(usbclk), .WR_fx2(WR), + .usbdata(usbdata), .reset(reset), .txclk(txclk), + .usbdata_final(usbdata_final), .WR_final(WR_final)); - channel_demux channel_demuxer - ( - .usbdata_final (usbdata_final), - .WR_final (WR_final), - .reset (reset), - .txclk (txclk), - .WR_channel (chan_WR), - .WR_done_channel (chan_done), - .ram_data (tx_data_bus) - ); + channel_demux #(NUM_CHAN) channel_demuxer + (.usbdata_final(usbdata_final), .WR_final(WR_final), + .reset(reset), .txclk(txclk), .WR_channel(chan_WR), + .WR_done_channel(chan_done), .ram_data(tx_data_bus)); - generate for (i = 0 ; i < NUM_CHAN; i = i + 1) - begin : generate_channel_readers - assign tx_underrun[i] = chan_underrun[i]; - channel_ram tx_data_packet_fifo - ( .reset (reset), - .txclk (txclk), - .datain (tx_data_bus), - .WR (chan_WR[i]), - .WR_done (chan_done[i]), - .have_space (chan_have_space[i]), - .dataout (chan_fifodata[i]), - .packet_waiting (chan_pkt_waiting[i]), - .RD (chan_rdreq[i]), - .RD_done (chan_skip[i]) - ); + generate for (i = 0 ; i < NUM_CHAN; i = i + 1) + begin : generate_channel_readers + assign tx_underrun[i] = chan_underrun[i]; - chan_fifo_reader tx_chan_reader - ( .reset (reset), - .tx_clock (txclk), - .tx_strobe (txstrobe), - .adc_time (adc_time), - .samples_format (4'b0), - .tx_q (tx_q[i]), - .tx_i (tx_i[i]), - .underrun (chan_underrun[i]), - .skip (chan_skip[i]), - .rdreq (chan_rdreq[i]), - .fifodata (chan_fifodata[i]), - .pkt_waiting (chan_pkt_waiting[i]), - .tx_empty (chan_txempty[i]), - .rssi (rssi[i]), - .threshhold (threshhold), - .rssi_wait (rssi_wait) - ); - + channel_ram tx_data_packet_fifo + (.reset(reset), .txclk(txclk), .datain(tx_data_bus), + .WR(chan_WR[i]), .WR_done(chan_done[i]), + .have_space(chan_have_space[i]), .dataout(chan_fifodata[i]), + .packet_waiting(chan_pkt_waiting[i]), .RD(chan_rdreq[i]), + .RD_done(chan_skip[i])); + + chan_fifo_reader tx_chan_reader + (.reset(reset), .tx_clock(txclk), .tx_strobe(txstrobe), + .timestamp_clock(timestamp_clock), .samples_format(4'b0), + .tx_q(tx_q[i]), .tx_i(tx_i[i]), .underrun(chan_underrun[i]), + .skip(chan_skip[i]), .rdreq(chan_rdreq[i]), + .fifodata(chan_fifodata[i]), .pkt_waiting(chan_pkt_waiting[i]), + .tx_empty(chan_txempty[i]), .rssi(rssi[i]), .debug(debug[i]), + .threshhold(threshhold), .rssi_wait(rssi_wait)); end endgenerate - channel_ram tx_cmd_packet_fifo - ( .reset (reset), - .txclk (txclk), - .datain (tx_data_bus), - .WR (chan_WR[NUM_CHAN]), - .WR_done (chan_done[NUM_CHAN]), - .have_space (chan_have_space[NUM_CHAN]), - .dataout (chan_fifodata[NUM_CHAN]), - .packet_waiting (chan_pkt_waiting[NUM_CHAN]), - .RD (chan_rdreq[NUM_CHAN]), - .RD_done (chan_skip[NUM_CHAN]) - ); + channel_ram tx_cmd_packet_fifo + (.reset(reset), .txclk(txclk), .datain(tx_data_bus), .WR(chan_WR[NUM_CHAN]), + .WR_done(chan_done[NUM_CHAN]), .have_space(chan_have_space[NUM_CHAN]), + .dataout(chan_fifodata[NUM_CHAN]), .packet_waiting(chan_pkt_waiting[NUM_CHAN]), + .RD(chan_rdreq[NUM_CHAN]), .RD_done(chan_skip[NUM_CHAN])); - - cmd_reader tx_cmd_reader - ( .reset (reset), - .txclk (txclk), - .adc_time (adc_time), - .skip (chan_skip[NUM_CHAN]), - .rdreq (chan_rdreq[NUM_CHAN]), - .fifodata (chan_fifodata[NUM_CHAN]), - .pkt_waiting (chan_pkt_waiting[NUM_CHAN]), - .rx_databus (rx_databus), - .rx_WR (rx_WR), - .rx_WR_done (rx_WR_done), - .rx_WR_enabled (rx_WR_enabled), - .reg_data_in (reg_data_in), - .reg_data_out (reg_data_out), - .reg_addr (reg_addr), - .reg_io_enable (reg_io_enable), - .debug (debug) - ); - - - + cmd_reader tx_cmd_reader + (.reset(reset), .txclk(txclk), .timestamp_clock(timestamp_clock), .skip(chan_skip[NUM_CHAN]), + .rdreq(chan_rdreq[NUM_CHAN]), .fifodata(chan_fifodata[NUM_CHAN]), + .pkt_waiting(chan_pkt_waiting[NUM_CHAN]), .rx_databus(rx_databus), + .rx_WR(rx_WR), .rx_WR_done(rx_WR_done), .rx_WR_enabled(rx_WR_enabled), + .reg_data_in(reg_data_in), .reg_data_out(reg_data_out), .reg_addr(reg_addr), + .reg_io_enable(reg_io_enable), .debug(debug[NUM_CHAN]), .stop(stop), .stop_time(stop_time)); + endmodule // tx_buffer diff --git a/usrp/fpga/inband_lib/usb_fifo_reader.v b/usrp/fpga/inband_lib/usb_fifo_reader.v deleted file mode 100755 index d002d90f..00000000 --- a/usrp/fpga/inband_lib/usb_fifo_reader.v +++ /dev/null @@ -1,25 +0,0 @@ -module usb_fifo_reader ( - input usbclk, - input bus_reset, - input RD, - output rdreq, - ); - - // FX2 Bug Fix - reg [8:0] read_count; - always @(negedge usbclk) - if(bus_reset) - read_count <= #1 9'd0; - else if(RD & ~read_count[8]) - read_count <= #1 read_count + 9'd1; - else - read_count <= #1 RD ? read_count : 9'b0; - - assign rdreq = RD & ~read_count[8]; - - - -endmodule - - - \ No newline at end of file diff --git a/usrp/fpga/inband_lib/usb_fifo_writer.v b/usrp/fpga/inband_lib/usb_fifo_writer.v deleted file mode 100755 index abe1dd56..00000000 --- a/usrp/fpga/inband_lib/usb_fifo_writer.v +++ /dev/null @@ -1,183 +0,0 @@ - -module usb_fifo_writer - #(parameter BUS_WIDTH = 16, - parameter NUM_CHAN = 2, - parameter FIFO_WIDTH = 32) - ( //FX2 Side - input bus_reset, - input usbclk, - input WR_fx2, - input [15:0]usbdata, - - // TX Side - input reset, - input txclk, - output reg [NUM_CHAN:0] WR_channel, - output reg [FIFO_WIDTH-1:0] ram_data, - output reg [NUM_CHAN:0] WR_done_channel ); - - - reg [8:0] write_count; - - /* Fix FX2 bug */ - always @(posedge usbclk) - if(bus_reset) // Use bus reset because this is on usbclk - write_count <= #1 0; - else if(WR_fx2 & ~write_count[8]) - write_count <= #1 write_count + 9'd1; - else - write_count <= #1 WR_fx2 ? write_count : 9'b0; - - reg WR_fx2_fixed; - reg [15:0]usbdata_fixed; - - always @(posedge usbclk) - begin - WR_fx2_fixed <= WR_fx2 & ~write_count[8]; - usbdata_fixed <= usbdata; - end - - /* Used to convert 16 bits bus_data to the 32 bits wide fifo */ - reg word_complete ; - reg [BUS_WIDTH-1:0] usbdata_delayed ; - reg writing ; - wire [FIFO_WIDTH-1:0] usbdata_packed ; - wire WR_packed ; - - always @(posedge usbclk) - begin - if (bus_reset) - begin - word_complete <= 0 ; - writing <= 0 ; - end - else if (WR_fx2_fixed) - begin - writing <= 1 ; - if (word_complete) - word_complete <= 0 ; - else - begin - usbdata_delayed <= usbdata_fixed ; - word_complete <= 1 ; - end - end - else - writing <= 0 ; - end - - assign usbdata_packed = {usbdata_fixed, usbdata_delayed} ; - assign WR_packed = word_complete & writing ; - - /* Make sure data are sync with usbclk */ - reg [31:0]usbdata_usbclk; - reg WR_usbclk; - - always @(posedge usbclk) - begin - if (WR_packed) - usbdata_usbclk <= usbdata_packed; - WR_usbclk <= WR_packed; - end - - /* Cross clock boundaries */ - reg [FIFO_WIDTH-1:0] usbdata_tx ; - reg WR_tx; - reg WR_1; - reg WR_2; - reg [31:0] usbdata_final; - reg WR_final; - - always @(posedge txclk) usbdata_tx <= usbdata_usbclk; - - always @(posedge txclk) - if (reset) - WR_1 <= 0; - else - WR_1 <= WR_usbclk; - - always @(posedge txclk) - if (reset) - WR_2 <= 0; - else - WR_2 <= WR_1; - - always @(posedge txclk) - begin - if (reset) - WR_tx <= 0; - else - WR_tx <= WR_1 & ~WR_2; - end - - always @(posedge txclk) - begin - if (reset) - WR_final <= 0; - else - begin - WR_final <= WR_tx; - if (WR_tx) - usbdata_final <= usbdata_tx; - end - end - - /* Parse header and forward to ram */ - reg [3:0]reader_state; - reg [4:0]channel ; - reg [9:0]read_length ; - - parameter IDLE = 4'd0; - parameter HEADER = 4'd1; - parameter WAIT = 4'd2; - parameter FORWARD = 4'd3; - - `define CHANNEL 20:16 - `define PKT_SIZE 512 - - always @(posedge txclk) - begin - if (reset) - begin - reader_state <= 0; - WR_channel <= 0; - WR_done_channel <= 0; - end - else - case (reader_state) - IDLE: begin - if (WR_final) - reader_state <= HEADER; - end - - // Store channel and forware header - HEADER: begin - channel <= (usbdata_final[`CHANNEL] == 5'h1f ? NUM_CHAN : usbdata_final[`CHANNEL]) ; - WR_channel[(usbdata_final[`CHANNEL] == 5'h1f ? NUM_CHAN : usbdata_final[`CHANNEL])] <= 1; - //channel <= usbdata_final[`CHANNEL] ; - //WR_channel[usbdata_final[`CHANNEL]] <= 1; - ram_data <= usbdata_final; - read_length <= 10'd4 ; - - reader_state <= WAIT; - end - - WAIT: begin - WR_channel[channel] <= 0; - - if (read_length == `PKT_SIZE) - reader_state <= IDLE; - else if (WR_final) - reader_state <= FORWARD; - end - - FORWARD: begin - WR_channel[channel] <= 1; - ram_data <= usbdata_final; - read_length <= read_length + 10'd4; - - reader_state <= WAIT; - end - endcase - end -endmodule \ No newline at end of file diff --git a/usrp/fpga/megacells/fifo_1kx16.bsf b/usrp/fpga/megacells/fifo_1kx16.bsf index 329be2d4..2de80816 100755 --- a/usrp/fpga/megacells/fifo_1kx16.bsf +++ b/usrp/fpga/megacells/fifo_1kx16.bsf @@ -95,7 +95,7 @@ applicable agreement for further details. ) (drawing (text "16 bits x 1024 words" (rect 58 132 144 144)(font "Arial" )) - (text "almost_empty < 126" (rect 58 122 144 134)(font "Arial" )) + (text "almost_empty < 504" (rect 58 122 144 134)(font "Arial" )) (line (pt 16 16)(pt 144 16)(line_width 1)) (line (pt 144 16)(pt 144 144)(line_width 1)) (line (pt 144 144)(pt 16 144)(line_width 1)) diff --git a/usrp/fpga/megacells/fifo_1kx16.v b/usrp/fpga/megacells/fifo_1kx16.v index e22b416e..4f7e94ef 100755 --- a/usrp/fpga/megacells/fifo_1kx16.v +++ b/usrp/fpga/megacells/fifo_1kx16.v @@ -86,7 +86,7 @@ module fifo_1kx16 ( ); defparam scfifo_component.add_ram_output_register = "OFF", - scfifo_component.almost_empty_value = 126, + scfifo_component.almost_empty_value = 504, scfifo_component.intended_device_family = "Cyclone", scfifo_component.lpm_hint = "RAM_BLOCK_TYPE=M4K", scfifo_component.lpm_numwords = 1024, @@ -105,7 +105,7 @@ endmodule // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: AlmostEmpty NUMERIC "1" -// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "126" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "504" // Retrieval info: PRIVATE: AlmostFull NUMERIC "0" // Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" // Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" @@ -133,7 +133,7 @@ endmodule // Retrieval info: PRIVATE: wsFull NUMERIC "1" // Retrieval info: PRIVATE: wsUsedW NUMERIC "0" // Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" -// Retrieval info: CONSTANT: ALMOST_EMPTY_VALUE NUMERIC "126" +// Retrieval info: CONSTANT: ALMOST_EMPTY_VALUE NUMERIC "504" // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone" // Retrieval info: CONSTANT: LPM_HINT STRING "RAM_BLOCK_TYPE=M4K" // Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" diff --git a/usrp/fpga/megacells/fifo_1kx16_bb.v b/usrp/fpga/megacells/fifo_1kx16_bb.v index 283aada8..9d9912bc 100755 --- a/usrp/fpga/megacells/fifo_1kx16_bb.v +++ b/usrp/fpga/megacells/fifo_1kx16_bb.v @@ -57,7 +57,7 @@ endmodule // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: AlmostEmpty NUMERIC "1" -// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "126" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "504" // Retrieval info: PRIVATE: AlmostFull NUMERIC "0" // Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" // Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" @@ -85,7 +85,7 @@ endmodule // Retrieval info: PRIVATE: wsFull NUMERIC "1" // Retrieval info: PRIVATE: wsUsedW NUMERIC "0" // Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" -// Retrieval info: CONSTANT: ALMOST_EMPTY_VALUE NUMERIC "126" +// Retrieval info: CONSTANT: ALMOST_EMPTY_VALUE NUMERIC "504" // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone" // Retrieval info: CONSTANT: LPM_HINT STRING "RAM_BLOCK_TYPE=M4K" // Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" diff --git a/usrp/fpga/rbf/Makefile.am b/usrp/fpga/rbf/Makefile.am index 49d2f259..c7c9ce67 100644 --- a/usrp/fpga/rbf/Makefile.am +++ b/usrp/fpga/rbf/Makefile.am @@ -26,8 +26,12 @@ datadir = $(prefix)/share/usrp rbfs = \ rev2/std_2rxhb_2tx.rbf \ rev2/std_4rx_0tx.rbf \ + rev2/inband_1rxhb_1tx.rbf \ + rev2/inband_2rxhb_2tx.rbf \ rev4/std_2rxhb_2tx.rbf \ rev4/std_4rx_0tx.rbf \ + rev4/inband_1rxhb_1tx.rbf \ + rev4/inband_2rxhb_2tx.rbf \ rev2/multi_2rxhb_2tx.rbf \ rev4/multi_2rxhb_2tx.rbf diff --git a/usrp/fpga/rbf/rev2/inband_1rxhb_1tx.rbf b/usrp/fpga/rbf/rev2/inband_1rxhb_1tx.rbf new file mode 100755 index 0000000000000000000000000000000000000000..c1c9af2cec2629cd455515cfea4ffefe6143cae9 GIT binary patch literal 161180 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Ǘ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%0D8mi*oL0;&HrzpnIjm0=H{iR6j`Y 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℘Rv5Qok+(^-lnkOuz!^guPhh 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%0DkMmg9g@Z(L7EDjN`Qhfm(be?g+VqG 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 z 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

pLPDH9|%*;VEs-Fng>n2Bal4s+S;15!TV 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 A{{R30 literal 0 HcmV?d00001 diff --git a/usrp/fpga/rbf/rev4/inband_1rxhb_1tx.rbf b/usrp/fpga/rbf/rev4/inband_1rxhb_1tx.rbf new file mode 100755 index 0000000000000000000000000000000000000000..c1c9af2cec2629cd455515cfea4ffefe6143cae9 GIT binary patch literal 161180 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Ǘ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%0D8mi*oL0;&HrzpnIjm0=H{iR6j`Y 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℘Rv5Qok+(^-lnkOuz!^guPhh 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%0DkMmg9g@Z(L7EDjN`Qhfm(be?g+VqG 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 z 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

pLPDH9|%*;VEs-Fng>n2Bal4s+S;15!TV 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 A{{R30 literal 0 HcmV?d00001 diff --git a/usrp/fpga/toplevel/usrp_inband_usb/config.vh b/usrp/fpga/toplevel/usrp_inband_usb/config.vh index 3291dc10..007a529e 100644 --- a/usrp/fpga/toplevel/usrp_inband_usb/config.vh +++ b/usrp/fpga/toplevel/usrp_inband_usb/config.vh @@ -34,7 +34,7 @@ `include "../include/common_config_1rxhb_1tx.vh" // Uncomment this for 2 rx channels (w/ halfband) & 2 transmit channels -//`include "../include/common_config_2rxhb_2tx.vh" +// `include "../include/common_config_2rxhb_2tx.vh" // Uncomment this for 4 rx channels (w/o halfband) & 0 transmit channels //`include "../include/common_config_4rx_0tx.vh" diff --git a/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.qsf b/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.qsf index c9eebc1a..ae0807f6 100644 --- a/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.qsf +++ b/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.qsf @@ -27,7 +27,7 @@ # ======================== set_global_assignment -name ORIGINAL_QUARTUS_VERSION 3.0 set_global_assignment -name PROJECT_CREATION_TIME_DATE "00:14:04 JULY 13, 2003" -set_global_assignment -name LAST_QUARTUS_VERSION "5.1 SP1" +set_global_assignment -name LAST_QUARTUS_VERSION "7.2 SP2" # Pin & Location Assignments # ========================== @@ -392,7 +392,6 @@ set_global_assignment -name VERILOG_FILE ../../sdr_lib/hb/ram16_2sum.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/hb/coeff_rom.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/hb/halfband_decim.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/hb/mac.v -set_global_assignment -name VERILOG_FILE ../../sdr_lib/hb/coeff_ram.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/tx_chain.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/rx_dcoffset.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/adc_interface.v @@ -419,4 +418,6 @@ set_global_assignment -name VERILOG_FILE ../../sdr_lib/serial_io.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/strobe_gen.v set_global_assignment -name VERILOG_FILE ../../sdr_lib/sign_extend.v set_global_assignment -name VERILOG_FILE ../../inband_lib/channel_ram.v -set_global_assignment -name VERILOG_FILE ../../inband_lib/register_io.v \ No newline at end of file +set_global_assignment -name VERILOG_FILE ../../inband_lib/register_io.v +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" \ No newline at end of file diff --git a/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.v b/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.v index cc625b0e..79f0dfa4 100644 --- a/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.v +++ b/usrp/fpga/toplevel/usrp_inband_usb/usrp_inband_usb.v @@ -97,8 +97,6 @@ module usrp_inband_usb // Tri-state bus macro bustri bustri( .data(usbdata_out),.enabledt(OE),.tridata(usbdata) ); - assign clk64 = master_clk; - wire [15:0] ch0tx,ch1tx,ch2tx,ch3tx; //,ch4tx,ch5tx,ch6tx,ch7tx; wire [15:0] ch0rx,ch1rx,ch2rx,ch3rx,ch4rx,ch5rx,ch6rx,ch7rx; @@ -129,19 +127,7 @@ module usrp_inband_usb assign bb_tx_q0 = ch1tx; assign bb_tx_i1 = ch2tx; assign bb_tx_q1 = ch3tx; - -wire [6:0] reg_addr; -wire [31:0] reg_data_out; -wire [31:0] reg_data_in; -wire [1:0] reg_io_enable; -wire [31:0] rssi_threshhold; -wire [31:0] rssi_wait; - -register_io register_control -(.clk(clk64),.reset(1'b0),.enable(reg_io_enable),.addr(reg_addr),.datain(reg_data_in), - .dataout(reg_data_out),.rssi_0(rssi_0), .rssi_1(rssi_1), .rssi_2(rssi_2), - .rssi_3(rssi_3), .threshhold(rssi_threshhold), .rssi_wait(rssi_wait)); -wire [1:0] tx_overrun; + wire [1:0] tx_underrun; `ifdef TX_IN_BAND @@ -164,9 +150,15 @@ wire [1:0] tx_underrun; .reg_data_out(reg_data_out), .reg_data_in(reg_data_in), .reg_io_enable(reg_io_enable), - .debugbus(), + .debugbus(rx_debugbus), .rssi_0(rssi_0), .rssi_1(rssi_1), .rssi_2(rssi_2), - .rssi_3(rssi_3), .threshhold(rssi_threshhold), .rssi_wait(rssi_wait)); + .rssi_3(rssi_3), .threshhold(rssi_threshhold), .rssi_wait(rssi_wait), + .stop(stop), .stop_time(stop_time)); + + `ifdef TX_DUAL + defparam tx_buffer.NUM_CHAN=2; + `endif + `else tx_buffer tx_buffer ( .usbclk(usbclk),.bus_reset(tx_bus_reset),.reset(tx_dsp_reset), @@ -276,14 +268,18 @@ wire [1:0] tx_underrun; .ch_6(ch6rx),.ch_7(ch7rx), .rxclk(clk64),.rxstrobe(hb_strobe), .clear_status(clear_status), - .serial_addr(serial_addr),.serial_data(serial_data),.serial_strobe(serial_strobe), .rx_WR(rx_WR), .rx_databus(rx_databus), .rx_WR_done(rx_WR_done), .rx_WR_enabled(rx_WR_enabled), .debugbus(tx_debugbus), .rssi_0(rssi_0), .rssi_1(rssi_1), .rssi_2(rssi_2), .rssi_3(rssi_3), - .tx_overrun(tx_overrun), .tx_underrun(tx_underrun)); + .tx_underrun(tx_underrun)); + + `ifdef RX_DUAL + defparam rx_buffer.NUM_CHAN=2; + `endif + `else rx_buffer rx_buffer ( .usbclk(usbclk),.bus_reset(rx_bus_reset),.reset(rx_dsp_reset), @@ -357,11 +353,52 @@ wire [1:0] tx_underrun; serial_io serial_io ( .master_clk(clk64),.serial_clock(SCLK),.serial_data_in(SDI), .enable(SEN_FPGA),.reset(1'b0),.serial_data_out(SDO), - .serial_addr(serial_addr),.serial_data(serial_data),.serial_strobe(serial_strobe), + .serial_addr(addr_db),.serial_data(data_db),.serial_strobe(strobe_db), .readback_0({io_rx_a,io_tx_a}),.readback_1({io_rx_b,io_tx_b}),.readback_2(capabilities),.readback_3(32'hf0f0931a), .readback_4(rssi_0),.readback_5(rssi_1),.readback_6(rssi_2),.readback_7(rssi_3) ); + wire [6:0] reg_addr; + wire [31:0] reg_data_out; + wire [31:0] reg_data_in; + wire [1:0] reg_io_enable; + wire [31:0] rssi_threshhold; + wire [31:0] rssi_wait; + wire [6:0] addr_wr; + wire [31:0] data_wr; + wire strobe_wr; + wire [6:0] addr_db; + wire [31:0] data_db; + wire strobe_db; + assign serial_strobe = strobe_db | strobe_wr; + assign serial_addr = (strobe_db)? (addr_db) : (addr_wr); + assign serial_data = (strobe_db)? (data_db) : (data_wr); + //assign serial_strobe = strobe_wr; + //assign serial_data = data_wr; + //assign serial_addr = addr_wr; + + register_io register_control + (.clk(clk64),.reset(1'b0),.enable(reg_io_enable),.addr(reg_addr),.datain(reg_data_in), + .dataout(reg_data_out), .addr_wr(addr_wr), .data_wr(data_wr), .strobe_wr(strobe_wr), + .rssi_0(rssi_0), .rssi_1(rssi_1), .rssi_2(rssi_2), + .rssi_3(rssi_3), .threshhold(rssi_threshhold), .rssi_wait(rssi_wait), + .reg_0(reg_0),.reg_1(reg_1),.reg_2(reg_2),.reg_3(reg_3), + .debug_en(debug_en), .misc(settings), + .txmux({dac3mux,dac2mux,dac1mux,dac0mux,tx_realsignals,tx_numchan})); + + + //implementing freeze mode + reg [15:0] timestop; + wire stop; + wire [15:0] stop_time; + assign clk64 = (timestop == 0) ? master_clk : 0; + always @(posedge master_clk) + if (timestop[15:0] != 0) + timestop <= timestop - 16'd1; + else if (stop) + timestop <= stop_time; + + wire [15:0] reg_0,reg_1,reg_2,reg_3; master_control master_control ( .master_clk(clk64),.usbclk(usbclk), @@ -374,8 +411,8 @@ wire [1:0] tx_underrun; .rx_sample_strobe(rx_sample_strobe),.strobe_decim(strobe_decim), .tx_empty(tx_empty), //.debug_0(rx_a_a),.debug_1(ddc0_in_i), - .debug_0(tx_debugbus),.debug_1(tx_debugbus), - .debug_2({rx_sample_strobe,strobe_decim,serial_strobe,serial_addr}),.debug_3({rx_dsp_reset,tx_dsp_reset,rx_bus_reset,tx_bus_reset,enable_rx,(tx_underrun == 0),rx_overrun,decim_rate}), + .debug_0(rx_debugbus),.debug_1(ddc0_in_i), + .debug_2({rx_sample_strobe,strobe_decim,serial_strobe,serial_addr}),.debug_3({rx_dsp_reset,tx_dsp_reset,rx_bus_reset,tx_bus_reset,enable_rx,tx_underrun,rx_overrun,decim_rate}), .reg_0(reg_0),.reg_1(reg_1),.reg_2(reg_2),.reg_3(reg_3) ); io_pins io_pins diff --git a/usrp/host/apps-inband/Makefile.am b/usrp/host/apps-inband/Makefile.am index 86bb4061..f231b57f 100644 --- a/usrp/host/apps-inband/Makefile.am +++ b/usrp/host/apps-inband/Makefile.am @@ -30,46 +30,31 @@ AM_CPPFLAGS = \ bin_PROGRAMS = noinst_PROGRAMS = \ - test_usrp_inband_cs \ test_usrp_inband_ping \ test_usrp_inband_registers \ test_usrp_inband_rx \ + test_usrp_inband_2rx \ test_usrp_inband_tx \ + test_usrp_inband_2tx \ test_usrp_inband_timestamps \ test_usrp_inband_overrun \ test_usrp_inband_underrun \ - test_gmac_tx \ read_packets noinst_HEADERS = \ ui_nco.h \ - ui_sincos.h \ - gmac.h \ - gmac_symbols.h + ui_sincos.h -EXTRA_DIST = \ - gmac.mbh - -#------------------------------------------------------------------ -# Build gmac sources - -BUILT_SOURCES = \ - gmac_mbh.cc - -gmac_mbh.cc : gmac.mbh - $(COMPILE_MBH) $(srcdir)/gmac.mbh gmac_mbh.cc - - -test_usrp_inband_cs_SOURCES = test_usrp_inband_cs.cc ui_sincos.c -test_usrp_inband_cs_LDADD = $(USRP_LA) $(USRP_INBAND_LA) - test_usrp_inband_ping_SOURCES = test_usrp_inband_ping.cc test_usrp_inband_ping_LDADD = $(USRP_LA) $(USRP_INBAND_LA) test_usrp_inband_tx_SOURCES = test_usrp_inband_tx.cc ui_sincos.c test_usrp_inband_tx_LDADD = $(USRP_LA) $(USRP_INBAND_LA) +test_usrp_inband_2tx_SOURCES = test_usrp_inband_2tx.cc ui_sincos.c +test_usrp_inband_2tx_LDADD = $(USRP_LA) $(USRP_INBAND_LA) + test_usrp_inband_timestamps_SOURCES = test_usrp_inband_timestamps.cc ui_sincos.c test_usrp_inband_timestamps_LDADD = $(USRP_LA) $(USRP_INBAND_LA) @@ -85,8 +70,8 @@ test_usrp_inband_underrun_LDADD = $(USRP_LA) $(USRP_INBAND_LA) test_usrp_inband_rx_SOURCES = test_usrp_inband_rx.cc ui_sincos.c test_usrp_inband_rx_LDADD = $(USRP_LA) $(USRP_INBAND_LA) -test_gmac_tx_SOURCES = test_gmac_tx.cc gmac.cc gmac_mbh.cc ui_sincos.c -test_gmac_tx_LDADD = $(USRP_LA) $(USRP_INBAND_LA) +test_usrp_inband_2rx_SOURCES = test_usrp_inband_2rx.cc ui_sincos.c +test_usrp_inband_2rx_LDADD = $(USRP_LA) $(USRP_INBAND_LA) read_packets_SOURCES = read_packets.cc read_packets_LDADD = $(USRP_LA) $(USRP_INBAND_LA) diff --git a/usrp/host/apps-inband/gmac.cc b/usrp/host/apps-inband/gmac.cc deleted file mode 100644 index 107582e1..00000000 --- a/usrp/host/apps-inband/gmac.cc +++ /dev/null @@ -1,690 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -static bool verbose = true; - -gmac::gmac(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg) - : mb_mblock(rt, instance_name, user_arg), - d_us_rx_chan(PMT_NIL), d_us_tx_chan(PMT_NIL) -{ - - // When the MAC layer is initialized, we must connect to the USRP and setup - // channels. We begin by defining ports to connect to the 'usrp_server' block - // and then initialize the USRP by opening it through the 'usrp_server.' - - // Initialize the ports - define_ports(); - - // Initialize the connection to the USRP - initialize_usrp(); - -} - -gmac::~gmac() -{ -} - -// The full functionality of GMAC is based on messages passed back and forth -// between the application and a physical layer and/or usrp_server. Each -// message triggers additional events, states, and messages to be sent. -void gmac::handle_message(mb_message_sptr msg) -{ - - // The MAC functionality is dispatched based on the event, which is the - // driving force of the MAC. The event can be anything from incoming samples - // to a message to change the carrier sense threshold. - pmt_t event = msg->signal(); - pmt_t data = msg->data(); - pmt_t port_id = msg->port_id(); - - pmt_t handle = PMT_F; - pmt_t status = PMT_F; - pmt_t dict = PMT_NIL; - std::string error_msg; - - switch(d_state) { - - //---------------------------- INIT ------------------------------------// - // In the INIT state, there should be no messages across the ports. - case INIT: - error_msg = "no messages should be passed during the INIT state:"; - goto unhandled; - - //-------------------------- OPENING USRP -------------------------------// - // In this state we expect a response from usrp_server over the CS channel - // as to whether or not the opening of the USRP was successful. If so, we - // switch states to allocating the channels for use. - case OPENING_USRP: - - if(pmt_eq(event, s_response_open) - && pmt_eq(d_us_cs->port_symbol(), port_id)) { - - status = pmt_nth(1, data); // PMT_T or PMT_F - - if(pmt_eq(status, PMT_T)) { // on success, allocate channels! - allocate_channels(); - return; - } - else { - error_msg = "failed to open usrp:"; - goto bail; - } - - } - - goto unhandled; // all other messages not handled in this state - - //------------------------ ALLOCATING CHANNELS --------------------------// - // When allocating channels, we need to wait for 2 responses from USRP - // server: one for TX and one for RX. Both are initialized to NIL so we - // know to continue to the next state once both are set. - case ALLOCATING_CHANNELS: - - // ************* TX ALLOCATION RESPONSE ***************** // - if(pmt_eq(event, s_response_allocate_channel) - && pmt_eq(d_us_tx->port_symbol(), port_id)) - { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { // extract channel on success - d_us_tx_chan = pmt_nth(2, data); - - if(verbose) - std::cout << "[GMAC] Received TX allocation" - << " on channel " << d_us_tx_chan << std::endl; - - // If the RX has also been allocated already, we can continue - if(!pmt_eqv(d_us_rx_chan, PMT_NIL)) { - //enter_receiving(); - initialize_gmac(); - } - - return; - } - else { // TX allocation failed - error_msg = "failed to allocate TX channel:"; - goto bail; - } - } - - // ************* RX ALLOCATION RESPONSE ****************// - if(pmt_eq(event, s_response_allocate_channel) - && pmt_eq(d_us_rx->port_symbol(), port_id)) - { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - - d_us_rx_chan = pmt_nth(2, data); - - if(verbose) - std::cout << "[GMAC] Received RX allocation" - << " on channel " << d_us_rx_chan << std::endl; - - // If the TX has also been allocated already, we can continue - if(!pmt_eqv(d_us_tx_chan, PMT_NIL)) { - //enter_receiving(); - initialize_gmac(); - } - - return; - } - else { // RX allocation failed - error_msg = "failed to allocate RX channel:"; - goto bail; - } - } - - goto unhandled; - - //----------------------------- INIT GMAC --------------------------------// - // In the INIT_GMAC state, now that the USRP is initialized we can do things - // like right the carrier sense threshold to the FPGA register. - case INIT_GMAC: - goto unhandled; - - - //----------------------------- IDLE ------------------------------------// - // In the idle state the MAC is not quite 'idle', it is just not doing - // anything specific. It is still being passive with data between the - // application and the lower layer. - case IDLE: - - //-------- TX PORT ----------------------------------------------------// - if(pmt_eq(d_tx->port_symbol(), port_id)) { - - //-------- INCOMING PACKET ------------------------------------------// - if(pmt_eq(event, s_cmd_tx_pkt)) { - handle_cmd_tx_pkt(data); - return; - } - - } - - //--------- USRP TX PORT ----------------------------------------------// - if(pmt_eq(d_us_tx->port_symbol(), port_id)) { - - //-------- INCOMING PACKET RESPONSE ---------------------------------// - if(pmt_eq(event, s_response_xmit_raw_frame)) { - handle_response_xmit_raw_frame(data); - return; - } - - } - - //--------- CS PORT ---------------------------------------------------// - if(pmt_eq(d_cs->port_symbol(), port_id)) { - - //------- ENABLE CARRIER SENSE --------------------------------------// - if(pmt_eq(event, s_cmd_carrier_sense_enable)) { - handle_cmd_carrier_sense_enable(data); - return; - } - - //------- CARRIER SENSE THRESHOLD -----------------------------------// - if(pmt_eq(event, s_cmd_carrier_sense_threshold)) { - handle_cmd_carrier_sense_threshold(data); - return; - } - - //------- CARRIER SENSE DEADLINE ------------------------------------// - if(pmt_eq(event, s_cmd_carrier_sense_deadline)) { - handle_cmd_carrier_sense_deadline(data); - return; - } - - //------- DISABLE CARRIER SENSE -------------------------------------// - if(pmt_eq(event, s_cmd_carrier_sense_disable)) { - handle_cmd_carrier_sense_disable(data); - return; - } - - } - - goto unhandled; - - //------------------------ CLOSING CHANNELS -----------------------------// - case CLOSING_CHANNELS: - - if (pmt_eq(event, s_response_deallocate_channel) - && pmt_eq(d_us_tx->port_symbol(), port_id)) - { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - d_us_tx_chan = PMT_NIL; - - if(verbose) - std::cout << "[GMAC] Received TX deallocation\n"; - - // If the RX is also deallocated, we can close the USRP - if(pmt_eq(d_us_rx_chan, PMT_NIL)) - close_usrp(); - - return; - - } else { - - error_msg = "failed to deallocate TX channel:"; - goto bail; - - } - } - - if (pmt_eq(event, s_response_deallocate_channel) - && pmt_eq(d_us_rx->port_symbol(), port_id)) - { - status = pmt_nth(1, data); - - // If successful, set the port to NIL - if(pmt_eq(status, PMT_T)) { - d_us_rx_chan = PMT_NIL; - - if(verbose) - std::cout << "[GMAC] Received RX deallocation\n"; - - // If the TX is also deallocated, we can close the USRP - if(pmt_eq(d_us_tx_chan, PMT_NIL)) - close_usrp(); - - return; - - } else { - - error_msg = "failed to deallocate RX channel:"; - goto bail; - - } - } - - goto unhandled; - - //-------------------------- CLOSING USRP -------------------------------// - case CLOSING_USRP: - goto unhandled; - - } - - // An error occured, print it, and shutdown all m-blocks - bail: - std::cerr << error_msg << data - << "status = " << status << std::endl; - shutdown_all(PMT_F); - return; - - // Received an unhandled message for a specific state - unhandled: - if(0 && verbose && !pmt_eq(event, pmt_intern("%shutdown"))) - std::cout << "[GMAC] unhandled msg: " << msg - << "in state "<< d_state << std::endl; -} - -// The MAC layer connects to 'usrp_server' which has a control/status channel, -// a TX, and an RX port. The MAC layer can then relay TX/RX data back and -// forth to the application, or a physical layer once available. -void gmac::define_ports() -{ - // Ports we use to connect to usrp_server - d_us_tx = define_port("us-tx0", "usrp-tx", false, mb_port::INTERNAL); - d_us_rx = define_port("us-rx0", "usrp-rx", false, mb_port::INTERNAL); - d_us_cs = define_port("us-cs", "usrp-server-cs", false, mb_port::INTERNAL); - - // Ports applications used to connect to us - d_tx = define_port("tx0", "gmac-tx", true, mb_port::EXTERNAL); - d_rx = define_port("rx0", "gmac-rx", true, mb_port::EXTERNAL); - d_cs = define_port("cs", "gmac-cs", true, mb_port::EXTERNAL); -} - -// To initialize the USRP we must pass several parameters to 'usrp_server' such -// as the RBF to use, and the interpolation/decimation rate. The MAC layer will -// then pass these parameters to the block with a message to establish the -// connection to the USRP. -void gmac::initialize_usrp() -{ - - if(verbose) - std::cout << "[GMAC] Initializing USRP\n"; - - // The initialization parameters are passed to usrp_server via a PMT - // dictionary. - pmt_t usrp_dict = pmt_make_dict(); - - // Specify the RBF to use - pmt_dict_set(usrp_dict, - pmt_intern("rbf"), - pmt_intern("test2.rbf")); - - pmt_dict_set(usrp_dict, - pmt_intern("interp-tx"), - pmt_from_long(128)); - - pmt_dict_set(usrp_dict, - pmt_intern("decim-rx"), - pmt_from_long(16)); - - // Center frequency - pmt_dict_set(usrp_dict, - pmt_intern("rf-freq"), - pmt_from_long((long)10e6)); - - // Default is to use USRP considered '0' (incase of multiple) - d_which_usrp = pmt_from_long(0); - - define_component("USRP-SERVER", "usrp_server", usrp_dict); - - connect("self", "us-tx0", "USRP-SERVER", "tx0"); - connect("self", "us-rx0", "USRP-SERVER", "rx0"); - connect("self", "us-cs", "USRP-SERVER", "cs"); - - // Finally, enter the OPENING_USRP state by sending a request to open the - // USRP. - open_usrp(); - -} - -// In the initialization state of the MAC layer we set default values for -// several functionalities. -void gmac::initialize_gmac() -{ - - // The initial state is the INIT state. - d_state = INIT_GMAC; - - // Set carrier sense to enabled by default with the specified threshold and - // the deadline to 0 -- which is wait forever. - set_carrier_sense(true, 25, 0, PMT_NIL); - - // Can now notify the application that we are initialized - d_cs->send(s_response_gmac_initialized, - pmt_list2(PMT_NIL, PMT_T)); - - // The MAC enters an IDLE state where it waits for messages and dispatches - // based on them - enter_idle(); -} - -// Method for setting the carrier sense and an associated threshold which is -// written to a register on the FPGA, which it will read if the CS flag is set -// and perform carrier sense based on. -// -// We currently do not wait for the successful response for the write to -// register command, we assume it will succeed else the MAC must -void gmac::set_carrier_sense(bool toggle, long threshold, long deadline, pmt_t invocation) -{ - d_carrier_sense = toggle; - - // Only waste the bandwidth and processing of a C/S packet if needed - if(threshold != d_cs_thresh) { - d_us_tx->send(s_cmd_to_control_channel, // C/S packet - pmt_list2(invocation, // invoc handle - pmt_list1( - pmt_list2(s_op_write_reg, - pmt_list2( - pmt_from_long(REG_CS_THRESH), - pmt_from_long(threshold)))))); - d_cs_thresh = threshold; - - if(verbose) - std::cout << "[GMAC] Changing CS threshold: " << d_cs_thresh << std::endl; - } - - if(deadline != d_cs_deadline) { - d_us_tx->send(s_cmd_to_control_channel, // C/S packet - pmt_list2(invocation, // invoc handle - pmt_list1( - pmt_list2(s_op_write_reg, - pmt_list2( - pmt_from_long(REG_CS_DEADLINE), - pmt_from_long(deadline)))))); - d_cs_deadline = deadline; - - if(verbose) - std::cout << "[GMAC] Changing CS deadline: " << d_cs_deadline << std::endl; - } - - if(verbose) - std::cout << "[GMAC] Setting carrier sense to " << toggle << std::endl; -} - -// The following sends a command to open the USRP, which will upload the -// specified RBF when creating the instance of the USRP server and set all other -// relevant parameters. -void gmac::open_usrp() -{ - d_state = OPENING_USRP; - - d_us_cs->send(s_cmd_open, pmt_list2(PMT_NIL, d_which_usrp)); - - if(verbose) - std::cout << "[GMAC] Opening USRP " - << d_which_usrp << std::endl; -} - -// Before sending the close to the USRP we wait a couple seconds to let any data -// through the USB exit, else a bug in the driver will kick an error and cause -// an abnormal termination. -void gmac::close_usrp() -{ - d_state = CLOSING_USRP; - - sleep(2); - - d_us_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); -} - -// RX and TX channels must be allocated so that the USRP server can -// properly share bandwidth across multiple USRPs. No commands will be -// successful to the USRP through the USRP server on the TX or RX channels until -// a bandwidth allocation has been received. -void gmac::allocate_channels() -{ - d_state = ALLOCATING_CHANNELS; - - if(verbose) - std::cout << "[GMAC] Sending channel allocation requests\n"; - - long capacity = (long) 16e6; - d_us_tx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); - d_us_rx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); - -} - -// Before closing the USRP connection, we deallocate our channels so that the -// capacity can be reused. -void gmac::close_channels() -{ - d_state = CLOSING_CHANNELS; - - d_us_tx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_us_tx_chan)); - d_us_rx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_us_rx_chan)); - - if(verbose) - std::cout << "[GMAC] Closing channels...\n"; -} - -// Used to enter the receiving state -void gmac::enter_receiving() -{ - d_us_rx->send(s_cmd_start_recv_raw_samples, - pmt_list2(PMT_F, - d_us_rx_chan)); - - if(verbose) - std::cout << "[GMAC] Started RX sample stream\n"; -} - -// A simple idle state, nothing more to it. -void gmac::enter_idle() -{ - d_state = IDLE; -} - -// Handles the transmission of a pkt from the application. The invocation -// handle is passed on but a response is not given back to the application until -// the response is passed from usrp_server. This ensures that the MAC passes -// back the success or failure. Furthermore, the MAC could decide to retransmit -// on a failure based on the result of the packet transmission. -// -// This should eventually be connected to a physically layer rather than -// directly to usrp_server. (d_us_tx should be replaced with a different -// connection) -void gmac::handle_cmd_tx_pkt(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - pmt_t dst = pmt_nth(1, data); - pmt_t samples = pmt_nth(2, data); - pmt_t pkt_properties = pmt_nth(3, data); - - pmt_t us_tx_properties = pmt_make_dict(); - - // Set the packet to be carrier sensed? - if(carrier_sense_pkt(pkt_properties)) - pmt_dict_set(us_tx_properties, - pmt_intern("carrier-sense"), - PMT_T); - - pmt_t timestamp = pmt_from_long(0xffffffff); // NOW - - // Construct the proper message for USRP server - d_us_tx->send(s_cmd_xmit_raw_frame, - pmt_list5(invocation_handle, - d_us_tx_chan, - samples, - timestamp, - us_tx_properties)); - - if(verbose && 0) - std::cout << "[GMAC] Transmitted packet\n"; -} - -// Handles a response from the USRP server about the transmission of a frame, -// whether it was successful or failed. This should eventually be replaced with -// a response from the PHY layer. This is where a retransmit could be -// implemented. -void gmac::handle_response_xmit_raw_frame(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - pmt_t status = pmt_nth(1, data); - - d_tx->send(s_response_tx_pkt, - pmt_list2(invocation_handle, - status)); -} - -// This method determines whether carrier sense should be enabled based on two -// properties. The first is the MAC setting, which the user can set to carrier -// sense packets by default or not. The second is a per packet setting, which -// can be used to override the MAC setting for the given packet only. -bool gmac::carrier_sense_pkt(pmt_t pkt_properties) -{ - // First we extract the per packet properties to check the per packet setting - // if it exists - if(pmt_is_dict(pkt_properties)) { - - if(pmt_t pkt_cs = pmt_dict_ref(pkt_properties, - pmt_intern("carrier-sense"), - PMT_NIL)) { - // If the per packet property says true, enable carrier sense regardless - // of the MAC setting - if(pmt_eqv(pkt_cs, PMT_T)) - return true; - // If the per packet setting says false, disable carrier sense regardless - // of the MAC setting - else if(pmt_eqv(pkt_cs, PMT_F)) - return false; - } - } - - // If we've hit this point, the packet properties did not state whether - // carrier sense should be used or not, so we use the MAC setting - if(d_carrier_sense) - return true; - else - return false; - -} - -// This method is envoked by an incoming cmd-enable-carrier-sense signal on the -// C/S port. It can be used to re-adjust the threshold or simply enabled -// carrier sense. When a threshold is not provided, the MAC will use an -// averaging algorithm to determine the threshold (in the future). -void gmac::handle_cmd_carrier_sense_enable(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - pmt_t threshold = pmt_nth(1, data); - pmt_t deadline = pmt_nth(2, data); - long l_threshold, l_deadline; - - // FIXME: for now, if threshold is NIL, we do not change the threshold. - // This should be replaced with an averaging algorithm - if(pmt_eqv(threshold, PMT_NIL)) - l_threshold = d_cs_thresh; - else - l_threshold = pmt_to_long(threshold); - - // If the deadline is NIL, we do not change the value - if(pmt_eqv(threshold, PMT_NIL)) - l_deadline = d_cs_deadline; - else - l_deadline = pmt_to_long(deadline); - - set_carrier_sense(true, l_threshold, l_deadline, invocation_handle); -} - -// This method is called when an incoming disable carrier sense command is sent -// over the control status channel. It so far does not ellicit a response, this -// needs to be added correctly. It needs to wait for the response for the C/S -// packet from usrp_server. -void gmac::handle_cmd_carrier_sense_disable(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - - // We don't change the threshold, we leave it as is because the application - // did not request that it changes, only to disable carrier sense. - set_carrier_sense(false, d_cs_thresh, d_cs_deadline, invocation_handle); -} - -// When the app requests that the threshold changes, the state of the carrier -// sense should not change. If it was enabled, it should remain enabled. -// Likewise if it was disabled. The deadline value should also remain -// unchanged. -void gmac::handle_cmd_carrier_sense_threshold(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - pmt_t threshold = pmt_nth(1, data); - long l_threshold; - - // FIXME: for now, if threshold is NIL, we do not change the threshold. - // This should be replaced with an averaging algorithm - if(pmt_eqv(threshold, PMT_NIL)) - l_threshold = d_cs_thresh; - else - l_threshold = pmt_to_long(threshold); - - set_carrier_sense(d_carrier_sense, l_threshold, d_cs_deadline, invocation_handle); -} - -// Ability to change the deadline using a C/S packet. The state of all other -// carrier sense parameters should not change. -void gmac::handle_cmd_carrier_sense_deadline(pmt_t data) -{ - pmt_t invocation_handle = pmt_nth(0, data); - pmt_t deadline = pmt_nth(1, data); - long l_deadline; - - // If the deadline passed is NIL, do *not* change the value. - if(pmt_eqv(deadline, PMT_NIL)) - l_deadline = d_cs_deadline; - else - l_deadline = pmt_to_long(deadline); - - set_carrier_sense(d_carrier_sense, d_cs_thresh, l_deadline, invocation_handle); -} - -REGISTER_MBLOCK_CLASS(gmac); diff --git a/usrp/host/apps-inband/gmac.h b/usrp/host/apps-inband/gmac.h deleted file mode 100644 index a6d0bcb1..00000000 --- a/usrp/host/apps-inband/gmac.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef INCLUDED_GMAC_H -#define INCLUDED_GMAC_H - -#include - -class gmac; - -class gmac : public mb_mblock -{ - - // The state is used to determine how to handle incoming messages and of - // course, the state of the MAC protocol. - enum state_t { - INIT, - OPENING_USRP, - ALLOCATING_CHANNELS, - INIT_GMAC, - IDLE, - CLOSING_CHANNELS, - CLOSING_USRP, - }; - state_t d_state; - - // Ports used for applications to connect to this block - mb_port_sptr d_tx, d_rx, d_cs; - - // Ports to connect to usrp_server (us) - mb_port_sptr d_us_tx, d_us_rx, d_us_cs; - - // The channel numbers assigned for use - pmt_t d_us_rx_chan, d_us_tx_chan; - - pmt_t d_which_usrp; - - bool d_carrier_sense; - long d_cs_thresh; - long d_cs_deadline; - - enum FPGA_REGISTERS { - REG_CS_THRESH = 1, - REG_CS_DEADLINE = 2 - }; - - public: - gmac(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg); - ~gmac(); - void handle_message(mb_message_sptr msg); - - private: - void define_ports(); - void initialize_usrp(); - void initialize_gmac(); - void set_carrier_sense(bool toggle, long threshold, long deadline, pmt_t invocation); - void allocate_channels(); - void enter_receiving(); - void enter_idle(); - void close_channels(); - void open_usrp(); - void close_usrp(); - void handle_cmd_tx_pkt(pmt_t data); - void handle_response_xmit_raw_frame(pmt_t data); - bool carrier_sense_pkt(pmt_t pkt_properties); - void handle_cmd_carrier_sense_enable(pmt_t data); - void handle_cmd_carrier_sense_threshold(pmt_t data); - void handle_cmd_carrier_sense_disable(pmt_t data); - void handle_cmd_carrier_sense_deadline(pmt_t data); - -}; - -#endif // INCLUDED_GMAC_H diff --git a/usrp/host/apps-inband/gmac.mbh b/usrp/host/apps-inband/gmac.mbh deleted file mode 100644 index 4fa9a062..00000000 --- a/usrp/host/apps-inband/gmac.mbh +++ /dev/null @@ -1,146 +0,0 @@ -;; -*- scheme -*- ; not really, but tells emacs how to format this -;; -;; Copyright 2007 Free Software Foundation, Inc. -;; -;; This file is part of GNU Radio -;; -;; GNU Radio 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 2, or (at your option) -;; any later version. -;; -;; GNU Radio 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, write to the Free Software Foundation, Inc., -;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -;; - -;; ---------------------------------------------------------------- -;; This is an mblock header file -;; -;; The format is very much a work-in-progress. -;; It'll be compiled to C++. -;; ---------------------------------------------------------------- - -;; In the outgoing messages described below, invocation-handle is an -;; identifier provided by the client to tag the method invocation. -;; The identifier will be returned with the response, to provide the -;; client with a mechanism to match asynchronous responses with the -;; commands that generate them. The value of the invocation-handle is -;; opaque the the server, and is not required by the server to be -;; unique. -;; -;; In the incoming messages described below, invocation-handle is the -;; identifier provided by the client in the prompting invocation. The -;; identifier is returned with the response, so that the client has a -;; mechanism to match asynchronous responses with the commands that -;; generated them. -;; -;; status is either #t, indicating success, or a symbol indicating an error. -;; All symbol's names shall begin with %error- - - -;; ---------------------------------------------------------------- -;; gmac-tx -;; -;; The protocol class is defined from the client's point-of-view. -;; (The client port is unconjugated, the server port is conjugated.) - -(define-protocol-class gmac-tx - - (:outgoing - - ;; Transmitting packets can carry an invocation handle so the application - ;; can get TX results on specific packets, such as whether a packet tagged - ;; as #1 was successfully transmitted or not. This would allow the - ;; application to implement something sliding window like. - ;; - ;; 'dst' is the destination MAC address (given a MAC addressing scheme) - ;; - ;; 'data' will be treated transparently and passed on as samples. - ;; - ;; 'properties' can be used in the future to set per-packet options such as - ;; carrier sense overriding functionality. - (cmd-tx-pkt invocation-handle dst data properties) - - ) - - (:incoming - - ;; The response will carry the same invocation-handle passed with cmd-tx-pkt - (response-tx-pkt invocation-handle status) - - ) - ) - -;; ---------------------------------------------------------------- -;; gmac-rx -;; -;; The protocol class is defined from the client's point-of-view. -;; (The client port is unconjugated, the server port is conjugated.) - -(define-protocol-class gmac-rx - - (:outgoing - - ;; There are currently no outgoing commands, I believe that the RX - ;; should always be enabled, there is no point in having an enable/disable - ;; that I can see. - - ) - - (:incoming - - ;; Contains packets decoded by the MAC destined for this machine, sent by - ;; the specified address. - (response-rx-pkt invocation-handle src data) - - ) - ) - - -;; ---------------------------------------------------------------- -;; gmac-cs -;; -;; The protocol class is defined from the client's point-of-view. -;; (The client port is unconjugated, the server port is conjugated.) -;; -;; This defines a control/status interface to the MAC layer, for control over -;; functionality such as carrier sense and future functionality such as channel -;; hopping. - - -(define-protocol-class gmac-cs - - (:outgoing - - ;; Threshold represents the carrier sense threshold based on the digital - ;; reading out of the DAC. If the threshold is set to PMT_NIL then the - ;; MAC will use averaging to determine an appropriate threshold. - (cmd-carrier-sense-enable invocation-handle threshold deadline) - (cmd-carrier-sense-threshold invocation-handle threshold) - (cmd-carrier-sense-disable invocation-handle) - - ;; Setting the number of fast transmission retries on a failure before - ;; reporting a loss back to the application. - (cmd-set-tx-retries invocation-handle retries) - - ) - - (:incoming - - (response-gmac-initialized invocation-handle status) - - (response-carrier-sense-enable invocation-handle status) - (response-carrier-sense-threshold invocation-handle status) - (response-carrier-sense-deadline invocation-handle status) - (response-carrier-sense-disable invocation-handle status) - - (response-set-tx-retries invocation-handle status) - - ) - ) diff --git a/usrp/host/apps-inband/gmac_symbols.h b/usrp/host/apps-inband/gmac_symbols.h deleted file mode 100644 index 0d7804be..00000000 --- a/usrp/host/apps-inband/gmac_symbols.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef INCLUDED_GMAC_SYMBOLS_H -#define INCLUDED_GMAC_SYMBOLS_H - -#include - -// TX -static pmt_t s_cmd_tx_pkt = pmt_intern("cmd-tx-pkt"); -static pmt_t s_response_tx_pkt = pmt_intern("response-tx-pkt"); - -// RX -static pmt_t s_response_rx_pkt = pmt_intern("response-rx-pkt"); - -// CS -static pmt_t s_cmd_carrier_sense_enable = pmt_intern("cmd-carrier-sense-enable"); -static pmt_t s_cmd_carrier_sense_threshold = pmt_intern("cmd-carrier-sense-threshold"); -static pmt_t s_cmd_carrier_sense_deadline = pmt_intern("cmd-carrier-sense-deadline"); -static pmt_t s_cmd_carrier_sense_disable = pmt_intern("cmd-carrier-sense-disable"); -static pmt_t s_cmd_set_tx_retries = pmt_intern("cmd-set-tx-retries"); -static pmt_t s_response_gmac_initialized = pmt_intern("response-gmac-initialized"); -static pmt_t s_response_carrier_sense_enable = pmt_intern("response-carrier-sense-enable"); -static pmt_t s_response_carrier_sense_treshold = pmt_intern("response-carrier-sense-threshold"); -static pmt_t s_response_carrier_sense_deadline = pmt_intern("response-carrier-sense-deadline"); -static pmt_t s_response_carrier_sense_disable = pmt_intern("response-carrier-sense-disable"); -static pmt_t s_response_set_tx_retries = pmt_intern("response-set-tx-retries"); - -#endif // INCLUDED_GMAC_SYMBOLS_H diff --git a/usrp/host/apps-inband/test_gmac_tx.cc b/usrp/host/apps-inband/test_gmac_tx.cc deleted file mode 100644 index 74f16c66..00000000 --- a/usrp/host/apps-inband/test_gmac_tx.cc +++ /dev/null @@ -1,330 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -static bool verbose = true; - -class test_gmac_tx : public mb_mblock -{ - mb_port_sptr d_tx; - mb_port_sptr d_cs; - pmt_t d_tx_chan; // returned tx channel handle - - enum state_t { - INIT, - TRANSMITTING, - }; - - state_t d_state; - long d_nsamples_to_send; - long d_nsamples_xmitted; - long d_nframes_xmitted; - long d_samples_per_frame; - bool d_done_sending; - - // for generating sine wave output - ui_nco d_nco; - double d_amplitude; - - public: - test_gmac_tx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); - ~test_gmac_tx(); - void handle_message(mb_message_sptr msg); - - protected: - void open_usrp(); - void close_usrp(); - void allocate_channel(); - void send_packets(); - void enter_transmitting(); - void build_and_send_next_frame(); - void handle_xmit_response(pmt_t invocation_handle); - void enter_closing_channel(); -}; - -test_gmac_tx::test_gmac_tx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) - : mb_mblock(runtime, instance_name, user_arg), - d_state(INIT), d_nsamples_to_send((long) 40e6), - d_nsamples_xmitted(0), - d_nframes_xmitted(0), - d_samples_per_frame((long)(126 * 4)), // full packet - d_done_sending(false), - d_amplitude(16384) -{ - - define_component("GMAC", "gmac", PMT_NIL); - d_tx = define_port("tx0", "gmac-tx", false, mb_port::INTERNAL); - d_cs = define_port("cs", "gmac-cs", false, mb_port::INTERNAL); - - connect("self", "tx0", "GMAC", "tx0"); - connect("self", "cs", "GMAC", "cs"); - - // initialize NCO - double freq = 100e3; - int interp = 32; // 32 -> 4MS/s - double sample_rate = 128e6 / interp; - d_nco.set_freq(2*M_PI * freq/sample_rate); - -} - -test_gmac_tx::~test_gmac_tx() -{ -} - -void -test_gmac_tx::handle_message(mb_message_sptr msg) -{ - pmt_t event = msg->signal(); - pmt_t data = msg->data(); - pmt_t port_id = msg->port_id(); - - pmt_t handle = PMT_F; - pmt_t status = PMT_F; - pmt_t dict = PMT_NIL; - std::string error_msg; - - // Dispatch based on state - switch(d_state) { - - //------------------------------ INIT ---------------------------------// - // When GMAC is done initializing, it will send a response - case INIT: - - if(pmt_eq(event, s_response_gmac_initialized)) { - handle = pmt_nth(0, data); - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - enter_transmitting(); - return; - } - else { - error_msg = "error initializing gmac:"; - goto bail; - } - } - goto unhandled; - - //-------------------------- TRANSMITTING ----------------------------// - // In the transmit state we count the number of underruns received and - // ballpark the number with an expected count (something >1 for starters) - case TRANSMITTING: - - // Check that the transmits are OK - if (pmt_eq(event, s_response_tx_pkt)){ - handle = pmt_nth(0, data); - status = pmt_nth(1, data); - - if (pmt_eq(status, PMT_T)){ - handle_xmit_response(handle); - return; - } - else { - error_msg = "bad response-tx-pkt:"; - goto bail; - } - } - - goto unhandled; - - } - - // An error occured, print it, and shutdown all m-blocks - bail: - std::cerr << error_msg << data - << "status = " << status << std::endl; - shutdown_all(PMT_F); - return; - - // Received an unhandled message for a specific state - unhandled: - if(verbose && !pmt_eq(event, pmt_intern("%shutdown"))) - std::cout << "[TEST_GMAC_TX] unhandled msg: " << msg - << "in state "<< d_state << std::endl; -} - -void -test_gmac_tx::enter_transmitting() -{ - d_state = TRANSMITTING; - d_nsamples_xmitted = 0; - - d_cs->send(s_cmd_carrier_sense_deadline, - pmt_list2(PMT_NIL, - pmt_from_long(50000000))); - - build_and_send_next_frame(); // fire off 4 to start pipeline - build_and_send_next_frame(); - build_and_send_next_frame(); - build_and_send_next_frame(); -} - -void -test_gmac_tx::build_and_send_next_frame() -{ - // allocate the uniform vector for the samples - // FIXME perhaps hold on to this between calls - -#if 0 - long nsamples_this_frame = - std::min(d_nsamples_to_send - d_nsamples_xmitted, - d_samples_per_frame); -#else - long nsamples_this_frame = d_samples_per_frame; -#endif - - if (nsamples_this_frame == 0){ - d_done_sending = true; - return; - } - - - size_t nshorts = 2 * nsamples_this_frame; // 16-bit I & Q - pmt_t uvec = pmt_make_s16vector(nshorts, 0); - size_t ignore; - int16_t *samples = pmt_s16vector_writeable_elements(uvec, ignore); - - // fill in the complex sinusoid - for (int i = 0; i < nsamples_this_frame; i++){ - - if (1){ - gr_complex s; - d_nco.sincos(&s, 1, d_amplitude); - // write 16-bit i & q - samples[2*i] = (int16_t) s.real(); - samples[2*i+1] = (int16_t) s.imag(); - } - else { - gr_complex s(d_amplitude, d_amplitude); - - // write 16-bit i & q - samples[2*i] = (int16_t) s.real(); - samples[2*i+1] = (int16_t) s.imag(); - } - } - - // Per packet properties - pmt_t tx_properties = pmt_make_dict(); - - if(d_nframes_xmitted > 25000) { - pmt_dict_set(tx_properties, - pmt_intern("carrier-sense"), - PMT_F); - } - - if(d_nframes_xmitted > 35000) { - pmt_dict_set(tx_properties, - pmt_intern("carrier-sense"), - PMT_NIL); - } - - if(d_nframes_xmitted == 45000) { - d_cs->send(s_cmd_carrier_sense_threshold, - pmt_list2(PMT_NIL, - pmt_from_long(100))); - } - - if(d_nframes_xmitted == 60000) { - d_cs->send(s_cmd_carrier_sense_threshold, - pmt_list2(PMT_NIL, - pmt_from_long(25))); - } - - if(d_nframes_xmitted == 75000) { - d_cs->send(s_cmd_carrier_sense_disable, - pmt_list1(PMT_NIL)); - } - - if(d_nframes_xmitted > 90000 && d_nframes_xmitted < 110000) { - pmt_dict_set(tx_properties, - pmt_intern("carrier-sense"), - PMT_T); - } - - if(d_nframes_xmitted > 110000) { - - if(d_nframes_xmitted % 100 == 0) - pmt_dict_set(tx_properties, - pmt_intern("carrier-sense"), - PMT_T); -} - - pmt_t timestamp = pmt_from_long(0xffffffff); // NOW - d_tx->send(s_cmd_tx_pkt, - pmt_list4(PMT_NIL, // invocation-handle - PMT_NIL, // destination - uvec, // the samples - tx_properties)); // per pkt properties - - d_nsamples_xmitted += nsamples_this_frame; - d_nframes_xmitted++; - - if(verbose && 0) - std::cout << "[TEST_GMAC_TX] Transmitted frame\n"; -} - - -void -test_gmac_tx::handle_xmit_response(pmt_t handle) -{ - if (d_done_sending && - pmt_to_long(handle) == (d_nframes_xmitted - 1)){ - // We're done sending and have received all responses - } - - build_and_send_next_frame(); -} - -REGISTER_MBLOCK_CLASS(test_gmac_tx); - - -// ---------------------------------------------------------------- - -int -main (int argc, char **argv) -{ - // handle any command line args here - - mb_runtime_sptr rt = mb_make_runtime(); - pmt_t result = PMT_NIL; - - rt->run("test_gmac_tx", "test_gmac_tx", PMT_F, &result); -} diff --git a/usrp/host/apps-inband/test_usrp_inband_2rx.cc b/usrp/host/apps-inband/test_usrp_inband_2rx.cc new file mode 100644 index 00000000..da8d7271 --- /dev/null +++ b/usrp/host/apps-inband/test_usrp_inband_2rx.cc @@ -0,0 +1,371 @@ +/* -*- c++ -*- */ +/* + * Copyright 2007 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio 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, or (at your option) + * any later version. + * + * GNU Radio 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, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include // QA only +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Include the symbols needed for communication with USRP server +#include +#include +#include +#include + +static bool verbose = true; + +class test_usrp_rx : public mb_mblock +{ + mb_port_sptr d_rx; + mb_port_sptr d_cs; + pmt_t d_rx_chan0, d_rx_chan1; + + enum state_t { + INIT, + OPENING_USRP, + ALLOCATING_CHANNEL, + RECEIVING, + CLOSING_CHANNEL, + CLOSING_USRP, + }; + + state_t d_state; + + std::ofstream d_ofile; + + long d_samples_recvd; + long d_samples_to_recv; + + public: + test_usrp_rx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); + ~test_usrp_rx(); + void initial_transition(); + void handle_message(mb_message_sptr msg); + + protected: + void open_usrp(); + void close_usrp(); + void allocate_channel(); + void send_packets(); + void enter_receiving(); + void build_and_send_next_frame(); + void handle_response_recv_raw_samples(pmt_t invocation_handle); + void enter_closing_channel(); +}; + +test_usrp_rx::test_usrp_rx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) + : mb_mblock(runtime, instance_name, user_arg), + d_rx_chan0(PMT_NIL), d_rx_chan1(PMT_NIL), + d_samples_recvd(0), + d_samples_to_recv(20e6) +{ + d_rx = define_port("rx0", "usrp-rx", false, mb_port::INTERNAL); + d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); + + // Pass a dictionary to usrp_server which specifies which interface to use, the stub or USRP + pmt_t usrp_dict = pmt_make_dict(); + + // To test the application without a USRP + bool fake_usrp_p = false; + if(fake_usrp_p) { + pmt_dict_set(usrp_dict, + pmt_intern("fake-usrp"), + PMT_T); + } + + // Specify the RBF to use + pmt_dict_set(usrp_dict, + pmt_intern("rbf"), + pmt_intern("inband_2rxhb_2tx.rbf")); + + pmt_dict_set(usrp_dict, + pmt_intern("decim-rx"), + pmt_from_long(64)); + + define_component("server", "usrp_server", usrp_dict); + + connect("self", "rx0", "server", "rx0"); + connect("self", "cs", "server", "cs"); + +} + +test_usrp_rx::~test_usrp_rx() +{ +} + +void +test_usrp_rx::initial_transition() +{ + open_usrp(); +} + +void +test_usrp_rx::handle_message(mb_message_sptr msg) +{ + pmt_t event = msg->signal(); + pmt_t data = msg->data(); + + pmt_t handle = PMT_F; + pmt_t status = PMT_F; + std::string error_msg; + + switch(d_state){ + + //----------------------------- OPENING_USRP ----------------------------// + // We only expect a response from opening the USRP which should be succesful + // or failed. + case OPENING_USRP: + if (pmt_eq(event, s_response_open)){ + status = pmt_nth(1, data); + if (pmt_eq(status, PMT_T)){ + allocate_channel(); + return; + } + else { + error_msg = "failed to open usrp:"; + goto bail; + } + } + goto unhandled; + + //----------------------- ALLOCATING CHANNELS --------------------// + // Allocate an RX channel to perform the overrun test. + case ALLOCATING_CHANNEL: + if (pmt_eq(event, s_response_allocate_channel)){ + status = pmt_nth(1, data); + if(pmt_eqv(d_rx_chan0, PMT_NIL)) + d_rx_chan0 = pmt_nth(2, data); + else + d_rx_chan1 = pmt_nth(2, data); + + if (pmt_eq(status, PMT_T) && !pmt_eqv(d_rx_chan1, PMT_NIL)){ + enter_receiving(); + return; + } + else if(pmt_eq(status, PMT_F)){ + error_msg = "failed to allocate channel:"; + goto bail; + } + return; + } + goto unhandled; + + //--------------------------- RECEIVING ------------------------------// + // In the receiving state, we receive samples until the specified amount + // while counting the number of overruns. + case RECEIVING: + if (pmt_eq(event, s_response_recv_raw_samples)){ + status = pmt_nth(1, data); + + if (pmt_eq(status, PMT_T)){ + handle_response_recv_raw_samples(data); + return; + } + else { + error_msg = "bad response-xmit-raw-frame:"; + goto bail; + } + } + goto unhandled; + + //------------------------- CLOSING CHANNEL ----------------------------// + // Check deallocation response for the RX channel + case CLOSING_CHANNEL: + if (pmt_eq(event, s_response_deallocate_channel)){ + status = pmt_nth(1, data); + + if (pmt_eq(status, PMT_T)){ + close_usrp(); + return; + } + else { + error_msg = "failed to deallocate channel:"; + goto bail; + } + } + + // Alternately, we ignore all response recv samples while waiting for the + // channel to actually close + if (pmt_eq(event, s_response_recv_raw_samples)) + return; + + goto unhandled; + + //--------------------------- CLOSING USRP ------------------------------// + // Once we have received a successful USRP close response, we shutdown all + // mblocks and exit. + case CLOSING_USRP: + if (pmt_eq(event, s_response_close)){ + status = pmt_nth(1, data); + + if (pmt_eq(status, PMT_T)){ + fflush(stdout); + shutdown_all(PMT_T); + return; + } + else { + error_msg = "failed to close USRP:"; + goto bail; + } + } + goto unhandled; + + default: + goto unhandled; + } + return; + + // An error occured, print it, and shutdown all m-blocks + bail: + std::cerr << error_msg << data + << "status = " << status << std::endl; + shutdown_all(PMT_F); + return; + + // Received an unhandled message for a specific state + unhandled: + if(verbose && !pmt_eq(event, pmt_intern("%shutdown"))) + std::cout << "test_usrp_inband_tx: unhandled msg: " << msg + << "in state "<< d_state << std::endl; +} + + +void +test_usrp_rx::open_usrp() +{ + pmt_t which_usrp = pmt_from_long(0); + + d_cs->send(s_cmd_open, pmt_list2(PMT_NIL, which_usrp)); + d_state = OPENING_USRP; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_RX] Opening the USRP\n"; +} + +void +test_usrp_rx::close_usrp() +{ + + d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); + d_state = CLOSING_USRP; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_RX] Closing the USRP\n"; +} + +void +test_usrp_rx::allocate_channel() +{ + long capacity = (long) 16e6; + d_rx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); + d_rx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); + d_state = ALLOCATING_CHANNEL; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_RX] Requesting RX channel allocation\n"; +} + +void +test_usrp_rx::enter_receiving() +{ + d_state = RECEIVING; + + d_rx->send(s_cmd_start_recv_raw_samples, + pmt_list2(PMT_F, + d_rx_chan0)); + + d_rx->send(s_cmd_start_recv_raw_samples, + pmt_list2(PMT_F, + d_rx_chan1)); + + if(verbose) + std::cout << "[TEST_USRP_INBAND_RX] Receiving...\n"; +} + +void +test_usrp_rx::handle_response_recv_raw_samples(pmt_t data) +{ + pmt_t invocation_handle = pmt_nth(0, data); + pmt_t status = pmt_nth(1, data); + pmt_t v_samples = pmt_nth(2, data); + pmt_t timestamp = pmt_nth(3, data); + pmt_t channel = pmt_nth(4, data); + pmt_t properties = pmt_nth(5, data); + + d_samples_recvd += pmt_length(v_samples) / 4; + + // Check for overrun + if(!pmt_is_dict(properties)) { + std::cout << "[TEST_USRP_INBAND_RX] Recv samples dictionary is improper\n"; + return; + } + + // Check if the number samples we have received meets the test + if(d_samples_recvd >= d_samples_to_recv) { + d_rx->send(s_cmd_stop_recv_raw_samples, pmt_list2(PMT_NIL, d_rx_chan0)); + d_rx->send(s_cmd_stop_recv_raw_samples, pmt_list2(PMT_NIL, d_rx_chan1)); + enter_closing_channel(); + return; + } + +} + +void +test_usrp_rx::enter_closing_channel() +{ + d_state = CLOSING_CHANNEL; + + d_rx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_rx_chan0)); + d_rx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_rx_chan1)); + + if(verbose) + std::cout << "[TEST_USRP_INBAND_RX] Deallocating RX channel\n"; +} + +REGISTER_MBLOCK_CLASS(test_usrp_rx); + + +// ---------------------------------------------------------------- + +int +main (int argc, char **argv) +{ + mb_runtime_sptr rt = mb_make_runtime(); + pmt_t result = PMT_NIL; + + rt->run("top", "test_usrp_rx", PMT_F, &result); + +} diff --git a/usrp/host/apps-inband/test_usrp_inband_cs.cc b/usrp/host/apps-inband/test_usrp_inband_2tx.cc similarity index 66% rename from usrp/host/apps-inband/test_usrp_inband_cs.cc rename to usrp/host/apps-inband/test_usrp_inband_2tx.cc index 2497f8d5..5ab9be06 100644 --- a/usrp/host/apps-inband/test_usrp_inband_cs.cc +++ b/usrp/host/apps-inband/test_usrp_inband_2tx.cc @@ -25,16 +25,17 @@ #include #include +#include // QA only #include #include #include #include +#include #include #include #include #include #include -#include #include #include @@ -42,21 +43,14 @@ #include #include #include -#include -#define NBPING 10 +static bool verbose = true; -static bool verbose = false; - -class test_usrp_cs : public mb_mblock +class test_usrp_tx : public mb_mblock { mb_port_sptr d_tx; - mb_port_sptr d_rx; mb_port_sptr d_cs; - pmt_t d_tx_chan; // returned tx channel handle - pmt_t d_rx_chan; // returned tx channel handle - - struct timeval times[NBPING]; + pmt_t d_tx_chan0, d_tx_chan1; enum state_t { INIT, @@ -79,8 +73,8 @@ class test_usrp_cs : public mb_mblock double d_amplitude; public: - test_usrp_cs(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); - ~test_usrp_cs(); + test_usrp_tx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); + ~test_usrp_tx(); void initial_transition(); void handle_message(mb_message_sptr msg); @@ -89,32 +83,25 @@ class test_usrp_cs : public mb_mblock void close_usrp(); void allocate_channel(); void send_packets(); - void enter_receiving(); void enter_transmitting(); - void build_and_send_ping(); void build_and_send_next_frame(); void handle_xmit_response(pmt_t invocation_handle); void enter_closing_channel(); }; -test_usrp_cs::test_usrp_cs(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) +test_usrp_tx::test_usrp_tx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) : mb_mblock(runtime, instance_name, user_arg), - d_tx_chan(PMT_NIL), - d_rx_chan(PMT_NIL), - d_state(INIT), d_nsamples_to_send((long) 40e6), + d_tx_chan0(PMT_NIL), d_tx_chan1(PMT_NIL), + d_state(INIT), d_nsamples_to_send((long) 80e6), d_nsamples_xmitted(0), d_nframes_xmitted(0), - //d_samples_per_frame((long)(126)), - //d_samples_per_frame((long)(126 * 3.5)), // non-full packet d_samples_per_frame((long)(126 * 4)), // full packet d_done_sending(false), d_amplitude(16384) { - if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Initializing...\n"; + // std::cout << "[TEST_USRP_TX] Initializing...\n"; d_tx = define_port("tx0", "usrp-tx", false, mb_port::INTERNAL); - d_rx = define_port("rx0", "usrp-rx", false, mb_port::INTERNAL); d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); //bool fake_usrp_p = true; @@ -129,6 +116,11 @@ test_usrp_cs::test_usrp_cs(mb_runtime *runtime, const std::string &instance_name pmt_intern("fake-usrp"), PMT_T); } + + // Specify the RBF to use + pmt_dict_set(usrp_dict, + pmt_intern("rbf"), + pmt_intern("inband_2rxhb_2tx.rbf")); // Set TX and RX interpolations pmt_dict_set(usrp_dict, @@ -136,18 +128,12 @@ test_usrp_cs::test_usrp_cs(mb_runtime *runtime, const std::string &instance_name pmt_from_long(128)); pmt_dict_set(usrp_dict, - pmt_intern("decim-rx"), - pmt_from_long(16)); - - // Specify the RBF to use - pmt_dict_set(usrp_dict, - pmt_intern("rbf"), - pmt_intern("boe.rbf")); + pmt_intern("rf-freq"), + pmt_from_long(10e6)); define_component("server", "usrp_server", usrp_dict); connect("self", "tx0", "server", "tx0"); - connect("self", "rx0", "server", "rx0"); connect("self", "cs", "server", "cs"); // initialize NCO @@ -160,22 +146,21 @@ test_usrp_cs::test_usrp_cs(mb_runtime *runtime, const std::string &instance_name // for now, we'll have the low-level code hardwire it. } -test_usrp_cs::~test_usrp_cs() +test_usrp_tx::~test_usrp_tx() { } void -test_usrp_cs::initial_transition() +test_usrp_tx::initial_transition() { open_usrp(); } void -test_usrp_cs::handle_message(mb_message_sptr msg) +test_usrp_tx::handle_message(mb_message_sptr msg) { pmt_t event = msg->signal(); pmt_t data = msg->data(); - pmt_t port_id = msg->port_id(); pmt_t handle = PMT_F; pmt_t status = PMT_F; @@ -200,48 +185,21 @@ test_usrp_cs::handle_message(mb_message_sptr msg) case ALLOCATING_CHANNEL: if (pmt_eq(event, s_response_allocate_channel)){ + status = pmt_nth(1, data); + if(pmt_eqv(d_tx_chan0, PMT_NIL)) + d_tx_chan0 = pmt_nth(2, data); + else + d_tx_chan1 = pmt_nth(2, data); - if(pmt_eq(d_tx->port_symbol(), port_id)) { - status = pmt_nth(1, data); - d_tx_chan = pmt_nth(2, data); - - if (pmt_eq(status, PMT_T)){ - - if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Received allocation for TX\n"; - - if(!pmt_eqv(d_rx_chan, PMT_NIL)) { - enter_receiving(); - enter_transmitting(); - } - return; - } - else { - error_msg = "failed to allocate channel:"; - goto bail; - } + if (pmt_eq(status, PMT_T) && !pmt_eqv(d_tx_chan1, PMT_NIL)){ + enter_transmitting(); + return; } - - if(pmt_eq(d_rx->port_symbol(), port_id)) { - status = pmt_nth(1, data); - d_rx_chan = pmt_nth(2, data); - - if (pmt_eq(status, PMT_T)){ - - if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Received allocation for TX\n"; - - if(!pmt_eqv(d_tx_chan, PMT_NIL)) { - enter_receiving(); - enter_transmitting(); - } - return; - } - else { - error_msg = "failed to allocate channel:"; - goto bail; - } + else if(pmt_eq(status, PMT_F)){ + error_msg = "failed to allocate channel:"; + goto bail; } + return; } goto unhandled; @@ -303,81 +261,64 @@ test_usrp_cs::handle_message(mb_message_sptr msg) return; unhandled: - if(verbose) - std::cout << "test_usrp_inband_tx: unhandled msg: " << msg - << "in state "<< d_state << std::endl; + std::cout << "test_usrp_inband_tx: unhandled msg: " << msg + << "in state "<< d_state << std::endl; } void -test_usrp_cs::open_usrp() +test_usrp_tx::open_usrp() { pmt_t which_usrp = pmt_from_long(0); d_cs->send(s_cmd_open, pmt_list2(PMT_NIL, which_usrp)); d_state = OPENING_USRP; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Opening the USRP\n"; } void -test_usrp_cs::close_usrp() +test_usrp_tx::close_usrp() { d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); d_state = CLOSING_USRP; - + if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Closing USRP\n"; + std::cout << "[TEST_USRP_INBAND_TX] Closing the USRP\n"; } void -test_usrp_cs::allocate_channel() +test_usrp_tx::allocate_channel() { long capacity = (long) 16e6; + + // Send two capacity requests, which will allocate us two channels + d_tx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); d_tx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); - d_rx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); d_state = ALLOCATING_CHANNEL; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Requesting TX channel allocation\n"; } void -test_usrp_cs::enter_receiving() -{ - d_rx->send(s_cmd_start_recv_raw_samples, - pmt_list2(PMT_F, - d_rx_chan)); -} - -void -test_usrp_cs::enter_transmitting() +test_usrp_tx::enter_transmitting() { d_state = TRANSMITTING; d_nsamples_xmitted = 0; - - if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Beginning transmission\n"; - - sleep(1); - -// build_and_send_next_frame(); // fire off 4 to start pipeline - - build_and_send_ping(); - build_and_send_ping(); - build_and_send_ping(); -} - -void -test_usrp_cs::build_and_send_ping() -{ + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Transmitting...\n"; - d_tx->send(s_cmd_to_control_channel, - pmt_list2(PMT_NIL, pmt_list1(pmt_list2(s_op_ping_fixed, - pmt_list2(pmt_from_long(0), - pmt_from_long(0)))))); - - std::cout << "[TEST_USRP_INBAND_CS] Ping sent" << std::endl; + build_and_send_next_frame(); // fire off 4 to start pipeline + build_and_send_next_frame(); + build_and_send_next_frame(); + build_and_send_next_frame(); } void -test_usrp_cs::build_and_send_next_frame() +test_usrp_tx::build_and_send_next_frame() { // allocate the uniform vector for the samples // FIXME perhaps hold on to this between calls @@ -421,23 +362,34 @@ test_usrp_cs::build_and_send_next_frame() } } + pmt_t tx_properties = pmt_make_dict(); + pmt_t timestamp = pmt_from_long(0xffffffff); // NOW d_tx->send(s_cmd_xmit_raw_frame, - pmt_list4(pmt_from_long(d_nframes_xmitted), // invocation-handle - d_tx_chan, // channel + pmt_list5(pmt_from_long(d_nframes_xmitted), // invocation-handle + d_tx_chan0, // channel uvec, // the samples - timestamp)); + timestamp, + tx_properties)); + + // Resend on channel 1 + d_tx->send(s_cmd_xmit_raw_frame, + pmt_list5(pmt_from_long(d_nframes_xmitted), // invocation-handle + d_tx_chan1, // channel + uvec, // the samples + timestamp, + tx_properties)); d_nsamples_xmitted += nsamples_this_frame; d_nframes_xmitted++; - if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Transmitted frame\n"; + if(verbose && 0) + std::cout << "[TEST_USRP_INBAND_TX] Transmitted frame\n"; } void -test_usrp_cs::handle_xmit_response(pmt_t handle) +test_usrp_tx::handle_xmit_response(pmt_t handle) { if (d_done_sending && pmt_to_long(handle) == (d_nframes_xmitted - 1)){ @@ -445,21 +397,23 @@ test_usrp_cs::handle_xmit_response(pmt_t handle) enter_closing_channel(); } - //build_and_send_next_frame(); + build_and_send_next_frame(); } void -test_usrp_cs::enter_closing_channel() +test_usrp_tx::enter_closing_channel() { d_state = CLOSING_CHANNEL; - d_tx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_tx_chan)); - + // Deallocate both channels + d_tx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_tx_chan0)); + d_tx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_tx_chan1)); + if(verbose) - std::cout << "[TEST_USRP_INBAND_CS] Closing channel\n"; + std::cout << "[TEST_USRP_INBAND_tX] Deallocating TX channel\n"; } -REGISTER_MBLOCK_CLASS(test_usrp_cs); +REGISTER_MBLOCK_CLASS(test_usrp_tx); // ---------------------------------------------------------------- @@ -472,5 +426,5 @@ main (int argc, char **argv) mb_runtime_sptr rt = mb_make_runtime(); pmt_t result = PMT_NIL; - rt->run("top", "test_usrp_cs", PMT_F, &result); + rt->run("top", "test_usrp_tx", PMT_F, &result); } diff --git a/usrp/host/apps-inband/test_usrp_inband_overrun.cc b/usrp/host/apps-inband/test_usrp_inband_overrun.cc index 9041a098..107668b8 100644 --- a/usrp/host/apps-inband/test_usrp_inband_overrun.cc +++ b/usrp/host/apps-inband/test_usrp_inband_overrun.cc @@ -102,7 +102,7 @@ test_usrp_rx::test_usrp_rx(mb_runtime *runtime, const std::string &instance_name // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("nanocell9.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); pmt_dict_set(usrp_dict, pmt_intern("decim-rx"), @@ -306,7 +306,8 @@ test_usrp_rx::handle_response_recv_raw_samples(pmt_t data) pmt_t status = pmt_nth(1, data); pmt_t v_samples = pmt_nth(2, data); pmt_t timestamp = pmt_nth(3, data); - pmt_t properties = pmt_nth(4, data); + pmt_t channel = pmt_nth(4, data); + pmt_t properties = pmt_nth(5, data); d_samples_recvd += pmt_length(v_samples) / 4; diff --git a/usrp/host/apps-inband/test_usrp_inband_registers.cc b/usrp/host/apps-inband/test_usrp_inband_registers.cc index 017ccdbf..a1d9cc14 100644 --- a/usrp/host/apps-inband/test_usrp_inband_registers.cc +++ b/usrp/host/apps-inband/test_usrp_inband_registers.cc @@ -118,7 +118,7 @@ test_usrp_inband_registers::test_usrp_inband_registers(mb_runtime *runtime, cons // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("boe2.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); // Set TX and RX interpolations pmt_dict_set(usrp_dict, diff --git a/usrp/host/apps-inband/test_usrp_inband_rx.cc b/usrp/host/apps-inband/test_usrp_inband_rx.cc index 0429951f..cff2aa72 100644 --- a/usrp/host/apps-inband/test_usrp_inband_rx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_rx.cc @@ -87,23 +87,30 @@ class test_usrp_rx : public mb_mblock test_usrp_rx::test_usrp_rx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) : mb_mblock(runtime, instance_name, user_arg), d_samples_recvd(0), - d_samples_to_recv(5e6) + d_samples_to_recv(20e6) { - d_rx = define_port("rx0", "usrp-rx", false, mb_port::INTERNAL); d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); // Pass a dictionary to usrp_server which specifies which interface to use, the stub or USRP pmt_t usrp_dict = pmt_make_dict(); + + // To test the application without a USRP + bool fake_usrp_p = false; + if(fake_usrp_p) { + pmt_dict_set(usrp_dict, + pmt_intern("fake-usrp"), + PMT_T); + } // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("nanocell9.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); pmt_dict_set(usrp_dict, pmt_intern("decim-rx"), - pmt_from_long(128)); + pmt_from_long(64)); define_component("server", "usrp_server", usrp_dict); @@ -264,6 +271,7 @@ test_usrp_rx::open_usrp() void test_usrp_rx::close_usrp() { + d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); d_state = CLOSING_USRP; @@ -302,7 +310,8 @@ test_usrp_rx::handle_response_recv_raw_samples(pmt_t data) pmt_t status = pmt_nth(1, data); pmt_t v_samples = pmt_nth(2, data); pmt_t timestamp = pmt_nth(3, data); - pmt_t properties = pmt_nth(4, data); + pmt_t channel = pmt_nth(4, data); + pmt_t properties = pmt_nth(5, data); d_samples_recvd += pmt_length(v_samples) / 4; @@ -325,9 +334,7 @@ void test_usrp_rx::enter_closing_channel() { d_state = CLOSING_CHANNEL; - - sleep(2); - + d_rx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_rx_chan)); if(verbose) @@ -342,10 +349,9 @@ REGISTER_MBLOCK_CLASS(test_usrp_rx); int main (int argc, char **argv) { - // handle any command line args here - mb_runtime_sptr rt = mb_make_runtime(); pmt_t result = PMT_NIL; rt->run("top", "test_usrp_rx", PMT_F, &result); + } diff --git a/usrp/host/apps-inband/test_usrp_inband_timestamps.cc b/usrp/host/apps-inband/test_usrp_inband_timestamps.cc index 8824a72f..297c7126 100644 --- a/usrp/host/apps-inband/test_usrp_inband_timestamps.cc +++ b/usrp/host/apps-inband/test_usrp_inband_timestamps.cc @@ -147,7 +147,7 @@ test_usrp_inband_timestamps::test_usrp_inband_timestamps(mb_runtime *runtime, co // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("tmac5.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); define_component("server", "usrp_server", usrp_dict); diff --git a/usrp/host/apps-inband/test_usrp_inband_tx.cc b/usrp/host/apps-inband/test_usrp_inband_tx.cc index 7118d2d0..7f894a4c 100644 --- a/usrp/host/apps-inband/test_usrp_inband_tx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_tx.cc @@ -42,7 +42,7 @@ #include #include -static bool verbose = false; +static bool verbose = true; class test_usrp_tx : public mb_mblock { @@ -89,11 +89,9 @@ class test_usrp_tx : public mb_mblock test_usrp_tx::test_usrp_tx(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) : mb_mblock(runtime, instance_name, user_arg), - d_state(INIT), d_nsamples_to_send((long) 40e6), + d_state(INIT), d_nsamples_to_send((long) 80e6), d_nsamples_xmitted(0), d_nframes_xmitted(0), - //d_samples_per_frame((long)(126)), - //d_samples_per_frame((long)(126 * 3.5)), // non-full packet d_samples_per_frame((long)(126 * 4)), // full packet d_done_sending(false), d_amplitude(16384) @@ -119,17 +117,13 @@ test_usrp_tx::test_usrp_tx(mb_runtime *runtime, const std::string &instance_name // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("cs1.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); // Set TX and RX interpolations pmt_dict_set(usrp_dict, pmt_intern("interp-tx"), - pmt_from_long(128)); + pmt_from_long(64)); - pmt_dict_set(usrp_dict, - pmt_intern("decim-rx"), - pmt_from_long(16)); - pmt_dict_set(usrp_dict, pmt_intern("rf-freq"), pmt_from_long(10e6)); @@ -176,12 +170,12 @@ test_usrp_tx::handle_message(mb_message_sptr msg) if (pmt_eq(event, s_response_open)){ status = pmt_nth(1, data); if (pmt_eq(status, PMT_T)){ - allocate_channel(); - return; + allocate_channel(); + return; } else { - error_msg = "failed to open usrp:"; - goto bail; + error_msg = "failed to open usrp:"; + goto bail; } } goto unhandled; @@ -192,12 +186,12 @@ test_usrp_tx::handle_message(mb_message_sptr msg) d_tx_chan = pmt_nth(2, data); if (pmt_eq(status, PMT_T)){ - enter_transmitting(); - return; + enter_transmitting(); + return; } else { - error_msg = "failed to allocate channel:"; - goto bail; + error_msg = "failed to allocate channel:"; + goto bail; } } goto unhandled; @@ -208,12 +202,12 @@ test_usrp_tx::handle_message(mb_message_sptr msg) status = pmt_nth(1, data); if (pmt_eq(status, PMT_T)){ - handle_xmit_response(handle); - return; + handle_xmit_response(handle); + return; } else { - error_msg = "bad response-xmit-raw-frame:"; - goto bail; + error_msg = "bad response-xmit-raw-frame:"; + goto bail; } } goto unhandled; @@ -223,12 +217,12 @@ test_usrp_tx::handle_message(mb_message_sptr msg) status = pmt_nth(1, data); if (pmt_eq(status, PMT_T)){ - close_usrp(); - return; + close_usrp(); + return; } else { - error_msg = "failed to deallocate channel:"; - goto bail; + error_msg = "failed to deallocate channel:"; + goto bail; } } goto unhandled; @@ -238,12 +232,12 @@ test_usrp_tx::handle_message(mb_message_sptr msg) status = pmt_nth(1, data); if (pmt_eq(status, PMT_T)){ - shutdown_all(PMT_T); - return; + shutdown_all(PMT_T); + return; } else { - error_msg = "failed to close USRP:"; - goto bail; + error_msg = "failed to close USRP:"; + goto bail; } } goto unhandled; @@ -272,6 +266,9 @@ test_usrp_tx::open_usrp() d_cs->send(s_cmd_open, pmt_list2(PMT_NIL, which_usrp)); d_state = OPENING_USRP; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Opening the USRP\n"; } void @@ -279,6 +276,9 @@ test_usrp_tx::close_usrp() { d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); d_state = CLOSING_USRP; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Closing the USRP\n"; } void @@ -287,6 +287,9 @@ test_usrp_tx::allocate_channel() long capacity = (long) 16e6; d_tx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(capacity))); d_state = ALLOCATING_CHANNEL; + + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Requesting TX channel allocation\n"; } void @@ -295,15 +298,9 @@ test_usrp_tx::enter_transmitting() d_state = TRANSMITTING; d_nsamples_xmitted = 0; - // FIXME: carrier sense hack - d_tx->send(s_cmd_to_control_channel, // C/S packet - pmt_list2(PMT_NIL, // invoc handle - pmt_list1( - pmt_list2(s_op_write_reg, - pmt_list2( - pmt_from_long(1), - pmt_from_long(21)))))); - + if(verbose) + std::cout << "[TEST_USRP_INBAND_TX] Transmitting...\n"; + build_and_send_next_frame(); // fire off 4 to start pipeline build_and_send_next_frame(); build_and_send_next_frame(); @@ -356,9 +353,6 @@ test_usrp_tx::build_and_send_next_frame() } pmt_t tx_properties = pmt_make_dict(); - pmt_dict_set(tx_properties, - pmt_intern("carrier-sense"), - PMT_T); pmt_t timestamp = pmt_from_long(0xffffffff); // NOW d_tx->send(s_cmd_xmit_raw_frame, @@ -371,7 +365,7 @@ test_usrp_tx::build_and_send_next_frame() d_nsamples_xmitted += nsamples_this_frame; d_nframes_xmitted++; - if(verbose) + if(verbose && 0) std::cout << "[TEST_USRP_INBAND_TX] Transmitted frame\n"; } @@ -394,6 +388,9 @@ test_usrp_tx::enter_closing_channel() d_state = CLOSING_CHANNEL; d_tx->send(s_cmd_deallocate_channel, pmt_list2(PMT_NIL, d_tx_chan)); + + if(verbose) + std::cout << "[TEST_USRP_INBAND_tX] Deallocating TX channel\n"; } REGISTER_MBLOCK_CLASS(test_usrp_tx); diff --git a/usrp/host/apps-inband/test_usrp_inband_underrun.cc b/usrp/host/apps-inband/test_usrp_inband_underrun.cc index 0404208b..c9630cec 100644 --- a/usrp/host/apps-inband/test_usrp_inband_underrun.cc +++ b/usrp/host/apps-inband/test_usrp_inband_underrun.cc @@ -127,7 +127,7 @@ test_usrp_inband_underrun::test_usrp_inband_underrun(mb_runtime *runtime, const d_rx_chan(PMT_NIL), d_which_usrp(pmt_from_long(0)), d_state(INIT), - d_nsamples_to_send((long) 20e6), + d_nsamples_to_send((long) 27e6), d_nsamples_xmitted(0), d_nframes_xmitted(0), d_samples_per_frame(d_nsamples_to_send), // full packet @@ -143,12 +143,12 @@ test_usrp_inband_underrun::test_usrp_inband_underrun(mb_runtime *runtime, const // Specify the RBF to use pmt_dict_set(usrp_dict, pmt_intern("rbf"), - pmt_intern("nanocell9.rbf")); + pmt_intern("inband_1rxhb_1tx.rbf")); // Set TX and RX interpolations pmt_dict_set(usrp_dict, pmt_intern("interp-tx"), - pmt_from_long(8)); + pmt_from_long(64)); pmt_dict_set(usrp_dict, pmt_intern("decim-rx"), @@ -668,8 +668,6 @@ test_usrp_inband_underrun::closing_usrp() { d_state = CLOSING_USRP; - sleep(2); - d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); } diff --git a/usrp/host/lib/inband/Makefile.am b/usrp/host/lib/inband/Makefile.am index 77d1f669..a41ac18b 100644 --- a/usrp/host/lib/inband/Makefile.am +++ b/usrp/host/lib/inband/Makefile.am @@ -76,7 +76,6 @@ include_HEADERS = \ usrp_usb_interface.h noinst_HEADERS = \ - fake_usrp.h \ qa_inband.h \ qa_inband_packet_prims.h \ qa_inband_usrp_server.h \ @@ -109,14 +108,10 @@ libusrp_inband_qa_la_LIBADD = \ # ------------------------------------------------------------------------ noinst_PROGRAMS = \ - test_inband \ - test_usrp_inband + test_inband test_inband_SOURCES = test_inband.cc test_inband_LDADD = libusrp_inband-qa.la -test_usrp_inband_SOURCES = test_usrp_inband.cc -test_usrp_inband_LDADD = libusrp_inband-qa.la - MOSTLYCLEANFILES = \ $(BUILT_SOURCES) *~ *.pyc diff --git a/usrp/host/lib/inband/fake_usrp.cc b/usrp/host/lib/inband/fake_usrp.cc deleted file mode 100644 index 8a66d5c1..00000000 --- a/usrp/host/lib/inband/fake_usrp.cc +++ /dev/null @@ -1,135 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include - -typedef usrp_inband_usb_packet transport_pkt; // makes conversion to gigabit easy - -fake_usrp::fake_usrp() -{ - std::cout << "[fake_usrp] Initializing...\n"; -} - -fake_usrp::~fake_usrp() {} - -long -fake_usrp::write_bus(transport_pkt *pkts, long n_bytes) -{ - std::cout << "[fake_usrp] Bytes over bus: " << n_bytes << "\n"; - - // I'm assuming that a control packet cannot exist in a burst of data packets, - // therefore i read only the first packet's channel in the current burst - if(pkts[0].chan() == 0x1f) { - return control_block(pkts, n_bytes); - } else { - return data_block(pkts, n_bytes); - } - -} - -long -fake_usrp::data_block(transport_pkt *pkts, long n_bytes) -{ - std::cout << "[fake_usrp] Entering data block\n"; - - // Infer the number of packets from the byte count to do logical tests - long n_pkts = static_cast(std::ceil(n_bytes / (double)transport_pkt::max_pkt_size())); - - std::cout << "[fake_usrp] Number of packets: " << n_pkts << "\n"; - - // The first packet should have the start of burst, and the last packet should have end of burst - if(pkts[0].start_of_burst() && pkts[n_pkts-1].end_of_burst()) { - std::cout << "[fake_usrp] Correct burst flags set\n"; - } else { - std::cout << "[fake_usrp] Incorrect burst flags set!\n"; - return 0; - } - - // All other flags should be set to 0 (e.g., overrun should not be set yet) on ALL packets - for(int i=0; i < n_pkts; i++) { - if(pkts[i].overrun()) { - std::cout << "[fake_usrp] Incorrect set of overrun flag on transmit\n"; - return 0; - } else if(pkts[i].underrun()) { - std::cout << "[fake_usrp] Incorrect set of underrun flag on transmit\n"; - return 0; - } else if(pkts[i].dropped()) { - std::cout << "[fake_usrp] Incorrect set of drop flag on transmit\n"; - return 0; - } - } - std::cout << "[fake_usrp] Correct overrun, underrun, and drop flags on transmit (initialized to 0)\n"; - - // The first packet should have a timestamp, other packets should have "NOW" - if(pkts[0].timestamp() != 0xffffffff) { - std::cout << "[fake_usrp] Correct timestamp on first packet\n"; - } else { - std::cout << "[fake_usrp] Initial packet should not have the 0xffffffff timestamp\n"; - return 0; - } - - // Check that all of the other packets include the NOW timestamp - int check_stamps=1; - for(int i=1; i < n_pkts; i++) // start at 1 to skip the first packet - if(pkts[i].timestamp() != 0xffffffff) - check_stamps=0; - - if(check_stamps) { - std::cout << "[fake_usrp] Correct NOW timestamps (0xffffffff) on intermediate burst packets\n"; - } else { - std::cout << "[fake_usrp] Incorrect timestamps on intermediate burst packets\n"; - return 0; - } - - // Since we are being transparent about samples, we do not ensure the payload is correct, however - // it should be the case that if there are >1 packets, all packets except the last packet should - // have a full payload size - if(n_pkts > 1) { - int check_size=1; - for(int i=0; i < n_pkts-1; i++) - if(pkts[i].payload_len() != transport_pkt::max_payload()) - check_size=0; - - if(check_size) { - std::cout << "[fake_usrp] Correct payload size sanity check on packets\n"; - } else { - std::cout << "[fake_usrp] Failed payload size sanity check\n"; - return 0; - } - } - - return 1; -} - -long -fake_usrp::control_block(transport_pkt *pkts, long n_bytes) -{ - std::cout << "[fake_usrp] Entering control block\n"; - - return 1; -} diff --git a/usrp/host/lib/inband/fake_usrp.h b/usrp/host/lib/inband/fake_usrp.h deleted file mode 100644 index 818c5a50..00000000 --- a/usrp/host/lib/inband/fake_usrp.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_FAKE_USRP_H -#define INCLUDED_FAKE_USRP_H - -#include -typedef usrp_inband_usb_packet transport_pkt; - -/*! - * \brief Implements a fake USRP for testing without hardware - */ -class fake_usrp -{ - public: - fake_usrp(); - ~fake_usrp(); - long write_bus(transport_pkt *pkts, long n_bytes); - - protected: - long data_block(transport_pkt *pkts, long n_bytes); - long control_block(transport_pkt *pkts, long n_bytes); -}; - -#endif /* INCLUDED_FAKE_USRP_H */ - diff --git a/usrp/host/lib/inband/qa_inband_usrp_server.cc b/usrp/host/lib/inband/qa_inband_usrp_server.cc index b01e74e0..e457e8d6 100644 --- a/usrp/host/lib/inband/qa_inband_usrp_server.cc +++ b/usrp/host/lib/inband/qa_inband_usrp_server.cc @@ -46,6 +46,8 @@ typedef usrp_inband_usb_packet transport_pkt; // makes conversion to gigabit e static bool verbose = false; +static pmt_t s_timeout = pmt_intern("%timeout"); + // ---------------------------------------------------------------------------------------------- class qa_alloc_top : public mb_mblock @@ -903,10 +905,10 @@ class qa_rx_top : public mb_mblock long d_rx_chan; - long d_got_response_recv; + bool d_got_response_recv; - long d_nmsg_to_recv; - long d_nmsg_recvd; + mb_time d_t0; + double d_delta_t; public: qa_rx_top(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); @@ -927,18 +929,19 @@ qa_rx_top::qa_rx_top(mb_runtime *runtime, const std::string &instance_name, pmt_ d_got_response_recv(false) { - d_nmsg_to_recv=12; - d_nmsg_recvd=0; - d_rx = define_port("rx0", "usrp-rx", false, mb_port::INTERNAL); d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); // Use the stub with the usrp_server - pmt_t usrp_server_dict = pmt_make_dict(); - pmt_dict_set(usrp_server_dict, pmt_intern("fake-usrp"), PMT_T); + pmt_t usrp_dict = pmt_make_dict(); + // Set TX and RX interpolations + pmt_dict_set(usrp_dict, + pmt_intern("decim-rx"), + pmt_from_long(128)); + pmt_dict_set(usrp_dict, pmt_intern("fake-usrp"), PMT_T); // Test the TX side - define_component("server", "usrp_server", usrp_server_dict); + define_component("server", "usrp_server", usrp_dict); connect("self", "rx0", "server", "rx0"); connect("self", "cs", "server", "cs"); } @@ -967,17 +970,10 @@ qa_rx_top::run_tests() pmt_list2(PMT_NIL, pmt_from_long(0))); - // A small sleep is used to ensure, if working properly, a recv - // response comes through successfully before the close gets - // through - usleep(1000); - - d_rx->send(s_cmd_stop_recv_raw_samples, - pmt_list2(PMT_NIL, - pmt_from_long(0))); - - d_cs->send(s_cmd_close, pmt_list1(pmt_list2(s_response_close,PMT_T))); - + // Schedule a small timeout in which we expect to have received at least one + // packet worth of samples from the stub + d_t0 = mb_time::time(); + schedule_one_shot_timeout(d_t0 + 0.01, PMT_NIL); } @@ -992,26 +988,37 @@ qa_rx_top::handle_message(mb_message_sptr msg) pmt_t expected = pmt_nth(0, data); pmt_t status = pmt_nth(1, data); + + // If we get a timeout we shutdown + if(pmt_eq(event, s_timeout)) { + if(verbose) + std::cout << "[qa_rx_top] Got timeout\n"; + d_rx->send(s_cmd_stop_recv_raw_samples, + pmt_list2(PMT_NIL, + pmt_from_long(0))); + + d_cs->send(s_cmd_close, pmt_list1(pmt_list2(s_response_close,PMT_T))); + return; + } // For testing RX, an invocation handle is not generated by the stub, // therefore the same approach for testing is not used. We simply // expect all responses to be true. if(pmt_eq(event, s_response_recv_raw_samples)) { - if(!pmt_eqv(status, PMT_T)) { - if(verbose) - std::cout << "Got: " << status << " Expected: " << PMT_T << "\n"; - shutdown_all(PMT_F); - return; - } - else { + if(pmt_eqv(status, PMT_T)) { + if(verbose) std::cout << "[qa_rx_top] Received expected response for message " - << d_nmsg_recvd << " (" << event << ")\n"; // All we want is 1 response receive! Can't guarantee exact numbers d_got_response_recv = true; } + else { + if(verbose) + std::cout << "Got: " << status << " Expected: " << PMT_T << "\n"; + shutdown_all(PMT_F); + } return; } @@ -1026,8 +1033,7 @@ qa_rx_top::handle_message(mb_message_sptr msg) } else { if(verbose) std::cout << "[qa_rx_top] Received expected response for message " - << d_nmsg_recvd - << " (" << event << ")\n"; + << " (" << event << ")\n"; } if (pmt_eq(msg->port_id(), d_rx->port_symbol())) { @@ -1051,12 +1057,7 @@ qa_rx_top::handle_message(mb_message_sptr msg) std::cout << "[qa_rx_top] No response message before close\n"; return; } - } - - - d_nmsg_recvd++; - } @@ -1079,6 +1080,160 @@ qa_rx_top::check_allocation(mb_message_sptr msg) REGISTER_MBLOCK_CLASS(qa_rx_top); +// ---------------------------------------------------------------------------------------------- + +class qa_rid_top : public mb_mblock +{ + mb_port_sptr d_tx; + mb_port_sptr d_rx; + mb_port_sptr d_cs; + + long d_npongs; + long d_tcycles; + long d_cycles; + long d_max_rid; + + mb_time d_t0; + double d_delta_t; + + public: + qa_rid_top(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); + ~qa_rid_top(); + void initial_transition(); + void handle_message(mb_message_sptr msg); + + protected: + void run_tests(); + void send_max_pings(); +}; + +qa_rid_top::qa_rid_top(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) + : mb_mblock(runtime, instance_name, user_arg) +{ + d_npongs = 0; + d_tcycles = 3; + d_cycles = d_tcycles; + d_max_rid = usrp_server::D_MAX_RID; + d_delta_t = 0.1; + + + d_rx = define_port("rx0", "usrp-rx", false, mb_port::INTERNAL); + d_tx = define_port("tx0", "usrp-tx", false, mb_port::INTERNAL); + d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); + + // Use the stub with the usrp_server + pmt_t usrp_server_dict = pmt_make_dict(); + pmt_dict_set(usrp_server_dict, pmt_intern("fake-usrp"),PMT_T); + + // Test the TX side + define_component("server", "usrp_server", usrp_server_dict); + connect("self", "tx0", "server", "tx0"); + connect("self", "rx0", "server", "rx0"); + connect("self", "cs", "server", "cs"); + +} + +qa_rid_top::~qa_rid_top(){} + +void +qa_rid_top::initial_transition() +{ + run_tests(); +} + +void +qa_rid_top::run_tests() +{ + if(verbose) + std::cout << "[qa_rid_top] Starting tests...\n"; + + // Retrieve information about the USRP, then run tests + d_cs->send(s_cmd_open, + pmt_list2(pmt_list2(s_response_open, PMT_T), + pmt_from_long(0))); + + // should be able to allocate 1 byte + d_tx->send(s_cmd_allocate_channel, + pmt_list2(pmt_list2(s_response_allocate_channel, PMT_T), + pmt_from_long(1))); + + d_rx->send(s_cmd_allocate_channel, + pmt_list2(pmt_list2(s_response_allocate_channel, PMT_T), + pmt_from_long(1))); + + // Need to start receiving to read from the USRP to get C/S responses + d_rx->send(s_cmd_start_recv_raw_samples, + pmt_list2(PMT_NIL, + pmt_from_long(0))); + + // Build a subpacket of MAX_RID pings and wait a small amount for all of the + // responses and fire off another MAX_RID. If MAX_RID*2 responses are + // received, the RID recycling is working correctly. + // Schedule a timer in which we expect to have received all of the responses, + // which will send off another MAX_RID worth. + send_max_pings(); + d_t0 = mb_time::time(); + schedule_one_shot_timeout(d_t0 + d_delta_t, PMT_NIL); +} + +void +qa_rid_top::send_max_pings() +{ + pmt_t ping = pmt_list2(s_op_ping_fixed, + pmt_list2(pmt_from_long(0), + pmt_from_long(0))); + + pmt_t sub_packets = PMT_NIL; + + for(int i=0; isend(s_cmd_to_control_channel, + pmt_list2(pmt_list2(s_response_from_control_channel, PMT_T), + sub_packets)); +} + +void +qa_rid_top::handle_message(mb_message_sptr msg) +{ + pmt_t data = msg->data(); + pmt_t event = msg->signal(); + + // If we get a timeout we ensure we got a maximum RID number of responses. + if(pmt_eq(event, s_timeout)) { + if(verbose) + std::cout << "[qa_rid_top] Got timeout, received so far: " + << d_npongs << "\n"; + + d_cycles--; + + if(d_cycles==0 && d_npongs == d_max_rid*d_tcycles) { + shutdown_all(PMT_T); + } + else if(d_cycles==0) { + + std::cout << "[qa_rid_top] d_npongs: " << d_npongs + << " expected: " << d_max_rid*d_tcycles + << std::endl; + + shutdown_all(PMT_F); + } + else { + send_max_pings(); + d_t0 = mb_time::time(); + schedule_one_shot_timeout(d_t0 + d_delta_t, PMT_NIL); + } + + } + else if(pmt_eq(event, s_response_from_control_channel)) + { + d_npongs++; + } + +} + +REGISTER_MBLOCK_CLASS(qa_rid_top); + // ---------------------------------------------------------------------------------------------- @@ -1398,3 +1553,17 @@ qa_inband_usrp_server::test_cs() CPPUNIT_ASSERT(pmt_equal(PMT_T, result)); } + +void +qa_inband_usrp_server::test_rid() +{ + mb_runtime_sptr rt = mb_make_runtime(); + pmt_t result = PMT_T; + + // std::cout << "\n\n-----------------\n"; + // std::cout << " RUNNING RID TESTS \n"; + + rt->run("top", "qa_rid_top", PMT_F, &result); + + CPPUNIT_ASSERT(pmt_equal(PMT_T, result)); +} diff --git a/usrp/host/lib/inband/qa_inband_usrp_server.h b/usrp/host/lib/inband/qa_inband_usrp_server.h index 5db57c3e..52a4a0b0 100644 --- a/usrp/host/lib/inband/qa_inband_usrp_server.h +++ b/usrp/host/lib/inband/qa_inband_usrp_server.h @@ -34,6 +34,7 @@ class qa_inband_usrp_server : public CppUnit::TestCase { CPPUNIT_TEST(test_tx); CPPUNIT_TEST(test_rx); CPPUNIT_TEST(test_cs); + CPPUNIT_TEST(test_rid); CPPUNIT_TEST_SUITE_END(); private: @@ -43,6 +44,7 @@ class qa_inband_usrp_server : public CppUnit::TestCase { void test_tx(); void test_rx(); void test_cs(); + void test_rid(); }; #endif /* INCLUDED_QA_INBAND_USRP_SERVER_H */ diff --git a/usrp/host/lib/inband/test_usrp_inband.cc b/usrp/host/lib/inband/test_usrp_inband.cc deleted file mode 100644 index 64fbf3a9..00000000 --- a/usrp/host/lib/inband/test_usrp_inband.cc +++ /dev/null @@ -1,298 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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, or (at your option) - * any later version. - * - * GNU Radio 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "usrp_standard.h" - -typedef usrp_inband_usb_packet transport_pkt; - -// Signal set for the USRP server -static pmt_t s_cmd_open = pmt_intern("cmd-open"); -static pmt_t s_response_open = pmt_intern("response-open"); -static pmt_t s_cmd_close = pmt_intern("cmd-close"); -static pmt_t s_response_close = pmt_intern("response-close"); -static pmt_t s_cmd_allocate_channel = pmt_intern("cmd-allocate-channel"); -static pmt_t s_response_allocate_channel = pmt_intern("response-allocate-channel"); -static pmt_t s_send_allocate_channel = pmt_intern("send-allocate-channel"); -static pmt_t s_cmd_deallocate_channel = pmt_intern("cmd-deallocate-channel"); -static pmt_t s_response_deallocate_channel = pmt_intern("response-deallocate-channel"); -static pmt_t s_send_deallocate_channel = pmt_intern("send-deallocate-channel"); -static pmt_t s_cmd_max_capacity = pmt_intern("cmd-max-capacity"); -static pmt_t s_response_max_capacity = pmt_intern("response-max-capacity"); -static pmt_t s_cmd_ntx_chan = pmt_intern("cmd-ntx-chan"); -static pmt_t s_cmd_nrx_chan = pmt_intern("cmd-nrx-chan"); -static pmt_t s_response_ntx_chan = pmt_intern("response-ntx-chan"); -static pmt_t s_response_nrx_chan = pmt_intern("response-nrx-chan"); -static pmt_t s_cmd_current_capacity_allocation = pmt_intern("cmd-current-capacity-allocation"); -static pmt_t s_response_current_capacity_allocation = pmt_intern("response-current-capacity-allocation"); -static pmt_t s_cmd_xmit_raw_frame = pmt_intern("cmd-xmit-raw-frame"); -static pmt_t s_response_xmit_raw_frame = pmt_intern("response-xmit-raw-frame"); - -bool loopback_p = false; -bool counting_p = false; -bool fake_usrp_p = false; -char *prog_name; - -static void -set_progname (char *path) -{ - char *p = strrchr (path, '/'); - if (p != 0) - prog_name = p+1; - else - prog_name = path; -} - -static void -usage() -{ - fprintf (stderr, "usage: %s [-l]\n", prog_name); - fprintf (stderr, " [-l] digital loopback in FPGA\n"); - fprintf (stderr, " [-c] counting in FPGA\n"); - fprintf (stderr, " [-f] fake usrp\n"); - - exit(1); -} - -int -main(int argc, char **argv) -{ - int ch; - - set_progname(argv[0]); - - mb_runtime_sptr rt = mb_make_runtime(); - pmt_t result = PMT_T; - - while ((ch = getopt(argc, argv, "flc")) != EOF) { - switch(ch) { - - case 'l': - loopback_p = true; - break; - - case 'c': - counting_p = true; - break; - - case 'f': - fake_usrp_p = true; - break; - - default: - usage(); - } - } - - - std::cout << "[test_usrp_inband] Starting...\n"; - - rt->run("top", "test_usrp_inband_top", PMT_F, &result); -} - -class test_usrp_inband_top : public mb_mblock -{ - mb_port_sptr d_tx; - mb_port_sptr d_cs; - - long d_tx_chan; - - public: - test_usrp_inband_top(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg); - ~test_usrp_inband_top(); - void initial_transition(); - void handle_message(mb_message_sptr msg); - - protected: - void open_usrp(); - void close_usrp(); - void check_message(mb_message_sptr msg); - void allocate_channel(); - void send_packets(); -}; - -test_usrp_inband_top::test_usrp_inband_top(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg) - : mb_mblock(runtime, instance_name, user_arg) -{ - std::cout << "[TEST_USRP_INBAND_TOP] Initializing...\n"; - - d_tx = define_port("tx0", "usrp-tx", false, mb_port::INTERNAL); - d_cs = define_port("cs", "usrp-server-cs", false, mb_port::INTERNAL); - - // Test the TX side - - // Pass a dictionary to usrp_server which specifies which interface to use, the stub or USRP - pmt_t usrp_server_dict = pmt_make_dict(); - - if(fake_usrp_p) - pmt_dict_set(usrp_server_dict, pmt_intern("usrp-interface"), pmt_intern("usrp_usb_interface_stub")); - - define_component("server", "usrp_server", usrp_server_dict); - connect("self", "tx0", "server", "tx0"); - connect("self", "cs", "server", "cs"); -} - -test_usrp_inband_top::~test_usrp_inband_top() -{ -} - -void -test_usrp_inband_top::initial_transition() -{ - open_usrp(); -} - -void -test_usrp_inband_top::handle_message(mb_message_sptr msg) -{ - pmt_t event = msg->signal(); // the "name" of the message - pmt_t port_id = msg->port_id(); // which port it came in on - pmt_t data = msg->data(); - pmt_t metadata = msg->metadata(); - pmt_t status; - - if (pmt_eq(port_id, d_cs->port_symbol())) { // message came in on our control/status port - - //---------- OPEN RESPONSE ----------// - if (pmt_eq(event, s_response_open)) { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - std::cout << "[TEST_USRP_INBAND_TOP] Success opening USRP\n"; - } - else { - std::cout << "[TEST_USRP_INBAND_TOP] Received error message opening USRP\n"; - shutdown_all(PMT_F); - } - - allocate_channel(); - - return; - } - //--------- CLOSE RESPONSE -----------// - else if (pmt_eq(event, s_response_close)) { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - std::cout << "[TEST_USRP_INBAND_TOP] Successfully closed USRP\n"; - } - else { - std::cout << "[TEST_USRP_INBAND_TOP] Received error message closing USRP\n"; - shutdown_all(PMT_F); - } - - shutdown_all(PMT_T); - - return; - } - } - - if (pmt_eq(port_id, d_tx->port_symbol())) { - - //---------- ALLOCATE RESPONSE ---------// - if(pmt_eq(event, s_response_allocate_channel)) { - status = pmt_nth(1, data); - pmt_t channel = pmt_nth(2, data); - - if(pmt_eq(status, PMT_T)) { - d_tx_chan = pmt_to_long(channel); - std::cout << "[TEST_USRP_INBAND_TOP] Received allocation on channel " << d_tx_chan << "\n"; - } - else { - std::cout << "[TEST_USRP_INBAND_TOP] Error allocating channel\n"; - shutdown_all(PMT_F); - } - - send_packets(); - - return; - } - //----------- XMIT RESPONSE ------------// - else if(pmt_eq(event, s_response_xmit_raw_frame)) { - status = pmt_nth(1, data); - - if(pmt_eq(status, PMT_T)) { - std::cout << "[TEST_USRP_INBAND_TOP] Transmission successful\n"; - } - else { - std::cout << "[TEST_USRP_INBAND_TOP] Failed transmission\n"; - shutdown_all(PMT_F); - } - - close_usrp(); - - return; - } - } - - std::cout << "[TEST_USRP_INBAND_TOP] Received unhandled message: " << event << "\n"; -} - -void -test_usrp_inband_top::allocate_channel() -{ - std::cout << "[TEST_USRP_INBAND_TOP] Requesting channel allocation...\n"; - - d_tx->send(s_cmd_allocate_channel, pmt_list2(PMT_T, pmt_from_long(1))); -} - -void -test_usrp_inband_top::send_packets() -{ - std::cout << "[TEST_USRP_INBAND_TOP] Sending single packet..\n"; - d_tx->send(s_cmd_xmit_raw_frame, pmt_list4(pmt_from_long(1), pmt_from_long(d_tx_chan), pmt_make_u32vector(transport_pkt::max_payload()/4, 0), pmt_from_long(0))); - -} - -void -test_usrp_inband_top::open_usrp() -{ - pmt_t usrp = pmt_from_long(0); - - long rx_mode = 0; - - if(loopback_p) - rx_mode |= usrp_standard_rx::FPGA_MODE_LOOPBACK; - if(counting_p) - rx_mode |= usrp_standard_rx::FPGA_MODE_COUNTING; - - d_cs->send(s_cmd_open, pmt_list2(PMT_NIL, usrp)); -} - -void -test_usrp_inband_top::close_usrp() -{ - d_cs->send(s_cmd_close, pmt_list1(PMT_NIL)); -} - -REGISTER_MBLOCK_CLASS(test_usrp_inband_top); diff --git a/usrp/host/lib/inband/usrp_inband_usb_packet.cc b/usrp/host/lib/inband/usrp_inband_usb_packet.cc index ee4cb22f..2f02ecc3 100644 --- a/usrp/host/lib/inband/usrp_inband_usb_packet.cc +++ b/usrp/host/lib/inband/usrp_inband_usb_packet.cc @@ -30,6 +30,14 @@ #include #include +/*! + * \brief Aligns the packet payload on a 32 bit boundary. This is essential to + * all control/status packets so that the inband FPGA code can parse them + * easily. + * + * \returns true if successful or if the packet was already aligned; false if it + * cannot be aligned. + */ bool usrp_inband_usb_packet::align32() { int p_len = payload_len(); @@ -44,18 +52,20 @@ bool usrp_inband_usb_packet::align32() if((MAX_PAYLOAD - p_len) < bytes_needed) return false; - p_len += bytes_needed; - - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = p_len; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(bytes_needed); return true; } +/*! + * \brief Adds a ping command to the current control packet. + * + * The \p rid is the rid to be associated with the ping response and \p ping_val + * is currently unused. + * + * \returns true if adding the ping command was successful, false otherwise + * (i.e. no space in the current packet). + */ bool usrp_inband_usb_packet::cs_ping(long rid, long ping_val) { if(!align32()) @@ -78,17 +88,20 @@ bool usrp_inband_usb_packet::cs_ping(long rid, long ping_val) *payload = host_to_usrp_u32(ping); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_PING_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_PING_LEN); return true; } - +/*! + * \brief Adds a ping response to the packet. This is used by the fake USRP + * code to generate fake responses for pings. + * + * The \p rid is the RID to be associated with the response and \p ping_val is + * currently unused. + * + * \returns true if the ping reply was added successfully, false otherwise. + */ bool usrp_inband_usb_packet::cs_ping_reply(long rid, long ping_val) { if(!align32()) @@ -111,16 +124,20 @@ bool usrp_inband_usb_packet::cs_ping_reply(long rid, long ping_val) *payload = host_to_usrp_u32(ping); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_PING_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_PING_LEN); return true; } +/*! + * \brief Adds a write register command to the packet. + * + * The \p reg_num is the register number for which the value \p val will be + * written to. + * + * \returns true if the command was added to the packet successfully, false + * otherwise. + */ bool usrp_inband_usb_packet::cs_write_reg(long reg_num, long val) { if(!align32()) @@ -149,16 +166,19 @@ bool usrp_inband_usb_packet::cs_write_reg(long reg_num, long val) *payload = host_to_usrp_u32((uint32_t) val); // Rebuild the header to update the payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_WRITEREG_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_WRITEREG_LEN); return true; } +/*! + * \brief Adds a write register masked command to the packet. + * + * The \p reg_num is the register number for which the value \p val will be + * written, masked by \p mask + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_write_reg_masked(long reg_num, long val, long mask) { if(!align32()) @@ -190,16 +210,19 @@ bool usrp_inband_usb_packet::cs_write_reg_masked(long reg_num, long val, long ma *payload = host_to_usrp_u32((uint32_t) mask); // Rebuild the header to update the payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_WRITEREGMASKED_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_WRITEREGMASKED_LEN); return true; } +/*! + * \brief Adds a read register message to the packet. + * + * The \p rid will be the associated RID returned with the response, and \p + * reg_num is the register to be read. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_read_reg(long rid, long reg_num) { if(!align32()) @@ -222,16 +245,22 @@ bool usrp_inband_usb_packet::cs_read_reg(long rid, long reg_num) *payload = host_to_usrp_u32(read_reg); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_READREG_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_READREG_LEN); return true; } +/*! + * \brief Adds a read register reply response to the current packet. This is + * used by the fake USRP code to generate fake register read responses for + * testing. + * + * The \p rid is the associated RID to be included in the response, \p reg_num + * is the register the read is coming from, and \p reg_val is the value of the + * read. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_read_reg_reply(long rid, long reg_num, long reg_val) { if(!align32()) @@ -258,16 +287,19 @@ bool usrp_inband_usb_packet::cs_read_reg_reply(long rid, long reg_num, long reg_ *payload = host_to_usrp_u32((uint32_t) reg_val); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_READREGREPLY_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_READREGREPLY_LEN); return true; } +/*! + * \brief Adds a delay command to the current packet. + * + * The \p ticks parameter is the number of clock ticks the FPGA should delay + * parsing for, which is added to the packet. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_delay(long ticks) { if(!align32()) @@ -289,16 +321,16 @@ bool usrp_inband_usb_packet::cs_delay(long ticks) *payload = host_to_usrp_u32(delay); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_DELAY_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_DELAY_LEN); return true; } +/*! + * \brief + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_i2c_write(long i2c_addr, uint8_t *i2c_data, size_t data_len) { if(!align32()) @@ -328,16 +360,20 @@ bool usrp_inband_usb_packet::cs_i2c_write(long i2c_addr, uint8_t *i2c_data, size memcpy(payload, i2c_data, data_len); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + i2c_len; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + i2c_len); return true; } +/*! + * \brief Adds an I2C read command to the current packet. + * + * The \p rid is the associated RID to return with the read response, \p + * i2c_addr is the address to read from on the I2C bus, and \p n_bytes is the + * number of bytes to be read from the bus. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_i2c_read(long rid, long i2c_addr, long n_bytes) { if(!align32()) @@ -367,16 +403,20 @@ bool usrp_inband_usb_packet::cs_i2c_read(long rid, long i2c_addr, long n_bytes) *payload = host_to_usrp_u32(word1); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_I2CREAD_LEN; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + CS_I2CREAD_LEN); return true; } +/*! + * \brief Adds an I2C read reply response to the current packet. This is used + * by the fake USRP code to generate fake I2C responses. + * + * The \p rid is the RID to be associated with the response, \p i2c_addr is the + * address on the I2C bus that the \p i2c_data of \p i2c_data_len was read from. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_i2c_read_reply(long rid, long i2c_addr, uint8_t *i2c_data, long i2c_data_len) { if(!align32()) @@ -406,16 +446,16 @@ bool usrp_inband_usb_packet::cs_i2c_read_reply(long rid, long i2c_addr, uint8_t memcpy(payload, i2c_data, i2c_data_len); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + i2c_len; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + i2c_len); return true; } +/*! + * \brief Adds a SPI write command to the current packet. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_spi_write(long enables, long format, long opt_header_bytes, uint8_t *spi_data, long spi_data_len) { if(!align32()) @@ -454,16 +494,16 @@ bool usrp_inband_usb_packet::cs_spi_write(long enables, long format, long opt_he memcpy(payload, spi_data, spi_data_len); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + spi_len; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + spi_len); return true; } +/*! + * \brief Adds a SPI bus read command to the packet. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_spi_read(long rid, long enables, long format, long opt_header_bytes, long n_bytes) { if(!align32()) @@ -508,16 +548,17 @@ bool usrp_inband_usb_packet::cs_spi_read(long rid, long enables, long format, lo *payload = host_to_usrp_u32(word); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + CS_SPIREAD_LEN; + incr_header_len(CS_FIXED_LEN + CS_SPIREAD_LEN); - set_header(h_flags, h_chan, h_tag, h_payload_len); - return true; } +/*! + * \brief Adds an SPI read reply to the current packet. This is used by the + * fake USRP code to generate fake responses for SPI reads. + * + * \returns true if the command was added to the packet, false otherwise. + */ bool usrp_inband_usb_packet::cs_spi_read_reply(long rid, uint8_t *spi_data, long spi_data_len) { if(!align32()) @@ -546,30 +587,32 @@ bool usrp_inband_usb_packet::cs_spi_read_reply(long rid, uint8_t *spi_data, long memcpy(payload, spi_data, spi_data_len); // Update payload length - int h_flags = flags(); - int h_chan = chan(); - int h_tag = tag(); - int h_payload_len = payload_len() + CS_FIXED_LEN + spi_len; - - set_header(h_flags, h_chan, h_tag, h_payload_len); + incr_header_len(CS_FIXED_LEN + spi_len); return true; } -// Takes an offset to the beginning of a subpacket and extracts the -// length of the subpacket +/*! + * \brief Since all control packets contain subpackets which have the length of + * the subpacket at a uniform location in the subpacket, this will return the + * subpacket length given a byte offset of the start of the subpacket from the beginning of the packet. + * + * \returns the length of the subpacket + */ int usrp_inband_usb_packet::cs_len(int payload_offset) { uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)(d_payload + payload_offset))); return (subpkt >> CS_LEN_SHIFT) & CS_LEN_MASK; } -// The following method takes an offset within the packet payload to extract -// a control/status subpacket and construct a pmt response which includes the -// proper signal and arguments specified by usrp-low-level-cs. The USRP -// server could therefore use this to read subpackets and pass them responses -// back up to the application. It's arguable that only reply packets should -// be parsed here, however we parse others for use in debugging or failure -// reporting on the transmit side of packets. +/*! + * \brief The following method takes an offset within the packet payload to + * extract a control/status subpacket and constructs a pmt response which + * includes the proper signal and arguments specified by usrp-low-level-cs. The + * USRP server could therefore use this to read subpackets and pass them + * responses back up to the application. It's arguable that only reply packets + * should be parsed here, however we parse others for use in debugging or + * failure reporting on the transmit side of packets. + */ pmt_t usrp_inband_usb_packet::read_subpacket(int payload_offset) { uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)(d_payload + payload_offset))); diff --git a/usrp/host/lib/inband/usrp_inband_usb_packet.h b/usrp/host/lib/inband/usrp_inband_usb_packet.h index 8c19b1ae..8f59d1b6 100644 --- a/usrp/host/lib/inband/usrp_inband_usb_packet.h +++ b/usrp/host/lib/inband/usrp_inband_usb_packet.h @@ -31,6 +31,7 @@ static const int USB_PKT_SIZE = 512; // bytes static const int MAX_PAYLOAD = USB_PKT_SIZE-2*sizeof(uint32_t); +static const int CONTROL_CHAN = 0x1f; class usrp_inband_usb_packet { // @@ -150,6 +151,10 @@ public: | ((payload_len & PAYLOAD_LEN_MASK) << PAYLOAD_LEN_SHIFT)); d_word0 = host_to_usrp_u32(word0); } + + void incr_header_len(int val) { + set_header(flags(), chan(), tag(), payload_len() + val); + } uint32_t timestamp() const { return usrp_to_host_u32(d_timestamp); diff --git a/usrp/host/lib/inband/usrp_rx.cc b/usrp/host/lib/inband/usrp_rx.cc index caa2d717..71c042a5 100644 --- a/usrp/host/lib/inband/usrp_rx.cc +++ b/usrp/host/lib/inband/usrp_rx.cc @@ -40,25 +40,30 @@ typedef usrp_inband_usb_packet transport_pkt; static const bool verbose = false; +bool usrp_rx_stop; + usrp_rx::usrp_rx(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg) : mb_mblock(rt, instance_name, user_arg), - d_disk_write(false) + d_disk_write(false), + d_disk_write_pkt(false) // if true, writes full packet, else just the payload { d_cs = define_port("cs", "usrp-rx-cs", true, mb_port::EXTERNAL); - //d_disk_write=true; - if(d_disk_write) { - d_ofile.open("rx_data.dat",std::ios::binary|std::ios::out); + d_ofile0.open("rx_data_chan0.dat",std::ios::binary|std::ios::out); + d_ofile1.open("rx_data_chan1.dat",std::ios::binary|std::ios::out); d_cs_ofile.open("rx_cs.dat",std::ios::binary|std::ios::out); } + + usrp_rx_stop = false; } usrp_rx::~usrp_rx() { if(d_disk_write) { - d_ofile.close(); + d_ofile0.close(); + d_ofile1.close(); d_cs_ofile.close(); } } @@ -69,6 +74,12 @@ usrp_rx::initial_transition() } +/*! + * \brief Handles incoming signals to to the m-block, wihch should only ever be + * a single message: cmd-usrrp-rx-start-reading. There is no signal to stop + * reading as the m-block goes in to a forever loop to read inband packets from + * the bus. + */ void usrp_rx::handle_message(mb_message_sptr msg) { @@ -85,6 +96,17 @@ usrp_rx::handle_message(mb_message_sptr msg) } } +/*! + * \brief Performs the actual reading of data from the USB bus, called by + * handle_message() when a cmd-usrp-rx-start-reading signal is received. + * + * The method enters a forever loop where it continues to read data from the bus + * and generate read responses to the higher layer. Currently, shared memory is + * used to exit this loop. + * + * The \p data parameter is a PMT list which contains only a single element, an + * invocation handle which will be returned with all read respones. + */ void usrp_rx::read_and_respond(pmt_t data) { @@ -104,7 +126,7 @@ usrp_rx::read_and_respond(pmt_t data) std::cout << "[usrp_rx] Waiting for packets..\n"; // Read by 512 which is packet size and send them back up - while(1) { + while(!usrp_rx_stop) { pmt_t v_pkt = pmt_make_u8vector(pkt_size, 0); transport_pkt *pkt = @@ -124,19 +146,38 @@ usrp_rx::read_and_respond(pmt_t data) d_cs->send(s_response_usrp_rx_read, pmt_list3(PMT_NIL, PMT_T, v_pkt)); - if(verbose) + if(verbose && 0) std::cout << "[usrp_rx] Read 1 packet\n"; if(d_disk_write) { - if(pkt->chan() == 0x1f) + if(pkt->chan() == CONTROL_CHAN) d_cs_ofile.write((const char *)pkt, transport_pkt::max_pkt_size()); - else - d_ofile.write((const char *)pkt, transport_pkt::max_pkt_size()); + else { + if(d_disk_write_pkt) { + if(pkt->chan() == 0) + d_ofile0.write((const char *)pkt, transport_pkt::max_pkt_size()); + else if(pkt->chan() == 1) + d_ofile1.write((const char *)pkt, transport_pkt::max_pkt_size()); + } else { + if(pkt->chan() == 0) + d_ofile0.write((const char *)pkt->payload(), transport_pkt::max_payload()); + else if(pkt->chan() == 1) + d_ofile1.write((const char *)pkt->payload(), transport_pkt::max_payload()); + } + } d_cs_ofile.flush(); - d_ofile.flush(); + d_ofile0.flush(); + d_ofile1.flush(); } } + + usrp_rx_stop = false; + + if(verbose) { + std::cout << "[USRP_RX] Stopping...\n"; + fflush(stdout); + } } REGISTER_MBLOCK_CLASS(usrp_rx); diff --git a/usrp/host/lib/inband/usrp_rx.h b/usrp/host/lib/inband/usrp_rx.h index e1a90a78..10104bd6 100644 --- a/usrp/host/lib/inband/usrp_rx.h +++ b/usrp/host/lib/inband/usrp_rx.h @@ -26,6 +26,8 @@ class usrp_standard_rx; +extern bool usrp_rx_stop; // used to communicate a 'stop' to the RX stub + /*! * \brief Implements the low level usb interface to the USRP */ @@ -35,7 +37,9 @@ class usrp_rx : public mb_mblock usrp_standard_rx *d_urx; bool d_disk_write; - std::ofstream d_ofile; + bool d_disk_write_pkt; + std::ofstream d_ofile0; + std::ofstream d_ofile1; std::ofstream d_cs_ofile; public: diff --git a/usrp/host/lib/inband/usrp_rx_stub.cc b/usrp/host/lib/inband/usrp_rx_stub.cc index 4bdb106b..1c96b7a7 100644 --- a/usrp/host/lib/inband/usrp_rx_stub.cc +++ b/usrp/host/lib/inband/usrp_rx_stub.cc @@ -43,7 +43,7 @@ typedef usrp_inband_usb_packet transport_pkt; static const bool verbose = false; -bool usrp_rx_stop; +bool usrp_rx_stop_stub; // Used for the fake control packet response code to send the responses back up // the RX. The TX stub dumps responses in to this queue. @@ -52,15 +52,32 @@ std::queue d_cs_queue; usrp_rx_stub::usrp_rx_stub(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg) : mb_mblock(rt, instance_name, user_arg), d_samples_per_frame((long)(126)), + d_decim_rx(128), d_amplitude(16384), d_disk_write(false) { + + // Information about the rates are passed all the way from the app in the form + // of a dictionary. We use this to read the RX decimation rate and compute + // the approximate number of MS/s as a form of flow control for the stub. + pmt_t usrp_dict = user_arg; + + if (pmt_is_dict(usrp_dict)) { + // Read the RX decimation rate + if(pmt_t decim_rx = pmt_dict_ref(usrp_dict, + pmt_intern("decim-rx"), + PMT_NIL)) { + if(!pmt_eqv(decim_rx, PMT_NIL)) + d_decim_rx = pmt_to_long(decim_rx); + } + } + d_cs = define_port("cs", "usrp-rx-cs", true, mb_port::EXTERNAL); // initialize NCO double freq = 100e3; int interp = 32; // 32 -> 4MS/s - double sample_rate = 128e6 / interp; + double sample_rate = 64e6 / interp; d_nco.set_freq(2*M_PI * freq/sample_rate); //d_disk_write = true; @@ -68,7 +85,7 @@ usrp_rx_stub::usrp_rx_stub(mb_runtime *rt, const std::string &instance_name, pmt if(d_disk_write) d_ofile.open("raw_rx.dat",std::ios::binary|std::ios::out); - usrp_rx_stop = false; + usrp_rx_stop_stub = false; } usrp_rx_stub::~usrp_rx_stub() @@ -80,7 +97,6 @@ usrp_rx_stub::~usrp_rx_stub() void usrp_rx_stub::initial_transition() { - } void @@ -90,94 +106,121 @@ usrp_rx_stub::handle_message(mb_message_sptr msg) pmt_t port_id = msg->port_id(); pmt_t data = msg->data(); + if (pmt_eq(msg->signal(), s_timeout) + && !pmt_eq(msg->data(), s_done)) { + + if(!usrp_rx_stop_stub) + read_and_respond(); + else { // requested to stop + cancel_timeout(msg->metadata()); + usrp_rx_stop_stub=false; + if(verbose) + std::cout << "[USRP_RX_STUB] Stopping RX stub\n"; + } + + } + // Theoretically only have 1 message to ever expect, but // want to make sure its at least what we want - if(pmt_eq(port_id, d_cs->port_symbol())) { + if(pmt_eq(port_id, d_cs->port_symbol()) + && pmt_eqv(event, s_cmd_usrp_rx_start_reading)) { if(verbose) - std::cout << "[USRP_RX_STUB] Starting...\n"; + std::cout << "[USRP_RX_STUB] Starting with decim @ " + << d_decim_rx << std::endl; - if(pmt_eqv(event, s_cmd_usrp_rx_start_reading)) - read_and_respond(data); + start_packet_timer(); } } +// Setup a periodic timer which will drive packet generation void -usrp_rx_stub::read_and_respond(pmt_t data) +usrp_rx_stub::start_packet_timer() { + d_t0 = mb_time::time(); // current time + + // Calculate the inter-packet arrival time. + double samples_per_sec = (64.0/(double)d_decim_rx)*1000000.0; + double frames_per_sec = samples_per_sec / (double)d_samples_per_frame; + double frame_rate = 1.0 / frames_per_sec; + + if(verbose) { + std::cout << "[USRP_RX_STUB] Scheduling periodic packet generator\n"; + std::cout << "\tsamples_per_sec: " << samples_per_sec << std::endl; + std::cout << "\tframes_per_sec: " << frames_per_sec << std::endl; + std::cout << "\tframe_rate: " << frame_rate << std::endl; + } - while(!usrp_rx_stop) { + schedule_periodic_timeout(d_t0 + frame_rate, mb_time(frame_rate), PMT_T); +} - long nsamples_this_frame = d_samples_per_frame; +void +usrp_rx_stub::read_and_respond() +{ - size_t nshorts = 2 * nsamples_this_frame; // 16-bit I & Q - long channel = 0; - long n_bytes = nshorts*2; - pmt_t uvec = pmt_make_s16vector(nshorts, 0); - size_t ignore; - int16_t *samples = pmt_s16vector_writeable_elements(uvec, ignore); + long nsamples_this_frame = d_samples_per_frame; - // fill in the complex sinusoid + size_t nshorts = 2 * nsamples_this_frame; // 16-bit I & Q + long channel = 0; + long n_bytes = nshorts*2; + pmt_t uvec = pmt_make_s16vector(nshorts, 0); + size_t ignore; + int16_t *samples = pmt_s16vector_writeable_elements(uvec, ignore); - for (int i = 0; i < nsamples_this_frame; i++){ + // fill in the complex sinusoid - if (1){ - gr_complex s; - d_nco.sincos(&s, 1, d_amplitude); - // write 16-bit i & q - samples[2*i] = (int16_t) s.real(); - samples[2*i+1] = (int16_t) s.imag(); - } - else { - gr_complex s(d_amplitude, d_amplitude); + for (int i = 0; i < nsamples_this_frame; i++){ - // write 16-bit i & q - samples[2*i] = (int16_t) s.real(); - samples[2*i+1] = (int16_t) s.imag(); - } + if (1){ + gr_complex s; + d_nco.sincos(&s, 1, d_amplitude); + // write 16-bit i & q + samples[2*i] = (int16_t) s.real(); + samples[2*i+1] = (int16_t) s.imag(); } - - if(d_disk_write) - d_ofile.write((const char *)samples, n_bytes); - - pmt_t v_pkt = pmt_make_u8vector(sizeof(transport_pkt), 0); - transport_pkt *pkt = - (transport_pkt *) pmt_u8vector_writeable_elements(v_pkt, ignore); + else { + gr_complex s(d_amplitude, d_amplitude); - pkt->set_header(0, channel, 0, n_bytes); - pkt->set_timestamp(0xffffffff); - memcpy(pkt->payload(), samples, n_bytes); - - d_cs->send(s_response_usrp_rx_read, pmt_list3(PMT_NIL, PMT_T, v_pkt)); - - // Now lets check the shared CS queue between the TX and RX stub. Each - // element in a queue is a list where the first element is an invocation - // handle and the second element is a PMT u8 vect representation of the - // CS packet response which can just be passed transparently. - while(!d_cs_queue.empty()) { - - pmt_t cs_pkt = d_cs_queue.front(); - d_cs_queue.pop(); - - pmt_t invocation_handle = pmt_nth(0, cs_pkt); - pmt_t v_pkt = pmt_nth(1, cs_pkt); - - d_cs->send(s_response_usrp_rx_read, - pmt_list3(invocation_handle, - PMT_T, - v_pkt)); // Take the front CS pkt - - - if(verbose) - std::cout << "[USRP_RX_STUB] Received CS response from TX stub\n"; + // write 16-bit i & q + samples[2*i] = (int16_t) s.real(); + samples[2*i+1] = (int16_t) s.imag(); } - } - usrp_rx_stop = false; + if(d_disk_write) + d_ofile.write((const char *)samples, n_bytes); + + pmt_t v_pkt = pmt_make_u8vector(sizeof(transport_pkt), 0); + transport_pkt *pkt = + (transport_pkt *) pmt_u8vector_writeable_elements(v_pkt, ignore); + + pkt->set_header(0, channel, 0, n_bytes); + pkt->set_timestamp(0xffffffff); + memcpy(pkt->payload(), samples, n_bytes); + + d_cs->send(s_response_usrp_rx_read, pmt_list3(PMT_NIL, PMT_T, v_pkt)); - if(verbose) - std::cout << "[USRP_RX_STUB] Got fake RX stop\n"; + // Now lets check the shared CS queue between the TX and RX stub. Each + // element in a queue is a list where the first element is an invocation + // handle and the second element is a PMT u8 vect representation of the + // CS packet response which can just be passed transparently. + while(!d_cs_queue.empty()) { + + pmt_t cs_pkt = d_cs_queue.front(); + d_cs_queue.pop(); + + pmt_t invocation_handle = pmt_nth(0, cs_pkt); + pmt_t v_pkt = pmt_nth(1, cs_pkt); + + d_cs->send(s_response_usrp_rx_read, + pmt_list3(invocation_handle, + PMT_T, + v_pkt)); // Take the front CS pkt + + + if(verbose) + std::cout << "[USRP_RX_STUB] Received CS response from TX stub\n"; + } } diff --git a/usrp/host/lib/inband/usrp_rx_stub.h b/usrp/host/lib/inband/usrp_rx_stub.h index 5a75bf00..9cf308a9 100644 --- a/usrp/host/lib/inband/usrp_rx_stub.h +++ b/usrp/host/lib/inband/usrp_rx_stub.h @@ -31,9 +31,12 @@ typedef usrp_inband_usb_packet transport_pkt; -extern bool usrp_rx_stop; // used to communicate a 'stop' to the RX stub +extern bool usrp_rx_stop_stub; // used to communicate a 'stop' to the RX stub extern std::queue d_cs_queue; +static pmt_t s_timeout = pmt_intern("%timeout"); +static pmt_t s_done = pmt_intern("done"); + /*! * \brief Implements the low level usb interface to the USRP */ @@ -45,6 +48,10 @@ class usrp_rx_stub : public mb_mblock usrp_standard_rx* d_urx; long d_samples_per_frame; + long d_decim_rx; + + mb_time d_t0; + double d_delta_t; // for generating sine wave output ui_nco d_nco; @@ -61,8 +68,9 @@ class usrp_rx_stub : public mb_mblock void handle_message(mb_message_sptr msg); private: - void read_and_respond(pmt_t data); + void read_and_respond(); void read_data(); + void start_packet_timer(); }; diff --git a/usrp/host/lib/inband/usrp_server.cc b/usrp/host/lib/inband/usrp_server.cc index 1948a43b..6a3643e5 100644 --- a/usrp/host/lib/inband/usrp_server.cc +++ b/usrp/host/lib/inband/usrp_server.cc @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -53,13 +55,42 @@ str(long x) usrp_server::usrp_server(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg) : mb_mblock(rt, instance_name, user_arg), + d_fpga_debug(false), + d_interp_tx(128), // these should match the lower level defaults (rx also) + d_decim_rx(128), d_fake_rx(false) { if(verbose) std::cout << "[USRP_SERVER] Initializing...\n"; // Dictionary for arguments to all of the components - pmt_t usrp_dict = user_arg; + d_usrp_dict = user_arg; + + if (pmt_is_dict(d_usrp_dict)) { + + if(pmt_t fpga_debug = pmt_dict_ref(d_usrp_dict, + pmt_intern("fpga-debug"), + PMT_NIL)) { + if(pmt_eqv(fpga_debug, PMT_T)) + d_fpga_debug=true; + } + + // Read the TX interpolations + if(pmt_t interp_tx = pmt_dict_ref(d_usrp_dict, + pmt_intern("interp-tx"), + PMT_NIL)) { + if(!pmt_eqv(interp_tx, PMT_NIL)) + d_interp_tx = pmt_to_long(interp_tx); + } + + // Read the RX decimation rate + if(pmt_t decim_rx = pmt_dict_ref(d_usrp_dict, + pmt_intern("decim-rx"), + PMT_NIL)) { + if(!pmt_eqv(decim_rx, PMT_NIL)) + d_decim_rx = pmt_to_long(decim_rx); + } + } // control & status port d_cs = define_port("cs", "usrp-server-cs", true, mb_port::EXTERNAL); @@ -82,7 +113,7 @@ usrp_server::usrp_server(mb_runtime *rt, const std::string &instance_name, pmt_t mb_port::EXTERNAL)); } - define_component("usrp", "usrp_usb_interface", usrp_dict); + define_component("usrp", "usrp_usb_interface", d_usrp_dict); connect("self", "cs_usrp", "usrp", "cs"); d_defer=false; @@ -108,6 +139,10 @@ usrp_server::usrp_server(mb_runtime *rt, const std::string &instance_name, pmt_t //d_fake_rx=true; } +/*! + * \brief resets the assigned capacity and owners of each RX and TX channel from + * allocations. + */ void usrp_server::reset_channels() { @@ -136,6 +171,11 @@ usrp_server::initial_transition() // the initial transition } +/*! + * \brief Reads all incoming messages to USRP server from the TX, RX, and the CS + * ports. This drives the state of USRP server and dispatches based on the + * message. + */ void usrp_server::handle_message(mb_message_sptr msg) { @@ -178,6 +218,9 @@ usrp_server::handle_message(mb_message_sptr msg) pmt_t status = pmt_nth(1, data); d_cs->send(s_response_open, pmt_list2(invocation_handle, status)); + //reset_all_registers(); + //initialize_registers(); + if(pmt_eqv(status,PMT_T)) { d_opened = true; d_defer = false; @@ -209,7 +252,7 @@ usrp_server::handle_message(mb_message_sptr msg) // Do not report back responses if they were generated from a // command packet - if(channel == 0x1f) + if(channel == CONTROL_CHAN) return; // Find the port through the owner of the channel @@ -470,7 +513,14 @@ usrp_server::handle_message(mb_message_sptr msg) std::cout << "[USRP_SERVER] unhandled msg: " << msg << std::endl; } -// Return -1 if it is not an RX port, or an index +/*! + * \brief Takes a port_symbol() as parameter \p port_id and is used to determine + * if the port is a TX port, or to find an index in the d_tx vector which stores + * the port. + * + * \returns -1 if \p port_id is not in the d_tx vector (i.e., it's not a TX + * port), otherwise returns an index in the d_tx vector which stores the port. + */ int usrp_server::tx_port_index(pmt_t port_id) { for(int i=0; i < (int) d_tx.size(); i++) @@ -480,7 +530,14 @@ int usrp_server::tx_port_index(pmt_t port_id) { return -1; } -// Return -1 if it is not an RX port, or an index +/*! + * \brief Takes a port_symbol() as parameter \p port_id and is used to determine + * if the port is an RX port, or to find an index in the d_rx vector which + * stores the port. + * + * \returns -1 if \p port_id is not in the d_rx vector (i.e., it's not an RX + * port), otherwise returns an index in the d_rx vector which stores the port. + */ int usrp_server::rx_port_index(pmt_t port_id) { for(int i=0; i < (int) d_rx.size(); i++) @@ -490,8 +547,12 @@ int usrp_server::rx_port_index(pmt_t port_id) { return -1; } -// Go through all TX and RX channels, sum up the assigned capacity -// and return it +/*! + * \brief Determines the current total capacity allocated by all RX and TX + * channels. + * + * \returns the total allocated capacity + */ long usrp_server::current_capacity_allocation() { long capacity = 0; @@ -504,6 +565,14 @@ long usrp_server::current_capacity_allocation() { return capacity; } + +/*! + * \brief Called by the handle_message() method if the incoming message to + * usrp_server is to allocate a channel (cmd-allocate-channel). The method + * checks if the requested capacity exists and if so it will reserve it for the + * caller on the channel that is returned via a response-allocate-channel + * signal. + */ void usrp_server::handle_cmd_allocate_channel( mb_port_sptr port, @@ -564,9 +633,13 @@ usrp_server::handle_cmd_allocate_channel( return; } -// Check the port type and deallocate assigned capacity based on this, ensuring -// that the owner of the method invocation is the owner of the port and that the -// channel number is valid. +/*! + * \brief Called by the handle_message() method if the incoming message to + * usrp_server is to deallocate a channel (cmd-deallocate-channel). The method + * ensures that the sender of the signal owns the channel and that the channel + * number is valid. A response-deallocate-channel signal is sent back with the + * result of the deallocation. + */ void usrp_server::handle_cmd_deallocate_channel( mb_port_sptr port, @@ -591,8 +664,26 @@ usrp_server::handle_cmd_deallocate_channel( return; } -void usrp_server::handle_cmd_xmit_raw_frame(mb_port_sptr port, std::vector &chan_info, pmt_t data) { - +/*! + * \brief Called by the handle_message() method if the incoming message to + * usrp_server is to transmit a frame (cmd-xmit-raw-frame). The method + * allocates enough memory to support a burst of packets which contain the frame + * over the bus of the frame, sets the packet headers, and sends a signal to the + * lower block for the data (packets) to be written to the bus. + * + * The \p port the command was sent on and the channel info (\p chan_info) of + * the channel the frame is to be transmitted on are passed to ensure that the + * caller owns the channel. + * + * The \p data parameter is in the format of a cmd-xmit-raw-frame signal. + * + * The properties + */ +void usrp_server::handle_cmd_xmit_raw_frame( + mb_port_sptr port, + std::vector &chan_info, + pmt_t data) +{ size_t n_bytes, psize; long max_payload_len = transport_pkt::max_payload(); @@ -667,7 +758,8 @@ void usrp_server::handle_cmd_xmit_raw_frame(mb_port_sptr port, std::vectorsend(s_cmd_usrp_write, pmt_list3(invocation_handle, pmt_from_long(channel), @@ -676,7 +768,29 @@ void usrp_server::handle_cmd_xmit_raw_frame(mb_port_sptr port, std::vector &chan_info, pmt_t data) +/*! + * \brief Called by the handle_message() method to parse incoming control/status + * signals (cmd-to-control-channel). + * + * The \p port the command was sent on and the channel info (\p chan_info) of + * the channel are passed to ensure that the caller owns the channel. + * + * The \p data parameter is in the format of a PMT list, where each element + * follows the format of a control/status signal (i.e. op-ping-fixed). + * + * The method will parse all of the C/S commands included in \p data and place + * the commands in to a lower level packet sent to the control channel. The + * method will pack as many commands as possible in t oa single packet, and once + * it is fill generate as many lower level packets as needed. + * + * Anything that needs to be returned to the sender of the signal (i.e. the + * value of a register) will be generated by the parse_control_pkt() method as + * the responses to the commands are read back from the USRP. + */ +void usrp_server::handle_cmd_to_control_channel( + mb_port_sptr port, + std::vector &chan_info, + pmt_t data) { pmt_t invocation_handle = pmt_nth(0, data); @@ -687,7 +801,10 @@ void usrp_server::handle_cmd_to_control_channel(mb_port_sptr port, std::vector &chan_info, pmt_t data) +usrp_server::handle_cmd_start_recv_raw_samples( + mb_port_sptr port, + std::vector &chan_info, + pmt_t data) { pmt_t invocation_handle = pmt_nth(0, data); long channel = pmt_to_long(pmt_nth(1, data)); @@ -1032,6 +1163,18 @@ usrp_server::handle_cmd_start_recv_raw_samples(mb_port_sptr port, std::vectorsend(s_response_recv_raw_samples, - pmt_list5(invocation_handle, + pmt_list6(invocation_handle, status, v_samples, pmt_from_long(pkt->timestamp()), + pmt_from_long(channel), properties)); return; } +/*! + * \brief Called by handle_response_usrp_read() when the incoming packet has a + * channel of CONTROL_CHAN. This means that the incoming packet contains a + * response for a command sent to the control channel, which this method will + * parse. + * + * The \p pkt parameter is a pointer to the full packet (transport_pkt) in + * memory. + * + * Given that all commands sent to the control channel that require responses + * will carry an RID (request ID), the method will use the RID passed back with + * the response to determine which port the response should be sent on. + */ void usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) { @@ -1190,6 +1362,9 @@ usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) return; pmt_t owner = d_rids[srid].owner; + + // Return the RID + d_rids[srid].owner = PMT_NIL; // FIXME: should be 1 response for all subpackets here ? if((port = tx_port_index(owner)) != -1) @@ -1225,6 +1400,9 @@ usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) return; pmt_t owner = d_rids[srid].owner; + + // Return the RID + d_rids[srid].owner = PMT_NIL; // FIXME: should be 1 response for all subpackets here ? if((port = tx_port_index(owner)) != -1) @@ -1261,6 +1439,9 @@ usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) return; pmt_t owner = d_rids[srid].owner; + + // Return the RID + d_rids[srid].owner = PMT_NIL; if((port = tx_port_index(owner)) != -1) d_tx[port]->send(s_response_from_control_channel, @@ -1294,6 +1475,9 @@ usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) return; pmt_t owner = d_rids[srid].owner; + + // Return the RID + d_rids[srid].owner = PMT_NIL; if((port = tx_port_index(owner)) != -1) d_tx[port]->send(s_response_from_control_channel, @@ -1317,6 +1501,10 @@ usrp_server::parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt) } } +/*! + * \brief Used to recall all incoming signals that were deferred when USRP + * server was in the initialization state. + */ void usrp_server::recall_defer_queue() { @@ -1335,6 +1523,25 @@ usrp_server::recall_defer_queue() return; } +/*! + * \brief Commonly called by any method which handles outgoing frames or control + * packets to the USRP to check if the port on which the signal was sent owns + * the channel the outgoing packet will be associated with. This helps ensure + * that applications do not send data on other application's ports. + * + * The \p port parameter is the port symbol that the caller wishes to determine + * owns the channel specified by \p chan_info. + * + * The \p signal_info parameter is a PMT list containing two elements: the + * response signal to use if the permissions are invalid, and the invocation + * handle that was passed. This allows the method to generate detailed failure + * responses to signals without having to return some sort of structured + * information which the caller must then parse and interpret to determine the + * failure type. + * + * \returns true if \p port owns the channel specified by \p chan_info, false + * otherwise. + */ bool usrp_server::check_valid(mb_port_sptr port, long channel, @@ -1346,7 +1553,7 @@ usrp_server::check_valid(mb_port_sptr port, pmt_t invocation_handle = pmt_nth(1, signal_info); // not a valid channel number? - if(channel >= (long)chan_info.size() && channel != 0x1f) { + if(channel >= (long)chan_info.size() && channel != CONTROL_CHAN) { port->send(response_signal, pmt_list2(invocation_handle, s_err_channel_invalid)); @@ -1377,8 +1584,12 @@ usrp_server::check_valid(mb_port_sptr port, return true; } -// Goes through the vector of RIDs and retreieves an -// available one for use +/*! + * \brief Finds the next available RID for internal USRP server use with control + * and status packets. + * + * \returns the next valid RID or -1 if no more RIDs are available. + */ long usrp_server::next_rid() { @@ -1386,7 +1597,264 @@ usrp_server::next_rid() if(pmt_eqv(d_rids[i].owner, PMT_NIL)) return i; + if(verbose) + std::cout << "[USRP_SERVER] No RIDs left\n"; return -1; } +/*! + * \brief Called by handle_message() when USRP server gets a response that the + * USRP was opened successfully to initialize the registers using the new + * register read/write control packets. + */ +void +usrp_server::initialize_registers() +{ + // We use handle_cmd_to_control_channel() to create the register writes using + // PMT_NIL as the response port to tell usrp_server not to pass the response + // up to any application. + if(verbose) + std::cout << "[USRP_SERVER] Initializing registers...\n"; + + // RX mode to normal (0) + set_register(FR_MODE, 0); + + // FPGA debugging? + if(d_fpga_debug) { + set_register(FR_DEBUG_EN, 1); + // FIXME: need to figure out exact register writes to control daughterboard + // pins that need to be written to + } else { + set_register(FR_DEBUG_EN, 0); + } + + // Set the transmit sample rate divisor, which is 4-1 + set_register(FR_TX_SAMPLE_RATE_DIV, 3); + + // Dboard IO buffer and register settings + set_register(FR_OE_0, (0xffff << 16) | 0x0000); + set_register(FR_IO_0, (0xffff << 16) | 0x0000); + set_register(FR_OE_1, (0xffff << 16) | 0x0000); + set_register(FR_IO_1, (0xffff << 16) | 0x0000); + set_register(FR_OE_2, (0xffff << 16) | 0x0000); + set_register(FR_IO_2, (0xffff << 16) | 0x0000); + set_register(FR_OE_3, (0xffff << 16) | 0x0000); + set_register(FR_IO_3, (0xffff << 16) | 0x0000); + + // zero Tx side Auto Transmit/Receive regs + set_register(FR_ATR_MASK_0, 0); + set_register(FR_ATR_TXVAL_0, 0); + set_register(FR_ATR_RXVAL_0, 0); + set_register(FR_ATR_MASK_1, 0); + set_register(FR_ATR_TXVAL_1, 0); + set_register(FR_ATR_RXVAL_1, 0); + set_register(FR_ATR_MASK_2, 0); + set_register(FR_ATR_TXVAL_2, 0); + set_register(FR_ATR_RXVAL_2, 0); + set_register(FR_ATR_MASK_3, 0); + set_register(FR_ATR_TXVAL_3, 0); + set_register(FR_ATR_RXVAL_3, 0); + + // Configure TX mux, this is a hacked value + set_register(FR_TX_MUX, 0x00000081); + + // Set the interpolation rate, which is the rate divided by 4, minus 1 + set_register(FR_INTERP_RATE, (d_interp_tx/4)-1); + + // Apparently this register changes again + set_register(FR_TX_MUX, 0x00000981); + + // Set the receive sample rate divisor, which is 2-1 + set_register(FR_RX_SAMPLE_RATE_DIV, 1); + + // DC offset + set_register(FR_DC_OFFSET_CL_EN, 0x0000000f); + + // Reset the DC correction offsets + set_register(FR_ADC_OFFSET_0, 0); + set_register(FR_ADC_OFFSET_1, 0); + + // Some hard-coded RX configuration + set_register(FR_RX_FORMAT, 0x00000300); + set_register(FR_RX_MUX, 1); + + // RX decimation rate is divided by two, then subtract 1 + set_register(FR_DECIM_RATE, (d_decim_rx/2)-1); + + // More hard coding + set_register(FR_RX_MUX, 0x000e4e41); + + // Resetting RX registers + set_register(FR_RX_PHASE_0, 0); + set_register(FR_RX_PHASE_1, 0); + set_register(FR_RX_PHASE_2, 0); + set_register(FR_RX_PHASE_3, 0); + set_register(FR_RX_FREQ_0, 0x28000000); + set_register(FR_RX_FREQ_1, 0); + set_register(FR_RX_FREQ_2, 0); + set_register(FR_RX_FREQ_3, 0); + + // Enable debug bus + set_register(FR_DEBUG_EN, 0xf); + set_register(FR_OE_0, -1); + set_register(FR_OE_1, -1); + set_register(FR_OE_2, -1); + set_register(FR_OE_3, -1); + + // DEBUGGING + //check_register_initialization(); +} + +// FIXME: used for debugging to determine if all the registers are actually +// being set correctly +void +usrp_server::check_register_initialization() +{ + // RX mode to normal (0) + read_register(FR_MODE); + + // FPGA debugging? + if(d_fpga_debug) { + read_register(FR_DEBUG_EN); + // FIXME: need to figure out exact register writes to control daughterboard + // pins that need to be written to + } else { + read_register(FR_DEBUG_EN); + } + + // Set the transmit sample rate divisor, which is 4-1 + read_register(FR_TX_SAMPLE_RATE_DIV); + + // Dboard IO buffer and register settings + read_register(FR_OE_0); + read_register(FR_IO_0); + read_register(FR_OE_1); + read_register(FR_IO_1); + read_register(FR_OE_2); + read_register(FR_IO_2); + read_register(FR_OE_3); + read_register(FR_IO_3); + + // zero Tx side Auto Transmit/Receive regs + read_register(FR_ATR_MASK_0); + read_register(FR_ATR_TXVAL_0); + read_register(FR_ATR_RXVAL_0); + read_register(FR_ATR_MASK_1); + read_register(FR_ATR_TXVAL_1); + read_register(FR_ATR_RXVAL_1); + read_register(FR_ATR_MASK_2); + read_register(FR_ATR_TXVAL_2); + read_register(FR_ATR_RXVAL_2); + read_register(FR_ATR_MASK_3); + read_register(FR_ATR_TXVAL_3); + read_register(FR_ATR_RXVAL_3); + + // Configure TX mux, this is a hacked value + read_register(FR_TX_MUX); + + // Set the interpolation rate, which is the rate divided by 4, minus 1 + read_register(FR_INTERP_RATE); + + // Apparently this register changes again + read_register(FR_TX_MUX); + + // Set the receive sample rate divisor, which is 2-1 + read_register(FR_RX_SAMPLE_RATE_DIV); + + // DC offset + read_register(FR_DC_OFFSET_CL_EN); + + // Reset the DC correction offsets + read_register(FR_ADC_OFFSET_0); + read_register(FR_ADC_OFFSET_1); + + // Some hard-coded RX configuration + read_register(FR_RX_FORMAT); + read_register(FR_RX_MUX); + + // RX decimation rate is divided by two, then subtract 1 + read_register(FR_DECIM_RATE); + + // More hard coding + read_register(FR_RX_MUX); + + // Resetting RX registers + read_register(FR_RX_PHASE_0); + read_register(FR_RX_PHASE_1); + read_register(FR_RX_PHASE_2); + read_register(FR_RX_PHASE_3); + read_register(FR_RX_FREQ_0); + read_register(FR_RX_FREQ_1); + read_register(FR_RX_FREQ_2); + read_register(FR_RX_FREQ_3); +} + +/*! + * \brief Used to generate FPGA register write commands to reset all of the FPGA + * registers to a value of 0. + */ +void +usrp_server::reset_all_registers() +{ + for(int i=0; i<64; i++) + set_register(i, 0); +} + +/*! + * \brief Used internally by USRP server to generate a control/status packet + * which contains a register write. + * + * The \p reg parameter is the register number that the value \p val will be + * written to. + */ +void +usrp_server::set_register(long reg, long val) +{ + size_t psize; + long payload_len = 0; + + pmt_t v_packet = pmt_make_u8vector(sizeof(transport_pkt), 0); + transport_pkt *pkt = (transport_pkt *) pmt_u8vector_writeable_elements(v_packet, psize); + + pkt->set_header(0, CONTROL_CHAN, 0, payload_len); + pkt->set_timestamp(0xffffffff); + + pkt->cs_write_reg(reg, val); + + d_cs_usrp->send(s_cmd_usrp_write, + pmt_list3(PMT_NIL, + pmt_from_long(CONTROL_CHAN), + v_packet)); +} + +/*! + * \brief Used internally by USRP server to generate a control/status packet + * which contains a register read. This is important to use internally so that + * USRP server can bypass the use of RIDs with register reads, as they are not + * needed and it would use up the finite number of RIDs available for use for + * applications to receive responses. + * + * The \p reg parameter is the register number that the value should be read + * from. + */ +void +usrp_server::read_register(long reg) +{ + size_t psize; + long payload_len = 0; + + pmt_t v_packet = pmt_make_u8vector(sizeof(transport_pkt), 0); + transport_pkt *pkt = (transport_pkt *) pmt_u8vector_writeable_elements(v_packet, psize); + + pkt->set_header(0, CONTROL_CHAN, 0, payload_len); + pkt->set_timestamp(0xffffffff); + + pkt->cs_read_reg(0, reg); + + d_cs_usrp->send(s_cmd_usrp_write, + pmt_list3(PMT_NIL, + pmt_from_long(CONTROL_CHAN), + v_packet)); +} + REGISTER_MBLOCK_CLASS(usrp_server); diff --git a/usrp/host/lib/inband/usrp_server.h b/usrp/host/lib/inband/usrp_server.h index 81dceb1f..09c82faa 100644 --- a/usrp/host/lib/inband/usrp_server.h +++ b/usrp/host/lib/inband/usrp_server.h @@ -51,6 +51,13 @@ public: long d_ntx_chan; long d_nrx_chan; + pmt_t d_usrp_dict; + + bool d_fpga_debug; + + long d_interp_tx; + long d_decim_rx; + // Keep track of the request IDs struct rid_info { pmt_t owner; @@ -114,6 +121,11 @@ private: bool check_valid(mb_port_sptr port, long channel, std::vector &chan_info, pmt_t signal_info); void parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt); long next_rid(); + void initialize_registers(); + void set_register(long reg, long val); + void read_register(long reg); + void check_register_initialization(); + void reset_all_registers(); }; #endif /* INCLUDED_USRP_SERVER_H */ diff --git a/usrp/host/lib/inband/usrp_server.mbh b/usrp/host/lib/inband/usrp_server.mbh index 3fd0db13..ed7943fc 100644 --- a/usrp/host/lib/inband/usrp_server.mbh +++ b/usrp/host/lib/inband/usrp_server.mbh @@ -202,7 +202,7 @@ (:incoming - (response-recv-raw-samples invocation-handle status samples timestamp properties) + (response-recv-raw-samples invocation-handle status samples timestamp channel properties) ;; samples is a uniform numeric vector. The contents of the sample ;; vector is treated as opaque and is passed from the FPGA diff --git a/usrp/host/lib/inband/usrp_tx.cc b/usrp/host/lib/inband/usrp_tx.cc index a7a5e4a8..da877751 100644 --- a/usrp/host/lib/inband/usrp_tx.cc +++ b/usrp/host/lib/inband/usrp_tx.cc @@ -66,6 +66,10 @@ usrp_tx::initial_transition() } +/*! + * \brief Handles incoming signals to to the m-block, wihch should only ever be + * a single message: cmd-usrp-tx-write. + */ void usrp_tx::handle_message(mb_message_sptr msg) { @@ -82,6 +86,14 @@ usrp_tx::handle_message(mb_message_sptr msg) } } +/*! + * \brief Performs the actual writing of data to the USB bus, called by + * handle_message() when a cmd-usrp-tx-write signal is received. + * + * The \p data parameter is a PMT list which contains three mandatory elements, + * in the following order: an invocation handle, a channel, and a uniform vector + * of memory which contains the packets to be written to the bus. + */ void usrp_tx::write(pmt_t data) { @@ -121,7 +133,7 @@ usrp_tx::write(pmt_t data) for(int i=0; i < n_packets; i++) { if(d_disk_write) { - if(pkts[i].chan() == 0x1f) + if(pkts[i].chan() == CONTROL_CHAN) d_cs_ofile.write((const char *)&pkts[i], transport_pkt::max_pkt_size()); else d_ofile.write((const char *)&pkts[i], transport_pkt::max_pkt_size()); diff --git a/usrp/host/lib/inband/usrp_tx_stub.cc b/usrp/host/lib/inband/usrp_tx_stub.cc index 7a987632..6cff3b4e 100644 --- a/usrp/host/lib/inband/usrp_tx_stub.cc +++ b/usrp/host/lib/inband/usrp_tx_stub.cc @@ -103,7 +103,7 @@ usrp_tx_stub::write(pmt_t data) for(long i=0; iset_header(0, 0x1f, 0, 0); + q_pkt->set_header(0, CONTROL_CHAN, 0, 0); q_pkt->set_timestamp(0xffffffff); // We dispatch based on the control packet type, however we can extract the diff --git a/usrp/host/lib/inband/usrp_usb_interface.cc b/usrp/host/lib/inband/usrp_usb_interface.cc index 269ed270..51b6d464 100644 --- a/usrp/host/lib/inband/usrp_usb_interface.cc +++ b/usrp/host/lib/inband/usrp_usb_interface.cc @@ -47,12 +47,16 @@ static pmt_t s_shutdown = pmt_intern("%shutdown"); static const bool verbose = false; - -// need to take number of TX and RX channels as parameter +/*! + * \brief Initializes the USB interface m-block. + * + * The \p user_arg should be a PMT dictionary which can contain optional + * arguments for the block, such as the decimatoin and interpolation rate. + */ usrp_usb_interface::usrp_usb_interface(mb_runtime *rt, const std::string &instance_name, pmt_t user_arg) : mb_mblock(rt, instance_name, user_arg), - d_fpga_debug(false), d_fake_usrp(false), + d_rx_reading(false), d_interp_tx(128), d_decim_rx(128), d_rf_freq(10e6), @@ -86,7 +90,7 @@ usrp_usb_interface::usrp_usb_interface(mb_runtime *rt, const std::string &instan d_interp_tx = pmt_to_long(interp_tx); } - // Read the RX interpolations + // Read the RX decimation rate if(pmt_t decim_rx = pmt_dict_ref(usrp_dict, pmt_intern("decim-rx"), PMT_NIL)) { @@ -134,8 +138,8 @@ usrp_usb_interface::usrp_usb_interface(mb_runtime *rt, const std::string &instan d_tx_cs = define_port("tx_cs", "usrp-tx-cs", false, mb_port::INTERNAL); // Connect to TX and RX - define_component("tx", tx_interface, PMT_F); - define_component("rx", rx_interface, PMT_F); + define_component("tx", tx_interface, usrp_dict); + define_component("rx", rx_interface, usrp_dict); connect("self", "rx_cs", "rx", "cs"); connect("self", "tx_cs", "tx", "cs"); @@ -146,8 +150,6 @@ usrp_usb_interface::usrp_usb_interface(mb_runtime *rt, const std::string &instan d_utx = NULL; d_urx = NULL; - d_fpga_debug=true; // WARNING: DO NOT ENABLE WITH D'BOARDS OTHER THAN BASIC TX/RX - } usrp_usb_interface::~usrp_usb_interface() @@ -161,6 +163,10 @@ usrp_usb_interface::initial_transition() } +/*! + * \brief Handles all incoming signals to the block from the lowest m-blocks + * which read/write to the bus, or the higher m-block which is the USRP server. + */ void usrp_usb_interface::handle_message(mb_message_sptr msg) { @@ -256,6 +262,13 @@ usrp_usb_interface::handle_message(mb_message_sptr msg) std::cout << "[USRP_USB_INTERFACE] unhandled msg: " << msg << std::endl; } +/*! + * \brief Called by the handle_message() method when the incoming signal is to + * open a USB connection to the USRP (cmd-usrp-open). + * + * The \p data parameter is a PMT list, where the elements are an invocation + * handle and the USRP number. + */ void usrp_usb_interface::handle_cmd_open(pmt_t data) { @@ -290,7 +303,7 @@ usrp_usb_interface::handle_cmd_open(pmt_t data) return; } - if(!d_utx->set_tx_freq (0,d_rf_freq)) { // try setting center freq to 0 + if(!d_utx->set_tx_freq (0,d_rf_freq) || !d_utx->set_tx_freq(1,d_rf_freq)) { // try setting center freq to 0 if (verbose) std::cout << "[USRP_USB_INTERFACE] Failed to set center frequency on TX\n"; reply_data = pmt_list2(invocation_handle, PMT_F); @@ -298,6 +311,14 @@ usrp_usb_interface::handle_cmd_open(pmt_t data) return; } + if(!d_utx->set_mux(0xBA98)) { + if (verbose) + std::cout << "[USRP_USB_INTERFACE] Failed to set TX mux\n"; + reply_data = pmt_list2(invocation_handle, PMT_F); + d_cs->send(s_response_usrp_open, reply_data); + return; + } + d_utx->start(); if (verbose) @@ -321,33 +342,44 @@ usrp_usb_interface::handle_cmd_open(pmt_t data) return; } - if(!d_urx->set_rx_freq (0, d_rf_freq)) { + if(!d_urx->set_rx_freq (0, -d_rf_freq) || !d_urx->set_rx_freq(1, -d_rf_freq)) { if (verbose) std::cout << "[usrp_server] Failed to set center frequency on RX\n"; reply_data = pmt_list2(invocation_handle, PMT_F); d_cs->send(s_response_usrp_open, reply_data); return; } - - if(d_fpga_debug) { - d_utx->_write_fpga_reg(FR_DEBUG_EN,0xf); - d_utx->_write_oe(0, 0xffff, 0xffff); - d_urx->_write_oe(0, 0xffff, 0xffff); - d_utx->_write_oe(1, 0xffff, 0xffff); - d_urx->_write_oe(1, 0xffff, 0xffff); - -// while(1){ -// for(int i=0; i<0xffff; i++) -// d_urx->write_io(0, i, 0xffff); -// } - } + // Two channels ... this really needs to end up being set correctly by + // querying for what dboards are connected + if(!d_urx->set_mux(0x32103210)) { + if (verbose) + std::cout << "[USRP_USB_INTERFACE] Failed to set RX mux\n"; + reply_data = pmt_list2(invocation_handle, PMT_F); + d_cs->send(s_response_usrp_open, reply_data); + return; + } + if (verbose) std::cout << "[USRP_USB_INTERFACE] Setup RX channel\n"; + +// d_utx->_write_fpga_reg(FR_DEBUG_EN,0xf); +// d_utx->_write_oe(0, 0xffff, 0xffff); +// d_urx->_write_oe(0, 0xffff, 0xffff); +// d_utx->_write_oe(1, 0xffff, 0xffff); +// d_urx->_write_oe(1, 0xffff, 0xffff); d_cs->send(s_response_usrp_open, pmt_list2(invocation_handle, PMT_T)); } +/*! + * \brief Called by the handle_message() method when the incoming signal is to + * write data to the USB bus (cmd-usrp-write). + * + * The \p data parameter is a PMT list containing 3 mandatory elements in the + * following order: an invocation handle, channel, and a uniform vector + * representation of the packets. + */ void usrp_usb_interface::handle_cmd_write(pmt_t data) { @@ -366,6 +398,13 @@ usrp_usb_interface::handle_cmd_write(pmt_t data) return; } +/*! + * \brief Called by the handle_message() method when the incoming signal is to + * start reading data from the USB bus (cmd-usrp-start-reading). + * + * The \p data parameter is a PMT list with a single element: an invocation + * handle which can be returned with the response. + */ void usrp_usb_interface::handle_cmd_start_reading(pmt_t data) { @@ -381,9 +420,18 @@ usrp_usb_interface::handle_cmd_start_reading(pmt_t data) d_rx_cs->send(s_cmd_usrp_rx_start_reading, pmt_list2(PMT_NIL, rx_handle)); + d_rx_reading = true; + return; } +/*! + * \brief Called by the handle_message() method when the incoming signal is to + * stop reading data from the USB bus (cmd-usrp-stop-reading). + * + * The \p data parameter is a PMT list with a single element: an invocation + * handle which can be returned with the response. + */ void usrp_usb_interface::handle_cmd_stop_reading(pmt_t data) { @@ -392,22 +440,40 @@ usrp_usb_interface::handle_cmd_stop_reading(pmt_t data) if(!d_fake_usrp) { if(verbose) std::cout << "[USRP_USB_INTERFACE] Stopping RX...\n"; + usrp_rx_stop = true; + + // Used to allow a read() being called by a lower layer to complete before + // stopping, else there can be partial data left on the bus and can generate + // errors. + while(usrp_rx_stop) {usleep(1);} d_urx->stop(); } else { if(verbose) std::cout << "[USRP_USB_INTERFACE] Stopping fake RX...\n"; - usrp_rx_stop = true; // extern to communicate with stub to wait + usrp_rx_stop_stub = true; // extern to communicate with stub to wait } + d_rx_reading = false; + return; } +/*! + * \brief Called by the handle_message() method when the incoming signal is to + * close the USB connection to the USRP. + * + * The \p data parameter is a PMT list with a single element: an invocation + * handle which can be returned with the response. + */ void usrp_usb_interface::handle_cmd_close(pmt_t data) { pmt_t invocation_handle = pmt_nth(0, data); + if(d_rx_reading) + handle_cmd_stop_reading(PMT_NIL); + if(d_fake_usrp) { d_cs->send(s_response_usrp_close, pmt_list2(invocation_handle, PMT_T)); return; diff --git a/usrp/host/lib/inband/usrp_usb_interface.h b/usrp/host/lib/inband/usrp_usb_interface.h index 8efce2ff..6c2c1576 100644 --- a/usrp/host/lib/inband/usrp_usb_interface.h +++ b/usrp/host/lib/inband/usrp_usb_interface.h @@ -42,10 +42,10 @@ class usrp_usb_interface : public mb_mblock long d_ntx_chan; long d_nrx_chan; - long d_fpga_debug; - bool d_fake_usrp; + bool d_rx_reading; + long d_interp_tx; long d_decim_rx; diff --git a/usrp/host/lib/legacy/fusb_linux.cc b/usrp/host/lib/legacy/fusb_linux.cc index 60687a14..6dce8d9e 100644 --- a/usrp/host/lib/legacy/fusb_linux.cc +++ b/usrp/host/lib/legacy/fusb_linux.cc @@ -386,14 +386,6 @@ fusb_ephandle_linux::stop () { if (!d_started) return true; - - d_devhandle->_cancel_pending_rqsts (this); - d_devhandle->_reap (false); - - - usbdevfs_urb *urb; - while ((urb = completed_list_get ()) != 0) - free_list_add (urb); if (d_write_work_in_progress){ free_list_add (d_write_work_in_progress); @@ -407,11 +399,19 @@ fusb_ephandle_linux::stop () d_read_buffer_end = 0; } - if (d_free_list.size () != (unsigned) d_nblocks) - fprintf (stderr, "d_free_list.size () = %d, d_nblocks = %d\n", - d_free_list.size (), d_nblocks); - - assert (d_free_list.size () == (unsigned) d_nblocks); + d_devhandle->_cancel_pending_rqsts (this); + d_devhandle->_reap (false); + + while (1){ + usbdevfs_urb *urb; + while ((urb = completed_list_get ()) != 0) + free_list_add (urb); + + if (d_free_list.size () == (unsigned) d_nblocks) + break; + + d_devhandle->_reap(true); + } d_started = false; return true; -- 2.30.2