petalinux_zynq7 驱动DAC以及ADC模块之一:建立IP

0. 环境

  • ubuntu18

  • vivado 2018.3

  • mizar z7010 + ada106模块

1. vivado

1.1 创建vivado工程

运行vivado

source /tools/Xilinx/Vivado/2018.3/settings64.sh
vivado&

创建vivado工程

Vivado -> Create Project -> Next ->

-> Project name: linux_sd_adda

-> project location: /home/xxjianvm/work/mizar/

-> Next

-> RTL Project -> Next

-> Next

-> Next

-> Default part: xc7z010CLG400-1 -> Next

-> Finish

-> Finish

1.2 建立IP- PS_PL_DAC_8B

130个32位的寄存器定义

序号 定义

0 控制1,PS写,采样频率设置

1 控制2,PS写,高16位是DAC使能,低16位是数据长度

2 回复1,PL写,

3-129 数据,PS写

1.2.1 添加IP

Tools -> Create and Package New IP -> Next

-> Create a new AXI4 peripheral -> Next

-> Name: PS_PL_DAC_8B

-> Description: PS_READ_WRITE_PL_REG for dac 8 bit

-> IP location: /home/xxjianvm/work/mizar/ip_repo

-> Next

-> Add Interface

-> Number of Registers: 130

-> Next

-> Create Peripheral

-> Edit IP -> Finish

1.2.2 编辑IP

1.2.2.1 基本端口定义

双击 PS_PL_DAC_8B_v1_0.v

修改第 17 行

        // Users to add ports here
        input wire clk_50m,
        output wire dac_clk,
        output wire [7:0] dac_data,
        output wire dac_pd,
        
        // User ports ends

修改第 76 行:

        .clk_50m  (   clk_50m ),
        .dac_clk  (   dac_clk ),
        .dac_data (   dac_data),
        .dac_pd   (   dac_pd  )

1.2.2.2 双击 PS_PL_DAC_8B_v1_0_S00_AXI_inst

修改端口,第17行:

        // Users to add ports here
        input wire clk_50m,
        output wire dac_clk,
        output reg [7:0] dac_data,
        output  wire dac_pd,
        
        
        // User ports ends

slv_reg2改为PL写。注释掉alway模块内的这几行,slv_reg2就改为PS只读不可写。

注释:

// slv_reg2 <= 0;

注释

// slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];

注释

// slv_reg2 <= slv_reg2;

1.2.2.3 时钟信号

-> Project Manager -> IP Catalog -> clocking wizard ->

-> Component Name: clock

-> Clocking Options

-> Input Clock Information

-> Primary frequency: 50Mhz

-> Output Clocks

-> clk_out1: 128MHz

-> Enable Optional Inputs / Outputs for MMCM/PLL:

-> 取消勾选lcoked

-> Reset Type: Active Low

-> OK -> Generate

1.2.3 编写verilog文件,根据寄存器0,设置时钟

创建文件 da9708_clkswitch.v

这里寄存器0的定义是设置DAC采样频率。为了简便,这个DAC只支持几个64倍数的采样频率。

module da9708_clkswitch
(
	clk_128m, 
	rst_n, 
	slv_reg0,
	
	clk_64m, 
	clk_25p6m,
	clk_12p8m,
	clk_6400k,
	clk_2560k,
	clk_1280k,
	clk_640k,
	clk_256k,
	clk_128k,
	clk_64k,
	clk_25600,
	clk_12800,
	clk_6400,
	clk_2560,
	clk_1280,
	clk_640,
	clk_256,
	clk_128,
	clk_64,
	clk_25p6,
	clk_12p8,
	clk_6p4,
	
	clk_dac
);

input 	wire	clk_128m; 
input 	wire	rst_n;
input	wire	[31:0]	slv_reg0;


input 	wire	clk_64m; 
input 	wire	clk_25p6m;
input 	wire	clk_12p8m;
input 	wire	clk_6400k;
input 	wire	clk_2560k;
input 	wire	clk_1280k;
input 	wire	clk_640k;
input 	wire	clk_256k;
input 	wire	clk_128k;
input	wire		clk_64k;
input 	wire	clk_25600;
input 	wire	clk_12800;
input	wire		clk_6400;
input 	wire	clk_2560;
input 	wire	clk_1280;
input	wire		clk_640;
input 	wire	clk_256;
input 	wire	clk_128;
input	wire		clk_64;
input 	wire	clk_25p6;			// 低速时钟用来判断按键
input 	wire	clk_12p8;
input	wire		clk_6p4;

output reg	clk_dac; 

