diff options
author | Josh Blum <josh@joshknows.com> | 2012-02-15 15:44:24 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2012-02-15 15:44:24 -0800 |
commit | 831213bd57f0ac41e88f4b741f22885fb8316399 (patch) | |
tree | e0adf4c1383f7c002d2a80dbace78408ebbaa1b2 /usrp2/vrt | |
parent | 42e906a3345c772f71b57126f754f87c0112d740 (diff) | |
download | uhd-831213bd57f0ac41e88f4b741f22885fb8316399.tar.gz uhd-831213bd57f0ac41e88f4b741f22885fb8316399.tar.bz2 uhd-831213bd57f0ac41e88f4b741f22885fb8316399.zip |
dsp rework: added flusher to vita tx chain on clear
Diffstat (limited to 'usrp2/vrt')
-rw-r--r-- | usrp2/vrt/vita_tx_chain.v | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/usrp2/vrt/vita_tx_chain.v b/usrp2/vrt/vita_tx_chain.v index 9b478081f..82a43d57a 100644 --- a/usrp2/vrt/vita_tx_chain.v +++ b/usrp2/vrt/vita_tx_chain.v @@ -49,27 +49,35 @@ module vita_tx_chain wire clear_seqnum; wire [31:0] current_seqnum; - wire clear; + wire clear, flush; assign clear_o = clear; assign underrun = error; assign message = error_code; - - setting_reg #(.my_addr(BASE+1)) sr + + setting_reg #(.my_addr(BASE+0), .width(1)) sr (.clk(clk),.rst(reset),.strobe(set_stb),.addr(set_addr), - .in(set_data),.out(),.changed(clear)); + .in(set_data),.out(flush),.changed(clear)); setting_reg #(.my_addr(BASE+2), .at_reset(0)) sr_streamid (.clk(clk),.rst(reset),.strobe(set_stb),.addr(set_addr), .in(set_data),.out(streamid),.changed(clear_seqnum)); + //flush control - full rate vacuum of input until flush cleared + wire tx_dst_rdy_int, tx_src_rdy_int; + wire [35:0] tx_data_int; + valve36 flusher_valve + (.clk(clk), .reset(reset), .clear(clear & flush), .shutoff(flush), + .data_i(tx_data_i), .src_rdy_i(tx_src_rdy_i), .dst_rdy_o(tx_dst_rdy_o), + .data_o(tx_data_int), .src_rdy_o(tx_src_rdy_int), .dst_rdy_i(tx_dst_rdy_int)); + wire [35:0] tx_data_int1; wire tx_src_rdy_int1, tx_dst_rdy_int1; generate if (FIFOSIZE==0) begin - assign tx_data_int1 = tx_data_i; - assign tx_src_rdy_int1 = tx_src_rdy_i; - assign tx_dst_rdy_o = tx_dst_rdy_int1; + assign tx_data_int1 = tx_data_int; + assign tx_src_rdy_int1 = tx_src_rdy_int; + assign tx_dst_rdy_int = tx_dst_rdy_int1; end else begin wire [FIFOSIZE-1:0] access_adr, access_len; @@ -84,7 +92,7 @@ module vita_tx_chain .access_skip_read(access_skip_read), .access_adr(access_adr), .access_len(access_len), .access_dat_i(dsp_to_buf), .access_dat_o(buf_to_dsp), - .data_i(tx_data_i), .src_rdy_i(tx_src_rdy_i), .dst_rdy_o(tx_dst_rdy_o), + .data_i(tx_data_int), .src_rdy_i(tx_src_rdy_int), .dst_rdy_o(tx_dst_rdy_int), .data_o(tx_data_int0), .src_rdy_o(tx_src_rdy_int0), .dst_rdy_i(tx_dst_rdy_int0)); vita_tx_engine_glue #(.DSPNO(DSP_NUMBER), .MAIN_SETTINGS_BASE(BASE+1), .BUF_SIZE(FIFOSIZE), .HEADER_OFFSET(USE_TRANS_HEADER)) dspengine_tx |