[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5776 - gnuradio/branches/developers/matt/u2f/control_
From: |
matt |
Subject: |
[Commit-gnuradio] r5776 - gnuradio/branches/developers/matt/u2f/control_lib |
Date: |
Sat, 16 Jun 2007 18:59:26 -0600 (MDT) |
Author: matt
Date: 2007-06-16 18:59:25 -0600 (Sat, 16 Jun 2007)
New Revision: 5776
Added:
gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v
Modified:
gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
Log:
compilation fixes, some progress
Modified: gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
2007-06-17 00:59:25 UTC (rev 5776)
@@ -29,14 +29,16 @@
// Write Interfaces
input [31:0] wr0_dat_i,
input wr0_write_i,
+ input wr0_done_i,
output wr0_ready_o,
- output wr0_done_o,
+ output wr0_full_o,
// Read Interfaces
output [31:0] rd0_dat_o,
input rd0_read_i,
+ input rd0_done_i,
output rd0_ready_o,
- output rd0_done_o
+ output rd0_empty_o
);
@@ -72,19 +74,27 @@
(.clka(wb_clk_i),.ena(wb_stb_i & sel_a[0]),.wea(wb_we_i),
.addra(buf_addr),.dia(wb_dat_i),.doa(buf0_outa),
.clkb(stream_clk),.enb(b0enb),.web(b0web),.addrb(b0a),.dib(b0di),.dob(b0do));
-
+
fifo_int fifo_int_0
- (.clk(stream_clk),.rst(dsp_rst),.firstline(),.lastline(),.step(),
+
(.clk(stream_clk),.rst(stream_rst),.firstline(),.lastline(),.step(),.read_go(),.write_go(),.done(),
.en_o(b0enb),.we_o(b0web),.addr_o(b0a),.dat_to_buf(b0di),.dat_from_buf(b0do),
-
.wr_dat_i(wr0_dat_i),.wr_write_i(wr0_write_i),.wr_ready_o(wr0_ready_o),//.wr_done_o(wr0_done_o),
-
.rd_dat_o(rd0_dat_o),.rd_read_i(rd0_read_i),.rd_ready_o(rd0_ready_o)//.rd_done_o(rd0_done_o)
+
.wr_dat_i(wr0_dat_i),.wr_write_i(wr0_write_i),.wr_done_i(wr0_done_i),.wr_ready_o(wr0_ready_o),.wr_full_o(wr0_full_o),
+
.rd_dat_o(rd0_dat_o),.rd_read_i(rd0_read_i),.rd_done_i(rd0_done_i),.rd_ready_o(rd0_ready_o),.rd_empty_o(rd0_empty_o)
);
-
+
buffer_2k buf_1
(.clka(wb_clk_i),.ena(wb_stb_i & sel_a[1]),.wea(wb_we_i),
.addra(buf_addr),.dia(wb_dat_i),.doa(buf1_outa),
.clkb(stream_clk),.enb(1),.web(),.addrb(b1a),.dib(b1di),.dob(b1do));
+ fifo_int fifo_int_1
+
(.clk(stream_clk),.rst(stream_rst),.firstline(),.lastline(),.step(),.read_go(),.write_go(),.done(),
+
.en_o(b1enb),.we_o(b1web),.addr_o(b1a),.dat_to_buf(b1di),.dat_from_buf(b1do),
+
.wr_dat_i(wr1_dat_i),.wr_write_i(wr1_write_i),.wr_done_i(wr1_done_i),.wr_ready_o(wr1_ready_o),.wr_full_o(wr1_full_o),
+
.rd_dat_o(rd1_dat_o),.rd_read_i(rd1_read_i),.rd_done_i(rd1_done_i),.rd_ready_o(rd1_ready_o),.rd_empty_o(rd1_empty_o)
+ );
+
+ /*
buffer_2k buf_2
(.clka(wb_clk_i),.ena(wb_stb_i & sel_a[2]),.wea(wb_we_i),
.addra(buf_addr),.dia(wb_dat_i),.doa(buf2_outa),
@@ -114,7 +124,7 @@
(.clka(wb_clk_i),.ena(wb_stb_i & sel_a[7]),.wea(wb_we_i),
.addra(buf_addr),.dia(wb_dat_i),.doa(buf7_outa),
.clkb(stream_clk),.enb(1),.web(),.addrb(b7a),.dib(b7di),.dob(b7do));
-
+ */
always @(posedge wb_clk_i)
if(wb_stb_i)
case(which_buf)
Modified: gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
2007-06-17 00:59:25 UTC (rev 5776)
@@ -165,6 +165,8 @@
@(posedge clk);
end
rd_read_i <= 0;
+
+ //FIXME Why does line 511 not work on write?
$finish;
end
Modified: gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
2007-06-17 00:59:25 UTC (rev 5776)
@@ -33,12 +33,12 @@
// TX Stream Interface
input [31:0] fifo_data_i,
output fifo_read_o,
+ output fifo_done_o,
input fifo_ready_i,
- input fifo_done_i
+ input fifo_empty_i
);
localparam COMMA = 8'b101_11100; // K28.5
- //localparam IDLE = 8'b001_11100; // K28.1
localparam PKT_START = 8'b110_11100; // K28.6
localparam PKT_END = 8'b100_11100; // K28.4
localparam LOS = 8'b111_11111; // K31.7
@@ -51,11 +51,16 @@
localparam RUN1 = 3'd2;
localparam RUN2 = 3'd3;
localparam DONE = 3'd4;
-
+ localparam WAIT = 3'd5;
+ localparam CRC = 3'd6;
+
reg [2:0] state, next_state;
-
- // FIXME Implement sending of flow control, possibly also idles if data
not ready net
+ wire [15:0] crc_out;
+ // FIXME Implement sending of flow control
+ // FIXME Send CRC
+ // DONE Add idles if data not ready yet
+
always @(posedge clk)
if(rst)
begin
@@ -83,21 +88,42 @@
RUN2 :
begin
{ser_tkmsb,ser_tklsb,ser_t} <= {2'b00,fifo_data_i[31:16]};
- if(fifo_done_i)
+ if(fifo_empty_i)
state <= DONE;
+ else if(fifo_ready_i)
+ state <= RUN1;
else
+ state <= WAIT;
+ end
+ WAIT : // WAIT only necessary if the FIFO is shared and isn't always
ready
+ begin
+ {ser_tkmsb,ser_tklsb,ser_t} <= {2'b11,COMMA,COMMA};
+ if(fifo_ready_i)
state <= RUN1;
end
DONE :
begin
{ser_tkmsb,ser_tklsb,ser_t} <= {2'b11,PKT_END,PKT_END};
+ state <= CRC;
+ end
+ CRC :
+ begin
+ {ser_tkmsb,ser_tklsb,ser_t} <= {2'b00,crc_out};
state <= IDLE;
end
default
state <= IDLE;
endcase // case(state)
- assign fifo_read_o = (state == START) || ((state == RUN2) & ~fifo_done_i);
+ assign fifo_read_o = ((state == RUN2) & ~fifo_empty_i);
+ assign fifo_done_o = 1'b1; // Unused -- we always send everything we're
given
+
+ ucrc_par #(.POLYNOMIAL(16'b0001000000100001),.INIT_VALUE(16'hFFFF),
+ .DATA_WIDTH(16),.SYNC_RESET(1))
+ ucrc_par (.clk_i(clk),.rst_i(state == IDLE),
+ .clken_i((state==RUN1)||(state==RUN2)),
+ .data_i( (state==RUN1) ? fifo_data_i[15:0] : fifo_data_i[31:16]
),
+ .match_o(),.crc_o(crc_out) );
endmodule // serdes_tx
Modified: gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
2007-06-17 00:59:25 UTC (rev 5776)
@@ -12,12 +12,12 @@
genvar i;
generate
- for (i=0;i<32;i++)
+ for (i=0;i<32;i=i+1)
begin : gen_srl16
srl16e
srl16e(.Q(dataout[i]),
.A0(a[0]),.A1(a[1]),.A2(a[2]),.A3(a[3]),
- .CE(write),.CLK(clk).,D(datain[i]));
+ .CE(write),.CLK(clk),.D(datain[i]));
end
endgenerate
Copied: gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v (from
rev 5774, gnuradio/branches/developers/matt/u2f/sdr_lib/strobe_gen.v)
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v
2007-06-17 00:59:25 UTC (rev 5776)
@@ -0,0 +1,46 @@
+// -*- verilog -*-
+//
+// USRP - Universal Software Radio Peripheral
+//
+// Copyright (C) 2003 Matt Ettus
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
+//
+
+
+
+module strobe_gen
+ ( input clock,
+ input reset,
+ input enable,
+ input [7:0] rate, // Rate should be 1 LESS THAN your desired divide ratio
+ input strobe_in,
+ output wire strobe );
+
+// parameter width = 8;
+
+ reg [7:0] counter;
+ assign strobe = ~|counter && enable && strobe_in;
+
+ always @(posedge clock)
+ if(reset | ~enable)
+ counter <= #1 8'd0;
+ else if(strobe_in)
+ if(counter == 0)
+ counter <= #1 rate;
+ else
+ counter <= #1 counter - 8'd1;
+
+endmodule // strobe_gen
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5776 - gnuradio/branches/developers/matt/u2f/control_lib,
matt <=