module code_2_audio(clk,indata,douki,outdata); input clk; input [7:0] indata; input douki; output [15:0] outdata; reg shift_douki; reg [9:0] sub_index; reg [9:0] index; reg [15:0] pre_outdata; reg [15:0] outdata; always@(posedge clk)begin shift_douki <= douki; end always@(posedge clk)begin if(shift_douki==0 && douki==1) sub_index <= 0; else if(sub_index == 767) //256*2-1 sub_index <= 0; else sub_index <= sub_index + 1'b1; end always@(posedge clk)begin if(shift_douki==0 && douki==1) index <= 0; else if(sub_index == 767 && index!=200) index <= index + 1'b1; else index <= index; end // index=:0 sub_index:602+258 -> tokushu_code -I // index=:1 sub_index:93 -> tokushu_code -I always@(posedge clk)begin if(index==0 && sub_index==100)begin pre_outdata <= pre_outdata ; end else if(index==1 && sub_index==100)begin pre_outdata<= pre_outdata; end else if(index[0]==0 && sub_index==100)begin pre_outdata[7:0] <= indata; pre_outdata[15:8] <= pre_outdata[15:8]; end else if(index[0]==1 && sub_index==100)begin pre_outdata[7:0] <= pre_outdata[7:0]; pre_outdata[15:8] <= indata; end else pre_outdata <= pre_outdata; end always@(posedge clk)begin if(index[0]==1 && sub_index==101) outdata <= pre_outdata; else outdata <= outdata; end endmodule