1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
module zf_equalizer(input clk, input reset, input clear,
input [31:0] i_tdata, input i_tlast, input i_tvalid, output i_tready,
output [31:0] o_tdata, output o_tlast, output o_tvalid, input o_tready);
localparam ST_WAIT_FOR_FRAME = 2'd0;
localparam ST_ESTIMATE = 2'd1;
localparam ST_EQUALIZE = 2'd2;
reg [1:0] state;
localparam signed MAX_POS_VALUE = 16'd32767;
localparam signed MAX_NEG_VALUE = -16'd32767;
wire do_op = 0;
axi_fifo #(.SIZE(52)) int_axi_fifo_channel
//1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 0 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1
reg signed [31:0] long_preamble_rom [52:0];
initial()
begin
long_preamble_rom[0] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[1] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[2] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[3] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[4] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[5] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[6] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[7] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[8] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[9] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[10] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[11] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[12] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[13] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[14] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[15] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[16] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[17] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[18] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[19] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[20] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[21] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[22] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[23] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[24] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[25] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[26] = {16'b0, 16'b0};
long_preamble_rom[27] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[28] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[29] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[30] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[31] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[32] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[33] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[34] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[35] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[36] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[37] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[38] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[39] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[40] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[41] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[42] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[43] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[44] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[45] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[46] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[47] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[48] = {MAX_NEG_VALUE, 16'b0};
long_preamble_rom[49] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[50] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[51] = {MAX_POS_VALUE, 16'b0};
long_preamble_rom[52] = {MAX_POS_VALUE, 16'b0};
end
@always(posedge (clk))
begin
if(reset | clear)
begin
end
else
begin
if(do_op)
begin
case(state)
ST_WAIT_FOR_FRAME :
begin
end
ST_ESTIMATE :
begin
end
ST_EQUALIZE :
begin
end
end
end
end
endmodule
|