42 input rst,
// sync reset 43 input clk,
// single clock 44 input din_av,
// input data available 45 input din_avm_w,
// >1 word of data available (early) 46 input din_avm,
// >1 word of data available (registered din_avm_w) 47 input flushing,
// output partial dword if available (should be ? cycles after last _re/ with data?) 48 input [
31:
0]
din,
// 32-bit input dfata 49 input [
1:
0]
dm,
// data mask showing which (if any) words in input dword are valid 51 output flushed,
// flush (end of last PRD is finished - data left module) 52 output reg [
31:
0]
dout,
// output 32-bit data 54 input dout_re,
// consumer reads output data (should be AND-ed with dout_vld) 57 reg [
15:
0]
hr;
// holds 16-bit data from previous din_re if not consumed 70 // wire empty_in = din_av_safe_r && !(|dm); 71 // wire two_words_avail = &dav_in || (|dav_in && hr_full); 74 /// assign din_re = (din_av_safe_r && !(|dm)) || ((!dout_vld_r || dout_re) && (two_words_avail)) ; // flush 81 reg slow_dav;
// enable dout_vld waiting after each read out not to miss last DWORD 91 /// assign dout_vld = (&dout_vld_r) || ((|dout_vld_r) && flushing); 99 always @ (
posedge clk)
begin 105 // set low word of the OR 113 else if (
dm[
1])
dout[
15:
0] <=
din[
31:
16];
117 // set high word of the OR 133 else if (
dm[
1])
dout[
31:
16] <=
din[
31:
16];
138 // set holding register 13085debug_din_highwire[15:0]
13087debug_dout_highwire[15:0]
13097no_new_data_rreg[1:0]
13089next_or_emptywire[1:0]
13088more_words_availwire
13084debug_din_lowwire[15:0]
13086debug_dout_lowwire[15:0]