
module data_error_injector (
input clk, // 时钟信号,50MHz
input reset, // 复位信号,高有效
input DIN_EN, // 数据输入使能,高有效
input [7:0] ERROR_LEVEL, // 错误等级,8位
output reg [7:0] DOUT, // 输出数据
output reg DOUT_EN, // 数据输出使能,高有效
output reg [31:0] frame_counter,// 帧计数输出信号
output reg [9:0] byte_counter, // 字节计数
output reg [9:0] byte_counter_w
);
// 状态定义
reg [1:0] current_state, next_state;
localparam STATE_INIT = 2'b00;
localparam STATE_STORE_FIRST_512 = 2'b01;
localparam STATE_STORE_AND_READ = 2'b10;
// RAM端口A的接口(用于写操作)
reg [9:0] ram_addr_a; // RAM地址,10位地址线对应1024深度
reg [7:0] ram_din_a; // RAM数据输入
reg ram_we_a; // RAM写使能
// RAM端口B的接口(用于读操作)
reg [9:0] ram_addr_b; // RAM地址,10位地址线对应1024深度
wire [7:0] ram_dout_b; // RAM数据输出
// ROM的接口
reg [9:0] rom_addr; // ROM地址
wire [7:0] rom_dout; // ROM数据输出
// 错误注入控制
reg inject_error; // 是否注入错误
reg [31:0] inject_frame; // 需要注入错误的帧号
// 内部寄存器用于存储从ROM读取的数据
// reg [7:0] DIN;