// 
always @( posedge clk_128m or negedge rst_n) begin
	if( ~rst_n ) begin
		clk_dac <= 1'b0;
	end
	else begin
		if ( slv_reg0 >= 32'd64_000_000 ) begin
			clk_dac <= clk_64m;
		end
		else if ( slv_reg0 >= 32'd25_600_000 ) begin
			clk_dac <= clk_25p6m;
		end
		else if ( slv_reg0 >= 32'd12_800_000 ) begin
			clk_dac <= clk_12p8m;
		end
		else if ( slv_reg0 >= 32'd6_400_000 ) begin
			clk_dac <= clk_6400k;
		end
		else if ( slv_reg0 >= 32'd2_560_000 ) begin
			clk_dac <= clk_2560k;
		end
		else if ( slv_reg0 >= 32'd1_280_000 ) begin
			clk_dac <= clk_1280k;
		end
		else if ( slv_reg0 >= 32'd640_000 ) begin
			clk_dac <= clk_640k;
		end
		else if ( slv_reg0 >= 32'd256_000 ) begin
			clk_dac <= clk_256k;
		end
		else if ( slv_reg0 >= 32'd128_000 ) begin
			clk_dac <= clk_128k;
		end
		else if ( slv_reg0 >= 32'd64_000 ) begin
			clk_dac <= clk_64k;
		end
		else if ( slv_reg0 >= 32'd25_600 ) begin
			clk_dac <= clk_25600;
		end
		else if ( slv_reg0 >= 32'd12_800 ) begin
			clk_dac <= clk_12800;
		end
		else if ( slv_reg0 >= 32'd6400 ) begin
			clk_dac <= clk_6400;
		end
		else if ( slv_reg0 >= 32'd2560 ) begin
			clk_dac <= clk_2560;
		end
		else if ( slv_reg0 >= 32'd1280 ) begin
			clk_dac <= clk_1280;
		end
		else if ( slv_reg0 >= 32'd640 ) begin
			clk_dac <= clk_640;
		end
		else if ( slv_reg0 >= 32'd256 ) begin
			clk_dac <= clk_256;
		end
		else if ( slv_reg0 >= 32'd128 ) begin
			clk_dac <= clk_128;
		end
		else if ( slv_reg0 >= 32'd64 ) begin
			clk_dac <= clk_64;
		end
		else if ( slv_reg0 >= 32'd25 ) begin
			clk_dac <= clk_25p6;
		end
		else if ( slv_reg0 >= 32'd12 ) begin
			clk_dac <= clk_12p8;
		end
		else if ( slv_reg0 >= 32'd6 ) begin
			clk_dac <= clk_6p4;
		end
		else begin
			clk_dac <= 1'b0;
		end
	end
end


endmodule

1.2.4 编写verilog,对128M时钟分频

1.2.4.1 da9708_clkevery.v
module da9708_clkevery
(
	clk_128m, 
	rst_n, 
	clk_64m, 
	clk_25p6m,
	clk_12p8m,
	clk_6400k,
	clk_2560k,
	clk_1280k,
	clk_640k,
	clk_256k,
	clk_128k,
	clk_64k,
	clk_25600,
	clk_12800,
	clk_6400,
	clk_2560,
	clk_1280,
	clk_640,
	clk_256,
	clk_128,
	clk_64,
	clk_25p6,
	clk_12p8,
	clk_6p4
);

input 		clk_128m; 
input 		rst_n;
output 		clk_64m; 
output 		clk_25p6m;
output 		clk_12p8m;
output 		clk_6400k;
output 		clk_2560k;
output 		clk_1280k;
output 		clk_640k;
output 		clk_256k;
output 		clk_128k;
output		clk_64k;
output 		clk_25600;
output 		clk_12800;
output		clk_6400;
output 		clk_2560;
output 		clk_1280;
output		clk_640;
output 		clk_256;
output 		clk_128;
output		clk_64;
output 		clk_25p6;
output 		clk_12p8;
output		clk_6p4;


// 时钟生成模块  64m
clk_div10 clk_div10_inst_0(
	.clk( clk_128m ),
	.rstn( rst_n ) ,
	.clk_div2( clk_64m )
);

// 时钟生成模块  25.6m, 12.8m, 6400k
clk_div2p5 clk_div2p5_inst_1(
	.clk( clk_64m ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_25p6m )
);
clk_div5 clk_div5_inst_1(
	.clk( clk_64m ),
	.rstn( rst_n ) ,
	.clk_div5( clk_12p8m )
);
clk_div10 clk_div10_inst_1(
	.clk( clk_64m ),
	.rstn( rst_n ) ,
	.clk_div10( clk_6400k )
);

// 时钟生成模块  2560k, 1280k, 640k
clk_div2p5 clk_div2p5_inst_2(
	.clk( clk_6400k ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_2560k )
);
clk_div5 clk_div5_inst_2(
	.clk( clk_6400k ),
	.rstn( rst_n ) ,
	.clk_div5( clk_1280k )
);
clk_div10 clk_div10_inst_2(
	.clk( clk_6400k ),
	.rstn( rst_n ) ,
	.clk_div10( clk_640k )
);


// 时钟生成模块  256k, 128k, 64k
clk_div2p5 clk_div2p5_inst_3(
	.clk( clk_640k ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_256k )
);
clk_div5 clk_div5_inst_3(
	.clk( clk_640k ),
	.rstn( rst_n ) ,
	.clk_div5( clk_128k )
);
clk_div10 clk_div10_inst_3(
	.clk( clk_640k ),
	.rstn( rst_n ) ,
	.clk_div10( clk_64k )
);

// 时钟生成模块  25600, 12800, 6400
clk_div2p5 clk_div2p5_inst_4(
	.clk( clk_64k ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_25600 )
);
clk_div5 clk_div5_inst_4(
	.clk( clk_64k ),
	.rstn( rst_n ) ,
	.clk_div5( clk_12800 )
);
clk_div10 clk_div10_inst_4(
	.clk( clk_64k ),
	.rstn( rst_n ) ,
	.clk_div10( clk_6400 )
);

// 时钟生成模块  2560, 1280, 640
clk_div2p5 clk_div2p5_inst_5(
	.clk( clk_6400 ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_2560 )
);
clk_div5 clk_div5_inst_5(
	.clk( clk_6400 ),
	.rstn( rst_n ) ,
	.clk_div5( clk_1280 )
);
clk_div10 clk_div10_inst_5(
	.clk( clk_6400 ),
	.rstn( rst_n ) ,
	.clk_div10( clk_640 )
);

// 时钟生成模块  256, 128, 64
clk_div2p5 clk_div2p5_inst_6(
	.clk( clk_640 ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_256 )
);
clk_div5 clk_div5_inst_6(
	.clk( clk_640 ),
	.rstn( rst_n ) ,
	.clk_div5( clk_128 )
);
clk_div10 clk_div10_inst_6(
	.clk( clk_640 ),
	.rstn( rst_n ) ,
	.clk_div10( clk_64 )
);


// 时钟生成模块  25.6, 12.8, 6.4
clk_div2p5 clk_div2p5_inst_7(
	.clk( clk_64 ),
	.rstn( rst_n ) ,
	.clk_div2p5( clk_25p6 )
);
clk_div5 clk_div5_inst_7(
	.clk( clk_64 ),
	.rstn( rst_n ) ,
	.clk_div5( clk_12p8 )
);
clk_div10 clk_div10_inst_7(
	.clk( clk_64 ),
	.rstn( rst_n ) ,
	.clk_div10( clk_6p4 )
);





endmodule
1.2.4.2 clk_div10.v

网上下载的时钟10分频:

module clk_div10
# (parameter DIV_CLK = 10 )
(
input rstn ,
input clk,
output clk_div2,
output clk_div4,
output clk_div10
);

//2 分频
reg clk_div2_r ;
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
clk_div2_r <= 'b0 ;
end
else begin
clk_div2_r <= ~clk_div2_r ;
end
end
assign clk_div2 = clk_div2_r ;

//4 分频
reg clk_div4_r ;
always @(posedge clk_div2 or negedge rstn) begin
if (!rstn) begin
clk_div4_r <= 'b0 ;
end
else begin
clk_div4_r <= ~clk_div4_r ;
end
end
assign clk_div4 = clk_div4_r ;

//N/2 计数
reg [3:0] cnt ;
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
cnt <= 'b0 ;
end
else if (cnt == (DIV_CLK/2)-1) begin
cnt <= 'b0 ;
end
else begin
cnt <= cnt + 1'b1 ;
end
end

//输出时钟
reg clk_div10_r ;
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
clk_div10_r <= 1'b0 ;
end
else if (cnt == (DIV_CLK/2)-1 ) begin
clk_div10_r <= ~clk_div10_r ;
end
end
assign clk_div10 = clk_div10_r ;
endmodule
1.2.4.3 clk_div5.v

时钟5分频是网上下载的。

module clk_div5
 #(parameter DIV_CLK = 5)
 (
  input        rstn ,
  input        clk,
  output       clk_div5
  );

 //计数器
 reg [3:0]      cnt ;
 always @(posedge clk or negedge rstn) begin
   if (!rstn) begin
    cnt  <= 'b0 ;
   end
   else if (cnt == DIV_CLK-1) begin
    cnt  <= 'b0 ;
   end
   else begin
    cnt  <= cnt + 1'b1 ;
   end
 end

 //在上升沿产生5分频
 reg         clkp_div5_r ;
 always @(posedge clk or negedge rstn) begin
   if (!rstn) begin
    clkp_div5_r <= 1'b0 ;
   end
   else if (cnt == (DIV_CLK>>1)-1 ) begin //计数4-8位低电平
    clkp_div5_r <= 0 ;
   end
   else if (cnt == DIV_CLK-1) begin //计数 0-3 为高电平
    clkp_div5_r <= 1 ;
   end
 end
 
 //在下降沿产生5分频
 reg         clkn_div5_r ;
 always @(negedge clk or negedge rstn) begin
   if (!rstn) begin
    clkn_div5_r <= 1'b0 ;
   end
   else if (cnt == (DIV_CLK>>1)-1 ) begin 
    clkn_div5_r <= 0 ;
   end
   else if (cnt == DIV_CLK-1) begin 
    clkn_div5_r <= 1 ;
   end
 end

 //或操作,往往使用基本逻辑单元库
 // or (clk_div5, clkp_div5_r, clkn_div5_r) ;
 assign clk_div5 = clkp_div5_r | clkn_div5_r ;

endmodule
1.2.4.4 clk_div2p5.v

时钟 2.5分频

module clk_div2p5(
	input        clk,
	input        rstn ,
	output       clk_div2p5
);

//计数器
parameter      MUL2_DIV_CLK = 5 ;
reg [3:0]      cnt ;
always @(posedge clk or negedge rstn) begin
   if (!rstn) begin
    cnt  <= 'b0 ;
   end
   else if (cnt == MUL2_DIV_CLK-1) begin //计数2倍分频比
    cnt  <= 'b0 ;
   end
   else begin
    cnt  <= cnt + 1'b1 ;
   end
end

 reg         clk_ave_r ;
 always @(posedge clk or negedge rstn) begin
   if (!rstn) begin
    clk_ave_r <= 1'b0 ;
   end
   //first cycle: 4 source clk cycle
   else if (cnt == 0) begin
    clk_ave_r <= 1 ;
   end
   //2nd cycle: 3 source clk cycle
   else if (cnt == (MUL2_DIV_CLK/2)+1) begin
    clk_ave_r <= 1 ;
   end
   else begin
    clk_ave_r <= 0 ;
   end
 end

 //adjust
 reg         clk_adjust_r ;
 always @(negedge clk or negedge rstn) begin
   if (!rstn) begin
    clk_adjust_r <= 1'b0 ;
   end
   //本次时钟只为调整一致的占空比
   else if (cnt == 1) begin
    clk_adjust_r <= 1 ;
   end
   //本次时钟只为调整一致的精确分频比
   else if (cnt == (MUL2_DIV_CLK/2)+1 ) begin
    clk_adjust_r <= 1 ;
   end
   else begin
    clk_adjust_r <= 0 ;
   end
 end

 assign clk_div2p5 = clk_adjust_r | clk_ave_r ;

endmodule

1.2.5 编写dac_clk驱动

dac_clk_sw.v

封装 da9708_clkswitch.v 和 da9708_clkevery.v, 实现根据寄存器0输出dac_clk,dac_clk_sw.v

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 02/18/2024 11:40:35 AM
// Design Name: 
// Module Name: dac_clk_sw
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module dac_clk_sw(

	clk_128m, 
	rst_n, 
	slv_reg0,
	
	clk_dac
);
    

input 	wire	clk_128m; 
input 	wire 	rst_n;
input	wire [31:0]	slv_reg0;
output 	wire	clk_dac; 
 
// 按键选择模块
da9708_clkswitch da9708_clkswitch_inst	( 
	.clk_128m	(	clk_128m		), 
	.rst_n		(	rst_n			), 
	.slv_reg0		(	slv_reg0			),
	
	
	.clk_64m		(	clk_64m	),
	.clk_25p6m	(	clk_25p6m	),
	.clk_12p8m	(	clk_12p8m	),
	.clk_6400k	(	clk_6400k	),
	.clk_2560k	(	clk_2560k	),
	.clk_1280k	(	clk_1280k	),
	.clk_640k	(	clk_640k		),
	.clk_256k	(	clk_256k		),
	.clk_128k	(	clk_128k		),
	.clk_64k		(	clk_64k		),
	.clk_25600	(	clk_25600	),
	.clk_12800	(	clk_12800	),
	.clk_6400	(	clk_6400		),
	.clk_2560	(	clk_2560		),
	.clk_1280	(	clk_1280		),
	.clk_640		(	clk_640		),
	.clk_256		(	clk_256		),
	.clk_128		(	clk_128		),
	.clk_64		(	clk_64		),
	.clk_25p6	(	clk_25p6		),
	.clk_12p8	(	clk_12p8		),
	.clk_6p4		(	clk_6p4		),
	
	.clk_dac		(	clk_dac		 )
);

// 时钟生成模块
da9708_clkevery da9708_clkevery_inst1(
	.clk_128m	(	clk_128m		), 
	.rst_n		(	rst_n			), 
	
	.clk_64m		(	clk_64m	),
	.clk_25p6m	(	clk_25p6m	),
	.clk_12p8m	(	clk_12p8m	),
	.clk_6400k	(	clk_6400k	),
	.clk_2560k	(	clk_2560k	),
	.clk_1280k	(	clk_1280k	),
	.clk_640k	(	clk_640k		),
	.clk_256k	(	clk_256k		),
	.clk_128k	(	clk_128k		),
	.clk_64k		(	clk_64k		),
	.clk_25600	(	clk_25600	),
	.clk_12800	(	clk_12800	),
	.clk_6400	(	clk_6400		),
	.clk_2560	(	clk_2560		),
	.clk_1280	(	clk_1280		),
	.clk_640		(	clk_640		),
	.clk_256		(	clk_256		),
	.clk_128		(	clk_128		),
	.clk_64		(	clk_64		),
	.clk_25p6	(	clk_25p6		),
	.clk_12p8	(	clk_12p8		),
	.clk_6p4		(	clk_6p4		)
);


endmodule

1.2.6 继续修改 PS_PL_DAC_8B_v1_0_S00_AXI_inst

	// Add user logic here
    clk_wiz_0 inst_clk_wiz_0(
        .clk_in1  (clk_50m ),	        // input clk_in1
        .resetn   (S_AXI_ARESETN  ),    // input reset
        .clk_out1 (clk_128m)            // output clk_out1
    );      
    dac_clk_sw dac_clk_sw_inst(
        .clk_128m          (   clk_128m    ), 
        .rst_n             (   S_AXI_ARESETN  ), 
        .slv_reg0          (   slv_reg0    ),
        .clk_dac           (   dac_clk     )
    );   
    reg [15:0] dac_cnt = 16'd0; 
    always @( posedge dac_clk or negedge S_AXI_ARESETN ) begin
        if ( S_AXI_ARESETN == 1'b0 ) begin
            dac_cnt <= 16'd0;
        end
        else begin
            if ( dac_cnt >= slv_reg1[15:0] - 1'b1 ) begin
                dac_cnt <= 16'd0;
            end
            else begin
                dac_cnt <= dac_cnt + 1'b1;
            end
        end
    end

wire [7:0] dac_buffer [507:0];
assign dac_buffer[	0	] = slv_reg3	[7:0];
assign dac_buffer[	1	] = slv_reg3	[15:8];
assign dac_buffer[	2	] = slv_reg3	[23:16];
assign dac_buffer[	3	] = slv_reg3	[31:24];
assign dac_buffer[	4	] = slv_reg4	[7:0];
assign dac_buffer[	5	] = slv_reg4	[15:8];
assign dac_buffer[	6	] = slv_reg4	[23:16];
assign dac_buffer[	7	] = slv_reg4	[31:24];
assign dac_buffer[	8	] = slv_reg5	[7:0];
assign dac_buffer[	9	] = slv_reg5	[15:8];
assign dac_buffer[	10	] = slv_reg5	[23:16];
assign dac_buffer[	11	] = slv_reg5	[31:24];
assign dac_buffer[	12	] = slv_reg6	[7:0];
assign dac_buffer[	13	] = slv_reg6	[15:8];
assign dac_buffer[	14	] = slv_reg6	[23:16];
assign dac_buffer[	15	] = slv_reg6	[31:24];
assign dac_buffer[	16	] = slv_reg7	[7:0];
assign dac_buffer[	17	] = slv_reg7	[15:8];
assign dac_buffer[	18	] = slv_reg7	[23:16];
assign dac_buffer[	19	] = slv_reg7	[31:24];
assign dac_buffer[	20	] = slv_reg8	[7:0];
assign dac_buffer[	21	] = slv_reg8	[15:8];
assign dac_buffer[	22	] = slv_reg8	[23:16];
assign dac_buffer[	23	] = slv_reg8	[31:24];
assign dac_buffer[	24	] = slv_reg9	[7:0];
assign dac_buffer[	25	] = slv_reg9	[15:8];
assign dac_buffer[	26	] = slv_reg9	[23:16];
assign dac_buffer[	27	] = slv_reg9	[31:24];
assign dac_buffer[	28	] = slv_reg10	[7:0];
assign dac_buffer[	29	] = slv_reg10	[15:8];
assign dac_buffer[	30	] = slv_reg10	[23:16];
assign dac_buffer[	31	] = slv_reg10	[31:24];
assign dac_buffer[	32	] = slv_reg11	[7:0];
assign dac_buffer[	33	] = slv_reg11	[15:8];
assign dac_buffer[	34	] = slv_reg11	[23:16];
assign dac_buffer[	35	] = slv_reg11	[31:24];
assign dac_buffer[	36	] = slv_reg12	[7:0];
assign dac_buffer[	37	] = slv_reg12	[15:8];
assign dac_buffer[	38	] = slv_reg12	[23:16];
assign dac_buffer[	39	] = slv_reg12	[31:24];
assign dac_buffer[	40	] = slv_reg13	[7:0];
assign dac_buffer[	41	] = slv_reg13	[15:8];
assign dac_buffer[	42	] = slv_reg13	[23:16];
assign dac_buffer[	43	] = slv_reg13	[31:24];
assign dac_buffer[	44	] = slv_reg14	[7:0];
assign dac_buffer[	45	] = slv_reg14	[15:8];
assign dac_buffer[	46	] = slv_reg14	[23:16];
assign dac_buffer[	47	] = slv_reg14	[31:24];
assign dac_buffer[	48	] = slv_reg15	[7:0];
assign dac_buffer[	49	] = slv_reg15	[15:8];
assign dac_buffer[	50	] = slv_reg15	[23:16];
assign dac_buffer[	51	] = slv_reg15	[31:24];
assign dac_buffer[	52	] = slv_reg16	[7:0];
assign dac_buffer[	53	] = slv_reg16	[15:8];
assign dac_buffer[	54	] = slv_reg16	[23:16];
assign dac_buffer[	55	] = slv_reg16	[31:24];
assign dac_buffer[	56	] = slv_reg17	[7:0];
assign dac_buffer[	57	] = slv_reg17	[15:8];
assign dac_buffer[	58	] = slv_reg17	[23:16];
assign dac_buffer[	59	] = slv_reg17	[31:24];
assign dac_buffer[	60	] = slv_reg18	[7:0];
assign dac_buffer[	61	] = slv_reg18	[15:8];
assign dac_buffer[	62	] = slv_reg18	[23:16];
assign dac_buffer[	63	] = slv_reg18	[31:24];
assign dac_buffer[	64	] = slv_reg19	[7:0];
assign dac_buffer[	65	] = slv_reg19	[15:8];
assign dac_buffer[	66	] = slv_reg19	[23:16];
assign dac_buffer[	67	] = slv_reg19	[31:24];
assign dac_buffer[	68	] = slv_reg20	[7:0];
assign dac_buffer[	69	] = slv_reg20	[15:8];
assign dac_buffer[	70	] = slv_reg20	[23:16];
assign dac_buffer[	71	] = slv_reg20	[31:24];
assign dac_buffer[	72	] = slv_reg21	[7:0];
assign dac_buffer[	73	] = slv_reg21	[15:8];
assign dac_buffer[	74	] = slv_reg21	[23:16];
assign dac_buffer[	75	] = slv_reg21	[31:24];
assign dac_buffer[	76	] = slv_reg22	[7:0];
assign dac_buffer[	77	] = slv_reg22	[15:8];
assign dac_buffer[	78	] = slv_reg22	[23:16];
assign dac_buffer[	79	] = slv_reg22	[31:24];
assign dac_buffer[	80	] = slv_reg23	[7:0];
assign dac_buffer[	81	] = slv_reg23	[15:8];
assign dac_buffer[	82	] = slv_reg23	[23:16];
assign dac_buffer[	83	] = slv_reg23	[31:24];
assign dac_buffer[	84	] = slv_reg24	[7:0];
assign dac_buffer[	85	] = slv_reg24	[15:8];
assign dac_buffer[	86	] = slv_reg24	[23:16];
assign dac_buffer[	87	] = slv_reg24	[31:24];
assign dac_buffer[	88	] = slv_reg25	[7:0];
assign dac_buffer[	89	] = slv_reg25	[15:8];
assign dac_buffer[	90	] = slv_reg25	[23:16];
assign dac_buffer[	91	] = slv_reg25	[31:24];
assign dac_buffer[	92	] = slv_reg26	[7:0];
assign dac_buffer[	93	] = slv_reg26	[15:8];
assign dac_buffer[	94	] = slv_reg26	[23:16];
assign dac_buffer[	95	] = slv_reg26	[31:24];
assign dac_buffer[	96	] = slv_reg27	[7:0];
assign dac_buffer[	97	] = slv_reg27	[15:8];
assign dac_buffer[	98	] = slv_reg27	[23:16];
assign dac_buffer[	99	] = slv_reg27	[31:24];
assign dac_buffer[	100	] = slv_reg28	[7:0];
assign dac_buffer[	101	] = slv_reg28	[15:8];
assign dac_buffer[	102	] = slv_reg28	[23:16];
assign dac_buffer[	103	] = slv_reg28	[31:24];
assign dac_buffer[	104	] = slv_reg29	[7:0];
assign dac_buffer[	105	] = slv_reg29	[15:8];
assign dac_buffer[	106	] = slv_reg29	[23:16];
assign dac_buffer[	107	] = slv_reg29	[31:24];
assign dac_buffer[	108	] = slv_reg30	[7:0];
assign dac_buffer[	109	] = slv_reg30	[15:8];
assign dac_buffer[	110	] = slv_reg30	[23:16];
assign dac_buffer[	111	] = slv_reg30	[31:24];
assign dac_buffer[	112	] = slv_reg31	[7:0];
assign dac_buffer[	113	] = slv_reg31	[15:8];
assign dac_buffer[	114	] = slv_reg31	[23:16];
assign dac_buffer[	115	] = slv_reg31	[31:24];
assign dac_buffer[	116	] = slv_reg32	[7:0];
assign dac_buffer[	117	] = slv_reg32	[15:8];
assign dac_buffer[	118	] = slv_reg32	[23:16];
assign dac_buffer[	119	] = slv_reg32	[31:24];
assign dac_buffer[	120	] = slv_reg33	[7:0];
assign dac_buffer[	121	] = slv_reg33	[15:8];
assign dac_buffer[	122	] = slv_reg33	[23:16];
assign dac_buffer[	123	] = slv_reg33	[31:24];
assign dac_buffer[	124	] = slv_reg34	[7:0];
assign dac_buffer[	125	] = slv_reg34	[15:8];
assign dac_buffer[	126	] = slv_reg34	[23:16];
assign dac_buffer[	127	] = slv_reg34	[31:24];
assign dac_buffer[	128	] = slv_reg35	[7:0];
assign dac_buffer[	129	] = slv_reg35	[15:8];
assign dac_buffer[	130	] = slv_reg35	[23:16];
assign dac_buffer[	131	] = slv_reg35	[31:24];
assign dac_buffer[	132	] = slv_reg36	[7:0];
assign dac_buffer[	133	] = slv_reg36	[15:8];
assign dac_buffer[	134	] = slv_reg36	[23:16];
assign dac_buffer[	135	] = slv_reg36	[31:24];
assign dac_buffer[	136	] = slv_reg37	[7:0];
assign dac_buffer[	137	] = slv_reg37	[15:8];
assign dac_buffer[	138	] = slv_reg37	[23:16];
assign dac_buffer[	139	] = slv_reg37	[31:24];
assign dac_buffer[	140	] = slv_reg38	[7:0];
assign dac_buffer[	141	] = slv_reg38	[15:8];
assign dac_buffer[	142	] = slv_reg38	[23:16];
assign dac_buffer[	143	] = slv_reg38	[31:24];
assign dac_buffer[	144	] = slv_reg39	[7:0];
assign dac_buffer[	145	] = slv_reg39	[15:8];
assign dac_buffer[	146	] = slv_reg39	[23:16];
assign dac_buffer[	147	] = slv_reg39	[31:24];
assign dac_buffer[	148	] = slv_reg40	[7:0];
assign dac_buffer[	149	] = slv_reg40	[15:8];
assign dac_buffer[	150	] = slv_reg40	[23:16];
assign dac_buffer[	151	] = slv_reg40	[31:24];
assign dac_buffer[	152	] = slv_reg41	[7:0];
assign dac_buffer[	153	] = slv_reg41	[15:8];
assign dac_buffer[	154	] = slv_reg41	[23:16];
assign dac_buffer[	155	] = slv_reg41	[31:24];
assign dac_buffer[	156	] = slv_reg42	[7:0];
assign dac_buffer[	157	] = slv_reg42	[15:8];
assign dac_buffer[	158	] = slv_reg42	[23:16];
assign dac_buffer[	159	] = slv_reg42	[31:24];
assign dac_buffer[	160	] = slv_reg43	[7:0];
assign dac_buffer[	161	] = slv_reg43	[15:8];
assign dac_buffer[	162	] = slv_reg43	[23:16];
assign dac_buffer[	163	] = slv_reg43	[31:24];
assign dac_buffer[	164	] = slv_reg44	[7:0];
assign dac_buffer[	165	] = slv_reg44	[15:8];
assign dac_buffer[	166	] = slv_reg44	[23:16];
assign dac_buffer[	167	] = slv_reg44	[31:24];
assign dac_buffer[	168	] = slv_reg45	[7:0];
assign dac_buffer[	169	] = slv_reg45	[15:8];
assign dac_buffer[	170	] = slv_reg45	[23:16];
assign dac_buffer[	171	] = slv_reg45	[31:24];
assign dac_buffer[	172	] = slv_reg46	[7:0];
assign dac_buffer[	173	] = slv_reg46	[15:8];
assign dac_buffer[	174	] = slv_reg46	[23:16];
assign dac_buffer[	175	] = slv_reg46	[31:24];
assign dac_buffer[	176	] = slv_reg47	[7:0];
assign dac_buffer[	177	] = slv_reg47	[15:8];
assign dac_buffer[	178	] = slv_reg47	[23:16];
assign dac_buffer[	179	] = slv_reg47	[31:24];
assign dac_buffer[	180	] = slv_reg48	[7:0];
assign dac_buffer[	181	] = slv_reg48	[15:8];
assign dac_buffer[	182	] = slv_reg48	[23:16];
assign dac_buffer[	183	] = slv_reg48	[31:24];
assign dac_buffer[	184	] = slv_reg49	[7:0];
assign dac_buffer[	185	] = slv_reg49	[15:8];
assign dac_buffer[	186	] = slv_reg49	[23:16];
assign dac_buffer[	187	] = slv_reg49	[31:24];
assign dac_buffer[	188	] = slv_reg50	[7:0];
assign dac_buffer[	189	] = slv_reg50	[15:8];
assign dac_buffer[	190	] = slv_reg50	[23:16];
assign dac_buffer[	191	] = slv_reg50	[31:24];
assign dac_buffer[	192	] = slv_reg51	[7:0];
assign dac_buffer[	193	] = slv_reg51	[15:8];
assign dac_buffer[	194	] = slv_reg51	[23:16];
assign dac_buffer[	195	] = slv_reg51	[31:24];
assign dac_buffer[	196	] = slv_reg52	[7:0];
assign dac_buffer[	197	] = slv_reg52	[15:8];
assign dac_buffer[	198	] = slv_reg52	[23:16];
assign dac_buffer[	199	] = slv_reg52	[31:24];
assign dac_buffer[	200	] = slv_reg53	[7:0];
assign dac_buffer[	201	] = slv_reg53	[15:8];
assign dac_buffer[	202	] = slv_reg53	[23:16];
assign dac_buffer[	203	] = slv_reg53	[31:24];
assign dac_buffer[	204	] = slv_reg54	[7:0];
assign dac_buffer[	205	] = slv_reg54	[15:8];
assign dac_buffer[	206	] = slv_reg54	[23:16];
assign dac_buffer[	207	] = slv_reg54	[31:24];
assign dac_buffer[	208	] = slv_reg55	[7:0];
assign dac_buffer[	209	] = slv_reg55	[15:8];
assign dac_buffer[	210	] = slv_reg55	[23:16];
assign dac_buffer[	211	] = slv_reg55	[31:24];
assign dac_buffer[	212	] = slv_reg56	[7:0];
assign dac_buffer[	213	] = slv_reg56	[15:8];
assign dac_buffer[	214	] = slv_reg56	[23:16];
assign dac_buffer[	215	] = slv_reg56	[31:24];
assign dac_buffer[	216	] = slv_reg57	[7:0];
assign dac_buffer[	217	] = slv_reg57	[15:8];
assign dac_buffer[	218	] = slv_reg57	[23:16];
assign dac_buffer[	219	] = slv_reg57	[31:24];
assign dac_buffer[	220	] = slv_reg58	[7:0];
assign dac_buffer[	221	] = slv_reg58	[15:8];
assign dac_buffer[	222	] = slv_reg58	[23:16];
assign dac_buffer[	223	] = slv_reg58	[31:24];
assign dac_buffer[	224	] = slv_reg59	[7:0];
assign dac_buffer[	225	] = slv_reg59	[15:8];
assign dac_buffer[	226	] = slv_reg59	[23:16];
assign dac_buffer[	227	] = slv_reg59	[31:24];
assign dac_buffer[	228	] = slv_reg60	[7:0];
assign dac_buffer[	229	] = slv_reg60	[15:8];
assign dac_buffer[	230	] = slv_reg60	[23:16];
assign dac_buffer[	231	] = slv_reg60	[31:24];
assign dac_buffer[	232	] = slv_reg61	[7:0];
assign dac_buffer[	233	] = slv_reg61	[15:8];
assign dac_buffer[	234	] = slv_reg61	[23:16];
assign dac_buffer[	235	] = slv_reg61	[31:24];
assign dac_buffer[	236	] = slv_reg62	[7:0];
assign dac_buffer[	237	] = slv_reg62	[15:8];
assign dac_buffer[	238	] = slv_reg62	[23:16];
assign dac_buffer[	239	] = slv_reg62	[31:24];
assign dac_buffer[	240	] = slv_reg63	[7:0];
assign dac_buffer[	241	] = slv_reg63	[15:8];
assign dac_buffer[	242	] = slv_reg63	[23:16];
assign dac_buffer[	243	] = slv_reg63	[31:24];
assign dac_buffer[	244	] = slv_reg64	[7:0];
assign dac_buffer[	245	] = slv_reg64	[15:8];
assign dac_buffer[	246	] = slv_reg64	[23:16];
assign dac_buffer[	247	] = slv_reg64	[31:24];
assign dac_buffer[	248	] = slv_reg65	[7:0];
assign dac_buffer[	249	] = slv_reg65	[15:8];
assign dac_buffer[	250	] = slv_reg65	[23:16];
assign dac_buffer[	251	] = slv_reg65	[31:24];
assign dac_buffer[	252	] = slv_reg66	[7:0];
assign dac_buffer[	253	] = slv_reg66	[15:8];
assign dac_buffer[	254	] = slv_reg66	[23:16];
assign dac_buffer[	255	] = slv_reg66	[31:24];
assign dac_buffer[	256	] = slv_reg67	[7:0];
assign dac_buffer[	257	] = slv_reg67	[15:8];
assign dac_buffer[	258	] = slv_reg67	[23:16];
assign dac_buffer[	259	] = slv_reg67	[31:24];
assign dac_buffer[	260	] = slv_reg68	[7:0];
assign dac_buffer[	261	] = slv_reg68	[15:8];
assign dac_buffer[	262	] = slv_reg68	[23:16];
assign dac_buffer[	263	] = slv_reg68	[31:24];
assign dac_buffer[	264	] = slv_reg69	[7:0];
assign dac_buffer[	265	] = slv_reg69	[15:8];
assign dac_buffer[	266	] = slv_reg69	[23:16];
assign dac_buffer[	267	] = slv_reg69	[31:24];
assign dac_buffer[	268	] = slv_reg70	[7:0];
assign dac_buffer[	269	] = slv_reg70	[15:8];
assign dac_buffer[	270	] = slv_reg70	[23:16];
assign dac_buffer[	271	] = slv_reg70	[31:24];
assign dac_buffer[	272	] = slv_reg71	[7:0];
assign dac_buffer[	273	] = slv_reg71	[15:8];
assign dac_buffer[	274	] = slv_reg71	[23:16];
assign dac_buffer[	275	] = slv_reg71	[31:24];
assign dac_buffer[	276	] = slv_reg72	[7:0];
assign dac_buffer[	277	] = slv_reg72	[15:8];
assign dac_buffer[	278	] = slv_reg72	[23:16];
assign dac_buffer[	279	] = slv_reg72	[31:24];
assign dac_buffer[	280	] = slv_reg73	[7:0];
assign dac_buffer[	281	] = slv_reg73	[15:8];
assign dac_buffer[	282	] = slv_reg73	[23:16];
assign dac_buffer[	283	] = slv_reg73	[31:24];
assign dac_buffer[	284	] = slv_reg74	[7:0];
assign dac_buffer[	285	] = slv_reg74	[15:8];
assign dac_buffer[	286	] = slv_reg74	[23:16];
assign dac_buffer[	287	] = slv_reg74	[31:24];
assign dac_buffer[	288	] = slv_reg75	[7:0];
assign dac_buffer[	289	] = slv_reg75	[15:8];
assign dac_buffer[	290	] = slv_reg75	[23:16];
assign dac_buffer[	291	] = slv_reg75	[31:24];
assign dac_buffer[	292	] = slv_reg76	[7:0];
assign dac_buffer[	293	] = slv_reg76	[15:8];
assign dac_buffer[	294	] = slv_reg76	[23:16];
assign dac_buffer[	295	] = slv_reg76	[31:24];
assign dac_buffer[	296	] = slv_reg77	[7:0];
assign dac_buffer[	297	] = slv_reg77	[15:8];
assign dac_buffer[	298	] = slv_reg77	[23:16];
assign dac_buffer[	299	] = slv_reg77	[31:24];
assign dac_buffer[	300	] = slv_reg78	[7:0];
assign dac_buffer[	301	] = slv_reg78	[15:8];
assign dac_buffer[	302	] = slv_reg78	[23:16];
assign dac_buffer[	303	] = slv_reg78	[31:24];
assign dac_buffer[	304	] = slv_reg79	[7:0];
assign dac_buffer[	305	] = slv_reg79	[15:8];
assign dac_buffer[	306	] = slv_reg79	[23:16];
assign dac_buffer[	307	] = slv_reg79	[31:24];
assign dac_buffer[	308	] = slv_reg80	[7:0];
assign dac_buffer[	309	] = slv_reg80	[15:8];
assign dac_buffer[	310	] = slv_reg80	[23:16];
assign dac_buffer[	311	] = slv_reg80	[31:24];
assign dac_buffer[	312	] = slv_reg81	[7:0];
assign dac_buffer[	313	] = slv_reg81	[15:8];
assign dac_buffer[	314	] = slv_reg81	[23:16];
assign dac_buffer[	315	] = slv_reg81	[31:24];
assign dac_buffer[	316	] = slv_reg82	[7:0];
assign dac_buffer[	317	] = slv_reg82	[15:8];
assign dac_buffer[	318	] = slv_reg82	[23:16];
assign dac_buffer[	319	] = slv_reg82	[31:24];
assign dac_buffer[	320	] = slv_reg83	[7:0];
assign dac_buffer[	321	] = slv_reg83	[15:8];
assign dac_buffer[	322	] = slv_reg83	[23:16];
assign dac_buffer[	323	] = slv_reg83	[31:24];
assign dac_buffer[	324	] = slv_reg84	[7:0];
assign dac_buffer[	325	] = slv_reg84	[15:8];
assign dac_buffer[	326	] = slv_reg84	[23:16];
assign dac_buffer[	327	] = slv_reg84	[31:24];
assign dac_buffer[	328	] = slv_reg85	[7:0];
assign dac_buffer[	329	] = slv_reg85	[15:8];
assign dac_buffer[	330	] = slv_reg85	[23:16];
assign dac_buffer[	331	] = slv_reg85	[31:24];
assign dac_buffer[	332	] = slv_reg86	[7:0];
assign dac_buffer[	333	] = slv_reg86	[15:8];
assign dac_buffer[	334	] = slv_reg86	[23:16];
assign dac_buffer[	335	] = slv_reg86	[31:24];
assign dac_buffer[	336	] = slv_reg87	[7:0];
assign dac_buffer[	337	] = slv_reg87	[15:8];
assign dac_buffer[	338	] = slv_reg87	[23:16];
assign dac_buffer[	339	] = slv_reg87	[31:24];
assign dac_buffer[	340	] = slv_reg88	[7:0];
assign dac_buffer[	341	] = slv_reg88	[15:8];
assign dac_buffer[	342	] = slv_reg88	[23:16];
assign dac_buffer[	343	] = slv_reg88	[31:24];
assign dac_buffer[	344	] = slv_reg89	[7:0];
assign dac_buffer[	345	] = slv_reg89	[15:8];
assign dac_buffer[	346	] = slv_reg89	[23:16];
assign dac_buffer[	347	] = slv_reg89	[31:24];
assign dac_buffer[	348	] = slv_reg90	[7:0];
assign dac_buffer[	349	] = slv_reg90	[15:8];
assign dac_buffer[	350	] = slv_reg90	[23:16];
assign dac_buffer[	351	] = slv_reg90	[31:24];
assign dac_buffer[	352	] = slv_reg91	[7:0];
assign dac_buffer[	353	] = slv_reg91	[15:8];
assign dac_buffer[	354	] = slv_reg91	[23:16];
assign dac_buffer[	355	] = slv_reg91	[31:24];
assign dac_buffer[	356	] = slv_reg92	[7:0];
assign dac_buffer[	357	] = slv_reg92	[15:8];
assign dac_buffer[	358	] = slv_reg92	[23:16];
assign dac_buffer[	359	] = slv_reg92	[31:24];
assign dac_buffer[	360	] = slv_reg93	[7:0];
assign dac_buffer[	361	] = slv_reg93	[15:8];
assign dac_buffer[	362	] = slv_reg93	[23:16];
assign dac_buffer[	363	] = slv_reg93	[31:24];
assign dac_buffer[	364	] = slv_reg94	[7:0];
assign dac_buffer[	365	] = slv_reg94	[15:8];
assign dac_buffer[	366	] = slv_reg94	[23:16];
assign dac_buffer[	367	] = slv_reg94	[31:24];
assign dac_buffer[	368	] = slv_reg95	[7:0];
assign dac_buffer[	369	] = slv_reg95	[15:8];
assign dac_buffer[	370	] = slv_reg95	[23:16];
assign dac_buffer[	371	] = slv_reg95	[31:24];
assign dac_buffer[	372	] = slv_reg96	[7:0];
assign dac_buffer[	373	] = slv_reg96	[15:8];
assign dac_buffer[	374	] = slv_reg96	[23:16];
assign dac_buffer[	375	] = slv_reg96	[31:24];
assign dac_buffer[	376	] = slv_reg97	[7:0];
assign dac_buffer[	377	] = slv_reg97	[15:8];
assign dac_buffer[	378	] = slv_reg97	[23:16];
assign dac_buffer[	379	] = slv_reg97	[31:24];
assign dac_buffer[	380	] = slv_reg98	[7:0];
assign dac_buffer[	381	] = slv_reg98	[15:8];
assign dac_buffer[	382	] = slv_reg98	[23:16];
assign dac_buffer[	383	] = slv_reg98	[31:24];
assign dac_buffer[	384	] = slv_reg99	[7:0];
assign dac_buffer[	385	] = slv_reg99	[15:8];
assign dac_buffer[	386	] = slv_reg99	[23:16];
assign dac_buffer[	387	] = slv_reg99	[31:24];
assign dac_buffer[	388	] = slv_reg100	[7:0];
assign dac_buffer[	389	] = slv_reg100	[15:8];
assign dac_buffer[	390	] = slv_reg100	[23:16];
assign dac_buffer[	391	] = slv_reg100	[31:24];
assign dac_buffer[	392	] = slv_reg101	[7:0];
assign dac_buffer[	393	] = slv_reg101	[15:8];
assign dac_buffer[	394	] = slv_reg101	[23:16];
assign dac_buffer[	395	] = slv_reg101	[31:24];
assign dac_buffer[	396	] = slv_reg102	[7:0];
assign dac_buffer[	397	] = slv_reg102	[15:8];
assign dac_buffer[	398	] = slv_reg102	[23:16];
assign dac_buffer[	399	] = slv_reg102	[31:24];
assign dac_buffer[	400	] = slv_reg103	[7:0];
assign dac_buffer[	401	] = slv_reg103	[15:8];
assign dac_buffer[	402	] = slv_reg103	[23:16];
assign dac_buffer[	403	] = slv_reg103	[31:24];
assign dac_buffer[	404	] = slv_reg104	[7:0];
assign dac_buffer[	405	] = slv_reg104	[15:8];
assign dac_buffer[	406	] = slv_reg104	[23:16];
assign dac_buffer[	407	] = slv_reg104	[31:24];
assign dac_buffer[	408	] = slv_reg105	[7:0];
assign dac_buffer[	409	] = slv_reg105	[15:8];
assign dac_buffer[	410	] = slv_reg105	[23:16];
assign dac_buffer[	411	] = slv_reg105	[31:24];
assign dac_buffer[	412	] = slv_reg106	[7:0];
assign dac_buffer[	413	] = slv_reg106	[15:8];
assign dac_buffer[	414	] = slv_reg106	[23:16];
assign dac_buffer[	415	] = slv_reg106	[31:24];
assign dac_buffer[	416	] = slv_reg107	[7:0];
assign dac_buffer[	417	] = slv_reg107	[15:8];
assign dac_buffer[	418	] = slv_reg107	[23:16];
assign dac_buffer[	419	] = slv_reg107	[31:24];
assign dac_buffer[	420	] = slv_reg108	[7:0];
assign dac_buffer[	421	] = slv_reg108	[15:8];
assign dac_buffer[	422	] = slv_reg108	[23:16];
assign dac_buffer[	423	] = slv_reg108	[31:24];
assign dac_buffer[	424	] = slv_reg109	[7:0];
assign dac_buffer[	425	] = slv_reg109	[15:8];
assign dac_buffer[	426	] = slv_reg109	[23:16];
assign dac_buffer[	427	] = slv_reg109	[31:24];
assign dac_buffer[	428	] = slv_reg110	[7:0];
assign dac_buffer[	429	] = slv_reg110	[15:8];
assign dac_buffer[	430	] = slv_reg110	[23:16];
assign dac_buffer[	431	] = slv_reg110	[31:24];
assign dac_buffer[	432	] = slv_reg111	[7:0];
assign dac_buffer[	433	] = slv_reg111	[15:8];
assign dac_buffer[	434	] = slv_reg111	[23:16];
assign dac_buffer[	435	] = slv_reg111	[31:24];
assign dac_buffer[	436	] = slv_reg112	[7:0];
assign dac_buffer[	437	] = slv_reg112	[15:8];
assign dac_buffer[	438	] = slv_reg112	[23:16];
assign dac_buffer[	439	] = slv_reg112	[31:24];
assign dac_buffer[	440	] = slv_reg113	[7:0];
assign dac_buffer[	441	] = slv_reg113	[15:8];
assign dac_buffer[	442	] = slv_reg113	[23:16];
assign dac_buffer[	443	] = slv_reg113	[31:24];
assign dac_buffer[	444	] = slv_reg114	[7:0];
assign dac_buffer[	445	] = slv_reg114	[15:8];
assign dac_buffer[	446	] = slv_reg114	[23:16];
assign dac_buffer[	447	] = slv_reg114	[31:24];
assign dac_buffer[	448	] = slv_reg115	[7:0];
assign dac_buffer[	449	] = slv_reg115	[15:8];
assign dac_buffer[	450	] = slv_reg115	[23:16];
assign dac_buffer[	451	] = slv_reg115	[31:24];
assign dac_buffer[	452	] = slv_reg116	[7:0];
assign dac_buffer[	453	] = slv_reg116	[15:8];
assign dac_buffer[	454	] = slv_reg116	[23:16];
assign dac_buffer[	455	] = slv_reg116	[31:24];
assign dac_buffer[	456	] = slv_reg117	[7:0];
assign dac_buffer[	457	] = slv_reg117	[15:8];
assign dac_buffer[	458	] = slv_reg117	[23:16];
assign dac_buffer[	459	] = slv_reg117	[31:24];
assign dac_buffer[	460	] = slv_reg118	[7:0];
assign dac_buffer[	461	] = slv_reg118	[15:8];
assign dac_buffer[	462	] = slv_reg118	[23:16];
assign dac_buffer[	463	] = slv_reg118	[31:24];
assign dac_buffer[	464	] = slv_reg119	[7:0];
assign dac_buffer[	465	] = slv_reg119	[15:8];
assign dac_buffer[	466	] = slv_reg119	[23:16];
assign dac_buffer[	467	] = slv_reg119	[31:24];
assign dac_buffer[	468	] = slv_reg120	[7:0];
assign dac_buffer[	469	] = slv_reg120	[15:8];
assign dac_buffer[	470	] = slv_reg120	[23:16];
assign dac_buffer[	471	] = slv_reg120	[31:24];
assign dac_buffer[	472	] = slv_reg121	[7:0];
assign dac_buffer[	473	] = slv_reg121	[15:8];
assign dac_buffer[	474	] = slv_reg121	[23:16];
assign dac_buffer[	475	] = slv_reg121	[31:24];
assign dac_buffer[	476	] = slv_reg122	[7:0];
assign dac_buffer[	477	] = slv_reg122	[15:8];
assign dac_buffer[	478	] = slv_reg122	[23:16];
assign dac_buffer[	479	] = slv_reg122	[31:24];
assign dac_buffer[	480	] = slv_reg123	[7:0];
assign dac_buffer[	481	] = slv_reg123	[15:8];
assign dac_buffer[	482	] = slv_reg123	[23:16];
assign dac_buffer[	483	] = slv_reg123	[31:24];
assign dac_buffer[	484	] = slv_reg124	[7:0];
assign dac_buffer[	485	] = slv_reg124	[15:8];
assign dac_buffer[	486	] = slv_reg124	[23:16];
assign dac_buffer[	487	] = slv_reg124	[31:24];
assign dac_buffer[	488	] = slv_reg125	[7:0];
assign dac_buffer[	489	] = slv_reg125	[15:8];
assign dac_buffer[	490	] = slv_reg125	[23:16];
assign dac_buffer[	491	] = slv_reg125	[31:24];
assign dac_buffer[	492	] = slv_reg126	[7:0];
assign dac_buffer[	493	] = slv_reg126	[15:8];
assign dac_buffer[	494	] = slv_reg126	[23:16];
assign dac_buffer[	495	] = slv_reg126	[31:24];
assign dac_buffer[	496	] = slv_reg127	[7:0];
assign dac_buffer[	497	] = slv_reg127	[15:8];
assign dac_buffer[	498	] = slv_reg127	[23:16];
assign dac_buffer[	499	] = slv_reg127	[31:24];
assign dac_buffer[	500	] = slv_reg128	[7:0];
assign dac_buffer[	501	] = slv_reg128	[15:8];
assign dac_buffer[	502	] = slv_reg128	[23:16];
assign dac_buffer[	503	] = slv_reg128	[31:24];
assign dac_buffer[	504	] = slv_reg129	[7:0];
assign dac_buffer[	505	] = slv_reg129	[15:8];
assign dac_buffer[	506	] = slv_reg129	[23:16];
assign dac_buffer[	507	] = slv_reg129	[31:24];


    
    always @( posedge dac_clk ) begin
        if ( slv_reg1[16] == 1'b0 ) begin
            dac_data <= 8'd0;
        end
        else begin
            dac_data <= dac_buffer[dac_cnt];
        end
    end
    assign dac_pd = ~slv_reg1[16];
    
	// User logic ends

1.2.7 打包

PROJECT MANAGER -> Edit Package IP - PS_PL_DAC_8B ->

-> File Groups -> Merge changes from File Groups Wizard

-> Customization Parameters -> Merge changes from File Groups Wizard

-> Review and Package -> Re-Package IP

1.3 建立IP- PS_PL_ADC_8B

130个32位的寄存器定义

序号 定义

0 控制1,PS写,采样频率设置

1 控制2,PS写,高16位是采样状态控制,低16位是采样数量

2 回复1,PL写,

3-129 数据,PL写

本程序ADC采样是这样的交互过程:

PS:设置控制2为0001xxxx,空闲

PL:设置回复1为0001xxxx,空闲

PS:设置控制2为0002xxxx,开始采样

PL:设置回复1为0002xxxx,开始采样

PL:设置回复1为0004xxxx,采样完毕

PS:设置控制2为0004xxxx,采样完毕

1.3.1 添加IP

Tools -> Create and Package New IP -> Next

-> Create a new AXI4 peripheral -> Next

-> Name: PS_PL_ADC_8B

-> Description: PS_READ_WRITE_PL_REG for adc 8 bit

-> IP location: /home/xxjianvm/work/mizar/ip_repo

-> Next

-> Add Interface

-> Number of Registers: 130

-> Next

-> Create Peripheral

-> Edit IP -> Finish

1.3.2 编辑模块端口 PS_PL_ADC_8B_v1_0.v

修改第 17 行

        // Users to add ports here
        input wire clk_50m,
        output wire adc_clk,
        input wire [7:0] adc_data,
        output  wire adc_pd,
        
        // User ports ends

修改第 76 行:

       .clk_50m  (   clk_50m ),
        .adc_clk  (   adc_clk ),
        .adc_data (   adc_data),
        .adc_pd   (   adc_pd  )

1.3.3 编辑PS_PL_ADC_8B_v1_0_S00_AXI_inst

修改端口,第17行:

        // Users to add ports here
        input wire clk_50m,
        output wire adc_clk,
        input wire [7:0] adc_data,
        output  wire adc_pd,
        
        
        // User ports ends

把slv_reg2 - slv_reg511改为PL写。

把图示的always模块内的slv_reg2 - slv_reg129 都注释掉,变成PL读写,PS只读。

注释:

// slv_reg2 <= 0;

注释

// slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];

注释

// slv_reg2 <= slv_reg2;

注意 slv_reg2 - slv_reg129 都要注释。

1.3.3 编写 clk_div.v

对 50MHz的时钟分频

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 02/18/2024 02:04:13 PM
// Design Name: 
// Module Name: clk_div
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module clk_div(
	clk_50m, 
	rst_n,
	clk_20m,
	clk_10m,
	clk_8m,
	clk_5m,
	clk_4m,
	clk_2m,
	clk_1m,
	clk_800k,
	clk_400k,
	clk_200k,
	clk_100k,
	clk_80k,
	clk_40k,
	clk_20k,
	clk_10k,
	clk_8k,
	clk_4k,
	clk_2k,
	clk_1k,
	clk_800,
	clk_400,
	clk_200,
	clk_100
	 
    );
    
input 	wire	clk_50m; 
input 	wire	rst_n;
output  wire    clk_20m;
output  wire    clk_10m;
output  wire    clk_8m;
output  wire    clk_5m;
output  wire    clk_4m;
output  wire    clk_2m;
output  wire    clk_1m;
output  wire    clk_800k;
output  wire    clk_400k;
output  wire    clk_200k;
output  wire    clk_100k;
output  wire    clk_80k;
output  wire    clk_40k;
output  wire    clk_20k;
output  wire    clk_10k;
output  wire    clk_8k;
output  wire    clk_4k;
output  wire    clk_2k;
output  wire    clk_1k;
output  wire    clk_800;
output  wire    clk_400;
output  wire    clk_200;
output  wire    clk_100;


// 时钟生成模块  20m, 10m, 5m
clk_div2p5 clk_gen_20m(
	.clk       ( clk_50m ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_20m )
);
clk_div5 clk_gen_10m(
	.clk       ( clk_50m ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_10m )
);
clk_div10 clk_gen_5m(
	.clk       ( clk_50m ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_5m )
);

// 时钟生成模块  8m, 4m, 2m
clk_div2p5 clk_gen_8m(
	.clk       ( clk_20m ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_8m )
);
clk_div5 clk_gen_4m(
	.clk       ( clk_20m ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_4m )
);
clk_div10 clk_gen_2m(
	.clk       ( clk_20m ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_2m )
);

// 时钟生成模块  1m
clk_div10 clk_gen_1m(
	.clk       ( clk_10m ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_1m )
);
// 时钟生成模块  800k
clk_div2p5 clk_gen_800k(
	.clk       ( clk_2m ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_800k )
);
// 时钟生成模块  400k, 200k, 100k
clk_div2p5 clk_gen_400k(
	.clk       ( clk_1m ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_400k )
);
clk_div5 clk_gen_200k(
	.clk       ( clk_1m ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_200k )
);
clk_div10 clk_gen_100k(
	.clk       ( clk_1m ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_100k )
);
// 时钟生成模块  80k
clk_div2p5 clk_gen_80k(
	.clk       ( clk_200k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_80k )
);
// 时钟生成模块  40k, 20k, 10k
clk_div2p5 clk_gen_40k(
	.clk       ( clk_100k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_40k )
);
clk_div5 clk_gen_20k(
	.clk       ( clk_100k ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_20k )
);
clk_div10 clk_gen_10k(
	.clk       ( clk_100k ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_10k )
);
// 时钟生成模块  8k, 4k, 2k, 1k
clk_div2p5 clk_gen_8k(
	.clk       ( clk_20k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_8k )
);
clk_div2p5 clk_gen_4k(
	.clk       ( clk_10k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_4k )
);
clk_div5 clk_gen_2k(
	.clk       ( clk_10k ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_2k )
);
clk_div10 clk_gen_1k(
	.clk       ( clk_10k ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_1k )
);
// 时钟生成模块  800, 400, 200, 100
clk_div2p5 clk_gen_800(
	.clk       ( clk_2k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_800 )
);
clk_div2p5 clk_gen_400(
	.clk       ( clk_1k ),
	.rstn      ( rst_n   ) ,
	.clk_div2p5( clk_400 )
);
clk_div5 clk_gen_200(
	.clk       ( clk_1k ),
	.rstn      ( rst_n   ) ,
	.clk_div5  ( clk_200 )
);
clk_div10 clk_gen_100(
	.clk       ( clk_1k ),
	.rstn      ( rst_n   ) ,
	.clk_div10 ( clk_100 )
);
endmodule

1.3.4 编写 adc_clk_drv.v

根据 寄存器0 slv_reg0,设置ADC时钟

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 02/18/2024 02:31:22 PM
// Design Name: 
// Module Name: adc_clk
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module adc_clk(
	clk_50m, 
	rst_n, 
	slv_reg0,
	
	adc_clk
    );

input 	wire	clk_50m; 
input 	wire 	rst_n;
input	wire [31:0]	slv_reg0;
output 	wire	adc_clk; 

reg adc_clk_r;
wire	clk_20m;
wire	clk_10m;
wire	clk_8m;
wire	clk_5m;
wire	clk_4m;
wire	clk_2m;
wire	clk_1m;
wire	clk_800k;
wire	clk_400k;
wire	clk_200k;
wire	clk_100k;
wire	clk_80k;
wire	clk_40k;
wire	clk_20k;
wire	clk_10k;
wire	clk_8k;
wire	clk_4k;
wire	clk_2k;
wire	clk_1k;
wire	clk_800;
wire	clk_400;
wire	clk_200;
wire	clk_100;

clk_div clk_gen(
	.clk_50m   (   clk_50m ), 
	.rst_n     (   rst_n   ),
	.clk_20m   (   clk_20m ),
	.clk_10m   (   clk_10m ),
	.clk_8m    (   clk_8m  ),
	.clk_5m    (   clk_5m  ),
	.clk_4m    (   clk_4m  ),
	.clk_2m    (   clk_2m  ),
	.clk_1m    (   clk_1m  ),
	.clk_800k  (   clk_800k),
	.clk_400k  (   clk_400k),
	.clk_200k  (   clk_200k),
	.clk_100k  (   clk_100k),
	.clk_80k   (   clk_80k ),
	.clk_40k   (   clk_40k ),
	.clk_20k   (   clk_20k ),
	.clk_10k   (   clk_10k ),
	.clk_8k    (   clk_8k  ),
	.clk_4k    (   clk_4k  ),
	.clk_2k    (   clk_2k  ),
	.clk_1k    (   clk_1k  ),
	.clk_800   (   clk_800 ),
	.clk_400   (   clk_400 ),
	.clk_200   (   clk_200 ),
	.clk_100   (   clk_100 )
    );


always @( posedge clk_50m or negedge rst_n ) begin
	if( ~rst_n ) begin
		adc_clk_r <= 1'b0;
	end
	else begin
        if ( slv_reg0 >= 32'd20_000_000 ) begin
            adc_clk_r <= clk_20m;
        end
        else if ( slv_reg0 >= 32'd10_000_000 ) begin
            adc_clk_r <= clk_10m;
        end
        else if ( slv_reg0 >= 32'd8_000_000 ) begin
            adc_clk_r <= clk_8m;
        end
        else if ( slv_reg0 >= 32'd5_000_000 ) begin
            adc_clk_r <= clk_5m;
        end
        else if ( slv_reg0 >= 32'd4_000_000 ) begin
            adc_clk_r <= clk_4m;
        end
        else if ( slv_reg0 >= 32'd2_000_000 ) begin
            adc_clk_r <= clk_2m;
        end
        else if ( slv_reg0 >= 32'd1_000_000 ) begin
            adc_clk_r <= clk_1m;
        end
        else if ( slv_reg0 >= 32'd800_000 ) begin
            adc_clk_r <= clk_800k;
        end
        else if ( slv_reg0 >= 32'd400_000 ) begin
            adc_clk_r <= clk_400k;
        end
        else if ( slv_reg0 >= 32'd200_000 ) begin
            adc_clk_r <= clk_200k;
        end
        else if ( slv_reg0 >= 32'd100_000 ) begin
            adc_clk_r <= clk_100k;
        end
        else if ( slv_reg0 >= 32'd80_000 ) begin
            adc_clk_r <= clk_80k;
        end
        else if ( slv_reg0 >= 32'd40_000 ) begin
            adc_clk_r <= clk_40k;
        end
        else if ( slv_reg0 >= 32'd20_000 ) begin
            adc_clk_r <= clk_20k;
        end
        else if ( slv_reg0 >= 32'd10_000 ) begin
            adc_clk_r <= clk_10k;
        end
        else if ( slv_reg0 >= 32'd8_000 ) begin
            adc_clk_r <= clk_8k;
        end
        else if ( slv_reg0 >= 32'd4_000 ) begin
            adc_clk_r <= clk_4k;
        end
        else if ( slv_reg0 >= 32'd2_000 ) begin
            adc_clk_r <= clk_2k;
        end
        else if ( slv_reg0 >= 32'd1_000 ) begin
            adc_clk_r <= clk_1k;
        end
        else if ( slv_reg0 >= 32'd800 ) begin
            adc_clk_r <= clk_800;
        end
        else if ( slv_reg0 >= 32'd400 ) begin
            adc_clk_r <= clk_400;
        end
        else if ( slv_reg0 >= 32'd200 ) begin
            adc_clk_r <= clk_200;
        end
        else if ( slv_reg0 >= 32'd100 ) begin
            adc_clk_r <= clk_100;
        end
        else begin
            adc_clk_r <= clk_1m;
            //adc_clk_r <= 1'b0;
        end
	end
end
//assign adc_clk = adc_clk_r ? 1:0;
assign adc_clk = adc_clk_r;

endmodule

1.3.5 编辑 PS_PL_ADC_8B_v1_0_S00_AXI.v

实现ADC控制的相关逻辑。这里直接放出源码。

`timescale 1 ns / 1 ps

	module PS_PL_ADC_8B_v1_0_S00_AXI #
	(
		// Users to add parameters here

		// User parameters ends
		// Do not modify the parameters beyond this line

		// Width of S_AXI data bus
		parameter integer C_S_AXI_DATA_WIDTH	= 32,
		// Width of S_AXI address bus
		parameter integer C_S_AXI_ADDR_WIDTH	= 10
	)
	(
		// Users to add ports here
        input wire clk_50m,
        output wire adc_clk,
        input wire [7:0] adc_data,
        output  wire adc_pd,

		// User ports ends
		// Do not modify the ports beyond this line

		// Global Clock Signal
		input wire  S_AXI_ACLK,
		// Global Reset Signal. This Signal is Active LOW
		input wire  S_AXI_ARESETN,
		// Write address (issued by master, acceped by Slave)
		input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR,
		// Write channel Protection type. This signal indicates the
    		// privilege and security level of the transaction, and whether
    		// the transaction is a data access or an instruction access.
		input wire [2 : 0] S_AXI_AWPROT,
		// Write address valid. This signal indicates that the master signaling
    		// valid write address and control information.
		input wire  S_AXI_AWVALID,
		// Write address ready. This signal indicates that the slave is ready
    		// to accept an address and associated control signals.
		output wire  S_AXI_AWREADY,
		// Write data (issued by master, acceped by Slave) 
		input wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA,
		// Write strobes. This signal indicates which byte lanes hold
    		// valid data. There is one write strobe bit for each eight
    		// bits of the write data bus.    
		input wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB,
		// Write valid. This signal indicates that valid write
    		// data and strobes are available.
		input wire  S_AXI_WVALID,
		// Write ready. This signal indicates that the slave
    		// can accept the write data.
		output wire  S_AXI_WREADY,
		// Write response. This signal indicates the status
    		// of the write transaction.
		output wire [1 : 0] S_AXI_BRESP,
		// Write response valid. This signal indicates that the channel
    		// is signaling a valid write response.
		output wire  S_AXI_BVALID,
		// Response ready. This signal indicates that the master
    		// can accept a write response.
		input wire  S_AXI_BREADY,
		// Read address (issued by master, acceped by Slave)
		input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR,
		// Protection type. This signal indicates the privilege
    		// and security level of the transaction, and whether the
    		// transaction is a data access or an instruction access.
		input wire [2 : 0] S_AXI_ARPROT,
		// Read address valid. This signal indicates that the channel
    		// is signaling valid read address and control information.
		input wire  S_AXI_ARVALID,
		// Read address ready. This signal indicates that the slave is
    		// ready to accept an address and associated control signals.
		output wire  S_AXI_ARREADY,
		// Read data (issued by slave)
		output wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA,
		// Read response. This signal indicates the status of the
    		// read transfer.
		output wire [1 : 0] S_AXI_RRESP,
		// Read valid. This signal indicates that the channel is
    		// signaling the required read data.
		output wire  S_AXI_RVALID,
		// Read ready. This signal indicates that the master can
    		// accept the read data and response information.
		input wire  S_AXI_RREADY
	);

	// AXI4LITE signals
	reg [C_S_AXI_ADDR_WIDTH-1 : 0] 	axi_awaddr;
	reg  	axi_awready;
	reg  	axi_wready;
	reg [1 : 0] 	axi_bresp;
	reg  	axi_bvalid;
	reg [C_S_AXI_ADDR_WIDTH-1 : 0] 	axi_araddr;
	reg  	axi_arready;
	reg [C_S_AXI_DATA_WIDTH-1 : 0] 	axi_rdata;
	reg [1 : 0] 	axi_rresp;
	reg  	axi_rvalid;

	// Example-specific design signals
	// local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH
	// ADDR_LSB is used for addressing 32/64 bit registers/memories
	// ADDR_LSB = 2 for 32 bits (n downto 2)
	// ADDR_LSB = 3 for 64 bits (n downto 3)
	localparam integer ADDR_LSB = (C_S_AXI_DATA_WIDTH/32) + 1;
	localparam integer OPT_MEM_ADDR_BITS = 7;
	//----------------------------------------------
	//-- Signals for user logic register space example
	//------------------------------------------------
	//-- Number of Slave Registers 130
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg0;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg1;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg2;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg3;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg4;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg5;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg6;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg7;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg8;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg9;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg10;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg11;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg12;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg13;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg14;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg15;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg16;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg17;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg18;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg19;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg20;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg21;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg22;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg23;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg24;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg25;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg26;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg27;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg28;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg29;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg30;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg31;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg32;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg33;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg34;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg35;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg36;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg37;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg38;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg39;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg40;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg41;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg42;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg43;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg44;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg45;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg46;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg47;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg48;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg49;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg50;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg51;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg52;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg53;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg54;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg55;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg56;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg57;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg58;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg59;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg60;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg61;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg62;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg63;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg64;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg65;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg66;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg67;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg68;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg69;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg70;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg71;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg72;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg73;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg74;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg75;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg76;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg77;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg78;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg79;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg80;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg81;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg82;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg83;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg84;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg85;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg86;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg87;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg88;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg89;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg90;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg91;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg92;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg93;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg94;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg95;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg96;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg97;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg98;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg99;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg100;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg101;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg102;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg103;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg104;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg105;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg106;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg107;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg108;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg109;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg110;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg111;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg112;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg113;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg114;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg115;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg116;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg117;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg118;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg119;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg120;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg121;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg122;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg123;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg124;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg125;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg126;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg127;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg128;
	reg [C_S_AXI_DATA_WIDTH-1:0]	slv_reg129;
	wire	 slv_reg_rden;
	wire	 slv_reg_wren;
	reg [C_S_AXI_DATA_WIDTH-1:0]	 reg_data_out;
	integer	 byte_index;
	reg	 aw_en;

	// I/O Connections assignments

	assign S_AXI_AWREADY	= axi_awready;
	assign S_AXI_WREADY	= axi_wready;
	assign S_AXI_BRESP	= axi_bresp;
	assign S_AXI_BVALID	= axi_bvalid;
	assign S_AXI_ARREADY	= axi_arready;
	assign S_AXI_RDATA	= axi_rdata;
	assign S_AXI_RRESP	= axi_rresp;
	assign S_AXI_RVALID	= axi_rvalid;
	// Implement axi_awready generation
	// axi_awready is asserted for one S_AXI_ACLK clock cycle when both
	// S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is
	// de-asserted when reset is low.

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_awready <= 1'b0;
	      aw_en <= 1'b1;
	    end 
	  else
	    begin    
	      if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en)
	        begin
	          // slave is ready to accept write address when 
	          // there is a valid write address and write data
	          // on the write address and data bus. This design 
	          // expects no outstanding transactions. 
	          axi_awready <= 1'b1;
	          aw_en <= 1'b0;
	        end
	        else if (S_AXI_BREADY && axi_bvalid)
	            begin
	              aw_en <= 1'b1;
	              axi_awready <= 1'b0;
	            end
	      else           
	        begin
	          axi_awready <= 1'b0;
	        end
	    end 
	end       

	// Implement axi_awaddr latching
	// This process is used to latch the address when both 
	// S_AXI_AWVALID and S_AXI_WVALID are valid. 

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_awaddr <= 0;
	    end 
	  else
	    begin    
	      if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en)
	        begin
	          // Write Address latching 
	          axi_awaddr <= S_AXI_AWADDR;
	        end
	    end 
	end       

	// Implement axi_wready generation
	// axi_wready is asserted for one S_AXI_ACLK clock cycle when both
	// S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is 
	// de-asserted when reset is low. 

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_wready <= 1'b0;
	    end 
	  else
	    begin    
	      if (~axi_wready && S_AXI_WVALID && S_AXI_AWVALID && aw_en )
	        begin
	          // slave is ready to accept write data when 
	          // there is a valid write address and write data
	          // on the write address and data bus. This design 
	          // expects no outstanding transactions. 
	          axi_wready <= 1'b1;
	        end
	      else
	        begin
	          axi_wready <= 1'b0;
	        end
	    end 
	end       

	// Implement memory mapped register select and write logic generation
	// The write data is accepted and written to memory mapped registers when
	// axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to
	// select byte enables of slave registers while writing.
	// These registers are cleared when reset (active low) is applied.
	// Slave register write enable is asserted when valid address and data are available
	// and the slave is ready to accept the write address and write data.
	assign slv_reg_wren = axi_wready && S_AXI_WVALID && axi_awready && S_AXI_AWVALID;

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      slv_reg0 <= 0;
	      slv_reg1 <= 0;
//	      slv_reg2 <= 0;
//	      slv_reg3 <= 0;
//	      slv_reg4 <= 0;
//	      slv_reg5 <= 0;
//	      slv_reg6 <= 0;
//	      slv_reg7 <= 0;
//	      slv_reg8 <= 0;
//	      slv_reg9 <= 0;
//	      slv_reg10 <= 0;
//	      slv_reg11 <= 0;
//	      slv_reg12 <= 0;
//	      slv_reg13 <= 0;
//	      slv_reg14 <= 0;
//	      slv_reg15 <= 0;
//	      slv_reg16 <= 0;
//	      slv_reg17 <= 0;
//	      slv_reg18 <= 0;
//	      slv_reg19 <= 0;
//	      slv_reg20 <= 0;
//	      slv_reg21 <= 0;
//	      slv_reg22 <= 0;
//	      slv_reg23 <= 0;
//	      slv_reg24 <= 0;
//	      slv_reg25 <= 0;
//	      slv_reg26 <= 0;
//	      slv_reg27 <= 0;
//	      slv_reg28 <= 0;
//	      slv_reg29 <= 0;
//	      slv_reg30 <= 0;
//	      slv_reg31 <= 0;
//	      slv_reg32 <= 0;
//	      slv_reg33 <= 0;
//	      slv_reg34 <= 0;
//	      slv_reg35 <= 0;
//	      slv_reg36 <= 0;
//	      slv_reg37 <= 0;
//	      slv_reg38 <= 0;
//	      slv_reg39 <= 0;
//	      slv_reg40 <= 0;
//	      slv_reg41 <= 0;
//	      slv_reg42 <= 0;
//	      slv_reg43 <= 0;
//	      slv_reg44 <= 0;
//	      slv_reg45 <= 0;
//	      slv_reg46 <= 0;
//	      slv_reg47 <= 0;
//	      slv_reg48 <= 0;
//	      slv_reg49 <= 0;
//	      slv_reg50 <= 0;
//	      slv_reg51 <= 0;
//	      slv_reg52 <= 0;
//	      slv_reg53 <= 0;
//	      slv_reg54 <= 0;
//	      slv_reg55 <= 0;
//	      slv_reg56 <= 0;
//	      slv_reg57 <= 0;
//	      slv_reg58 <= 0;
//	      slv_reg59 <= 0;
//	      slv_reg60 <= 0;
//	      slv_reg61 <= 0;
//	      slv_reg62 <= 0;
//	      slv_reg63 <= 0;
//	      slv_reg64 <= 0;
//	      slv_reg65 <= 0;
//	      slv_reg66 <= 0;
//	      slv_reg67 <= 0;
//	      slv_reg68 <= 0;
//	      slv_reg69 <= 0;
//	      slv_reg70 <= 0;
//	      slv_reg71 <= 0;
//	      slv_reg72 <= 0;
//	      slv_reg73 <= 0;
//	      slv_reg74 <= 0;
//	      slv_reg75 <= 0;
//	      slv_reg76 <= 0;
//	      slv_reg77 <= 0;
//	      slv_reg78 <= 0;
//	      slv_reg79 <= 0;
//	      slv_reg80 <= 0;
//	      slv_reg81 <= 0;
//	      slv_reg82 <= 0;
//	      slv_reg83 <= 0;
//	      slv_reg84 <= 0;
//	      slv_reg85 <= 0;
//	      slv_reg86 <= 0;
//	      slv_reg87 <= 0;
//	      slv_reg88 <= 0;
//	      slv_reg89 <= 0;
//	      slv_reg90 <= 0;
//	      slv_reg91 <= 0;
//	      slv_reg92 <= 0;
//	      slv_reg93 <= 0;
//	      slv_reg94 <= 0;
//	      slv_reg95 <= 0;
//	      slv_reg96 <= 0;
//	      slv_reg97 <= 0;
//	      slv_reg98 <= 0;
//	      slv_reg99 <= 0;
//	      slv_reg100 <= 0;
//	      slv_reg101 <= 0;
//	      slv_reg102 <= 0;
//	      slv_reg103 <= 0;
//	      slv_reg104 <= 0;
//	      slv_reg105 <= 0;
//	      slv_reg106 <= 0;
//	      slv_reg107 <= 0;
//	      slv_reg108 <= 0;
//	      slv_reg109 <= 0;
//	      slv_reg110 <= 0;
//	      slv_reg111 <= 0;
//	      slv_reg112 <= 0;
//	      slv_reg113 <= 0;
//	      slv_reg114 <= 0;
//	      slv_reg115 <= 0;
//	      slv_reg116 <= 0;
//	      slv_reg117 <= 0;
//	      slv_reg118 <= 0;
//	      slv_reg119 <= 0;
//	      slv_reg120 <= 0;
//	      slv_reg121 <= 0;
//	      slv_reg122 <= 0;
//	      slv_reg123 <= 0;
//	      slv_reg124 <= 0;
//	      slv_reg125 <= 0;
//	      slv_reg126 <= 0;
//	      slv_reg127 <= 0;
//	      slv_reg128 <= 0;
//	      slv_reg129 <= 0;
	    end 
	  else begin
	    if (slv_reg_wren)
	      begin
	        case ( axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] )
	          8'h00:
	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
	                // Respective byte enables are asserted as per write strobes 
	                // Slave register 0
	                slv_reg0[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
	              end  
	          8'h01:
	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
	                // Respective byte enables are asserted as per write strobes 
	                // Slave register 1
	                slv_reg1[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
	              end  
//	          8'h02:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 2
//	                slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h03:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 3
//	                slv_reg3[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h04:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 4
//	                slv_reg4[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h05:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 5
//	                slv_reg5[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h06:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 6
//	                slv_reg6[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h07:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 7
//	                slv_reg7[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h08:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 8
//	                slv_reg8[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h09:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 9
//	                slv_reg9[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 10
//	                slv_reg10[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 11
//	                slv_reg11[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 12
//	                slv_reg12[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 13
//	                slv_reg13[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 14
//	                slv_reg14[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h0F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 15
//	                slv_reg15[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h10:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 16
//	                slv_reg16[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h11:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 17
//	                slv_reg17[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h12:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 18
//	                slv_reg18[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h13:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 19
//	                slv_reg19[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h14:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 20
//	                slv_reg20[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h15:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 21
//	                slv_reg21[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h16:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 22
//	                slv_reg22[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h17:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 23
//	                slv_reg23[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h18:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 24
//	                slv_reg24[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h19:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 25
//	                slv_reg25[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 26
//	                slv_reg26[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 27
//	                slv_reg27[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 28
//	                slv_reg28[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 29
//	                slv_reg29[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 30
//	                slv_reg30[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h1F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 31
//	                slv_reg31[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h20:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 32
//	                slv_reg32[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h21:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 33
//	                slv_reg33[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h22:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 34
//	                slv_reg34[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h23:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 35
//	                slv_reg35[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h24:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 36
//	                slv_reg36[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h25:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 37
//	                slv_reg37[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h26:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 38
//	                slv_reg38[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h27:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 39
//	                slv_reg39[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h28:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 40
//	                slv_reg40[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h29:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 41
//	                slv_reg41[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 42
//	                slv_reg42[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 43
//	                slv_reg43[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 44
//	                slv_reg44[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 45
//	                slv_reg45[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 46
//	                slv_reg46[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h2F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 47
//	                slv_reg47[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h30:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 48
//	                slv_reg48[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h31:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 49
//	                slv_reg49[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h32:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 50
//	                slv_reg50[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h33:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 51
//	                slv_reg51[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h34:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 52
//	                slv_reg52[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h35:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 53
//	                slv_reg53[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h36:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 54
//	                slv_reg54[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h37:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 55
//	                slv_reg55[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h38:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 56
//	                slv_reg56[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h39:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 57
//	                slv_reg57[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 58
//	                slv_reg58[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 59
//	                slv_reg59[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 60
//	                slv_reg60[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 61
//	                slv_reg61[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 62
//	                slv_reg62[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h3F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 63
//	                slv_reg63[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h40:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 64
//	                slv_reg64[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h41:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 65
//	                slv_reg65[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h42:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 66
//	                slv_reg66[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h43:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 67
//	                slv_reg67[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h44:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 68
//	                slv_reg68[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h45:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 69
//	                slv_reg69[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h46:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 70
//	                slv_reg70[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h47:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 71
//	                slv_reg71[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h48:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 72
//	                slv_reg72[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h49:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 73
//	                slv_reg73[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 74
//	                slv_reg74[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 75
//	                slv_reg75[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 76
//	                slv_reg76[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 77
//	                slv_reg77[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 78
//	                slv_reg78[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h4F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 79
//	                slv_reg79[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h50:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 80
//	                slv_reg80[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h51:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 81
//	                slv_reg81[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h52:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 82
//	                slv_reg82[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h53:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 83
//	                slv_reg83[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h54:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 84
//	                slv_reg84[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h55:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 85
//	                slv_reg85[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h56:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 86
//	                slv_reg86[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h57:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 87
//	                slv_reg87[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h58:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 88
//	                slv_reg88[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h59:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 89
//	                slv_reg89[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 90
//	                slv_reg90[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 91
//	                slv_reg91[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 92
//	                slv_reg92[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 93
//	                slv_reg93[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 94
//	                slv_reg94[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h5F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 95
//	                slv_reg95[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h60:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 96
//	                slv_reg96[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h61:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 97
//	                slv_reg97[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h62:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 98
//	                slv_reg98[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h63:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 99
//	                slv_reg99[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h64:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 100
//	                slv_reg100[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h65:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 101
//	                slv_reg101[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h66:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 102
//	                slv_reg102[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h67:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 103
//	                slv_reg103[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h68:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 104
//	                slv_reg104[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h69:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 105
//	                slv_reg105[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 106
//	                slv_reg106[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 107
//	                slv_reg107[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 108
//	                slv_reg108[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 109
//	                slv_reg109[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 110
//	                slv_reg110[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h6F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 111
//	                slv_reg111[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h70:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 112
//	                slv_reg112[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h71:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 113
//	                slv_reg113[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h72:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 114
//	                slv_reg114[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h73:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 115
//	                slv_reg115[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h74:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 116
//	                slv_reg116[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h75:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 117
//	                slv_reg117[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h76:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 118
//	                slv_reg118[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h77:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 119
//	                slv_reg119[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h78:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 120
//	                slv_reg120[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h79:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 121
//	                slv_reg121[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7A:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 122
//	                slv_reg122[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7B:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 123
//	                slv_reg123[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7C:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 124
//	                slv_reg124[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7D:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 125
//	                slv_reg125[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7E:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 126
//	                slv_reg126[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h7F:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 127
//	                slv_reg127[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h80:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 128
//	                slv_reg128[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
//	          8'h81:
//	            for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 )
//	              if ( S_AXI_WSTRB[byte_index] == 1 ) begin
//	                // Respective byte enables are asserted as per write strobes 
//	                // Slave register 129
//	                slv_reg129[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8];
//	              end  
	          default : begin
	                      slv_reg0 <= slv_reg0;
	                      slv_reg1 <= slv_reg1;
//	                      slv_reg2 <= slv_reg2;
//	                      slv_reg3 <= slv_reg3;
//	                      slv_reg4 <= slv_reg4;
//	                      slv_reg5 <= slv_reg5;
//	                      slv_reg6 <= slv_reg6;
//	                      slv_reg7 <= slv_reg7;
//	                      slv_reg8 <= slv_reg8;
//	                      slv_reg9 <= slv_reg9;
//	                      slv_reg10 <= slv_reg10;
//	                      slv_reg11 <= slv_reg11;
//	                      slv_reg12 <= slv_reg12;
//	                      slv_reg13 <= slv_reg13;
//	                      slv_reg14 <= slv_reg14;
//	                      slv_reg15 <= slv_reg15;
//	                      slv_reg16 <= slv_reg16;
//	                      slv_reg17 <= slv_reg17;
//	                      slv_reg18 <= slv_reg18;
//	                      slv_reg19 <= slv_reg19;
//	                      slv_reg20 <= slv_reg20;
//	                      slv_reg21 <= slv_reg21;
//	                      slv_reg22 <= slv_reg22;
//	                      slv_reg23 <= slv_reg23;
//	                      slv_reg24 <= slv_reg24;
//	                      slv_reg25 <= slv_reg25;
//	                      slv_reg26 <= slv_reg26;
//	                      slv_reg27 <= slv_reg27;
//	                      slv_reg28 <= slv_reg28;
//	                      slv_reg29 <= slv_reg29;
//	                      slv_reg30 <= slv_reg30;
//	                      slv_reg31 <= slv_reg31;
//	                      slv_reg32 <= slv_reg32;
//	                      slv_reg33 <= slv_reg33;
//	                      slv_reg34 <= slv_reg34;
//	                      slv_reg35 <= slv_reg35;
//	                      slv_reg36 <= slv_reg36;
//	                      slv_reg37 <= slv_reg37;
//	                      slv_reg38 <= slv_reg38;
//	                      slv_reg39 <= slv_reg39;
//	                      slv_reg40 <= slv_reg40;
//	                      slv_reg41 <= slv_reg41;
//	                      slv_reg42 <= slv_reg42;
//	                      slv_reg43 <= slv_reg43;
//	                      slv_reg44 <= slv_reg44;
//	                      slv_reg45 <= slv_reg45;
//	                      slv_reg46 <= slv_reg46;
//	                      slv_reg47 <= slv_reg47;
//	                      slv_reg48 <= slv_reg48;
//	                      slv_reg49 <= slv_reg49;
//	                      slv_reg50 <= slv_reg50;
//	                      slv_reg51 <= slv_reg51;
//	                      slv_reg52 <= slv_reg52;
//	                      slv_reg53 <= slv_reg53;
//	                      slv_reg54 <= slv_reg54;
//	                      slv_reg55 <= slv_reg55;
//	                      slv_reg56 <= slv_reg56;
//	                      slv_reg57 <= slv_reg57;
//	                      slv_reg58 <= slv_reg58;
//	                      slv_reg59 <= slv_reg59;
//	                      slv_reg60 <= slv_reg60;
//	                      slv_reg61 <= slv_reg61;
//	                      slv_reg62 <= slv_reg62;
//	                      slv_reg63 <= slv_reg63;
//	                      slv_reg64 <= slv_reg64;
//	                      slv_reg65 <= slv_reg65;
//	                      slv_reg66 <= slv_reg66;
//	                      slv_reg67 <= slv_reg67;
//	                      slv_reg68 <= slv_reg68;
//	                      slv_reg69 <= slv_reg69;
//	                      slv_reg70 <= slv_reg70;
//	                      slv_reg71 <= slv_reg71;
//	                      slv_reg72 <= slv_reg72;
//	                      slv_reg73 <= slv_reg73;
//	                      slv_reg74 <= slv_reg74;
//	                      slv_reg75 <= slv_reg75;
//	                      slv_reg76 <= slv_reg76;
//	                      slv_reg77 <= slv_reg77;
//	                      slv_reg78 <= slv_reg78;
//	                      slv_reg79 <= slv_reg79;
//	                      slv_reg80 <= slv_reg80;
//	                      slv_reg81 <= slv_reg81;
//	                      slv_reg82 <= slv_reg82;
//	                      slv_reg83 <= slv_reg83;
//	                      slv_reg84 <= slv_reg84;
//	                      slv_reg85 <= slv_reg85;
//	                      slv_reg86 <= slv_reg86;
//	                      slv_reg87 <= slv_reg87;
//	                      slv_reg88 <= slv_reg88;
//	                      slv_reg89 <= slv_reg89;
//	                      slv_reg90 <= slv_reg90;
//	                      slv_reg91 <= slv_reg91;
//	                      slv_reg92 <= slv_reg92;
//	                      slv_reg93 <= slv_reg93;
//	                      slv_reg94 <= slv_reg94;
//	                      slv_reg95 <= slv_reg95;
//	                      slv_reg96 <= slv_reg96;
//	                      slv_reg97 <= slv_reg97;
//	                      slv_reg98 <= slv_reg98;
//	                      slv_reg99 <= slv_reg99;
//	                      slv_reg100 <= slv_reg100;
//	                      slv_reg101 <= slv_reg101;
//	                      slv_reg102 <= slv_reg102;
//	                      slv_reg103 <= slv_reg103;
//	                      slv_reg104 <= slv_reg104;
//	                      slv_reg105 <= slv_reg105;
//	                      slv_reg106 <= slv_reg106;
//	                      slv_reg107 <= slv_reg107;
//	                      slv_reg108 <= slv_reg108;
//	                      slv_reg109 <= slv_reg109;
//	                      slv_reg110 <= slv_reg110;
//	                      slv_reg111 <= slv_reg111;
//	                      slv_reg112 <= slv_reg112;
//	                      slv_reg113 <= slv_reg113;
//	                      slv_reg114 <= slv_reg114;
//	                      slv_reg115 <= slv_reg115;
//	                      slv_reg116 <= slv_reg116;
//	                      slv_reg117 <= slv_reg117;
//	                      slv_reg118 <= slv_reg118;
//	                      slv_reg119 <= slv_reg119;
//	                      slv_reg120 <= slv_reg120;
//	                      slv_reg121 <= slv_reg121;
//	                      slv_reg122 <= slv_reg122;
//	                      slv_reg123 <= slv_reg123;
//	                      slv_reg124 <= slv_reg124;
//	                      slv_reg125 <= slv_reg125;
//	                      slv_reg126 <= slv_reg126;
//	                      slv_reg127 <= slv_reg127;
//	                      slv_reg128 <= slv_reg128;
//	                      slv_reg129 <= slv_reg129;
	                    end
	        endcase
	      end
	  end
	end    

	// Implement write response logic generation
	// The write response and response valid signals are asserted by the slave 
	// when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted.  
	// This marks the acceptance of address and indicates the status of 
	// write transaction.

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_bvalid  <= 0;
	      axi_bresp   <= 2'b0;
	    end 
	  else
	    begin    
	      if (axi_awready && S_AXI_AWVALID && ~axi_bvalid && axi_wready && S_AXI_WVALID)
	        begin
	          // indicates a valid write response is available
	          axi_bvalid <= 1'b1;
	          axi_bresp  <= 2'b0; // 'OKAY' response 
	        end                   // work error responses in future
	      else
	        begin
	          if (S_AXI_BREADY && axi_bvalid) 
	            //check if bready is asserted while bvalid is high) 
	            //(there is a possibility that bready is always asserted high)   
	            begin
	              axi_bvalid <= 1'b0; 
	            end  
	        end
	    end
	end   

	// Implement axi_arready generation
	// axi_arready is asserted for one S_AXI_ACLK clock cycle when
	// S_AXI_ARVALID is asserted. axi_awready is 
	// de-asserted when reset (active low) is asserted. 
	// The read address is also latched when S_AXI_ARVALID is 
	// asserted. axi_araddr is reset to zero on reset assertion.

	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_arready <= 1'b0;
	      axi_araddr  <= 32'b0;
	    end 
	  else
	    begin    
	      if (~axi_arready && S_AXI_ARVALID)
	        begin
	          // indicates that the slave has acceped the valid read address
	          axi_arready <= 1'b1;
	          // Read address latching
	          axi_araddr  <= S_AXI_ARADDR;
	        end
	      else
	        begin
	          axi_arready <= 1'b0;
	        end
	    end 
	end       

	// Implement axi_arvalid generation
	// axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both 
	// S_AXI_ARVALID and axi_arready are asserted. The slave registers 
	// data are available on the axi_rdata bus at this instance. The 
	// assertion of axi_rvalid marks the validity of read data on the 
	// bus and axi_rresp indicates the status of read transaction.axi_rvalid 
	// is deasserted on reset (active low). axi_rresp and axi_rdata are 
	// cleared to zero on reset (active low).  
	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_rvalid <= 0;
	      axi_rresp  <= 0;
	    end 
	  else
	    begin    
	      if (axi_arready && S_AXI_ARVALID && ~axi_rvalid)
	        begin
	          // Valid read data is available at the read data bus
	          axi_rvalid <= 1'b1;
	          axi_rresp  <= 2'b0; // 'OKAY' response
	        end   
	      else if (axi_rvalid && S_AXI_RREADY)
	        begin
	          // Read data is accepted by the master
	          axi_rvalid <= 1'b0;
	        end                
	    end
	end    

	// Implement memory mapped register select and read logic generation
	// Slave register read enable is asserted when valid address is available
	// and the slave is ready to accept the read address.
	assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid;
	always @(*)
	begin
	      // Address decoding for reading registers
	      case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] )
	        8'h00   : reg_data_out <= slv_reg0;
	        8'h01   : reg_data_out <= slv_reg1;
	        8'h02   : reg_data_out <= slv_reg2;
	        8'h03   : reg_data_out <= slv_reg3;
	        8'h04   : reg_data_out <= slv_reg4;
	        8'h05   : reg_data_out <= slv_reg5;
	        8'h06   : reg_data_out <= slv_reg6;
	        8'h07   : reg_data_out <= slv_reg7;
	        8'h08   : reg_data_out <= slv_reg8;
	        8'h09   : reg_data_out <= slv_reg9;
	        8'h0A   : reg_data_out <= slv_reg10;
	        8'h0B   : reg_data_out <= slv_reg11;
	        8'h0C   : reg_data_out <= slv_reg12;
	        8'h0D   : reg_data_out <= slv_reg13;
	        8'h0E   : reg_data_out <= slv_reg14;
	        8'h0F   : reg_data_out <= slv_reg15;
	        8'h10   : reg_data_out <= slv_reg16;
	        8'h11   : reg_data_out <= slv_reg17;
	        8'h12   : reg_data_out <= slv_reg18;
	        8'h13   : reg_data_out <= slv_reg19;
	        8'h14   : reg_data_out <= slv_reg20;
	        8'h15   : reg_data_out <= slv_reg21;
	        8'h16   : reg_data_out <= slv_reg22;
	        8'h17   : reg_data_out <= slv_reg23;
	        8'h18   : reg_data_out <= slv_reg24;
	        8'h19   : reg_data_out <= slv_reg25;
	        8'h1A   : reg_data_out <= slv_reg26;
	        8'h1B   : reg_data_out <= slv_reg27;
	        8'h1C   : reg_data_out <= slv_reg28;
	        8'h1D   : reg_data_out <= slv_reg29;
	        8'h1E   : reg_data_out <= slv_reg30;
	        8'h1F   : reg_data_out <= slv_reg31;
	        8'h20   : reg_data_out <= slv_reg32;
	        8'h21   : reg_data_out <= slv_reg33;
	        8'h22   : reg_data_out <= slv_reg34;
	        8'h23   : reg_data_out <= slv_reg35;
	        8'h24   : reg_data_out <= slv_reg36;
	        8'h25   : reg_data_out <= slv_reg37;
	        8'h26   : reg_data_out <= slv_reg38;
	        8'h27   : reg_data_out <= slv_reg39;
	        8'h28   : reg_data_out <= slv_reg40;
	        8'h29   : reg_data_out <= slv_reg41;
	        8'h2A   : reg_data_out <= slv_reg42;
	        8'h2B   : reg_data_out <= slv_reg43;
	        8'h2C   : reg_data_out <= slv_reg44;
	        8'h2D   : reg_data_out <= slv_reg45;
	        8'h2E   : reg_data_out <= slv_reg46;
	        8'h2F   : reg_data_out <= slv_reg47;
	        8'h30   : reg_data_out <= slv_reg48;
	        8'h31   : reg_data_out <= slv_reg49;
	        8'h32   : reg_data_out <= slv_reg50;
	        8'h33   : reg_data_out <= slv_reg51;
	        8'h34   : reg_data_out <= slv_reg52;
	        8'h35   : reg_data_out <= slv_reg53;
	        8'h36   : reg_data_out <= slv_reg54;
	        8'h37   : reg_data_out <= slv_reg55;
	        8'h38   : reg_data_out <= slv_reg56;
	        8'h39   : reg_data_out <= slv_reg57;
	        8'h3A   : reg_data_out <= slv_reg58;
	        8'h3B   : reg_data_out <= slv_reg59;
	        8'h3C   : reg_data_out <= slv_reg60;
	        8'h3D   : reg_data_out <= slv_reg61;
	        8'h3E   : reg_data_out <= slv_reg62;
	        8'h3F   : reg_data_out <= slv_reg63;
	        8'h40   : reg_data_out <= slv_reg64;
	        8'h41   : reg_data_out <= slv_reg65;
	        8'h42   : reg_data_out <= slv_reg66;
	        8'h43   : reg_data_out <= slv_reg67;
	        8'h44   : reg_data_out <= slv_reg68;
	        8'h45   : reg_data_out <= slv_reg69;
	        8'h46   : reg_data_out <= slv_reg70;
	        8'h47   : reg_data_out <= slv_reg71;
	        8'h48   : reg_data_out <= slv_reg72;
	        8'h49   : reg_data_out <= slv_reg73;
	        8'h4A   : reg_data_out <= slv_reg74;
	        8'h4B   : reg_data_out <= slv_reg75;
	        8'h4C   : reg_data_out <= slv_reg76;
	        8'h4D   : reg_data_out <= slv_reg77;
	        8'h4E   : reg_data_out <= slv_reg78;
	        8'h4F   : reg_data_out <= slv_reg79;
	        8'h50   : reg_data_out <= slv_reg80;
	        8'h51   : reg_data_out <= slv_reg81;
	        8'h52   : reg_data_out <= slv_reg82;
	        8'h53   : reg_data_out <= slv_reg83;
	        8'h54   : reg_data_out <= slv_reg84;
	        8'h55   : reg_data_out <= slv_reg85;
	        8'h56   : reg_data_out <= slv_reg86;
	        8'h57   : reg_data_out <= slv_reg87;
	        8'h58   : reg_data_out <= slv_reg88;
	        8'h59   : reg_data_out <= slv_reg89;
	        8'h5A   : reg_data_out <= slv_reg90;
	        8'h5B   : reg_data_out <= slv_reg91;
	        8'h5C   : reg_data_out <= slv_reg92;
	        8'h5D   : reg_data_out <= slv_reg93;
	        8'h5E   : reg_data_out <= slv_reg94;
	        8'h5F   : reg_data_out <= slv_reg95;
	        8'h60   : reg_data_out <= slv_reg96;
	        8'h61   : reg_data_out <= slv_reg97;
	        8'h62   : reg_data_out <= slv_reg98;
	        8'h63   : reg_data_out <= slv_reg99;
	        8'h64   : reg_data_out <= slv_reg100;
	        8'h65   : reg_data_out <= slv_reg101;
	        8'h66   : reg_data_out <= slv_reg102;
	        8'h67   : reg_data_out <= slv_reg103;
	        8'h68   : reg_data_out <= slv_reg104;
	        8'h69   : reg_data_out <= slv_reg105;
	        8'h6A   : reg_data_out <= slv_reg106;
	        8'h6B   : reg_data_out <= slv_reg107;
	        8'h6C   : reg_data_out <= slv_reg108;
	        8'h6D   : reg_data_out <= slv_reg109;
	        8'h6E   : reg_data_out <= slv_reg110;
	        8'h6F   : reg_data_out <= slv_reg111;
	        8'h70   : reg_data_out <= slv_reg112;
	        8'h71   : reg_data_out <= slv_reg113;
	        8'h72   : reg_data_out <= slv_reg114;
	        8'h73   : reg_data_out <= slv_reg115;
	        8'h74   : reg_data_out <= slv_reg116;
	        8'h75   : reg_data_out <= slv_reg117;
	        8'h76   : reg_data_out <= slv_reg118;
	        8'h77   : reg_data_out <= slv_reg119;
	        8'h78   : reg_data_out <= slv_reg120;
	        8'h79   : reg_data_out <= slv_reg121;
	        8'h7A   : reg_data_out <= slv_reg122;
	        8'h7B   : reg_data_out <= slv_reg123;
	        8'h7C   : reg_data_out <= slv_reg124;
	        8'h7D   : reg_data_out <= slv_reg125;
	        8'h7E   : reg_data_out <= slv_reg126;
	        8'h7F   : reg_data_out <= slv_reg127;
	        8'h80   : reg_data_out <= slv_reg128;
	        8'h81   : reg_data_out <= slv_reg129;
	        default : reg_data_out <= 0;
	      endcase
	end

	// Output register or memory read data
	always @( posedge S_AXI_ACLK )
	begin
	  if ( S_AXI_ARESETN == 1'b0 )
	    begin
	      axi_rdata  <= 0;
	    end 
	  else
	    begin    
	      // When there is a valid read address (S_AXI_ARVALID) with 
	      // acceptance of read address by the slave (axi_arready), 
	      // output the read dada 
	      if (slv_reg_rden)
	        begin
	          axi_rdata <= reg_data_out;     // register read data
	        end   
	    end
	end    

	// Add user logic here
    adc_clk adc_clk_drv(
        .clk_50m   (   clk_50m     ), 
        .rst_n     (   1'b1        ), 
        .slv_reg0  (   slv_reg0    ),
        .adc_clk   (   adc_clk     )
        );
        
    reg [15:0] adc_cnt;
    
    always @( posedge adc_clk ) begin
        if ( slv_reg1[31:16] == 16'd1 ) begin
            // idle
            adc_cnt <= 16'd0;
            slv_reg2[31:16] <= slv_reg1[31:16];
            slv_reg2[15:0] <= adc_cnt;
             
              slv_reg3 <= 0;
              slv_reg4 <= 0;
              slv_reg5 <= 0;
              slv_reg6 <= 0;
              slv_reg7 <= 0;
              slv_reg8 <= 0;
              slv_reg9 <= 0;
              slv_reg10 <= 0;
              slv_reg11 <= 0;
              slv_reg12 <= 0;
              slv_reg13 <= 0;
              slv_reg14 <= 0;
              slv_reg15 <= 0;
              slv_reg16 <= 0;
              slv_reg17 <= 0;
              slv_reg18 <= 0;
              slv_reg19 <= 0;
              slv_reg20 <= 0;
              slv_reg21 <= 0;
              slv_reg22 <= 0;
              slv_reg23 <= 0;
              slv_reg24 <= 0;
              slv_reg25 <= 0;
              slv_reg26 <= 0;
              slv_reg27 <= 0;
              slv_reg28 <= 0;
              slv_reg29 <= 0;
              slv_reg30 <= 0;
              slv_reg31 <= 0;
              slv_reg32 <= 0;
              slv_reg33 <= 0;
              slv_reg34 <= 0;
              slv_reg35 <= 0;
              slv_reg36 <= 0;
              slv_reg37 <= 0;
              slv_reg38 <= 0;
              slv_reg39 <= 0;
              slv_reg40 <= 0;
              slv_reg41 <= 0;
              slv_reg42 <= 0;
              slv_reg43 <= 0;
              slv_reg44 <= 0;
              slv_reg45 <= 0;
              slv_reg46 <= 0;
              slv_reg47 <= 0;
              slv_reg48 <= 0;
              slv_reg49 <= 0;
              slv_reg50 <= 0;
              slv_reg51 <= 0;
              slv_reg52 <= 0;
              slv_reg53 <= 0;
              slv_reg54 <= 0;
              slv_reg55 <= 0;
              slv_reg56 <= 0;
              slv_reg57 <= 0;
              slv_reg58 <= 0;
              slv_reg59 <= 0;
              slv_reg60 <= 0;
              slv_reg61 <= 0;
              slv_reg62 <= 0;
              slv_reg63 <= 0;
              slv_reg64 <= 0;
              slv_reg65 <= 0;
              slv_reg66 <= 0;
              slv_reg67 <= 0;
              slv_reg68 <= 0;
              slv_reg69 <= 0;
              slv_reg70 <= 0;
              slv_reg71 <= 0;
              slv_reg72 <= 0;
              slv_reg73 <= 0;
              slv_reg74 <= 0;
              slv_reg75 <= 0;
              slv_reg76 <= 0;
              slv_reg77 <= 0;
              slv_reg78 <= 0;
              slv_reg79 <= 0;
              slv_reg80 <= 0;
              slv_reg81 <= 0;
              slv_reg82 <= 0;
              slv_reg83 <= 0;
              slv_reg84 <= 0;
              slv_reg85 <= 0;
              slv_reg86 <= 0;
              slv_reg87 <= 0;
              slv_reg88 <= 0;
              slv_reg89 <= 0;
              slv_reg90 <= 0;
              slv_reg91 <= 0;
              slv_reg92 <= 0;
              slv_reg93 <= 0;
              slv_reg94 <= 0;
              slv_reg95 <= 0;
              slv_reg96 <= 0;
              slv_reg97 <= 0;
              slv_reg98 <= 0;
              slv_reg99 <= 0;
              slv_reg100 <= 0;
              slv_reg101 <= 0;
              slv_reg102 <= 0;
              slv_reg103 <= 0;
              slv_reg104 <= 0;
              slv_reg105 <= 0;
              slv_reg106 <= 0;
              slv_reg107 <= 0;
              slv_reg108 <= 0;
              slv_reg109 <= 0;
              slv_reg110 <= 0;
              slv_reg111 <= 0;
              slv_reg112 <= 0;
              slv_reg113 <= 0;
              slv_reg114 <= 0;
              slv_reg115 <= 0;
              slv_reg116 <= 0;
              slv_reg117 <= 0;
              slv_reg118 <= 0;
              slv_reg119 <= 0;
              slv_reg120 <= 0;
              slv_reg121 <= 0;
              slv_reg122 <= 0;
              slv_reg123 <= 0;
              slv_reg124 <= 0;
              slv_reg125 <= 0;
              slv_reg126 <= 0;
              slv_reg127 <= 0;
              slv_reg128 <= 0;
              slv_reg129 <= 0;
        end
        else if ( slv_reg1[31:16] == 16'd2 ) begin
            // sample
            if ( adc_cnt >= slv_reg1[15:0]) begin
                // full
                slv_reg2[31:16] <= 16'd4; 
            end
            else begin
                // sampling 
                adc_cnt <= adc_cnt + 1;
                slv_reg2[15:0] <= adc_cnt;
                slv_reg2[31:16] <= 16'd2; 
                
                if( adc_cnt == 16'd0 ) begin slv_reg3[7:0] <= adc_data; end
                else if( adc_cnt == 16'd1 ) begin  slv_reg3[15:8] <= adc_data;  end
                else if( adc_cnt == 16'd2 ) begin slv_reg3[23:16] <= adc_data; end
                else if( adc_cnt == 16'd3 ) begin slv_reg3[31:24] <= adc_data; end
                else if( adc_cnt == 16'd4 ) begin slv_reg4[7:0] <= adc_data; end
                else if( adc_cnt == 16'd5 ) begin slv_reg4[15:8] <= adc_data; end
                else if( adc_cnt == 16'd6 ) begin slv_reg4[23:16] <= adc_data; end
                else if( adc_cnt == 16'd7 ) begin slv_reg4[31:24] <= adc_data; end
                else if( adc_cnt == 16'd8 ) begin slv_reg5[7:0] <= adc_data; end
                else if( adc_cnt == 16'd9 ) begin slv_reg5[15:8] <= adc_data; end
                else if( adc_cnt == 16'd10 ) begin slv_reg5[23:16] <= adc_data; end
                else if( adc_cnt == 16'd11 ) begin slv_reg5[31:24] <= adc_data; end
                else if( adc_cnt == 16'd12 ) begin slv_reg6[7:0] <= adc_data; end
                else if( adc_cnt == 16'd13 ) begin slv_reg6[15:8] <= adc_data; end
                else if( adc_cnt == 16'd14 ) begin slv_reg6[23:16] <= adc_data; end
                else if( adc_cnt == 16'd15 ) begin slv_reg6[31:24] <= adc_data; end
                
                else if( adc_cnt == 16'd16 ) begin slv_reg7[7:0] <= adc_data; end
                else if( adc_cnt == 16'd17 ) begin slv_reg7[15:8] <= adc_data; end
                else if( adc_cnt == 16'd18 ) begin slv_reg7[23:16] <= adc_data; end
                else if( adc_cnt == 16'd19 ) begin slv_reg7[31:24] <= adc_data; end
                else if( adc_cnt == 16'd20 ) begin slv_reg8[7:0] <= adc_data; end
                else if( adc_cnt == 16'd21 ) begin slv_reg8[15:8] <= adc_data; end
                else if( adc_cnt == 16'd22 ) begin slv_reg8[23:16] <= adc_data; end
                else if( adc_cnt == 16'd23 ) begin slv_reg8[31:24] <= adc_data; end
                else if( adc_cnt == 16'd24 ) begin slv_reg9[7:0] <= adc_data; end
                else if( adc_cnt == 16'd25 ) begin slv_reg9[15:8] <= adc_data; end
                else if( adc_cnt == 16'd26 ) begin slv_reg9[23:16] <= adc_data; end
                else if( adc_cnt == 16'd27 ) begin slv_reg9[31:24] <= adc_data; end
                else if( adc_cnt == 16'd28 ) begin slv_reg10[7:0] <= adc_data; end
                else if( adc_cnt == 16'd29 ) begin slv_reg10[15:8] <= adc_data; end
                else if( adc_cnt == 16'd30 ) begin slv_reg10[23:16] <= adc_data; end
                else if( adc_cnt == 16'd31 ) begin slv_reg10[31:24] <= adc_data; end
                else if( adc_cnt == 16'd32 ) begin slv_reg11[7:0] <= adc_data; end
                else if( adc_cnt == 16'd33 ) begin slv_reg11[15:8] <= adc_data; end
                else if( adc_cnt == 16'd34 ) begin slv_reg11[23:16] <= adc_data; end
                else if( adc_cnt == 16'd35 ) begin slv_reg11[31:24] <= adc_data; end
                    
                else if( adc_cnt == 16'd36 ) begin slv_reg12[7:0] <= adc_data; end
                else if( adc_cnt == 16'd37 ) begin slv_reg12[15:8] <= adc_data; end
                else if( adc_cnt == 16'd38 ) begin slv_reg12[23:16] <= adc_data; end
                else if( adc_cnt == 16'd39 ) begin slv_reg12[31:24] <= adc_data; end
                else if( adc_cnt == 16'd40 ) begin slv_reg13[7:0] <= adc_data; end
                else if( adc_cnt == 16'd41 ) begin slv_reg13[15:8] <= adc_data; end
                else if( adc_cnt == 16'd42 ) begin slv_reg13[23:16] <= adc_data; end
                else if( adc_cnt == 16'd43 ) begin slv_reg13[31:24] <= adc_data; end
                else if( adc_cnt == 16'd44 ) begin slv_reg14[7:0] <= adc_data; end
                else if( adc_cnt == 16'd45 ) begin slv_reg14[15:8] <= adc_data; end
                else if( adc_cnt == 16'd46 ) begin slv_reg14[23:16] <= adc_data; end
                else if( adc_cnt == 16'd47 ) begin slv_reg14[31:24] <= adc_data; end
                else if( adc_cnt == 16'd48 ) begin slv_reg15[7:0] <= adc_data; end
                else if( adc_cnt == 16'd49 ) begin slv_reg15[15:8] <= adc_data; end
                else if( adc_cnt == 16'd50 ) begin slv_reg15[23:16] <= adc_data; end
                else if( adc_cnt == 16'd51 ) begin slv_reg15[31:24] <= adc_data; end
                else if( adc_cnt == 16'd52 ) begin slv_reg16[7:0] <= adc_data; end
                else if( adc_cnt == 16'd53 ) begin slv_reg16[15:8] <= adc_data; end
                else if( adc_cnt == 16'd54 ) begin slv_reg16[23:16] <= adc_data; end
                else if( adc_cnt == 16'd55 ) begin slv_reg16[31:24] <= adc_data; end
                else if( adc_cnt == 16'd56 ) begin slv_reg17[7:0] <= adc_data; end
                else if( adc_cnt == 16'd57 ) begin slv_reg17[15:8] <= adc_data; end
                else if( adc_cnt == 16'd58 ) begin slv_reg17[23:16] <= adc_data; end
                else if( adc_cnt == 16'd59 ) begin slv_reg17[31:24] <= adc_data; end
                else if( adc_cnt == 16'd60 ) begin slv_reg18[7:0] <= adc_data; end
                else if( adc_cnt == 16'd61 ) begin slv_reg18[15:8] <= adc_data; end
                else if( adc_cnt == 16'd62 ) begin slv_reg18[23:16] <= adc_data; end
                else if( adc_cnt == 16'd63 ) begin slv_reg18[31:24] <= adc_data; end
                else if( adc_cnt == 16'd64 ) begin slv_reg19[7:0] <= adc_data; end
                else if( adc_cnt == 16'd65 ) begin slv_reg19[15:8] <= adc_data; end
                else if( adc_cnt == 16'd66 ) begin slv_reg19[23:16] <= adc_data; end
                else if( adc_cnt == 16'd67 ) begin slv_reg19[31:24] <= adc_data; end
                else if( adc_cnt == 16'd68 ) begin slv_reg20[7:0] <= adc_data; end
                else if( adc_cnt == 16'd69 ) begin slv_reg20[15:8] <= adc_data; end
                else if( adc_cnt == 16'd70 ) begin slv_reg20[23:16] <= adc_data; end
                else if( adc_cnt == 16'd71 ) begin slv_reg20[31:24] <= adc_data; end
                else if( adc_cnt == 16'd72 ) begin slv_reg21[7:0] <= adc_data; end
                else if( adc_cnt == 16'd73 ) begin slv_reg21[15:8] <= adc_data; end
                else if( adc_cnt == 16'd74 ) begin slv_reg21[23:16] <= adc_data; end
                else if( adc_cnt == 16'd75 ) begin slv_reg21[31:24] <= adc_data; end
                else if( adc_cnt == 16'd76 ) begin slv_reg22[7:0] <= adc_data; end
                else if( adc_cnt == 16'd77 ) begin slv_reg22[15:8] <= adc_data; end
                else if( adc_cnt == 16'd78 ) begin slv_reg22[23:16] <= adc_data; end
                else if( adc_cnt == 16'd79 ) begin slv_reg22[31:24] <= adc_data; end
                else if( adc_cnt == 16'd80 ) begin slv_reg23[7:0] <= adc_data; end
                else if( adc_cnt == 16'd81 ) begin slv_reg23[15:8] <= adc_data; end
                else if( adc_cnt == 16'd82 ) begin slv_reg23[23:16] <= adc_data; end
                else if( adc_cnt == 16'd83 ) begin slv_reg23[31:24] <= adc_data; end
                else if( adc_cnt == 16'd84 ) begin slv_reg24[7:0] <= adc_data; end
                else if( adc_cnt == 16'd85 ) begin slv_reg24[15:8] <= adc_data; end
                else if( adc_cnt == 16'd86 ) begin slv_reg24[23:16] <= adc_data; end
                else if( adc_cnt == 16'd87 ) begin slv_reg24[31:24] <= adc_data; end
                else if( adc_cnt == 16'd88 ) begin slv_reg25[7:0] <= adc_data; end
                else if( adc_cnt == 16'd89 ) begin slv_reg25[15:8] <= adc_data; end
                else if( adc_cnt == 16'd90 ) begin slv_reg25[23:16] <= adc_data; end
                else if( adc_cnt == 16'd91 ) begin slv_reg25[31:24] <= adc_data; end
                else if( adc_cnt == 16'd92 ) begin slv_reg26[7:0] <= adc_data; end
                else if( adc_cnt == 16'd93 ) begin slv_reg26[15:8] <= adc_data; end
                else if( adc_cnt == 16'd94 ) begin slv_reg26[23:16] <= adc_data; end
                else if( adc_cnt == 16'd95 ) begin slv_reg26[31:24] <= adc_data; end
                else if( adc_cnt == 16'd96 ) begin slv_reg27[7:0] <= adc_data; end
                else if( adc_cnt == 16'd97 ) begin slv_reg27[15:8] <= adc_data; end
                else if( adc_cnt == 16'd98 ) begin slv_reg27[23:16] <= adc_data; end
                else if( adc_cnt == 16'd99 ) begin slv_reg27[31:24] <= adc_data; end
                
                else if( adc_cnt == 16'd100 ) begin slv_reg28[7:0] <= adc_data; end
                else if( adc_cnt == 16'd101 ) begin slv_reg28[15:8] <= adc_data; end
                else if( adc_cnt == 16'd102 ) begin slv_reg28[23:16] <= adc_data; end
                else if( adc_cnt == 16'd103 ) begin slv_reg28[31:24] <= adc_data; end
                else if( adc_cnt == 16'd104 ) begin slv_reg29[7:0] <= adc_data; end
                else if( adc_cnt == 16'd105 ) begin slv_reg29[15:8] <= adc_data; end
                else if( adc_cnt == 16'd106 ) begin slv_reg29[23:16] <= adc_data; end
                else if( adc_cnt == 16'd107 ) begin slv_reg29[31:24] <= adc_data; end
                else if( adc_cnt == 16'd108 ) begin slv_reg30[7:0] <= adc_data; end
                else if( adc_cnt == 16'd109 ) begin slv_reg30[15:8] <= adc_data; end
                else if( adc_cnt == 16'd110 ) begin slv_reg30[23:16] <= adc_data; end
                else if( adc_cnt == 16'd111 ) begin slv_reg30[31:24] <= adc_data; end
                else if( adc_cnt == 16'd112 ) begin slv_reg31[7:0] <= adc_data; end
                else if( adc_cnt == 16'd113 ) begin slv_reg31[15:8] <= adc_data; end
                else if( adc_cnt == 16'd114 ) begin slv_reg31[23:16] <= adc_data; end
                else if( adc_cnt == 16'd115 ) begin slv_reg31[31:24] <= adc_data; end
                else if( adc_cnt == 16'd116 ) begin slv_reg32[7:0] <= adc_data; end
                else if( adc_cnt == 16'd117 ) begin slv_reg32[15:8] <= adc_data; end
                else if( adc_cnt == 16'd118 ) begin slv_reg32[23:16] <= adc_data; end
                else if( adc_cnt == 16'd119 ) begin slv_reg32[31:24] <= adc_data; end
                else if( adc_cnt == 16'd120 ) begin slv_reg33[7:0] <= adc_data; end
                else if( adc_cnt == 16'd121 ) begin slv_reg33[15:8] <= adc_data; end
                else if( adc_cnt == 16'd122 ) begin slv_reg33[23:16] <= adc_data; end
                else if( adc_cnt == 16'd123 ) begin slv_reg33[31:24] <= adc_data; end
                else if( adc_cnt == 16'd124 ) begin slv_reg34[7:0] <= adc_data; end
                else if( adc_cnt == 16'd125 ) begin slv_reg34[15:8] <= adc_data; end
                else if( adc_cnt == 16'd126 ) begin slv_reg34[23:16] <= adc_data; end
                else if( adc_cnt == 16'd127 ) begin slv_reg34[31:24] <= adc_data; end
                else if( adc_cnt == 16'd128 ) begin slv_reg35[7:0] <= adc_data; end
                else if( adc_cnt == 16'd129 ) begin slv_reg35[15:8] <= adc_data; end
                else if( adc_cnt == 16'd130 ) begin slv_reg35[23:16] <= adc_data; end
                else if( adc_cnt == 16'd131 ) begin slv_reg35[31:24] <= adc_data; end
                else if( adc_cnt == 16'd132 ) begin slv_reg36[7:0] <= adc_data; end
                else if( adc_cnt == 16'd133 ) begin slv_reg36[15:8] <= adc_data; end
                else if( adc_cnt == 16'd134 ) begin slv_reg36[23:16] <= adc_data; end
                else if( adc_cnt == 16'd135 ) begin slv_reg36[31:24] <= adc_data; end
                else if( adc_cnt == 16'd136 ) begin slv_reg37[7:0] <= adc_data; end
                else if( adc_cnt == 16'd137 ) begin slv_reg37[15:8] <= adc_data; end
                else if( adc_cnt == 16'd138 ) begin slv_reg37[23:16] <= adc_data; end
                else if( adc_cnt == 16'd139 ) begin slv_reg37[31:24] <= adc_data; end
                else if( adc_cnt == 16'd140 ) begin slv_reg38[7:0] <= adc_data; end
                else if( adc_cnt == 16'd141 ) begin slv_reg38[15:8] <= adc_data; end
                else if( adc_cnt == 16'd142 ) begin slv_reg38[23:16] <= adc_data; end
                else if( adc_cnt == 16'd143 ) begin slv_reg38[31:24] <= adc_data; end
                else if( adc_cnt == 16'd144 ) begin slv_reg39[7:0] <= adc_data; end
                else if( adc_cnt == 16'd145 ) begin slv_reg39[15:8] <= adc_data; end
                else if( adc_cnt == 16'd146 ) begin slv_reg39[23:16] <= adc_data; end
                else if( adc_cnt == 16'd147 ) begin slv_reg39[31:24] <= adc_data; end
                else if( adc_cnt == 16'd148 ) begin slv_reg40[7:0] <= adc_data; end
                else if( adc_cnt == 16'd149 ) begin slv_reg40[15:8] <= adc_data; end
                else if( adc_cnt == 16'd150 ) begin slv_reg40[23:16] <= adc_data; end
                else if( adc_cnt == 16'd151 ) begin slv_reg40[31:24] <= adc_data; end
                else if( adc_cnt == 16'd152 ) begin slv_reg41[7:0] <= adc_data; end
                else if( adc_cnt == 16'd153 ) begin slv_reg41[15:8] <= adc_data; end
                else if( adc_cnt == 16'd154 ) begin slv_reg41[23:16] <= adc_data; end
                else if( adc_cnt == 16'd155 ) begin slv_reg41[31:24] <= adc_data; end
                else if( adc_cnt == 16'd156 ) begin slv_reg42[7:0] <= adc_data; end
                else if( adc_cnt == 16'd157 ) begin slv_reg42[15:8] <= adc_data; end
                else if( adc_cnt == 16'd158 ) begin slv_reg42[23:16] <= adc_data; end
                else if( adc_cnt == 16'd159 ) begin slv_reg42[31:24] <= adc_data; end
                else if( adc_cnt == 16'd160 ) begin slv_reg43[7:0] <= adc_data; end
                else if( adc_cnt == 16'd161 ) begin slv_reg43[15:8] <= adc_data; end
                else if( adc_cnt == 16'd162 ) begin slv_reg43[23:16] <= adc_data; end
                else if( adc_cnt == 16'd163 ) begin slv_reg43[31:24] <= adc_data; end
                else if( adc_cnt == 16'd164 ) begin slv_reg44[7:0] <= adc_data; end
                else if( adc_cnt == 16'd165 ) begin slv_reg44[15:8] <= adc_data; end
                else if( adc_cnt == 16'd166 ) begin slv_reg44[23:16] <= adc_data; end
                else if( adc_cnt == 16'd167 ) begin slv_reg44[31:24] <= adc_data; end
                else if( adc_cnt == 16'd168 ) begin slv_reg45[7:0] <= adc_data; end
                else if( adc_cnt == 16'd169 ) begin slv_reg45[15:8] <= adc_data; end
                else if( adc_cnt == 16'd170 ) begin slv_reg45[23:16] <= adc_data; end
                else if( adc_cnt == 16'd171 ) begin slv_reg45[31:24] <= adc_data; end
                else if( adc_cnt == 16'd172 ) begin slv_reg46[7:0] <= adc_data; end
                else if( adc_cnt == 16'd173 ) begin slv_reg46[15:8] <= adc_data; end
                else if( adc_cnt == 16'd174 ) begin slv_reg46[23:16] <= adc_data; end
                else if( adc_cnt == 16'd175 ) begin slv_reg46[31:24] <= adc_data; end
                else if( adc_cnt == 16'd176 ) begin slv_reg47[7:0] <= adc_data; end
                else if( adc_cnt == 16'd177 ) begin slv_reg47[15:8] <= adc_data; end
                else if( adc_cnt == 16'd178 ) begin slv_reg47[23:16] <= adc_data; end
                else if( adc_cnt == 16'd179 ) begin slv_reg47[31:24] <= adc_data; end
                else if( adc_cnt == 16'd180 ) begin slv_reg48[7:0] <= adc_data; end
                else if( adc_cnt == 16'd181 ) begin slv_reg48[15:8] <= adc_data; end
                else if( adc_cnt == 16'd182 ) begin slv_reg48[23:16] <= adc_data; end
                else if( adc_cnt == 16'd183 ) begin slv_reg48[31:24] <= adc_data; end
                else if( adc_cnt == 16'd184 ) begin slv_reg49[7:0] <= adc_data; end
                else if( adc_cnt == 16'd185 ) begin slv_reg49[15:8] <= adc_data; end
                else if( adc_cnt == 16'd186 ) begin slv_reg49[23:16] <= adc_data; end
                else if( adc_cnt == 16'd187 ) begin slv_reg49[31:24] <= adc_data; end
                else if( adc_cnt == 16'd188 ) begin slv_reg50[7:0] <= adc_data; end
                else if( adc_cnt == 16'd189 ) begin slv_reg50[15:8] <= adc_data; end
                else if( adc_cnt == 16'd190 ) begin slv_reg50[23:16] <= adc_data; end
                else if( adc_cnt == 16'd191 ) begin slv_reg50[31:24] <= adc_data; end
                else if( adc_cnt == 16'd192 ) begin slv_reg51[7:0] <= adc_data; end
                else if( adc_cnt == 16'd193 ) begin slv_reg51[15:8] <= adc_data; end
                else if( adc_cnt == 16'd194 ) begin slv_reg51[23:16] <= adc_data; end
                else if( adc_cnt == 16'd195 ) begin slv_reg51[31:24] <= adc_data; end
                else if( adc_cnt == 16'd196 ) begin slv_reg52[7:0] <= adc_data; end
                else if( adc_cnt == 16'd197 ) begin slv_reg52[15:8] <= adc_data; end
                else if( adc_cnt == 16'd198 ) begin slv_reg52[23:16] <= adc_data; end
                else if( adc_cnt == 16'd199 ) begin slv_reg52[31:24] <= adc_data; end
                else if( adc_cnt == 16'd200 ) begin slv_reg53[7:0] <= adc_data; end
                else if( adc_cnt == 16'd201 ) begin slv_reg53[15:8] <= adc_data; end
                else if( adc_cnt == 16'd202 ) begin slv_reg53[23:16] <= adc_data; end
                else if( adc_cnt == 16'd203 ) begin slv_reg53[31:24] <= adc_data; end
                else if( adc_cnt == 16'd204 ) begin slv_reg54[7:0] <= adc_data; end
                else if( adc_cnt == 16'd205 ) begin slv_reg54[15:8] <= adc_data; end
                else if( adc_cnt == 16'd206 ) begin slv_reg54[23:16] <= adc_data; end
                else if( adc_cnt == 16'd207 ) begin slv_reg54[31:24] <= adc_data; end
                else if( adc_cnt == 16'd208 ) begin slv_reg55[7:0] <= adc_data; end
                else if( adc_cnt == 16'd209 ) begin slv_reg55[15:8] <= adc_data; end
                else if( adc_cnt == 16'd210 ) begin slv_reg55[23:16] <= adc_data; end
                else if( adc_cnt == 16'd211 ) begin slv_reg55[31:24] <= adc_data; end
                else if( adc_cnt == 16'd212 ) begin slv_reg56[7:0] <= adc_data; end
                else if( adc_cnt == 16'd213 ) begin slv_reg56[15:8] <= adc_data; end
                else if( adc_cnt == 16'd214 ) begin slv_reg56[23:16] <= adc_data; end
                else if( adc_cnt == 16'd215 ) begin slv_reg56[31:24] <= adc_data; end
                else if( adc_cnt == 16'd216 ) begin slv_reg57[7:0] <= adc_data; end
                else if( adc_cnt == 16'd217 ) begin slv_reg57[15:8] <= adc_data; end
                else if( adc_cnt == 16'd218 ) begin slv_reg57[23:16] <= adc_data; end
                else if( adc_cnt == 16'd219 ) begin slv_reg57[31:24] <= adc_data; end
                else if( adc_cnt == 16'd220 ) begin slv_reg58[7:0] <= adc_data; end
                else if( adc_cnt == 16'd221 ) begin slv_reg58[15:8] <= adc_data; end
                else if( adc_cnt == 16'd222 ) begin slv_reg58[23:16] <= adc_data; end
                else if( adc_cnt == 16'd223 ) begin slv_reg58[31:24] <= adc_data; end
                else if( adc_cnt == 16'd224 ) begin slv_reg59[7:0] <= adc_data; end
                else if( adc_cnt == 16'd225 ) begin slv_reg59[15:8] <= adc_data; end
                else if( adc_cnt == 16'd226 ) begin slv_reg59[23:16] <= adc_data; end
                else if( adc_cnt == 16'd227 ) begin slv_reg59[31:24] <= adc_data; end
                else if( adc_cnt == 16'd228 ) begin slv_reg60[7:0] <= adc_data; end
                else if( adc_cnt == 16'd229 ) begin slv_reg60[15:8] <= adc_data; end
                else if( adc_cnt == 16'd230 ) begin slv_reg60[23:16] <= adc_data; end
                else if( adc_cnt == 16'd231 ) begin slv_reg60[31:24] <= adc_data; end
                else if( adc_cnt == 16'd232 ) begin slv_reg61[7:0] <= adc_data; end
                else if( adc_cnt == 16'd233 ) begin slv_reg61[15:8] <= adc_data; end
                else if( adc_cnt == 16'd234 ) begin slv_reg61[23:16] <= adc_data; end
                else if( adc_cnt == 16'd235 ) begin slv_reg61[31:24] <= adc_data; end
                else if( adc_cnt == 16'd236 ) begin slv_reg62[7:0] <= adc_data; end
                else if( adc_cnt == 16'd237 ) begin slv_reg62[15:8] <= adc_data; end
                else if( adc_cnt == 16'd238 ) begin slv_reg62[23:16] <= adc_data; end
                else if( adc_cnt == 16'd239 ) begin slv_reg62[31:24] <= adc_data; end
                else if( adc_cnt == 16'd240 ) begin slv_reg63[7:0] <= adc_data; end
                else if( adc_cnt == 16'd241 ) begin slv_reg63[15:8] <= adc_data; end
                else if( adc_cnt == 16'd242 ) begin slv_reg63[23:16] <= adc_data; end
                else if( adc_cnt == 16'd243 ) begin slv_reg63[31:24] <= adc_data; end
                else if( adc_cnt == 16'd244 ) begin slv_reg64[7:0] <= adc_data; end
                else if( adc_cnt == 16'd245 ) begin slv_reg64[15:8] <= adc_data; end
                else if( adc_cnt == 16'd246 ) begin slv_reg64[23:16] <= adc_data; end
                else if( adc_cnt == 16'd247 ) begin slv_reg64[31:24] <= adc_data; end
                else if( adc_cnt == 16'd248 ) begin slv_reg65[7:0] <= adc_data; end
                else if( adc_cnt == 16'd249 ) begin slv_reg65[15:8] <= adc_data; end
                else if( adc_cnt == 16'd250 ) begin slv_reg65[23:16] <= adc_data; end
                else if( adc_cnt == 16'd251 ) begin slv_reg65[31:24] <= adc_data; end
                else if( adc_cnt == 16'd252 ) begin slv_reg66[7:0] <= adc_data; end
                else if( adc_cnt == 16'd253 ) begin slv_reg66[15:8] <= adc_data; end
                else if( adc_cnt == 16'd254 ) begin slv_reg66[23:16] <= adc_data; end
                else if( adc_cnt == 16'd255 ) begin slv_reg66[31:24] <= adc_data; end
                else if( adc_cnt == 16'd256 ) begin slv_reg67[7:0] <= adc_data; end
                else if( adc_cnt == 16'd257 ) begin slv_reg67[15:8] <= adc_data; end
                else if( adc_cnt == 16'd258 ) begin slv_reg67[23:16] <= adc_data; end
                else if( adc_cnt == 16'd259 ) begin slv_reg67[31:24] <= adc_data; end
                else if( adc_cnt == 16'd260 ) begin slv_reg68[7:0] <= adc_data; end
                else if( adc_cnt == 16'd261 ) begin slv_reg68[15:8] <= adc_data; end
                else if( adc_cnt == 16'd262 ) begin slv_reg68[23:16] <= adc_data; end
                else if( adc_cnt == 16'd263 ) begin slv_reg68[31:24] <= adc_data; end
                else if( adc_cnt == 16'd264 ) begin slv_reg69[7:0] <= adc_data; end
                else if( adc_cnt == 16'd265 ) begin slv_reg69[15:8] <= adc_data; end
                else if( adc_cnt == 16'd266 ) begin slv_reg69[23:16] <= adc_data; end
                else if( adc_cnt == 16'd267 ) begin slv_reg69[31:24] <= adc_data; end
                else if( adc_cnt == 16'd268 ) begin slv_reg70[7:0] <= adc_data; end
                else if( adc_cnt == 16'd269 ) begin slv_reg70[15:8] <= adc_data; end
                else if( adc_cnt == 16'd270 ) begin slv_reg70[23:16] <= adc_data; end
                else if( adc_cnt == 16'd271 ) begin slv_reg70[31:24] <= adc_data; end
                else if( adc_cnt == 16'd272 ) begin slv_reg71[7:0] <= adc_data; end
                else if( adc_cnt == 16'd273 ) begin slv_reg71[15:8] <= adc_data; end
                else if( adc_cnt == 16'd274 ) begin slv_reg71[23:16] <= adc_data; end
                else if( adc_cnt == 16'd275 ) begin slv_reg71[31:24] <= adc_data; end
                else if( adc_cnt == 16'd276 ) begin slv_reg72[7:0] <= adc_data; end
                else if( adc_cnt == 16'd277 ) begin slv_reg72[15:8] <= adc_data; end
                else if( adc_cnt == 16'd278 ) begin slv_reg72[23:16] <= adc_data; end
                else if( adc_cnt == 16'd279 ) begin slv_reg72[31:24] <= adc_data; end
                else if( adc_cnt == 16'd280 ) begin slv_reg73[7:0] <= adc_data; end
                else if( adc_cnt == 16'd281 ) begin slv_reg73[15:8] <= adc_data; end
                else if( adc_cnt == 16'd282 ) begin slv_reg73[23:16] <= adc_data; end
                else if( adc_cnt == 16'd283 ) begin slv_reg73[31:24] <= adc_data; end
                else if( adc_cnt == 16'd284 ) begin slv_reg74[7:0] <= adc_data; end
                else if( adc_cnt == 16'd285 ) begin slv_reg74[15:8] <= adc_data; end
                else if( adc_cnt == 16'd286 ) begin slv_reg74[23:16] <= adc_data; end
                else if( adc_cnt == 16'd287 ) begin slv_reg74[31:24] <= adc_data; end
                else if( adc_cnt == 16'd288 ) begin slv_reg75[7:0] <= adc_data; end
                else if( adc_cnt == 16'd289 ) begin slv_reg75[15:8] <= adc_data; end
                else if( adc_cnt == 16'd290 ) begin slv_reg75[23:16] <= adc_data; end
                else if( adc_cnt == 16'd291 ) begin slv_reg75[31:24] <= adc_data; end
                else if( adc_cnt == 16'd292 ) begin slv_reg76[7:0] <= adc_data; end
                else if( adc_cnt == 16'd293 ) begin slv_reg76[15:8] <= adc_data; end
                else if( adc_cnt == 16'd294 ) begin slv_reg76[23:16] <= adc_data; end
                else if( adc_cnt == 16'd295 ) begin slv_reg76[31:24] <= adc_data; end
                else if( adc_cnt == 16'd296 ) begin slv_reg77[7:0] <= adc_data; end
                else if( adc_cnt == 16'd297 ) begin slv_reg77[15:8] <= adc_data; end
                else if( adc_cnt == 16'd298 ) begin slv_reg77[23:16] <= adc_data; end
                else if( adc_cnt == 16'd299 ) begin slv_reg77[31:24] <= adc_data; end
                else if( adc_cnt == 16'd300 ) begin slv_reg78[7:0] <= adc_data; end
                else if( adc_cnt == 16'd301 ) begin slv_reg78[15:8] <= adc_data; end
                else if( adc_cnt == 16'd302 ) begin slv_reg78[23:16] <= adc_data; end
                else if( adc_cnt == 16'd303 ) begin slv_reg78[31:24] <= adc_data; end
                else if( adc_cnt == 16'd304 ) begin slv_reg79[7:0] <= adc_data; end
                else if( adc_cnt == 16'd305 ) begin slv_reg79[15:8] <= adc_data; end
                else if( adc_cnt == 16'd306 ) begin slv_reg79[23:16] <= adc_data; end
                else if( adc_cnt == 16'd307 ) begin slv_reg79[31:24] <= adc_data; end
                else if( adc_cnt == 16'd308 ) begin slv_reg80[7:0] <= adc_data; end
                else if( adc_cnt == 16'd309 ) begin slv_reg80[15:8] <= adc_data; end
                else if( adc_cnt == 16'd310 ) begin slv_reg80[23:16] <= adc_data; end
                else if( adc_cnt == 16'd311 ) begin slv_reg80[31:24] <= adc_data; end
                else if( adc_cnt == 16'd312 ) begin slv_reg81[7:0] <= adc_data; end
                else if( adc_cnt == 16'd313 ) begin slv_reg81[15:8] <= adc_data; end
                else if( adc_cnt == 16'd314 ) begin slv_reg81[23:16] <= adc_data; end
                else if( adc_cnt == 16'd315 ) begin slv_reg81[31:24] <= adc_data; end
                else if( adc_cnt == 16'd316 ) begin slv_reg82[7:0] <= adc_data; end
                else if( adc_cnt == 16'd317 ) begin slv_reg82[15:8] <= adc_data; end
                else if( adc_cnt == 16'd318 ) begin slv_reg82[23:16] <= adc_data; end
                else if( adc_cnt == 16'd319 ) begin slv_reg82[31:24] <= adc_data; end
                else if( adc_cnt == 16'd320 ) begin slv_reg83[7:0] <= adc_data; end
                else if( adc_cnt == 16'd321 ) begin slv_reg83[15:8] <= adc_data; end
                else if( adc_cnt == 16'd322 ) begin slv_reg83[23:16] <= adc_data; end
                else if( adc_cnt == 16'd323 ) begin slv_reg83[31:24] <= adc_data; end
                else if( adc_cnt == 16'd324 ) begin slv_reg84[7:0] <= adc_data; end
                else if( adc_cnt == 16'd325 ) begin slv_reg84[15:8] <= adc_data; end
                else if( adc_cnt == 16'd326 ) begin slv_reg84[23:16] <= adc_data; end
                else if( adc_cnt == 16'd327 ) begin slv_reg84[31:24] <= adc_data; end
                else if( adc_cnt == 16'd328 ) begin slv_reg85[7:0] <= adc_data; end
                else if( adc_cnt == 16'd329 ) begin slv_reg85[15:8] <= adc_data; end
                else if( adc_cnt == 16'd330 ) begin slv_reg85[23:16] <= adc_data; end
                else if( adc_cnt == 16'd331 ) begin slv_reg85[31:24] <= adc_data; end
                else if( adc_cnt == 16'd332 ) begin slv_reg86[7:0] <= adc_data; end
                else if( adc_cnt == 16'd333 ) begin slv_reg86[15:8] <= adc_data; end
                else if( adc_cnt == 16'd334 ) begin slv_reg86[23:16] <= adc_data; end
                else if( adc_cnt == 16'd335 ) begin slv_reg86[31:24] <= adc_data; end
                else if( adc_cnt == 16'd336 ) begin slv_reg87[7:0] <= adc_data; end
                else if( adc_cnt == 16'd337 ) begin slv_reg87[15:8] <= adc_data; end
                else if( adc_cnt == 16'd338 ) begin slv_reg87[23:16] <= adc_data; end
                else if( adc_cnt == 16'd339 ) begin slv_reg87[31:24] <= adc_data; end
                else if( adc_cnt == 16'd340 ) begin slv_reg88[7:0] <= adc_data; end
                else if( adc_cnt == 16'd341 ) begin slv_reg88[15:8] <= adc_data; end
                else if( adc_cnt == 16'd342 ) begin slv_reg88[23:16] <= adc_data; end
                else if( adc_cnt == 16'd343 ) begin slv_reg88[31:24] <= adc_data; end
                else if( adc_cnt == 16'd344 ) begin slv_reg89[7:0] <= adc_data; end
                else if( adc_cnt == 16'd345 ) begin slv_reg89[15:8] <= adc_data; end
                else if( adc_cnt == 16'd346 ) begin slv_reg89[23:16] <= adc_data; end
                else if( adc_cnt == 16'd347 ) begin slv_reg89[31:24] <= adc_data; end
                else if( adc_cnt == 16'd348 ) begin slv_reg90[7:0] <= adc_data; end
                else if( adc_cnt == 16'd349 ) begin slv_reg90[15:8] <= adc_data; end
                else if( adc_cnt == 16'd350 ) begin slv_reg90[23:16] <= adc_data; end
                else if( adc_cnt == 16'd351 ) begin slv_reg90[31:24] <= adc_data; end
                else if( adc_cnt == 16'd352 ) begin slv_reg91[7:0] <= adc_data; end
                else if( adc_cnt == 16'd353 ) begin slv_reg91[15:8] <= adc_data; end
                else if( adc_cnt == 16'd354 ) begin slv_reg91[23:16] <= adc_data; end
                else if( adc_cnt == 16'd355 ) begin slv_reg91[31:24] <= adc_data; end
                else if( adc_cnt == 16'd356 ) begin slv_reg92[7:0] <= adc_data; end
                else if( adc_cnt == 16'd357 ) begin slv_reg92[15:8] <= adc_data; end
                else if( adc_cnt == 16'd358 ) begin slv_reg92[23:16] <= adc_data; end
                else if( adc_cnt == 16'd359 ) begin slv_reg92[31:24] <= adc_data; end
                else if( adc_cnt == 16'd360 ) begin slv_reg93[7:0] <= adc_data; end
                else if( adc_cnt == 16'd361 ) begin slv_reg93[15:8] <= adc_data; end
                else if( adc_cnt == 16'd362 ) begin slv_reg93[23:16] <= adc_data; end
                else if( adc_cnt == 16'd363 ) begin slv_reg93[31:24] <= adc_data; end
                else if( adc_cnt == 16'd364 ) begin slv_reg94[7:0] <= adc_data; end
                else if( adc_cnt == 16'd365 ) begin slv_reg94[15:8] <= adc_data; end
                else if( adc_cnt == 16'd366 ) begin slv_reg94[23:16] <= adc_data; end
                else if( adc_cnt == 16'd367 ) begin slv_reg94[31:24] <= adc_data; end
                else if( adc_cnt == 16'd368 ) begin slv_reg95[7:0] <= adc_data; end
                else if( adc_cnt == 16'd369 ) begin slv_reg95[15:8] <= adc_data; end
                else if( adc_cnt == 16'd370 ) begin slv_reg95[23:16] <= adc_data; end
                else if( adc_cnt == 16'd371 ) begin slv_reg95[31:24] <= adc_data; end
                else if( adc_cnt == 16'd372 ) begin slv_reg96[7:0] <= adc_data; end
                else if( adc_cnt == 16'd373 ) begin slv_reg96[15:8] <= adc_data; end
                else if( adc_cnt == 16'd374 ) begin slv_reg96[23:16] <= adc_data; end
                else if( adc_cnt == 16'd375 ) begin slv_reg96[31:24] <= adc_data; end
                else if( adc_cnt == 16'd376 ) begin slv_reg97[7:0] <= adc_data; end
                else if( adc_cnt == 16'd377 ) begin slv_reg97[15:8] <= adc_data; end
                else if( adc_cnt == 16'd378 ) begin slv_reg97[23:16] <= adc_data; end
                else if( adc_cnt == 16'd379 ) begin slv_reg97[31:24] <= adc_data; end
                else if( adc_cnt == 16'd380 ) begin slv_reg98[7:0] <= adc_data; end
                else if( adc_cnt == 16'd381 ) begin slv_reg98[15:8] <= adc_data; end
                else if( adc_cnt == 16'd382 ) begin slv_reg98[23:16] <= adc_data; end
                else if( adc_cnt == 16'd383 ) begin slv_reg98[31:24] <= adc_data; end
                else if( adc_cnt == 16'd384 ) begin slv_reg99[7:0] <= adc_data; end
                else if( adc_cnt == 16'd385 ) begin slv_reg99[15:8] <= adc_data; end
                else if( adc_cnt == 16'd386 ) begin slv_reg99[23:16] <= adc_data; end
                else if( adc_cnt == 16'd387 ) begin slv_reg99[31:24] <= adc_data; end
                
                else if( adc_cnt == 16'd388 ) begin slv_reg100[7:0] <= adc_data; end
                else if( adc_cnt == 16'd389 ) begin slv_reg100[15:8] <= adc_data; end
                else if( adc_cnt == 16'd390 ) begin slv_reg100[23:16] <= adc_data; end
                else if( adc_cnt == 16'd391 ) begin slv_reg100[31:24] <= adc_data; end
                else if( adc_cnt == 16'd392 ) begin slv_reg101[7:0] <= adc_data; end
                else if( adc_cnt == 16'd393 ) begin slv_reg101[15:8] <= adc_data; end
                else if( adc_cnt == 16'd394 ) begin slv_reg101[23:16] <= adc_data; end
                else if( adc_cnt == 16'd395 ) begin slv_reg101[31:24] <= adc_data; end
                else if( adc_cnt == 16'd396 ) begin slv_reg102[7:0] <= adc_data; end
                else if( adc_cnt == 16'd397 ) begin slv_reg102[15:8] <= adc_data; end
                else if( adc_cnt == 16'd398 ) begin slv_reg102[23:16] <= adc_data; end
                else if( adc_cnt == 16'd399 ) begin slv_reg102[31:24] <= adc_data; end
                else if( adc_cnt == 16'd400 ) begin slv_reg103[7:0] <= adc_data; end
                else if( adc_cnt == 16'd401 ) begin slv_reg103[15:8] <= adc_data; end
                else if( adc_cnt == 16'd402 ) begin slv_reg103[23:16] <= adc_data; end
                else if( adc_cnt == 16'd403 ) begin slv_reg103[31:24] <= adc_data; end
                else if( adc_cnt == 16'd404 ) begin slv_reg104[7:0] <= adc_data; end
                else if( adc_cnt == 16'd405 ) begin slv_reg104[15:8] <= adc_data; end
                else if( adc_cnt == 16'd406 ) begin slv_reg104[23:16] <= adc_data; end
                else if( adc_cnt == 16'd407 ) begin slv_reg104[31:24] <= adc_data; end
                else if( adc_cnt == 16'd408 ) begin slv_reg105[7:0] <= adc_data; end
                else if( adc_cnt == 16'd409 ) begin slv_reg105[15:8] <= adc_data; end
                else if( adc_cnt == 16'd410 ) begin slv_reg105[23:16] <= adc_data; end
                else if( adc_cnt == 16'd411 ) begin slv_reg105[31:24] <= adc_data; end
                else if( adc_cnt == 16'd412 ) begin slv_reg106[7:0] <= adc_data; end
                else if( adc_cnt == 16'd413 ) begin slv_reg106[15:8] <= adc_data; end
                else if( adc_cnt == 16'd414 ) begin slv_reg106[23:16] <= adc_data; end
                else if( adc_cnt == 16'd415 ) begin slv_reg106[31:24] <= adc_data; end
                else if( adc_cnt == 16'd416 ) begin slv_reg107[7:0] <= adc_data; end
                else if( adc_cnt == 16'd417 ) begin slv_reg107[15:8] <= adc_data; end
                else if( adc_cnt == 16'd418 ) begin slv_reg107[23:16] <= adc_data; end
                else if( adc_cnt == 16'd419 ) begin slv_reg107[31:24] <= adc_data; end
                else if( adc_cnt == 16'd420 ) begin slv_reg108[7:0] <= adc_data; end
                else if( adc_cnt == 16'd421 ) begin slv_reg108[15:8] <= adc_data; end
                else if( adc_cnt == 16'd422 ) begin slv_reg108[23:16] <= adc_data; end
                else if( adc_cnt == 16'd423 ) begin slv_reg108[31:24] <= adc_data; end
                else if( adc_cnt == 16'd424 ) begin slv_reg109[7:0] <= adc_data; end
                else if( adc_cnt == 16'd425 ) begin slv_reg109[15:8] <= adc_data; end
                else if( adc_cnt == 16'd426 ) begin slv_reg109[23:16] <= adc_data; end
                else if( adc_cnt == 16'd427 ) begin slv_reg109[31:24] <= adc_data; end
                else if( adc_cnt == 16'd428 ) begin slv_reg110[7:0] <= adc_data; end
                else if( adc_cnt == 16'd429 ) begin slv_reg110[15:8] <= adc_data; end
                else if( adc_cnt == 16'd430 ) begin slv_reg110[23:16] <= adc_data; end
                else if( adc_cnt == 16'd431 ) begin slv_reg110[31:24] <= adc_data; end
                else if( adc_cnt == 16'd432 ) begin slv_reg111[7:0] <= adc_data; end
                else if( adc_cnt == 16'd433 ) begin slv_reg111[15:8] <= adc_data; end
                else if( adc_cnt == 16'd434 ) begin slv_reg111[23:16] <= adc_data; end
                else if( adc_cnt == 16'd435 ) begin slv_reg111[31:24] <= adc_data; end
                else if( adc_cnt == 16'd436 ) begin slv_reg112[7:0] <= adc_data; end
                else if( adc_cnt == 16'd437 ) begin slv_reg112[15:8] <= adc_data; end
                else if( adc_cnt == 16'd438 ) begin slv_reg112[23:16] <= adc_data; end
                else if( adc_cnt == 16'd439 ) begin slv_reg112[31:24] <= adc_data; end
                else if( adc_cnt == 16'd440 ) begin slv_reg113[7:0] <= adc_data; end
                else if( adc_cnt == 16'd441 ) begin slv_reg113[15:8] <= adc_data; end
                else if( adc_cnt == 16'd442 ) begin slv_reg113[23:16] <= adc_data; end
                else if( adc_cnt == 16'd443 ) begin slv_reg113[31:24] <= adc_data; end
                else if( adc_cnt == 16'd444 ) begin slv_reg114[7:0] <= adc_data; end
                else if( adc_cnt == 16'd445 ) begin slv_reg114[15:8] <= adc_data; end
                else if( adc_cnt == 16'd446 ) begin slv_reg114[23:16] <= adc_data; end
                else if( adc_cnt == 16'd447 ) begin slv_reg114[31:24] <= adc_data; end
                else if( adc_cnt == 16'd448 ) begin slv_reg115[7:0] <= adc_data; end
                else if( adc_cnt == 16'd449 ) begin slv_reg115[15:8] <= adc_data; end
                else if( adc_cnt == 16'd450 ) begin slv_reg115[23:16] <= adc_data; end
                else if( adc_cnt == 16'd451 ) begin slv_reg115[31:24] <= adc_data; end
                else if( adc_cnt == 16'd452 ) begin slv_reg116[7:0] <= adc_data; end
                else if( adc_cnt == 16'd453 ) begin slv_reg116[15:8] <= adc_data; end
                else if( adc_cnt == 16'd454 ) begin slv_reg116[23:16] <= adc_data; end
                else if( adc_cnt == 16'd455 ) begin slv_reg116[31:24] <= adc_data; end
                else if( adc_cnt == 16'd456 ) begin slv_reg117[7:0] <= adc_data; end
                else if( adc_cnt == 16'd457 ) begin slv_reg117[15:8] <= adc_data; end
                else if( adc_cnt == 16'd458 ) begin slv_reg117[23:16] <= adc_data; end
                else if( adc_cnt == 16'd459 ) begin slv_reg117[31:24] <= adc_data; end
                else if( adc_cnt == 16'd460 ) begin slv_reg118[7:0] <= adc_data; end
                else if( adc_cnt == 16'd461 ) begin slv_reg118[15:8] <= adc_data; end
                else if( adc_cnt == 16'd462 ) begin slv_reg118[23:16] <= adc_data; end
                else if( adc_cnt == 16'd463 ) begin slv_reg118[31:24] <= adc_data; end
                else if( adc_cnt == 16'd464 ) begin slv_reg119[7:0] <= adc_data; end
                else if( adc_cnt == 16'd465 ) begin slv_reg119[15:8] <= adc_data; end
                else if( adc_cnt == 16'd466 ) begin slv_reg119[23:16] <= adc_data; end
                else if( adc_cnt == 16'd467 ) begin slv_reg119[31:24] <= adc_data; end
                else if( adc_cnt == 16'd468 ) begin slv_reg120[7:0] <= adc_data; end
                else if( adc_cnt == 16'd469 ) begin slv_reg120[15:8] <= adc_data; end
                else if( adc_cnt == 16'd470 ) begin slv_reg120[23:16] <= adc_data; end
                else if( adc_cnt == 16'd471 ) begin slv_reg120[31:24] <= adc_data; end
                else if( adc_cnt == 16'd472 ) begin slv_reg121[7:0] <= adc_data; end
                else if( adc_cnt == 16'd473 ) begin slv_reg121[15:8] <= adc_data; end
                else if( adc_cnt == 16'd474 ) begin slv_reg121[23:16] <= adc_data; end
                else if( adc_cnt == 16'd475 ) begin slv_reg121[31:24] <= adc_data; end
                else if( adc_cnt == 16'd476 ) begin slv_reg122[7:0] <= adc_data; end
                else if( adc_cnt == 16'd477 ) begin slv_reg122[15:8] <= adc_data; end
                else if( adc_cnt == 16'd478 ) begin slv_reg122[23:16] <= adc_data; end
                else if( adc_cnt == 16'd479 ) begin slv_reg122[31:24] <= adc_data; end
                else if( adc_cnt == 16'd480 ) begin slv_reg123[7:0] <= adc_data; end
                else if( adc_cnt == 16'd481 ) begin slv_reg123[15:8] <= adc_data; end
                else if( adc_cnt == 16'd482 ) begin slv_reg123[23:16] <= adc_data; end
                else if( adc_cnt == 16'd483 ) begin slv_reg123[31:24] <= adc_data; end
                else if( adc_cnt == 16'd484 ) begin slv_reg124[7:0] <= adc_data; end
                else if( adc_cnt == 16'd485 ) begin slv_reg124[15:8] <= adc_data; end
                else if( adc_cnt == 16'd486 ) begin slv_reg124[23:16] <= adc_data; end
                else if( adc_cnt == 16'd487 ) begin slv_reg124[31:24] <= adc_data; end
                else if( adc_cnt == 16'd488 ) begin slv_reg125[7:0] <= adc_data; end
                else if( adc_cnt == 16'd489 ) begin slv_reg125[15:8] <= adc_data; end
                else if( adc_cnt == 16'd490 ) begin slv_reg125[23:16] <= adc_data; end
                else if( adc_cnt == 16'd491 ) begin slv_reg125[31:24] <= adc_data; end
                else if( adc_cnt == 16'd492 ) begin slv_reg126[7:0] <= adc_data; end
                else if( adc_cnt == 16'd493 ) begin slv_reg126[15:8] <= adc_data; end
                else if( adc_cnt == 16'd494 ) begin slv_reg126[23:16] <= adc_data; end
                else if( adc_cnt == 16'd495 ) begin slv_reg126[31:24] <= adc_data; end
                else if( adc_cnt == 16'd496 ) begin slv_reg127[7:0] <= adc_data; end
                else if( adc_cnt == 16'd497 ) begin slv_reg127[15:8] <= adc_data; end
                else if( adc_cnt == 16'd498 ) begin slv_reg127[23:16] <= adc_data; end
                else if( adc_cnt == 16'd499 ) begin slv_reg127[31:24] <= adc_data; end
                else if( adc_cnt == 16'd500 ) begin slv_reg128[7:0] <= adc_data; end
                else if( adc_cnt == 16'd501 ) begin slv_reg128[15:8] <= adc_data; end
                else if( adc_cnt == 16'd502 ) begin slv_reg128[23:16] <= adc_data; end
                else if( adc_cnt == 16'd503 ) begin slv_reg128[31:24] <= adc_data; end
                else if( adc_cnt == 16'd504 ) begin slv_reg129[7:0] <= adc_data; end
                else if( adc_cnt == 16'd505 ) begin slv_reg129[15:8] <= adc_data; end
            end
        end
        else begin
            slv_reg2[31:16] <= slv_reg1[31:16];
            adc_cnt <= 16'd0;
            slv_reg2[15:0] <= adc_cnt;
        end
    end

    assign adc_pd = 1'b0;



	// User logic ends

	endmodule

1.3.6 打包

PROJECT MANAGER -> Edit Package IP - PS_PL_ADC_8B ->

-> File Groups -> Merge changes from File Groups Wizard

-> Customization Parameters -> Merge changes from File Groups Wizard

-> Review and Package -> Re-Package IP

1.4 创建一个block

1.4.1 zynq + hdmi

这里创建block按照 hdmi显示的过程进行。便于后续开发界面程序。

petalinux2018 zynq7 hdmi显示-CSDN博客https://blog.csdn.net/qq_27158179/article/details/136232621

1.4.2 PS_PL_ADC_8B(ch1)

Diagram -> + -> PS_PL_ADC_8B_v1.0 -> OK

Run Connection Automation -> 勾选 All Automation -> OK

点击 PS_PL_ADC_8B_0 的 adc_clk -> 右键 -> Create Port ->

-> Port name: ad_clk_ch1

-> Direction: Output

-> Type: Clock

-> OK

点击 PS_PL_ADC_8B_0 的 adc_pd -> 右键 -> Create Port ->

-> Port name: ad_pd_ch1

-> Direction: output

-> Type: Other

-> OK

点击 PS_PL_ADC_8B_0 的 adc_data -> 右键 -> Create Port ->

-> Port name: ad_data_ch1

-> Direction: Input

-> Type: Other

-> OK

1.4.3 PS_PL_DAC_8B(ch1)

Diagram -> + -> PS_PL_DAC_8B_v1_0 -> OK

Run Connection Automation -> 勾选 All Automation -> OK

点击 PS_PL_DAC_8B_0 的 dac_clk -> 右键 -> Create Port ->

-> Port name: da_clk_ch1

-> Direction: Output

-> Type: Clock

-> OK

点击 PS_PL_DAC_8B_0 的 dac_data -> 右键 -> Create Port ->

-> Port name: da_data_ch1

-> Direction: Input

-> Type: Data

-> OK

点击 PS_PL_DAC_8B_0 的 adc_pd -> 右键 -> Create Port ->

-> Port name: da_pd_ch1

-> Direction: output

-> Type: Other

-> OK

点击 PS_PL_DAC_8B_0 的 clk_50m -> 右键 -> Create Port ->

-> Port name: clk_50m

-> Direction: input

-> Type: Other

-> OK

1.4.4 ad和da的50Mhz时钟

连线

连接 端口 clk_50m 到 PS_PL_ADC_8B_0 的 clk_50m

连接 端口 clk_50m 到 PS_PL_DAC_8B_0 的 clk_50m

1.4.5 block diagram截图

只有zynq和hdmi:

只有zynq和adc dac:

zynq + hdmi + adc dac:

1.5 create HDL wrapper

source -> Design Source -> 右键 ZYNQ_CORE -> create HDL wrapper -> OK

1.6 引脚约束

添加约束文件,内容linux_sd_adda.xdc:

得到了 Sources -> Constrants -> constrs_1 -> linux_sd_adda.xdc

set_property PACKAGE_PIN H16 [get_ports clk_50m]
set_property IOSTANDARD LVCMOS33 [get_ports clk_50m]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_50m_IBUF]

set_property PACKAGE_PIN K17 [get_ports TMDS_0_clk_p]
set_property PACKAGE_PIN G19 [get_ports {TMDS_0_data_p[0]}]
set_property PACKAGE_PIN F19 [get_ports {TMDS_0_data_p[1]}]
set_property PACKAGE_PIN D19 [get_ports {TMDS_0_data_p[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {HDMI_OEN[0]}]
set_property PACKAGE_PIN M20 [get_ports {HDMI_OEN[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {GPIO_0_tri_io[*]}]
set_property PACKAGE_PIN B19 [get_ports {GPIO_0_tri_io[7]}]
set_property PACKAGE_PIN J15 [get_ports {GPIO_0_tri_io[6]}]
set_property PACKAGE_PIN H17 [get_ports {GPIO_0_tri_io[5]}]
set_property PACKAGE_PIN B20 [get_ports {GPIO_0_tri_io[4]}]
set_property PACKAGE_PIN T19 [get_ports {GPIO_0_tri_io[3]}]
set_property PACKAGE_PIN R19 [get_ports {GPIO_0_tri_io[2]}]
set_property PACKAGE_PIN C20 [get_ports {GPIO_0_tri_io[1]}]
set_property PACKAGE_PIN G14 [get_ports {GPIO_0_tri_io[0]}]

set_property PACKAGE_PIN R18 [get_ports {da_data_ch1[0]}]
set_property PACKAGE_PIN T17 [get_ports {da_data_ch1[1]}]
set_property PACKAGE_PIN P20 [get_ports {da_data_ch1[2]}]
set_property PACKAGE_PIN N20 [get_ports {da_data_ch1[3]}]
set_property PACKAGE_PIN P18 [get_ports {da_data_ch1[4]}]
set_property PACKAGE_PIN N17 [get_ports {da_data_ch1[5]}]
set_property PACKAGE_PIN P19 [get_ports {da_data_ch1[6]}]
set_property PACKAGE_PIN N18 [get_ports {da_data_ch1[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {da_data_ch1[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports {da_data_ch2[*]}]

set_property PACKAGE_PIN U12 [get_ports {ad_data_ch1[0]}]
set_property PACKAGE_PIN T12 [get_ports {ad_data_ch1[1]}]
set_property PACKAGE_PIN W13 [get_ports {ad_data_ch1[2]}]
set_property PACKAGE_PIN V12 [get_ports {ad_data_ch1[3]}]
set_property PACKAGE_PIN V13 [get_ports {ad_data_ch1[4]}]
set_property PACKAGE_PIN U13 [get_ports {ad_data_ch1[5]}]
set_property PACKAGE_PIN U15 [get_ports {ad_data_ch1[6]}]
set_property PACKAGE_PIN U14 [get_ports {ad_data_ch1[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ad_data_ch1[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports {ad_data_ch2[*]}]

set_property PACKAGE_PIN T10 [get_ports ad_clk_ch1]
set_property PACKAGE_PIN T20 [get_ports da_clk_ch1]
set_property PACKAGE_PIN T11 [get_ports ad_pd_ch1]

set_property IOSTANDARD LVCMOS33 [get_ports ad_clk_ch1]
set_property IOSTANDARD LVCMOS33 [get_ports da_clk_ch1]
set_property IOSTANDARD LVCMOS33 [get_ports ad_pd_ch1]

set_property IOSTANDARD LVCMOS33 [get_ports ad_clk_ch2]
set_property IOSTANDARD LVCMOS33 [get_ports da_clk_ch2]
set_property IOSTANDARD LVCMOS33 [get_ports ad_pd_ch2]

set_property PACKAGE_PIN R16 [get_ports {ad_data_ch2[7]}]
set_property PACKAGE_PIN R17 [get_ports {ad_data_ch2[6]}]
set_property PACKAGE_PIN V17 [get_ports {ad_data_ch2[5]}]
set_property PACKAGE_PIN V18 [get_ports {ad_data_ch2[4]}]
set_property PACKAGE_PIN T16 [get_ports {ad_data_ch2[3]}]
set_property PACKAGE_PIN U17 [get_ports {ad_data_ch2[2]}]
set_property PACKAGE_PIN T14 [get_ports {ad_data_ch2[1]}]
set_property PACKAGE_PIN T15 [get_ports {ad_data_ch2[0]}]
set_property PACKAGE_PIN R14 [get_ports ad_clk_ch2]
set_property PACKAGE_PIN P14 [get_ports ad_pd_ch2]
set_property PACKAGE_PIN J18 [get_ports {da_data_ch2[7]}]
set_property PACKAGE_PIN H18 [get_ports {da_data_ch2[6]}]
set_property PACKAGE_PIN G17 [get_ports {da_data_ch2[5]}]
set_property PACKAGE_PIN G18 [get_ports {da_data_ch2[4]}]
set_property PACKAGE_PIN K14 [get_ports {da_data_ch2[3]}]
set_property PACKAGE_PIN J14 [get_ports {da_data_ch2[2]}]
set_property PACKAGE_PIN H15 [get_ports {da_data_ch2[1]}]
set_property PACKAGE_PIN G15 [get_ports {da_data_ch2[0]}]
set_property PACKAGE_PIN J20 [get_ports da_clk_ch2]

set_property PACKAGE_PIN U20 [get_ports da_pd_ch1]
set_property PACKAGE_PIN H20 [get_ports da_pd_ch2]
set_property IOSTANDARD LVCMOS33 [get_ports da_pd_ch1]
set_property IOSTANDARD LVCMOS33 [get_ports da_pd_ch2]

set_property SLEW FAST [get_ports ad_clk_ch1]
set_property SLEW FAST [get_ports da_clk_ch1]
set_property SLEW FAST [get_ports {da_data_ch1[*]}]
set_property SLEW FAST [get_ports ad_clk_ch2]
set_property SLEW FAST [get_ports da_clk_ch2]
set_property SLEW FAST [get_ports {da_data_ch2[*]}]

1.7 编译

Run Synthesis

Run Implementation

Generate Bitstream

编译发现2块ADA106超出资源,暂时只用了1块ADA106

1.8 导出 HDF

Vivado -> File -> Export -> Export Hardware ->

-> Include bitstream -> OK

Vivado -> File -> Launch SDK -> OK

得到

linux_sd_adda/linux_sd_adda.sdk/hdmi_out_wrapper_hw_platform_0/system.hdf

下一篇:
petalinux_zynq7 C语言驱动DAC以及ADC模块之二https://blog.csdn.net/qq_27158179/article/details/136236138

相关推荐
日晨难再2 小时前
嵌入式:STM32的启动(Startup)文件解析
stm32·单片机·嵌入式硬件
yufengxinpian2 小时前
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
单片机·嵌入式硬件·音视频·智能硬件
__基本操作__3 小时前
历遍单片机下的IIC设备[ESP--0]
单片机·嵌入式硬件
zy张起灵9 小时前
48v72v-100v转12v 10A大功率转换电源方案CSM3100SK
经验分享·嵌入式硬件·硬件工程
lantiandianzi16 小时前
基于单片机的多功能跑步机控制系统
单片机·嵌入式硬件
哔哥哔特商务网16 小时前
高集成的MCU方案已成电机应用趋势?
单片机·嵌入式硬件
跟着杰哥学嵌入式16 小时前
单片机进阶硬件部分_day2_项目实践
单片机·嵌入式硬件
fei_sun17 小时前
【Verilog】第一章作业
fpga开发·verilog
电子科技圈17 小时前
IAR与鸿轩科技共同推进汽车未来
科技·嵌入式硬件·mcu·汽车
深圳市雷龙发展有限公司longsto17 小时前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发