Код
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 13:41:36 03/26/2015
// Design Name:
// Module Name: tx_data
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module tdata(
input clk,
input rst,
output [7:0]data,
input handshake,
output data_valid
);
reg [31:0]counter;
reg [31:0]counter_next;
reg [7:0]out;
reg out2;
reg got_handshake;
parameter S1 = 1'b0;
parameter S2 = 1'b1;
parameter [7:0] DA1[0:0] = {8'b1111000};
parameter [7:0] DA2[0:4] = {8'b100100,8'b10101111,8'b111100,8'b1101110,8'b10101000};
parameter [7:0] SA[0:5] = {8'b11010,8'b11011,8'b11100,8'b11101,8'b11110,8'b11111};
parameter [7:0] DATA[0:47] =
{
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010,
8'b10101010,8'b10101010,8'b10101010
};
parameter [7:0] frame[0:60] = {DA2[0:4], SA[0:5], L_T[0:1], DATA[0:47]};
always @(handshake)
begin
got_handshake <= 1;
end
always @(posedge clk)
begin
if (counter_next > 1024)
begin
counter_next <= 0;
end
else
counter_next <= counter + 1'b1;
end
reg [0:0] state, next_state;
always@(*)
begin
if (rst) begin
out <= 0;
out2 <= 0;
counter <= 0;
state <= S1;
end
else
case (state)
S1 : begin
out <= DA1[counter];
out2 <= 1'h1;
next_state = (got_handshake == 1) ? S2 : S1;
counter <= counter_next;
end
S2 : begin
out <= frame[counter];
out2 <= 1'h1;
next_state = S1;
counter <= 0;
end
endcase
end
assign data = out;
assign data_valid = out2;
endmodule