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

news2024/9/22 4:11:14

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博客icon-default.png?t=N7T8https://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模块之二icon-default.png?t=N7T8https://blog.csdn.net/qq_27158179/article/details/136236138

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读笔记】Revisiting RCAN: Improved Training for Image Super-Resolution

论文地址&#xff1a;https://arxiv.org/abs/2201.11279 代码地址&#xff1a;https://github.com/zudi-lin/rcan-it 论文小结 本文的工作&#xff0c;就是重新审视之前的RCAN&#xff0c;然后做实验来规范化SR任务的训练流程。 此外&#xff0c;作者得出一个结论&#xff1a;…

Vue单文件学习项目综合案例Demo,黑马vue教程

文章目录 前言一、小黑记事本二、购物车三、小黑记账清单 前言 bilibili视频地址 一、小黑记事本 效果图 主代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible&…

linux增加物理磁盘并挂载到文件系统

centos7增加物理磁盘并挂载到文件系统 1、查看所有磁盘情况 fdisk -l2、创建挂载路径 mkdir /data3、格式化磁盘 #磁盘filesystem(上图标红处) mkfs.xfs -f /dev/sda建议 与其它磁盘文件系统保持一致&#xff0c;我这里是xfs 可通过 cat /dev/sda查看 4、挂载 mount /dev/…

5个精美的wordpress中文企业主题模板

元宇宙WordPress主题模板 简洁大气的元宇宙 Metaverse WordPress主题模板&#xff0c;适合元宇宙行业的企业官网使用。 https://www.jianzhanpress.com/?p3292 职业技术培训WordPress主题模板 简洁大气的职业技术培训WordPress主题&#xff0c;适合用于搭建教育培训公司官方…

3个wordpress中文企业主题模板

农业畜牧养殖wordpress主题 简洁大气的农业畜牧养殖wordpress主题&#xff0c;农业农村现代化&#xff0c;离不开新农人、新技术。 https://www.jianzhanpress.com/?p3051 老年公寓wordpress主题 浅绿色简洁实用的老年公寓wordpress主题&#xff0c;适合做养老业务的老年公…

37.仿简道云公式函数实战-数学函数-SIN

1. SIN函数 SIN 函数可用于计算角度的正弦值&#xff0c;返回 -1 到 1 之间的数值。 2. 函数用法 SIN(弧度) 使用该函数时&#xff0c;需要将角度转化为弧度参与计算&#xff0c;可通过 RADIANS 函数 将角度转化为弧度。 3. 函数示例 如计算 SIN(30) 的值&#xff0c;可设…

【linux进程间通信(二)】共享内存详解以及进程互斥概念

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 进程间通信 1. 前言2. 共享内…

【stm32】hal库学习笔记-UART/USART串口通信(超详细!)

【stm32】hal库学习笔记-UART/USART串口通信 hal库驱动函数 CubeMX图形化配置 导入LCD.ioc RTC设置 时钟树配置 设置LSE为RTC时钟源 USART设置 中断设置 程序编写 编写主函数 /* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 16, "Demo12_1:USART1-CH340&q…

MLflow【部署 01】MLflow官网Quick Start实操安装、模型训练、数据预测(一篇学会部署使用MLflow)

一篇学会部署使用MLflow 1.版本及环境2.官方步骤Step 1 - Get MLflowStep 2 - Start a Tracking ServerStep 3 - Train a model and prepare metadata for loggingStep 4 - Log the model and its metadata to MLflowStep 5 - Load the model as a Python Function (pyfunc) an…

yolov5导出onnx转engine推理

yolov5导出注意事项 配置 需要提供配置文件和权重文件&#xff0c;不然导出模型不能正常推理。 默认提供检测头。 ModuleNotFoundError: No module named ‘tensorrt’安装TensorRT-python发现报错 由于ModuleNotFoundError: No module named ‘tensorrt’安装TensorRT-pyt…

备战蓝桥杯—— 双指针技巧巧答链表1

对于单链表相关的问题&#xff0c;双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决&#xff1a; 合并两个有序链表&#xff1a; 使用两个指针分别指向两个链表的头部&#xff0c;逐一比较节点的值&#xff0c;将较小的节点链接到结果链表…

【学习iOS高质量开发】——协议与分类

文章目录 一、通过委托与数据源协议进行对象间通信1.委托模式2.要点 二、将类的实现代码分散到便于管理的数个分类之中1.如何实现2.要点 三、总是为第三方类的分类名称加前缀1.为什么总是为第三方类的分类名称加前缀2.要点 三、勿在分类中声明属性1.勿在分类中声明属性的原因2.…

OpenAI文生视频大模型Sora概述

Sora&#xff0c;美国人工智能研究公司OpenAI发布的人工智能文生视频大模型&#xff08;但OpenAI并未单纯将其视为视频模型&#xff0c;而是作为“世界模拟器” &#xff09;&#xff0c;于2024年2月15日&#xff08;美国当地时间&#xff09;正式对外发布。 Sora可以根据用户…

三维测量技术及应用

接触式测量&#xff08;Contact Measurement&#xff09;&#xff1a; 坐标测量机&#xff08;CMM, Coordinate Measuring Machine&#xff09;&#xff1a;通过探针直接接触物体表面获取三维坐标数据。优点是精度高&#xff0c;但速度慢&#xff0c;对软质材料测量效果不佳&am…

qt 软件发布(Windows)

1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框&#xff0c;如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…

igolang学习2,golang开发配置国内镜像

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct

杂题——1097: 蛇行矩阵

题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入格式 本题有多组数据&#xff0c;每组数据由一个正整数N组成。&#xff08;N不大于100&#xff09; 输出格式 对于每一组数据&#xff0c;输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角…

【算法与数据结构】841、LeetCode钥匙和房间

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;   程序如下&#xff1a; 复杂度分析&#xff1a; 时间复杂度&#xff1a; O ( ) O() O()。空间复杂…

VR系统的开发流程

虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;系统是一种通过计算机技术模拟出的具有三维视角和交互性的虚拟环境&#xff0c;使用户能够沉浸在其中并与虚拟环境进行交互。这种技术通常利用头戴式显示器和手柄等设备&#xff0c;使用户能够感觉到仿佛身临其境…

(全注解开发)学习Spring-MVC的第三天

全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…