verilog / nand_controller2 / nandc_upper


verilog/nand_controller2

module nandc05_03b(
  CLK,
  RST,
	LED_out,
	CLED_out,
	SW1,
	SW1OUT,
	SW2,
	SW3,
	SW3OUT,
	SW4,
	SW5,
	RB,
	STATUSLEDOUT,
	LED_rdout,
	LED_rdidout,
	CLE,
	CE,
	WE,
	ALE,
	RE,
//	NEXTOUT,
	WP,
//	TSW,
	W_CYC_COUNT1,
	CCERR,
	ADCYCCNT,
	
	/************** using for7seg*module*/ 
	DATA,
	SEVEN_SEG_DATA,
	SEL,
	EN,
	/******************LCD display***********/
	SHIFT_CLK,
	rw,
	rs,
	en,
	db,
	//LCD display
	sSHIFT_CLK,
	srw,
	srs,
	sen,
	sdb,
	//ram
   load,
	 store,
//	 ADDR,
//	 ewdata,
//	 erdata,
	 SCK,
	 
	 INSTATUS,
	 
	 //clk
	 LOCKED_OUT,
	 R_CYC_COUNT1

	  );
	 
	 
  altpll1 U0(
	.areset(RES_P),
	.inclk0(CLK), 
	.c0(hclk),
	.locked(hlocked)
	);
	  parameter DWIDTH=36,AWIDTH=7,WORDS=128;//8 256 /3/6
	  
 ram1p1 U4(
 .address(bramstorecnt),
 .data(toramdata),
 //.clock(rd_clk1),//hclk
 .clock(cntw[0]),
 .wren(toramen),//cntw[0
 .rden(toramren),
// .outclock(toramren),
 .q(fromramdata)
 );

/**********************/
  input  wire CLK ; 
	input  wire RST;
	input SW1,SW2,SW3,SW4,SW5;
	input RB ;
	output LED_out ;
	output CLED_out;
	output[3:0] STATUSLEDOUT;
	output LED_rdout;
	output LED_rdidout;
	output CLE;
	output CE;
	output WE;
	output ALE;
	output RE;
	output WP;
	output SW1OUT;
	output SW3OUT;
	output EN;
	//output[7:0] W_CYC_COUNT1;
	output[16:0] ADCYCCNT;
	output CCERR;
	output wire[15:0] W_CYC_COUNT1;
	output wire[15:0] R_CYC_COUNT1;
/*7seg*/
  output reg [7:0] SEVEN_SEG_DATA;
  output[8:1] SEL;
	output[3:0] INSTATUS;
/***********inout*****************/
	inout[7:0]  DATA;
//	inout[15:0]  DATA; //10/20
	//wire sel;
	reg wen;
	//wire[7:0] dataout;
//  reg[7:0] dataout;
//	reg[7:0] din;
	reg[7:0] din; //10/20   12/28  16
	
/*********************************/
	wire LED_out ;
	
/*LCD display*/
	 
//input[3:0] CUR;
output  rw, rs ,SHIFT_CLK;
output  en;
output  [7:0]   db;

//display2
output wire srw, srs ,sSHIFT_CLK;
output wire  sen;
output wire[7:0]   sdb;

/************/	
output LOCKED_OUT;
	//ram//
//	output reg[7:0]  SEVEN_SEG_DATA;
//	output[4:1] SEL; 
	output SCK;
	input load;
	input store;
	//input[DWIDTH-1:0] ewdata;
	//output[DWIDTH-1:0] erdata;
	 reg[DWIDTH-1:0] ewdata;
	 reg[DWIDTH-1:0] erdata;
	 reg[DWIDTH-1:0] erdatanxt;
  //(* ramstyle="M9K" *) reg[DWIDTH-1:0] ram[WORDS-1:0];
	   (* ramstyle="BLOCK" *) reg[DWIDTH-1:0] ram[WORDS-1:0];
  reg[AWIDTH-1:0] addr;
  reg[7:0] loadcnt;
	reg[7:0] loadcntnxt;
	reg[7:0] storecnt;
	reg rsck;
	reg [31:0] rsec_cnt ;//1秒作成用カウンタ
  reg        rsec1_flag ;//1秒のフラグ
  reg        rtoggle_flag ; //1秒ごとにトグルするフラグ
  reg[3:0] enable_Seg;
  reg[8:1] sel;
  reg[7:0] seven_seg1_hold;
	reg[7:0] seven_seg2_hold;
	reg[7:0] seven_seg3_hold;
	reg[7:0] seven_seg4_hold;
	reg[7:0] seven_seg5_hold;
	reg[7:0] seven_seg6_hold;
	reg[7:0] seven_seg7_hold;
	reg[7:0] seven_seg8_hold;
	reg[7:0] seven_seg;
	reg[3:0] enable_seg;
	reg sck;
	reg[3:0] seven_seg1_counter;
	reg[3:0] seven_seg2_counter;
	reg[3:0] seven_seg3_counter;
	reg[3:0] seven_seg4_counter; 
	reg[3:0] seven_seg5_counter;
	reg[3:0] seven_seg6_counter;
	reg[3:0] seven_seg7_counter;
	reg[3:0] seven_seg8_counter; 
	
  reg [31:0] sec_cnt ;//1秒作成用カウンタ
  reg        sec1_flag ;//1秒のフラグ
  
  reg        toggle_flag ; //1秒ごとにトグルするフラグ
 
 reg [3:0] cur;//ステートレジスタ
 reg [3:0] nxt;//ステート生成回路
	
 reg [31:0] swchatcnt1;
 reg swchatbuf1;
 reg swchat1_flag;
 reg swchat1_toggle;
 reg sw1p;
 reg [3:0] detcnt1;
 reg sw1;
  
 reg [31:0] swchatcnt2;
 reg swchatbuf2;
 reg sw2p;
 reg [3:0] detcnt2;
 reg sw2;
  
 reg [31:0] swchatcnt3;
 reg swchatbuf3;
 reg [3:0] detcnt3;
 reg sw3p;
 reg sw3;
	
 reg [31:0] swchatcnt4;
 reg swchatbuf4;
 reg [3:0] detcnt4;
 reg sw4p;
 reg sw4;

 reg [31:0] swchatcnt5;
 reg swchatbuf5;
 reg [3:0] detcnt5;
 reg sw5p;
 reg sw5; 
 reg[31:0] chat_cnt;
 reg chat_cnt_flag;
 reg chat_cnt_toggle_flag;
 
 reg normalout;
 reg readidout;
 reg readout;
 reg writeout;
 
 reg [31:0] rd_cnt1;
 reg rd_cnt_flag1;
 reg rd_clk1;	
	
 reg [15:0] rdid_cnt1;
 reg rdid_cnt_flag1;
 reg rdid_clk1;	
 reg rdidframe; 

 reg cle;
 reg cen;
 reg[7:0] errstatus;
 // reg wen;
 reg ale;
 reg ren;
 reg wp ;
 reg [23:0] cntw;
 reg [9:0] next;   //7 3/8
 reg [7:0] tsw;
 //reg [15:0] tsw;
 reg wenspan;

 //status register
 reg[7:0] status_reg;
 reg[15:0]r_cyc_count1;
 reg[15:0]w_cyc_count1;
 //reg[15:0]c_cyc_count1;
 reg[9:0]e_cyc_count1;
 reg[9:0]ecyc;
 
 //addr //
 reg[7:0] addrs1;
 reg[7:0] addrs2;

 //addr start//
 reg[7:0] addrs3;
 reg[7:0] addrs4;
 
 //addr end
 reg[7:0] addre3;
 reg[7:0] addre4;

 //use for Display addr// 
 reg[7:0] addrp1;
 reg[7:0] addrp2;
 reg[7:0] addrp3;
 reg[7:0] addrp4;
  
 reg[11:0] caddrs1;
 reg[7:0] wdatain;
 reg[16:0] adcyc;
 reg[16:0] adcyccnt;
 
 reg[15:0] counterseg1;
 reg[15:0] counterseg2;
 reg[15:0] counterseg3;
 reg[15:0] counterseg4;
 
 reg[3:0] instatus;
 reg[35:0] toramdata;
 reg toramen;
 wire[35:0] fromramdata;
 reg toramren;
 reg[15:0] bramstorecnt;
 reg[15:0] bramstorecntoffset; 
 reg[15:0] bramstorecnttemp;
  reg[15:0] bramstorecnttemp2;
	 reg[15:0] bramstorecntoffset2; 
	 	 reg[15:0] bramstorecntoffset3; 
		 reg[15:0] bramstorecnttemp3;
/**********************/
//PLL
 wire RES_P;
 wire hclk ;
wire hlocked; 
/**********************/
//ram//
// parameter DWIDTH=36,AWIDTH=8,WORDS=256;
parameter   rF50M000_cnt=32'h000001f4 ;
 
// parameter   rF50M000_cnt=32'h00060000 ;
 
 
 parameter selinit_value =8'b10000000;
//  
// parameter   F50M000_cnt=32'h02FAF080 ;//1秒ごとの変化
  parameter   F50M000_cnt=32'h017D7840 ;//0.5秒ごとの変化
//parameter   F50M000_rdcnt=32'h000009c4;//0.00001sec 10/1doukaku 10/18 write動作確認
	parameter   F50M000_rdcnt=32'h00000003; 	///12/14/a 5Mhz動作/0.1usec 10Mhz 5 11/25動作せず//19 12/12動作//1a 動作12/12 //25/12/10動作//30 1.02MHz 動作//					
						//		parameter   F50M000_rdcnt=32'h0007a120; //10/3 
							//	parameter   F50M000_rdcnt=32'h000f4240;
							//		parameter   F50M000_rdcnt=32'h017d7840;
				
	parameter swchatcntof	=	32'h00bebc20;//64
			//parameter swchantcntofsw1	=	32'h005f5e10; //0.125secシミュレーター用 write動作確認1  ff-100
	parameter swchantcntofsw1	=	32'h00bebc20; //0.125secシミュレーター用 write動作確認1  ff-100
				//	parameter swchantcntofsw1	=	32'h0000000ff; //シミュレーター用 write動作確認1  ff-100
  //parameter swchantcntofsw1	=	32'h000000ff; 
	
//	parameter swchantcntofsw2 	=	32'h004c4b40; //44aa20 0.09 4c4b40 0.1sec
	parameter swchantcntofsw2 	=	32'h00bebc20; //98960 0.09 4c4b40 0.2sec
//	parameter swchantcntofsw2 	=	32'h00000064;  //シミュレーター用 write動作確認1  64
	
//	parameter swchantcntofsw3 	=	32'h000009c4;  //ff
	parameter swchantcntofsw3 	=	32'h0000927c0;  //
// 	parameter swchantcntofsw3 	=	32'h00000384;//44aa20/9c4 =708h  384h 1c2h
	//parameter swchantcntofsw3 	=	32'h00000064;  //シミュレーター用 write動作確認1  64
  

	
/***********************/
parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ErsPrgCom=4'b1110;
	
initial cur <=4'b0000;	

initial toggle_flag <= 1'b1;
initial chat_cnt <=32'h00000000;
initial chat_cnt_flag <= 1'b1;
initial chat_cnt_toggle_flag <=1'b1;
initial sec_cnt <=32'h00000000;
initial sec1_flag <=1'b1;
initial rd_cnt1 <=32'h00000000;
initial rd_cnt_flag1 <= 1'b1;
initial rd_clk1 <= 1'b1;
//initial nxt <=2'b00;
//initial rdid_cnt1 <= 16'h0000;
// initial rdid_cnt_flag1 <=1'b1;
// initial rdid_clk1 <= 1'b1;
// initial rdidframe <=1'b1;
initial swchat1_flag<=1'b0;
initial swchat1_toggle<=1'b0;
initial swchatbuf1 <=1'b1;
 initial swchatbuf2 <=1'b1;
  initial swchatbuf3 <=1'b1;
	 initial swchatbuf4 <=1'b1;
initial detcnt1 <=4'b0000;
 initial detcnt2 <=4'b0000;
  initial detcnt3 <=4'b0000;
	 initial detcnt4 <=4'b0000;
	  initial detcnt5 <=4'b0000;

initial cle <= 1'b0;
initial cen <= 1'b1;
initial wen <= 1'b1;
initial ale <= 1'b0;
initial ren <= 1'b1;
initial wp  <= 1'b1;
initial wenspan <= 1'b0;

initial cntw =24'h000000;
initial next = 10'b0000000000;
 initial tsw = 8'hZZ;
//initial tsw = 16'bZZZZZZZZZZZZZZZZ;
initial din = 8'b00000000;
initial r_cyc_count1=16'h0000;
initial w_cyc_count1 =16'h0000;
//initial c_cyc_count1 =16'h0000;
initial e_cyc_count1 =10'h0000;
initial adcyccnt =17'b00000000000000000;

initial addrs1 =8'b00000000;
initial addrs2 =8'b00000000;
//initial addrs3 =8'b00001000;//10/18動作確認済
initial addrs3 =8'b00000000;
initial addrs4 =8'b00000000;
 initial addre3 =8'b00000000;
initial addre4 =8'b00000000;
// initial caddrs1=12'd0256;  //256:100h(256まで)  //83fh   12'b1000 0011 1111 d2111
 initial caddrs1=12'h7ff;  //256:100h(256まで) //7ff 2047(2048byte) //83fh   12'b1000 0011 1111 d2111
 initial adcyc=17'b00000000000000000;
//  initial ecyc=10'b0000000101;   //max 3ff
   initial ecyc=10'h3ff;   //max 3ff 1023
initial wdatain=8'b00000000;
initial storecnt=8'h00;
/********7seg **************/

//ram
initial loadcnt = 8'b00000000;//00000000
initial loadcntnxt = 8'b00000000;//00000000
initial instatus =4'b0000;
integer i;
initial begin
   for(i=0;i<WORDS;i=i+1)
      ram[i]=i;
end

initial rsck = 1'b0;	
initial rsec1_flag =1'b0;
initial rtoggle_flag =1'b0;
initial rsec_cnt = 32'h00000000 ;
	initial seven_seg1_counter = 4'h1;
	initial seven_seg2_counter= 4'h2;
	initial seven_seg3_counter= 4'h3;
	initial seven_seg4_counter= 4'h4;
initial loadcnt = 8'b00000000;
//initial  seven_seg1_hold =8'b1
initial toramen = 1'b0;
initial toramren = 1'b0;
initial bramstorecnt=16'h0000;
initial bramstorecntoffset=16'h0100;//20
initial bramstorecnttemp=16'h0000;
initial bramstorecntoffset2=16'h0200;//20
 initial bramstorecntoffset3=16'h0600;//20
initial bramstorecnttemp2=16'h0000;
initial bramstorecnttemp3=16'h0000;

assign RES_P = ~RST;
assign LOCKEDOUT = hlocked;


always@(posedge hclk)
begin
  if(rsec_cnt == rF50M000_cnt) begin //もし3300万回数えたらカウンタをリセットする
	  rsec_cnt <= 32'h00000000 ; 
	  rsec1_flag <= 1'b1; //SEC1_FLAGに1をセットする
	end else begin
	  rsec_cnt <= rsec_cnt + 1 ;
	  rsec1_flag <= 1'b0 ;
	end
end
/**********************/
/*1秒検出部           */
/**********************/

always@(posedge hclk)
begin
   if(rsec1_flag == 1'b1 )begin
	 rtoggle_flag <= !rtoggle_flag ;
	end
end

/**********************/
/*出力部           */
/**********************/

always@*
begin
rsck <= ~rtoggle_flag;
end

/**********************/

/*
always@(posedge hclk)
begin
addr<=ADDR; 
end
*/

/*
always @(negedge RST or posedge rsck )
begin
 if(RST ==1'b0)
 begin
    storecnt <= 8'b00000000;
	  		 
 end else begin
    if(store==1'b0) begin
//			ram[storecnt] <= ewdata;
		//	erdata <= ram[storecnt];
		//	storecnt <= storecnt + 1;
	  end else if(load==1'b0)begin
	    erdata <= ram[loadcnt];
		 loadcnt <= loadcnt +1;
	  end
end
end
*/

always@(posedge rsck or  negedge RST)begin
 if(RST == 1'b0 )begin
	  enable_seg <= 4'b0000;
end else if(enable_seg ==4'b0111)begin
    enable_seg <= 4'b0000;
	 end else begin
  enable_seg <= enable_seg +1'b1;
	end
end

always@(posedge rsck or  negedge RST)begin
 if(RST == 1'b0 )begin
	  sel <= selinit_value;
	  end else begin
sel[2] <= sel[1]	;	//シフト動作を開始する
sel[3] <= sel[2]	;	//シフト動作を開始する
sel[4] <= sel[3]	;	//シフト動作を開始する
sel[5] <= sel[4]	;
sel[6] <= sel[5]	;	//シフト動作を開始する
sel[7] <= sel[6]	;	//シフト動作を開始する
sel[8] <= sel[7]	;	//シフト動作を開始する
sel[1] <= sel[8]	;

  end
end

assign SEL[8:1] = sel[8:1];



always@(negedge RST or posedge hclk)
begin if(RST ==1'b0)begin
seven_seg1_hold <=8'b00000110;
seven_seg2_hold <=8'b01011011;
//seven_seg3_hold <=8'b01001111;
//seven_seg4_hold <=8'b01100110;
 seven_seg3_hold <=8'b00111111;
 seven_seg4_hold <=8'b00111111;
seven_seg5_hold <=8'b01101101;
seven_seg6_hold <=8'b01111101;
seven_seg7_hold <=8'b00100111;
seven_seg8_hold <=8'b00111111;
end else begin
// case(seven_seg1_counter)
 //	case(erdata[3:0])
	//		case(adcyccnt[3:0])
	//case(w_cyc_count1[3:0])
	//case(errstatus[3:0])
		case(toramdata[23:20])
	4'b0000 : seven_seg1_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg1_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg1_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg1_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg1_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg1_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg1_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg1_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg1_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg1_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg1_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg1_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg1_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg1_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg1_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg1_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	default: seven_seg1_hold <= 8'b00000110;
	endcase
  //case(seven_seg2_counter)
	//	 	case(erdata[7:4])
	//case(w_cyc_count1[7:4])
		case(toramdata[27:24])
	//case(errstatus[7:4])
	4'b0000 : seven_seg2_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg2_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg2_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg2_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg2_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg2_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg2_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg2_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg2_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg2_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg2_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg2_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg2_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg2_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg2_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg2_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	 default: seven_seg2_hold <= 8'b01011011;
	endcase
	//case(seven_seg3_counter)
	//case(loadcnt[3:0])
	//  case(adcyccnt[11:8])
	//case(w_cyc_count1[11:8])
	case(toramdata[31:28])
	//case(addrp2[3:0])
	4'b0000 : seven_seg3_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg3_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg3_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg3_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg3_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg3_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg3_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg3_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg3_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg3_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg3_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg3_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg3_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg3_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg3_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg3_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	  default: seven_seg3_hold <= 8'b01001111;
	endcase
  //	case(seven_seg4_counter)
  //case(loadcnt[7:4])
	//case(adcyccnt[15:12])
	//case(w_cyc_count1[15:12])
	//case(addrp3[3:0])
	case(toramdata[35:32])
	4'b0000 : seven_seg4_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg4_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg4_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg4_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg4_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg4_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg4_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg4_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg4_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg4_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg4_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg4_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg4_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg4_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg4_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg4_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	 default: seven_seg4_hold <= 8'b01100110;
	 endcase
	 
	 case(fromramdata[23:20])
	//		case(adcyccnt[19:16])
	//case(w_cyc_count1[3:0])
	//case(addrp3[7:4])
	4'b0000 : seven_seg5_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg5_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 : seven_seg5_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg5_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg5_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg5_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg5_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg5_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg5_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg5_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg5_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg5_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg5_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg5_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg5_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg5_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	default: seven_seg5_hold <= 8'b01101101;
	endcase
  //case(seven_seg2_counter)
	//	 	case(erdata[7:4])
	//		case(adcyccnt[23:20])
	//case(w_cyc_count1[7:4])
	case(fromramdata[27:24])
	//case(addrp4[3:0])
	4'b0000 : seven_seg6_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg6_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg6_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg6_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg6_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg6_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg6_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg6_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg6_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg6_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg6_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg6_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg6_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg6_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg6_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg6_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	 default: seven_seg6_hold <= 8'b01111101 ;
	endcase
	//case(seven_seg3_counter)
	//case(loadcnt[3:0])
	//  case(adcyccnt[27:24])
	//case(w_cyc_count1[11:8])
	case(fromramdata[31:28])
	//case(addrp4[7:4])
	4'b0000 : seven_seg7_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg7_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 : seven_seg7_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg7_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg7_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg7_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg7_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg7_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg7_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg7_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg7_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg7_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg7_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg7_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg7_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg7_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	  default: seven_seg7_hold <= 8'b00100111;
	endcase
  //	case(seven_seg4_counter)
  //case(loadcnt[7:4])
	//case(adcyccnt[31:28])
	//case(w_cyc_count1[15:12])
	//case(addrp2[7:4])//固定low
	case(fromramdata[35:32])
	4'b0000 : seven_seg8_hold<= 8'b00111111 ; //'0'繧定。ィ遉コ
	4'b0001 : seven_seg8_hold <= 8'b00000110 ; //'1'繧定。ィ遉コ
	4'b0010 :seven_seg8_hold<= 8'b01011011 ; //'2'繧定。ィ遉コ
	4'b0011 : seven_seg8_hold <= 8'b01001111 ; //'3'繧定。ィ遉コ
	4'b0100 : seven_seg8_hold <= 8'b01100110 ; //'4'繧定。ィ遉コ
	4'b0101 : seven_seg8_hold <= 8'b01101101 ; //'5'繧定。ィ遉コ
	4'b0110 : seven_seg8_hold <= 8'b01111101 ; //'6'繧定。ィ遉コ
	4'b0111 : seven_seg8_hold <= 8'b00100111 ; //'7'繧定。ィ遉コ
	4'b1000 : seven_seg8_hold <= 8'b01111111 ; //'8'繧定。ィ遉コ
	4'b1001 : seven_seg8_hold <= 8'b01101111 ; //'9'繧定。ィ遉コ
	4'b1010 : seven_seg8_hold <= 8'b01110111 ; //'A'繧定。ィ遉コ
	4'b1011 : seven_seg8_hold <= 8'b01111100 ; //'b'繧定。ィ遉コ
	4'b1100 : seven_seg8_hold <= 8'b01011000 ; //'c'繧定。ィ遉コ
	4'b1101 : seven_seg8_hold <= 8'b01011110 ; //'d'繧定。ィ遉コ
	4'b1110 : seven_seg8_hold <= 8'b01111001 ; //'E'繧定。ィ遉コ
	4'b1111 : seven_seg8_hold <= 8'b01110001 ; //'F'繧定。ィ遉コ
	 default: seven_seg8_hold <= 8'b01111111;	 
	endcase
end
end

always@*
begin
case(enable_seg)
// 2'b00:  seven_seg<=~seven_seg4_hold;
	4'b0000:  SEVEN_SEG_DATA <= ~seven_seg8_hold;
	4'b0001:  SEVEN_SEG_DATA<=~seven_seg1_hold;
  4'b0010:  SEVEN_SEG_DATA<=~seven_seg2_hold;
  4'b0011:  SEVEN_SEG_DATA<=~seven_seg3_hold;
	4'b0100:  SEVEN_SEG_DATA<=~seven_seg4_hold;
  4'b0101:  SEVEN_SEG_DATA<=~seven_seg5_hold;
  4'b0110:  SEVEN_SEG_DATA<=~seven_seg6_hold;
	4'b0111:  SEVEN_SEG_DATA<=~seven_seg7_hold;
	//  default: SEVEN_SEG_DATA <= 8'b00000000;
	endcase
	end

//
/*
seg7_01_01 U1(
.hclk(hclk),          //.signal bottom(signal top),
.DATA(DATA),
.RST(RST),
.SEVEN_SEG_DATA(SEVEN_SEG_DATA),
.SEL(SEL),
.EN(EN)
	);
	*/
/*************************/

/*************LCD display**************************/
lcd_sc1602_06_4b_01 U2(  //.signal bottom(signal top),
//.hclk(hclk),
.CLK(hclk),
.DATA(DATA),
.RST(RST),
.CUR(cur),
.rw(rw),
.rs(rs),
.en(en),
.db(db),
.addrs1(addrp1),
.addrs2(addrp2),
.addrs3(addrp3),
.addrs4(addrp4),
.wdatain(wdatain),
.EN(EN),
.INSTATUS(instatus)
 );

lcd_sc1602_06_4b_01ch01 U3(   /////////////////////compare check display
//.hclk(hclk),
.CLK(hclk),
.DATA(DATA),
.RST(RST),
.CUR(cur),
.rw(srw),
.rs(srs),
.en(sen),
.db(sdb),
.addrs1(addrp1),
.addrs2(addrp2),
.addrs3(addrp3),
.addrs4(addrp4),
.wdatain(wdatain),
.EN(sEN),
.erdata(erdata),
.erdatanxt(erdatanxt),
.loadcnt(loadcnt),
.loadcntnxt(loadcntnxt)
 );

//parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
//parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ReErsPrgCom=4'b1110;


always@(posedge hclk)
begin 
	   if(sw1 || sw2 || sw3 || sw4)begin
	   	adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]};   //12/28
	    end else 
	   if(cur==4'b0011 || cur ==4'b0110 || cur ==4'b0111)begin  // READPAGE    c change a change
	   	if(adcyccnt[15:0]==16'h00)begin
		   addrp1<= r_cyc_count1[7:0];
		   addrp2<= r_cyc_count1[15:8];
		   addrp3<=addrs3;
		   addrp4<=addrs4;
		   end else begin
		   addrp1<= r_cyc_count1[7:0];
		   addrp2<= r_cyc_count1[15:8];
		   {addrp4,addrp3}<={addrs4,addrs3}+adcyccnt[15:0];
		   end
	   end else if(cur==4'b0100)begin //ERACE BLOCK  achange
        if(e_cyc_count1[9:0]==10'b0000000000)begin
	   	addrp1<=caddrs1[7:0];
		   addrp2<=caddrs1[11:8];
        addrp3<=addrs3;
        addrp4<=addrs4;
		   end else begin
		   addrp1<=caddrs1[7:0];
		   addrp2<=caddrs1[11:8];
	      {addrp4,addrp3}<={addrs4,addrs3}+{e_cyc_count1[9:0],6'b000000};
	      end
	   end else if(cur==4'b0101)begin //program page c change a change
        if(adcyccnt[15:0]==16'h00)begin
		   addrp1<= w_cyc_count1[7:0];
		   addrp2<= w_cyc_count1[15:8];
		   addrp3<=addrs3;
		   addrp4<=addrs4;
        end else begin
		   addrp1<= w_cyc_count1[7:0];
		   addrp2<= w_cyc_count1[15:8];
		   {addrp4,addrp3}<={addrs4,addrs3}+adcyccnt[15:0];
	      end
     end else if(cur==4'b1000)begin //compare CHECK  c cahge a chagen
        if(adcyccnt[15:0]==16'h00)begin
		   addrp1<= w_cyc_count1[7:0];
		   addrp2<= w_cyc_count1[15:8];
		   addrp3<=addrs3;
		   addrp4<=addrs4;
        end else begin
		   addrp1<= w_cyc_count1[7:0];
		   addrp2<= w_cyc_count1[15:8];
		   {addrp4,addrp3}<={addrs4,addrs3}+adcyccnt[15:0];
	      end
 	   end else if(cur==4'b1001)begin  //AdSel start  old status was Addselect 1001
	      addrp1<=caddrs1[7:0];
	      addrp2<=caddrs1[11:8];
	      addrp3<=addrs3;     //input start addr
	      addrp4<=addrs4;     //input start addr
	   end else if(cur==4'b1010)begin  //AdSel end
	      addrp1<=caddrs1[7:0];
	      addrp2<=caddrs1[11:8];
	      addrp3<=addre3;     //input end addr
	      addrp4<=addre4;     //input end addr
	   end else if(cur==4'b1011)begin   //Adcycl 1100
	      addrp1<=caddrs1[7:0];
	      addrp2<=caddrs1[11:8];
	      {addrp4,addrp3} <= adcyc[15:0];
	   end else if(cur==4'b1100)begin  //Datainput 1010
	      addrp1<=caddrs1[7:0];
	      addrp2<=caddrs1[11:8];
	      addrp3<=addrs3;     //input addr
	      addrp4<=addrs4;     //input addr
		end else if(cur==4'b1110)begin  //ErsPrgCom 1110
		    if(instatus == 4'b1000 )begin	  //instatus /4'b1000 Read Page /4'b0001 Erase /4'b0010 Program /4'b0100 CompareCheck
			  if(adcyccnt[15:0]==16'h00)begin
				addrp1<= r_cyc_count1[7:0];
				addrp2<= r_cyc_count1[15:8];
				addrp3<=addrs3;
				addrp4<=addrs4;
				end else begin
				addrp1<= r_cyc_count1[7:0];
				addrp2<= r_cyc_count1[15:8];
				{addrp4,addrp3}<={addrs4,addrs3}+adcyccnt[15:0];
		      end
		    end else if(instatus == 4'b0001 )begin	  //instatus /4'b1000 Read Page /4'b0001 Erase /4'b0010 Program /4'b0100 CompareCheck
		      if(e_cyc_count1[9:0]==10'b0000000000)begin
				addrp1<=caddrs1[7:0];
				addrp2<=caddrs1[11:8];
				addrp3<=addrs3;
				addrp4<=addrs4;
		      end else begin
				addrp1<=caddrs1[7:0];
				addrp2<=caddrs1[11:8];
				{addrp4,addrp3}<={addrs4,addrs3}+{e_cyc_count1[9:0],6'b000000};
	         end
		    end else if(instatus == 4'b0010 || instatus == 4'b0100)begin
		      if(adcyccnt[15:0]==16'h00)begin
				addrp1<= w_cyc_count1[7:0];
				addrp2<= w_cyc_count1[15:8];
				addrp3<=addrs3;
				addrp4<=addrs4;
           end else begin
				addrp1<= w_cyc_count1[7:0];
				addrp2<= w_cyc_count1[15:8];
				{addrp4,addrp3}<={addrs4,addrs3}+adcyccnt[15:0];
		      end
			 end
	   end else begin
	      addrp1<=caddrs1[7:0];
	      addrp2<=caddrs1[11:8];
	      addrp3<=addrs3;
	      addrp4<=addrs4;
     end
end


   assign LED_out = toggle_flag ; 

/******************************************************************************/

/*****************readcycle counter*******************************/
always@(posedge hclk)
begin
  if(rd_cnt1 == F50M000_rdcnt) begin //もし3300万回数えたらカウンタをリセットする
	  rd_cnt1 <= 32'h00000000 ; 
	  rd_cnt_flag1 <= 1'b1; //SEC1_FLAGに1をセットする
	end else begin
	  rd_cnt1 <= rd_cnt1 + 1 ;
	  rd_cnt_flag1 <= 1'b0 ;
	end
end
/**********************/
/*1秒検出部           */
/**********************/

always@(posedge hclk)
begin
   if(rd_cnt_flag1 == 1'b1 )begin
	 rd_clk1 <= !rd_clk1 ;
	end
end
/*****************^end readcycle counter*******************************/
/**********************/
/*LED出力部           */
/**********************/

//   assign LED_rdout = rd_clk1 && rdidframe; //9/30
	   assign LED_rdout = rd_clk1 ; 
/*************************************************/
 	 
always@(posedge hclk or negedge RST)begin
if(RST == 1'b0)
	cur <= NORMAL;
	else 
	cur <= nxt;
end

always@(posedge hclk)
begin
  if(chat_cnt == swchatcntof) begin //
	  chat_cnt <= 32'h00000000 ; 
	  chat_cnt_flag <= 1'b1; //SEC1_FLAGに1をセットする
	end else begin
	  chat_cnt <= chat_cnt + 1 ;
	  chat_cnt_flag <= 1'b0 ;
	end
end

always@(posedge hclk)
begin
   if(chat_cnt_flag == 1'b1 )begin
	 chat_cnt_toggle_flag <= !chat_cnt_toggle_flag ;
	end
end

   assign CLED_out = chat_cnt_toggle_flag ; 

/************************************************************************/
// always@(negedge rd_clk1 or negedge RST)begin
always@(posedge hclk or negedge RST)begin
  if(RST == 1'b0 ) begin
	   swchatcnt1 <= 32'h00000000 ;
//	end else if(swchatcnt1 == swchatcntof)begin 
		end else if(swchatcnt1 == swchantcntofsw1)begin 
	   swchatcnt1 <= 32'h00000000 ;
		swchat1_flag<= 1'b1;
	end else begin
	   swchatcnt1 <= swchatcnt1 + 1 ;
		swchat1_flag<=1'b0;
end
end

always@(posedge hclk)
begin
   if(swchatcnt1 == 1'b1 )begin
	 swchat1_toggle<= !swchat1_toggle;
	end
end

always@(posedge hclk)begin
//always@(posedge hclk )begin
 // always@(negedge chat_cnt_toggle_flag)begin
  if(swchatcnt1 == 32'h00000000 ) begin
	 //  swchatbuf1 <= SW1;
	//	sw1 <= ~swchatbuf1 && ~SW1;
		sw1 <= ~SW1;   //20/01/27
	end else 
	 sw1 <= 1'b0;
end

assign SW1OUT = sw1;

/************************************************************************/
 always@(posedge hclk or negedge RST)begin
  if(RST == 1'b0 ) begin
	   swchatcnt2 <= 32'h00000000  ;
		//	end else if(swchatcnt1 == swchatcntof)begin 
	end else if(swchatcnt2 == swchantcntofsw2)begin 
//		end else if(swchatcnt2 == swchatcntof)begin // 10/15
	   swchatcnt2 <= 32'h00000000  ;
	end else  begin
	   swchatcnt2 <= swchatcnt2 + 1 ;
	end
 end

 always@(posedge hclk )begin
 // always@(negedge chat_cnt_toggle_flag)begin
  if(swchatcnt2 == 32'h00000000 ) begin
	 //  swchatbuf2 <= SW2;
	//	sw2 <= ~swchatbuf2  && ~SW2;
		sw2 <= ~SW2;  //2001/27
	end else 
	 sw2 <= 1'b0;
end
/************************************************************************/
  //always@(posedge hclk or negedge RST)begin  //12/28
	  always@(posedge rd_clk1 or negedge RST)begin 
  if(RST == 1'b0 ) begin
	   swchatcnt3 <= 32'h00000000  ;
	//	end else if(swchatcnt3	== swchantcntofsw1)begin
		//9/30
	end else if(swchatcnt3	== swchantcntofsw3)begin  
	   swchatcnt3 <= 32'h00000000  ;
	end else begin 
	   swchatcnt3 <= swchatcnt3 + 1 ;
	end
 end

/*
 //always@(posedge SW3 or posedge rd_clk1)begin//12/28
  always@(posedge rd_clk1)begin//12/28
 //  always@(posedge rd_clk1)begin
 //  always@(negedge chat_cnt_toggle_flag)begin
  if(rd_clk1 ) begin
		swchatbuf3 <= SW3;
		sw3 <= ~swchatbuf3;
	//	sw3 <= ~SW3;
	end else
	swchatbuf3<=1'b1;
	sw3 <= 1'b0;
end
*/
  //always@(posedge SW3 or posedge rd_clk1)begin//12/28
  always@(posedge rd_clk1)begin//12/28
 //  always@(posedge rd_clk1)begin
 //  always@(negedge chat_cnt_toggle_flag)begin
  if(swchatcnt3==32'h00000000 ) begin
	//	swchatbuf3 <= SW3;
	//	sw3 <= ~swchatbuf3 && ~SW3;  //20/1/27
		sw3 <= ~SW3;
	end else
	//swchatbuf3<=1'b1;
	sw3 <= 1'b0;
end

assign SW3OUT =sw3;
 
/************************************************************************/
   always@(posedge hclk or negedge RST)begin
  if(RST == 1'b0 ) begin
	   swchatcnt4 <= 32'h00000000  ;
	end else if(swchatcnt4	== swchatcntof)begin
	   swchatcnt4 <= 32'h00000000  ;
	end else begin 
	   swchatcnt4 <= swchatcnt4 + 1 ;
	end
  end
 
 always@(posedge hclk )begin
//always@(posedge rd_clk1 )begin
 if(swchatcnt4 == 32'h00000000 ) begin
	 //  swchatbuf4 <= SW4;
	 //	sw4 <= ~swchatbuf4 && ~SW4;
		sw4<= ~SW4 ;
	end else
	sw4 <= 1'b0;
end
/************************************************************************/
   always@(posedge hclk or negedge RST)begin
  if(RST == 1'b0 ) begin
	   swchatcnt5 <= 32'h00000000  ;
	end else if(swchatcnt5	== swchatcntof)begin
	   swchatcnt5 <= 32'h00000000 ;
	end else begin 
	   swchatcnt5 <= swchatcnt5 + 1 ;
	end
 end

 always@(posedge hclk )begin
  if(swchatcnt5 == 32'h00000000 ) begin
	//   swchatbuf5 <= SW5;
	//	sw5 <= ~swchatbuf5 && ~SW5;
	sw5<=~SW5;
	end else
	sw5 <= 1'b0;
end
/************************************************************************/


 //  parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
 // parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ErsPrgCom=4'b1110;
 
 
//always@(cur or sw1 or sw2 or sw3)begin
always@( posedge cur[0] or posedge cur[1] or posedge cur[2] or posedge cur[3] or posedge sw1 or posedge sw2 )begin
case(cur)
		 NORMAL:if(sw1)            //3'b000
			nxt <= READID ;
					else
nxt <= NORMAL;
					
		  READID:if(sw1)            //3'b001
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= READSTATUS;
					else
nxt <= READID;
			
  	  READSTATUS:if(sw1)			//3'b010
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= READPAGE;
					else 
nxt <= READSTATUS;

		  READPAGE:if(sw1)          //3'b011
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= ERASEBLOCK;
					else 
nxt <= READPAGE ;
					
 		  ERASEBLOCK:if(sw1)             //
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= PROGRAMPAGE;
					else 
nxt <= ERASEBLOCK ;

		  PROGRAMPAGE:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= READPARAMPAGE;
					else 
nxt <= PROGRAMPAGE ;

		  READPARAMPAGE:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= READUNIID;
					else 
nxt <= READPARAMPAGE ;
 
		  READUNIID:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
					//	nxt <= READID;
						nxt <=COMPARECHECK;
					else 
					  //parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,
 //READUNIID=4'b0111,COMPARECHECK=4'b1000,AdSel Start=4'b1001,AdSel End 4'b1010 ,Adcycl =4'b1011,Data Input=4'b1100,Load=4'b1101,;
nxt <= READUNIID ;

		 COMPARECHECK:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= AdSelStart;
						
					else 
nxt <= COMPARECHECK ;

 //  parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
 // parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ErsPrgCom=4'b1110;
	    AdSelStart:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= AdSelEnd;
						
					else 
nxt <= AdSelStart ;

		AdSelEnd:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= Adcycl;
						
					else 
nxt <= AdSelEnd ;

		Adcycl:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= DataInput;
						
					else 
nxt <= Adcycl ;

		DataInput:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= Load;
						
					else 
nxt <= DataInput ;

		Load:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= ErsPrgCom;
						
					else 
nxt <= Load ;

     ErsPrgCom:if(sw1)
				nxt <= NORMAL ;
					else if(sw2)
						nxt <= READID;
						
					else 
nxt <= ErsPrgCom ;

	default:nxt <=4'b0000;
endcase
end
 
assign STATUSLEDOUT[3:0] = ~cur[3:0] ;


//assign DATA = (cle ||ale||~wen)?tsw:8'hzz;    //10/10動作している11/30
assign DATA = (cle ||ale||wenspan)?tsw:8'hzz;    //10/10動作している
//assign DATA = (cle ||ale||wenspan)?dataout:8'hzz;    //12/28実験
//assign DATA = (cle ||ale)?tsw:8'hzz;// 10/22~11/22まではこれで動作している

always@(posedge ren)
begin
//if(rd_clk1)
din <= DATA ;
end

//always@(posedge wenspan or posedge cle posedge ale)
/*always@(wen)
if(cle ==1'b1||ale ==1'b1||wenspan==1'b1)begin
//if(rd_clk1)
dataout <= tsw ;
end else begin
dataout <=8'hzz;
end
*/

 //  parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
 // parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ErsPrgCom=4'b1110;

//always@(posedge SW3 or negedge RST)
 always@(posedge sw3 or negedge RST)
begin
  if(RST == 1'b0 ) begin
	   addrs4 <= 8'h00 ;
	   addre4<=8'h00;
	end else if(cur[3:0] ==4'b1001 )begin
		if(SW5==1'b0)begin	
			addrs4 <= addrs4 - 1 ;
	//		 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end else begin
			addrs4 <= addrs4 + 1 ;
	//		 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end
		
	end else if(cur[3:0] ==4'b1010 )begin
		if(SW5==1'b0)begin	
			addre4 <= addre4 - 1 ;
//			 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end else begin
			addre4 <= addre4 + 1 ;
	//		 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end
		
	end else if(cur[3:0] ==4'b1100)begin
		if(SW5==1'b0)begin
			wdatain[7:4]<= wdatain[7:4] -1;
		end else begin
	   wdatain[7:4]<= wdatain[7:4] +1;
	   end
end
end

//always@(posedge SW4 or negedge RST)
 always@(posedge sw4 or negedge RST)
begin
  if(RST == 1'b0 ) begin
	   addrs3 <= 8'h00 ;
		addre3<= 8'h00;
	//	  erdata <= ram[0];
		 loadcnt <= 8'b00000000;
	end else if(cur[3:0] ==4'b1001 )begin	//AdSelStart
		if(SW5==1'b0)begin
	   addrs3 <= addrs3 - 1 ;
	//	 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end else  begin
	   addrs3 <= addrs3 + 1;
	//	 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end
	end else if(cur[3:0] ==4'b1010 )begin	//AdSelEnd
		if(SW5==1'b0)begin
	   addre3 <= addre3 - 1 ;
	//	 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end else  begin
	   addre3 <= addre3 + 1;
	//	 adcyc[15:0]<={addre4[7:0],addre3[7:0]}-{addrs4[7:0],addrs3[7:0]}+1;
		end
	end else if(cur==4'b1100)begin
		if(SW5==1'b0)begin
		wdatain[3:0]<= wdatain[3:0] -1;
		end else begin
	   wdatain[3:0]<= wdatain[3:0] +1;
		end
   end else if(cur==4'b1101)begin
        if(SW5==1'b0)begin 
    //  erdata <= ram[loadcnt];
		 loadcnt[7:0] <= loadcnt[7:0] -1;
		 end else begin
	//	  erdata <= ram[loadcnt];
		 loadcnt[7:0] <= loadcnt[7:0] +1;
		 end
end
end
  

always@(posedge hclk)
begin
// ram[loadcnt]<=ewdata;
//end else begin
 erdata <= ram[loadcnt];
 erdatanxt <= ram[loadcnt+1];
 loadcntnxt <= loadcnt+1;
end
//end

always @( posedge rd_clk1) begin
    if ( RST==1 'b0 ) begin
       cle <= 1'b0;
       cen <= 1'b1;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp <= 1'b1;
		  wenspan<= 1'b0;
       tsw <= 8 'h00;
		 adcyccnt <= 17'b00000000000000000;
		//  tsw <= 16 'h0000;
       cntw <= 24 'h0000000;
       next <= 10'd0;
		  r_cyc_count1<=16'h0000;
		  w_cyc_count1<=16'h0000;
		  e_cyc_count1 <=10'b0000000000;
		  instatus<=4'b0000;
		  bramstorecnt=16'h0000; 
		  bramstorecntoffset=16'h0100;
		  bramstorecntoffset2=16'h0200;	
		  bramstorecntoffset3=16'h0600;	
		  storecnt =8'h00;
	//	  c_cyc_count1<=16'h0000;
		  
   for(i=0;i<WORDS;i=i+1) ram[i]=0; // 11/20
  
	
 	  end else if (cntw == 24 'h000064 )begin
       cntw <= 24 'h0000;


 //  parameter NORMAL = 4'b0000, READID = 4'b0001, READSTATUS = 4'b0010, READPAGE = 4'b0011 ,ERASEBLOCK = 4'b0100, PROGRAMPAGE = 4'b0101,READPARAMPAGE =4'b0110,READUNIID=4'b0111,COMPARECHECK=4'b1000;
 // parameter AdSelStart=4'b1001,AdSelEnd=4'b1010,Adcycl=4'b1011,DataInput=4'b1100,Load=4'b1101,ErsPrgCom=4'b1110;

		  end else if(sw3 ==1'b1 && cur[3:0] ==4'b0001 )begin  //ReadID
		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
			storecnt =8'h00;
		    next <=10'd1;
			 cntw <= 24 'h0000;
			 					  instatus <=4'b0000;
		  end else if(sw3 ==1'b1 && cur[3:0] == 4'b0010)begin  //Read Status
		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
			storecnt =8'h00;
		   next <=10'd30;
			cntw <= 24'h0000;
								  instatus <=4'b0000;
		  end else if(sw3 ==1'b1 && cur[3:0] == 4'b0011)begin  //read page
		  		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
			storecnt =8'h00;
			bramstorecnt=16'h0000;
		   next <=10'd40;
								  instatus <=4'b0000;
			cntw <= 24'h0000;
			//11/20

		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b0100)begin   //ERASE BLOCK
		  		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
		//		  	  e_cyc_count1 <=10'b0000000000;
	   	e_cyc_count1 <=10'b0000000000;
			bramstorecnt=16'h0000; 
			storecnt =8'h00;
			bramstorecntoffset=16'h0100;
			bramstorecntoffset2=16'h0200;	
		   cntw <= 24'h0000;
								  instatus <=4'b0000;
		   next <= 10'd70;
		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b0101)begin   //PROGRAM PAGE
		  		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
		   bramstorecnt=16'h0000; 
			storecnt =8'h00;
		   bramstorecntoffset=16'h0100;
					bramstorecntoffset2=16'h0200;	
		//   adcyccnt <= 16'h00;
							  instatus <=4'b0000;
			cntw <= 24'h0000;
		   next <= 10'd100;
			
		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b0110)begin   //Readall c0
		  		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
		   bramstorecnt=16'h0000; 
			storecnt =8'h00;
			bramstorecntoffset=16'h0100;
			bramstorecntoffset2=16'h0200;	
		   adcyccnt <= 17'b00000000000000000;
		//   adcyccnt <= 16'h00;
							  instatus <=4'b0000;
			cntw <= 24'h0000;
		   next <= 10'd190;
			
		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b0111)begin   //Readall C800
		  		  for(i=0;i<WORDS;i=i+1) ram[i]=0;
		   bramstorecnt=16'h0000; 
			storecnt =8'h00;
			bramstorecntoffset=16'h0100;
			bramstorecntoffset3=16'h0600;	
		   adcyccnt <= 17'b00000000000000000;
		//   adcyccnt <= 16'h00;
							  instatus <=4'b0000;
			cntw <= 24'h0000;
		   next <= 10'd300;
		
		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b1000)begin   //COMPARECHECK
		   for(i=0;i<WORDS;i=i+1) ram[i]=0;
			 bramstorecnt=16'h0000; 
			storecnt =8'h00;
			bramstorecntoffset=16'h0100;
					bramstorecntoffset2=16'h0200;
									  instatus <=4'b0000;	
			cntw <= 24'h0000;
		   next <= 10'd140;
			
		  end else if(sw3 ==1'b1 && cur[3:0]== 4'b1110)begin   //ErsRePrgCom
		   for(i=0;i<WORDS;i=i+1) ram[i]=0;
			instatus <=4'b0000;
			e_cyc_count1 <=10'b0000000000;
			bramstorecnt=16'h0000;
			storecnt =8'h00;
		   bramstorecntoffset=16'h0100;
			bramstorecntoffset2=16'h0200;	
			cntw <= 24'h0000;
		   next <= 10'd70;//d70 erase d40 to read
		  end else begin
		   cntw <= cntw + 1'b1;	

		   case (next)
		 10'd254 :if ( cntw == 24 'd2) begin   //1/5/ d2
		 if(RB == 1'b0)begin
		    next <= 10'd254;
		 end else begin
		    if(cur[3:0]==4'b0011)begin          //read page
			//	if(adcyccnt == adcyc )begin
				if(adcyccnt > adcyc )begin //  12/15
				 toramen <=1'b0;
				 	storecnt =8'h00;
				cntw <= 24 'h000000;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				tsw <= 8 'hzz;
				cntw <= 24 'h000000;
				adcyccnt <= 17'b00000000000000000;
	         r_cyc_count1 <= 16'h00;
				instatus <=4'b0000; //3/8
				next <= 10'd00;
		//	   end else if(adcyccnt < adcyc)begin
			   end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b1000 )begin
		     //read page
			   toramen <=1'b0;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				//tsw <= 8 'h0000;
				cntw <= 24 'h000000;
			//	adcyccnt <= adcyccnt +1;
				next <= 10'd40;
		      end
			 end else if(cur[3:0]==4'b0100)begin //eraseblock
				if(e_cyc_count1 == ecyc )begin
				 toramen <=1'b0;
				 storecnt =8'h00;
			bramstorecnt=16'h0000;
				cntw <= 24 'h000000;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				tsw <= 8 'hzz;
				cntw <= 24 'h000000;
				adcyccnt <= 17'b00000000000000000;
				e_cyc_count1 <= 10'b0000000000;
				next <= 10'd00;
			   end else if( e_cyc_count1<ecyc && instatus ==4'b0001)begin    //ffbf dec 65471  65535-64
		     //read page
			   toramen <=1'b0;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				//tsw <= 8 'h0000;
				cntw <= 24 'h000000;
				e_cyc_count1 <= e_cyc_count1 + 1 ;
				next <= 10'd70;
				end
			 end else if(cur[3:0]==4'b0101)begin //program PAGE
			  //  if(DATA == 8'he0 ||DATA == 8'hc0)begin
		//			if(adcyccnt == adcyc )begind
	    			if(adcyccnt > adcyc )begin //  12/15
					cntw <= 24 'h000000;
					cle <= 1'b0;
					cen <= 1'b1;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;//       
					wp  <= 1'b1;
				// tsw <= 8 'h0000;
					cntw <= 24 'h000000;
					adcyccnt <= 17'b00000000000000000;
					w_cyc_count1 <=16'h00;
					next <= 10'd00;
		//			end else if(adcyccnt < adcyc)begin    
				   end else if(adcyccnt < adcyc||adcyccnt == adcyc )begin
				//read page
					cle <= 1'b0;
					cen <= 1'b1;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;//       
					wp  <= 1'b1;
				//tsw <= 8 'h0000;
					cntw <= 24 'h000000;
			//		adcyccnt <= adcyccnt+1 ;
					next <= 10'd100;
					end
				//end else begin
			//		next <= 10'd254;
				//	end
			end else if(cur[3:0]==4'b0110)begin //readall c0 page
				if(adcyccnt > adcyc )begin //  12/15
				toramen <=1'b0;
				storecnt =8'h00;
				cntw <= 24 'h000000;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				cntw <= 24 'h000000;
				adcyccnt <= 17'b00000000000000000;
				instatus <=4'b0000;
				next <= 10'd00;
			   end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus ==4'b1111 )begin
			   toramen <=1'b0;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				cntw <= 24 'h000000;
				next <= 10'd190;
		      end	
	   	end else if(cur[3:0]==4'b0111)begin //readall c800 page
				if(adcyccnt > adcyc )begin //  12/15
				toramen <=1'b0;
				storecnt =8'h00;
				cntw <= 24 'h000000;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				instatus<=4'b0000;
				cntw <= 24 'h000000;
				adcyccnt <= 17'b00000000000000000;
				next <= 10'd00;
			   end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus ==4'b0111)begin
			   toramen <=1'b0;
				cle <= 1'b0;
				cen <= 1'b1;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;//       
				wp  <= 1'b1;
				cntw <= 24 'h000000;
				next <= 10'd300;
		      end	
			end else if(cur[3:0]==4'b1000)begin //COMPARECHECK=4'b1000
	   //      if(adcyccnt == adcyc )begin
				if(adcyccnt > adcyc )begin //  12/15
			/*			if(din != wdatain)begin
			//			ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+c_cyc_count1[11:8],addrs1+c_cyc_count1[7:0],din[7:0]};
			//			storecnt <= storecnt + 1;
				
						cle <= 1'b0;
						cen <= 1'b1;
						wen <= 1'b1;
						ale <= 1'b0;
						ren <= 1'b1;//       
						wp  <= 1'b1;
						// tsw <= 8 'h0000;
						cntw <= 24 'h000000;
						adcyccnt <= 16'h00;
				//		c_cyc_count1<=16'h00;
						next <= 10'd00;
						end else begin*/
				
						cle <= 1'b0;
						cen <= 1'b1;
						wen <= 1'b1;
						ale <= 1'b0;
						ren <= 1'b1;//       
						wp  <= 1'b1;
						// tsw <= 8 'h0000;
						cntw <= 24 'h000000;
						adcyccnt <= 17'b00000000000000000;
				//		c_cyc_count1<=16'h00;
						next <= 10'd00;
					//	end
			//   end else if(adcyccnt < adcyc)begin
				   end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b0100 )begin
			/*		if(din != wdatain)begin
			 //	   ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+c_cyc_count1[11:8],addrs1+c_cyc_count1[7:0],din[7:0]};
		//		   storecnt <= storecnt + 1;
					cntw <= 24 'h000000;
					cle <= 1'b0;
					cen <= 1'b1;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;//       
					wp  <= 1'b1;
					// tsw <= 8 'h0000;
					cntw <= 24 'h000000;
		//			adcyccnt <= adcyccnt +1;
		//				c_cyc_count1<=16'h00;
					next <= 10'd140;
					end else begin*/
					//read page
					cle <= 1'b0;
					cen <= 1'b1;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;//       
					wp  <= 1'b1;
					//tsw <= 8 'h0000;
					cntw <= 24 'h000000;
		//			adcyccnt <= adcyccnt +1;
					next <= 10'd140;
				//	end
					end
				end
		   if(cur[3:0]==4'b1110)begin 
					if(instatus == 4'b1000)begin   //4'b1000 read
			       if(adcyccnt > adcyc )begin //  12/15
					 for(i=0;i<WORDS;i=i+1) ram[i]=0;
					  bramstorecnt=16'h0000; 
					  storecnt =8'h00;
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  adcyccnt <= 17'b00000000000000000;
					  e_cyc_count1 <= 10'b0000000000;
					  w_cyc_count1<=16'h0000;
					  r_cyc_count1<=16'h0000;
					//  instatus <=4'b0000;  //20200222    3/7
					  cntw <= 24 'h000000;
		           bramstorecntoffset=16'h0100;
					  next <= 10'd100;  //d100 to prog  //to erase
				    end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b1000)begin
			//		  bramstorecnt=16'h0000; 
			        storecnt =8'h00;
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24 'h000000;
					  next <= 10'd40;  //to Read Page
					 end			  
		   	  end else if(instatus == 4'b0001)begin    //4'b0001 erase
			       if(e_cyc_count1 == ecyc )begin
			//	     cntw <= 24 'h000000;
				     cle <= 1'b0;
				     cen <= 1'b1;
				     wen <= 1'b1;
				     ale <= 1'b0;
				     ren <= 1'b1;//       
				     wp  <= 1'b1;
				     cntw <= 24'h000000;
				     adcyccnt <= 17'b00000000000000000;
				     e_cyc_count1 <= 10'b0000000000;
					  r_cyc_count1<=16'h0000;
					  bramstorecnt=16'h0000; 
			        storecnt =8'h00;
				     next <= 10'd40;   //to read
			       end else if( e_cyc_count1 < ecyc && instatus == 4'b0001)begin    //ffbf dec 65471  65535-64
				     cle <= 1'b0;
				     cen <= 1'b1;
				     wen <= 1'b1;
				     ale <= 1'b0;
				     ren <= 1'b1;//       
				     wp  <= 1'b1;
				     cntw <= 24'h000000;
				     e_cyc_count1 <= e_cyc_count1 + 1 ;
				//	  bramstorecnt=16'h0000; 
			   //     storecnt =8'h00;
				     next <= 10'd70;  //to erase again
				    end
			     end else if(instatus == 4'b0010)begin   //program
	  			    if(adcyccnt > adcyc )begin //  12/15
					  cntw <= 24 'h000000;
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24'h000000;
					  adcyccnt <= 17'b00000000000000000;
					  bramstorecnt=8'h00; 
			        storecnt =8'h00;
					  w_cyc_count1<=16'h0000;
					  next <= 10'd140;    //compare read
			       end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b0010 )begin
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;     
					  wp  <= 1'b1;
					  cntw <= 24'h000000;
					  next <= 10'd100; //to program again
				
				    end
			     end else if(instatus == 4'b0100)begin  //compare read
			       if(adcyccnt > adcyc )begin //  12/15
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24 'h000000;
			//		  w_cyc_count1<=16'h0000;
					  adcyccnt <= 17'b00000000000000000;
					  instatus <=4'b0000;
					  next <= 10'd190;    //00 d190 readall
				    end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b0100 )begin
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24 'h000000;
					  next <= 10'd140;
					  end
				  end else if(instatus == 4'b1111)begin   //Readall
		  		  	 if(adcyccnt > adcyc )begin //  12/15
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24 'h000000;
			//		  w_cyc_count1<=16'h0000;
					  adcyccnt <= 17'b00000000000000000;
					  instatus <=4'b0000;
					  next <= 10'd00;
				    end else if(adcyccnt < adcyc||adcyccnt == adcyc && instatus == 4'b1111 )begin
					  cle <= 1'b0;
					  cen <= 1'b1;
					  wen <= 1'b1;
					  ale <= 1'b0;
					  ren <= 1'b1;//       
					  wp  <= 1'b1;
					  cntw <= 24 'h000000;
					  next <= 10'd190;
					  
			
				    end				
			    end
		    end
		  end
		  end
		 // 10'd0:if(cntw ==24'd2)begin
		 //  instatus <=4'b0000;
		//	end
10'd1 : if ( cntw == 24 'd3) begin // cntw==247d0だと動作しない。
      // 10'd1 : if ( cntw == 24 'd0) begin // 
		//   10'd1 : if ( rdid_clk1 ==1'b1) begin // 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  wenspan <= 1'b0;
       tsw <= 8 'hzz;
		  //tsw <= 16 'hzzzz;
       cntw <= 24 'h000000;
       next <= 10'd2; 
           end
       10'd2 : if ( cntw == 24 'd2 ) begin //d1
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hff;
		 //   tsw <= 16 'h00ff;
       cntw <= 24 'h000000;
       next <= 10'd3;
           end
       10'd3 : if ( cntw == 24 'd2 ) begin //1
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      tsw <= 8 'hff;   //dataout ffh
	//	    tsw <= 16 'h00ff;
       cntw <= 24 'h000000;
		  next <= 10'd4; 
           end
       10'd4 : if ( cntw == 24 'd4 ) begin //8
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      tsw <= 8 'hff;
		//  tsw <= 16 'h00ff;
       cntw <= 24 'h000000;
	     next <= 10'd5;
           end
       10'd5 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		//    tsw <= 16 'hzzzz;
       cntw <= 24 'h000000;
           next <= 10'd6; 
           end
	/////////////////////////command end///////////////////////////
       10'd6 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h90;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd7;
           end
       10'd7 : if ( cntw == 24 'd2 ) begin//d1
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h90;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd8; 
           end
       10'd8 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h90;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd9;
           end
       10'd9 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd10; 
           end
       10'd10 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;          
           next <= 10'd11;
           end
       10'd11 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd12; 
           end
       10'd12 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd13;
           end
       10'd13 : if ( cntw == 24 'd21 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
              next <= 10'd14;
           end
       10'd14 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd15;
           end
       10'd15 : if ( cntw == 24 'd4 ) begin
		  			ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;//       read trigger initiarize 
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd16; 
           end            
       10'd16 : if ( cntw == 24 'd4 ) begin  //rs_enb
      cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 1Byte
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd17;
           end
       10'd17 : if ( cntw == 24 'd4 ) begin
		  			ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;//       read trigger initiarize 
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd18; 
           end            
       10'd18 : if ( cntw == 24 'd4 ) begin  //rs_enb
      cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 1Byte
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd19;
           end
       10'd19 : if ( cntw == 24 'd4 ) begin
		  		ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;//       read trigger initiarize 
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd20; 
           end            
       10'd20 : if ( cntw == 24 'd4 ) begin  //rs_enb
      cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 1Byte
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd21;
           end
      10'd21 : if ( cntw == 24 'd4 ) begin
		 		ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;//       read trigger initiarize 
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd22; 
           end            
       10'd22 : if ( cntw == 24 'd4 ) begin  //rs_enb
      cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 1Byte
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd23;
           end
       10'd23 : if ( cntw == 24 'd12 ) begin
		  		ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
       cle <= 1'b1;
       cen <= 1'b1;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
           next <= 10'd255; 
				end 				
    
       10'd255 : if ( cntw == 24 'd1 ) begin/////////////////////////////////////////////////////////////////////////////////////////////////////10'd255
       cle <= 1'b0;
       cen <= 1'b1;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       
		  wp  <= 1'b1;
       tsw <= 8 'hzz; //20/2/18 00
       cntw <= 24 'h000000;
		  	storecnt =8'h00;
	//	  w_cyc_count1 <= 16'h0000; //11/3
	//	  r_cyc_count1 <= 16'h0000; //11/3
		 // rdidframe<=1'b0;
           next <= 10'd00;
           end
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////			
       10'd30 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd31;
           end
       10'd31 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd32; 
           end
       10'd32 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd33;
           end
       10'd33 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd34; 
           end
       10'd34 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;          
           next <= 10'd35;
           end
       10'd35 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd36; 
           end
       10'd36 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd37;
           end								
       10'd37 : if ( cntw == 24 'd21 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
              next <= 10'd38;
           end
       10'd38 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd39;
           end	
		 10'd39 : if ( cntw == 24 'd2 ) begin		
				
						  			ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
		    cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd255;
				end
				
						
		  10'd40 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
	     instatus <= 4'b1000;
       cntw <= 24 'h000000;
		  r_cyc_count1<=16'h0000;
           next <= 10'd41;
           end
       10'd41 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd42; 
           end
       10'd42 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd43;
           end
       10'd43 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd44; 
           end
       10'd44 : if ( cntw == 24 'd6 ) begin //LSB
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //  tsw<=r_cyc_count1[7:0];
	  tsw<= addrs1;
       cntw <= 24 'h000000;          
           next <= 10'd45;
           end
       10'd45 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //  tsw<= r_cyc_count1[7:0];
	  tsw<= addrs1;
       cntw <= 24 'h000000;
           next <= 10'd46; 
           end
       10'd46 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd47;
           end								
       10'd47 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
     //  tsw <= r_cyc_count1[15:8];
	   tsw <= addrs2;
       cntw <= 24 'h000000;          
           next <= 10'd48;
           end
       10'd48 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
   //    tsw <= r_cyc_count1[15:8];
	   tsw <= addrs2;
       cntw <= 24 'h000000;
           next <= 10'd49; 
           end
       10'd49 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd50;
           end								
       10'd50 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //     tsw <= 8 'h0000;
		tsw <= addrs3+adcyccnt[7:0];
 // tsw <= addrs3;
       cntw <= 24 'h000000;          
           next <= 10'd51;
           end
       10'd51 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //     tsw <= 8 'h0000;
	    tsw <= addrs3+adcyccnt[7:0];
//  tsw <= addrs3;			  
       cntw <= 24 'h000000;
           next <= 10'd52; 
           end
       10'd52 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd53;
           end											
       10'd53 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      tsw <= addrs4+adcyccnt[15:8];
	//	 tsw <= addrs4;
       cntw <= 24 'h000000;          
           next <= 10'd54;
           end
       10'd54 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      tsw <= addrs4+adcyccnt[15:8];
	//	 tsw <= addrs4;  
       cntw <= 24 'h000000;
           next <= 10'd55; 
           end
       10'd55 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd56;
           end											
		  10'd56 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd57;
           end
       10'd57 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd58; 
           end
       10'd58 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd59;//11/23  12/28 d62
           end				
		  
	     10'd59 : if ( cntw == 24 'd21 ) begin
		  if(RB == 1'b0)begin
		  cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= 8 'hzz;    //3/3/0000
	       cntw <= 24 'h000000;
			 next <= 10'd58;  //
			 end else begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;   //3/3/0000
       cntw <= 24 'h000000;
	//	  r_cyc_count1<=16'h0000;
		 // adcyccnt<=16'h0000;
          next <= 10'd62;
			  end
           end
       10'd60 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'hzz;   //3/3/0000
       cntw <= 24 'h000000;
           next <= 10'd61;
				end
		  10'd61:if(cntw==24'd1)begin
		  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b0;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd61;	
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd62;			
				end		
        end	
				10'd62:if(cntw==24'd5)begin
		//	if(r_cyc_count1 < 16'h0003)begin
	//		if(r_cyc_count1 < caddrs1 )begin ///<=
	//    if(adcyccnt < adcyc +1)begin
			if(r_cyc_count1 < caddrs1 || r_cyc_count1 == caddrs1)begin ///<=
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				cntw <= 24 'h000000;
				next <= 10'd66;//63
       //    end else if (r_cyc_count1 ==16'h0003)begin
		//		 end else if (r_cyc_count1 == caddrs1)begin  //+1
			 end else if (r_cyc_count1 > caddrs1 )begin  //+1  //11/30==
					cen <= 1'b0;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;
					wp  <= 1'b1;
					tsw <= 8 'hzz;
					cntw <= 24 'h000000;
		//		  adcyccnt <= adcyccnt +1;//11/24
				//	r_cyc_count1 <= 16'h0000;
				   //next <= 10'd254;//62
					next <= 10'd63;
					 
			 end	
			 end
			  10'd63:if(cntw==24'd8)begin   //3/2 d2
			//  if(RB == 1'b0)begin
			//  		cntw <= 24 'h000000;
			//		next <= 10'd62;
			//  end else 
			  if(din == 8'h00 && r_cyc_count1 == 16'h800)begin
			//	  toramdata<={addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0],addrs2[3:0],addrs1,din[7:0]};
			  toramen<=1'b0;
			  	toramdata<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+r_cyc_count1[11:8],addrs1+r_cyc_count1[7:0],din[7:0]};
       
				//adcyccnt <= adcyccnt + 64; 
				cntw <= 24 'h000000;
					next <= 10'd64;//62
				end else begin
				  adcyccnt <= adcyccnt +1;//11/24  2/4
				  r_cyc_count1 <= 16'h0000;
					cntw <= 24 'h000000;
		   	next <= 10'd254;//62
		  end
		  end
		  	 10'd64:if(cntw==24'd2)begin
			   toramen <=1'b1;
		//		adcyccnt <= adcyccnt + 64; 	
				cntw <= 24 'h000000;
				next <= 10'd65;//62
				end
			10'd65:if(cntw==24'd2)begin
			   toramen <=1'b0;		
				bramstorecnt<=bramstorecnt+1;
				adcyccnt <= adcyccnt + 64; 
				   // storecnt<=storecnt+1;
				cntw <= 24 'h000000;
		   	next <= 10'd254;//62
				end
		  10'd66:if(cntw==24'd4)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd67;		
				end
		10'd67:if(cntw==24'd1)	begin	
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
		  r_cyc_count1 <=r_cyc_count1 +1;
           next <= 10'd61;		//62	   11/19
		     end	 	
				
				
		  10'd70 : if ( cntw == 24 'd3 ) begin //
		  toramren <=1'b0; 
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  instatus<= 4'b0001;
	//adcyccnt<=16'h0000;
	//e_cyc_count1<=10'b0000000000;
       cntw <= 24 'h000000;
           next <= 10'd71;
        end
				 10'd71 : if ( cntw == 24 'd1 ) begin //
		  toramren <=1'b1; 
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd72;
			end
				 10'd72 : if ( cntw == 24 'd1 ) begin //
		  toramren <=1'b0; 
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd73;
			end
				 10'd73 : if ( cntw == 24 'd1 ) begin //
		  toramren <=1'b1; 
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd74;
			end
		  10'd74:if( cntw ==24'd2)begin  //2020222 d2
		     //if(RB == 1'b0)begin
			   //cntw <= 24 'h000000;
			  //next <= 10'd73;
			  //end else if(bramstorecnt < 16'd99 || bramstorecnt == 16'd99)begin
			  if(bramstorecnt < 16'd99 || bramstorecnt == 16'd99)begin
			  //  if(fromramdata[35:20] == {addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0]})begin
					if(fromramdata[35:26] == {addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0] } && fromramdata[35:26] != 10'b0000000000)begin
		    	//	toramren <=1'b0;
				//		e_cyc_count1 <= e_cyc_count1 +1; //2020/2/22
				
			 //  	bramstorecnt <= bramstorecnt +1;
				   toramren <=1'b0;
				   cntw <= 24 'h000000;
				   next <= 10'd87;//87   2/29
					end else begin 		  
				   toramren <=1'b0;
				   //   		storecnt <= storecnt +1 ;
				   cntw <= 24 'h000000;
				   next <= 10'd75;
			    end 
		     end else begin
			
				toramren <=1'b0;
				bramstorecnt <= 16'h0000;
					//storecnt <= 10'd00;
				cntw <= 24'h000000;
				next <= 10'd75;
          end
		end
       10'd75 : if ( cntw == 24 'd2 ) begin  //2020/2/21 d1
		    toramren <=1'b0;
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h60;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd76; 
           end
       10'd76 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h60;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd77;
           end
       10'd77 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd78; 
           end
       10'd78 : if ( cntw == 24 'd6 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000 + e_cyc_count1[1:0];
		tsw<=  {addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0]};
		// tsw <= addrs3;  
       cntw <= 24 'h000000;          
           next <= 10'd79;
           end
       10'd79 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
   //   tsw <= 8 'h0000 + e_cyc_count1[1:0];
		 	tsw<=  {addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0]};
	//	   tsw <= addrs3;
       cntw <= 24 'h000000;
           next <= 10'd80; 
           end
       10'd80 : if ( cntw == 24 'd2 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd81;
           end								
       10'd81 : if ( cntw == 24 'd6 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //  tsw <= 8 'h0000 + e_cyc_count1[9:2];
		 tsw<=addrs4+e_cyc_count1[9:2];
	//	  tsw <= addrs4; 
       cntw <= 24 'h000000;          
           next <= 10'd82;
           end
       10'd82 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000 + e_cyc_count1[9:2];
		   tsw<=addrs4+e_cyc_count1[9:2];
	//	  tsw <= addrs4; 
       cntw <= 24 'h000000;
           next <= 10'd83; 
           end
       10'd83 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd84;
           end											
		  10'd84 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hd0;                 //ERASE BLOCK command2 D0h
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd85;
           end
       10'd85 : if ( cntw == 24 'd2 ) begin   //2/27 d1
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hd0;                //ERASE BLOCK command2 D0h
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd86; 
           end
       10'd86 : if ( cntw == 24 'd4 ) begin   //2/27 d4
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hd0;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd87;
           end				
        10'd87 : if ( cntw == 24 'd71 ) begin //d21 12/15  d42 2020/3/1
			if(RB == 1'b0)begin	
       cle <= 1'b0;   //2020/02/22  1'b1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
		  next<= 10'd86;
		   end else begin
			bramstorecnt <= bramstorecnt +1;
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
           next <= 10'd88;
           end				  
        end				
        10'd88 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd89;
           end
       10'd89 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd90; 
           end
       10'd90 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd91;
           end
       10'd91 : if ( cntw == 24 'd2 ) begin
		  
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      // tsw <= 8 'hzz;//1210
		  tsw <= 8'h0000;
       cntw <= 24 'h000000;
           next <= 10'd92; 
           end
       10'd92 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;          
       next <= 10'd93;
           end
       10'd93 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd94; 
           end
       10'd94 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd95;
           end								
       10'd95 : if ( cntw == 24 'd72 ) begin //21//1/27  d70 2/22 d100 は動かない
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
       next <= 10'd96;
           end
       10'd96 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
		  bramstorecnttemp<= bramstorecnt;
		  bramstorecnt <= bramstorecntoffset ;
       cntw <= 24 'h000000;
		  next <= 10'd97;//254 12/10
           end	
		 10'd97:if(cntw ==24'd2)begin  //12/10
		 //  if(din[0] == 1'b1 && bramstorecnt == 8'b00000000)begin
	    	//		bramstorecntoffset <= 8'b00010000;
				//end else 
				if(din[0] ==1'b1)begin
			 	//bramstorecnt <= bramstorecntoffset ;
				//bramstorecntoffset <= bramstorecntoffset + 32;
					toramen <=1'b0;
				//	  errstatus<=din;
					toramdata<={addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0],addrs2[3:0],addrs1,din[7:0]};//8,2,6,4,8,8
				//  			storecnt <= storecnt + 1;
					cntw <= 24'h000000;
					next <= 10'd98;
				end else if(din ==8'he0)begin
				//	  errstatus<=din;
				//	  toramdata<={addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0],addrs2[3:0],addrs1,din[7:0]};
				//	  storecnt <= storecnt + 1;
				//  toramen<=1'b1;
				 toramen <=1'b0;
					cntw <= 24'h000000;
			//  e_cyc_count1 <= e_cyc_count1;
	         bramstorecnt <= bramstorecnttemp;
			//		e_cyc_count1 <= e_cyc_count1 + 1 ;
					next <= 10'd254;
		     end else begin
					// toramdata<={addrs4+e_cyc_count1[9:2],addrs3[7:6]+e_cyc_count1[1:0],addrs3[5:0],addrs2[3:0],addrs1,din[7:0]};
        //  e_cyc_count1 <= e_cyc_count1;
	     bramstorecnt <= bramstorecnttemp;
					 toramen <=1'b0;
					cntw <= 24'h000000;
				//		e_cyc_count1 <= e_cyc_count1 + 1 ;
					next <= 10'd254;//252
	
	      end
		 end 
       10'd98:if(cntw==24'd2)begin
		  toramen <=1'b1;
	    //	e_cyc_count1 <= e_cyc_count1;
       cntw <= 24'h000000;
		  next <= 10'd99;
		  end
		  10'd99:if(cntw==24'd2)begin
		    bramstorecntoffset <= bramstorecntoffset +1 ;
	     bramstorecnt <= bramstorecnttemp;
		 // bramstorecnt<=8'b0;
		  toramen <=1'b0;
		  cntw <= 24'h000000;
		//  e_cyc_count1 <= e_cyc_count1 + 1 ;
		  next <= 10'd254;
       end	
    
		// end		 
				            										
//////////////////////////////////ERASE BLOCK end///////////////////////////////////
////////////////////////////////////////////////////

//////////////////////////////PROGRAM PAGE START ////////////////0x05//////////////////////////////////////////////////////////////////////////////////////////program				
 10'd100 : if ( cntw == 24 'd3 ) begin ////d30 b12/10
       toramren <=1'b0;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  instatus<=4'b0010;
		  w_cyc_count1<=16'h0000;
		  //  c_cyc_count1<=16'h0000;
       cntw <= 24 'h000000;
       next <= 10'd101;
           end
 10'd101 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b1;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd102;	
				end
  10'd102 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b0;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd249;	
				end
	 10'd249 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b1;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd250;	
				end
	  10'd250 : if ( cntw == 24 'd1 ) begin //																
		  if(RB==1'b0)begin
		  cntw <= 24'h00000;
		  next <= 10'd249;
		  end else if(bramstorecnt < 16'd99||bramstorecnt==16'd99)begin
				if(fromramdata[35:26] == {addrs4+adcyccnt[15:8],addrs3[7:6]+adcyccnt[7:6]} && fromramdata[35:26] != 10'b0000000000)begin
				bramstorecnt <= bramstorecnt +1;
				adcyccnt <= adcyccnt +1;
				w_cyc_count1 <= 16'h0000;
				toramren <=1'b0;
				cntw <=24'h00000;
			   tsw <= 8 'hzz;
				next <= 10'd130;  // to read status 
				end else begin
				bramstorecnt <= bramstorecnt +1; //20200222
				toramren <=1'b0;
				cntw <=24'h00000;
				next <= 10'd103;
				 tsw <= 8 'hzz;
		 end
		 end else begin 
		     cntw <=24'h00000;
			  toramren <=1'b0;
			  bramstorecnt <=16'h0000;
			   tsw <= 8 'hzz;
			  next <= 10'd103;
		 end		
		 end
       10'd103 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h80;
       cntw <= 24 'h000000;
       next <= 10'd104; 
           end
       10'd104 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h80;
       cntw <= 24 'h000000;
       next <= 10'd105;
           end
       10'd105 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd106; 
           end
       10'd106 : if ( cntw == 24 'd6 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= addrs1;//+w_cyc_count1[7:0];
       cntw <= 24 'h000000;          
           next <= 10'd107;
           end
       10'd107 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs1;//+w_cyc_count1[7:0];
       cntw <= 24 'h000000;
           next <= 10'd108; 
           end
       10'd108 : if ( cntw == 24 'd2 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd109;
           end								
       10'd109 : if ( cntw == 24 'd4 ) begin  //6//12/12 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= addrs2;//+w_cyc_count1[15:8];
       cntw <= 24 'h000000;          
           next <= 10'd110;
           end
       10'd110 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs2;//+w_cyc_count1[15:8];
       cntw <= 24 'h000000;
           next <= 10'd111; 
           end
       10'd111 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd112;
           end					
       10'd112 : if ( cntw == 24 'd4 ) begin //6//12/12
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
			  tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;          
           next <= 10'd113;
           end
       10'd113 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;
           next <= 10'd114; 
           end
       10'd114 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd115;
           end	
       10'd115 : if ( cntw == 24 'd4 ) begin  //6//12/12
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= addrs4+adcyccnt[15:8];	
       cntw <= 24 'h000000;          
           next <= 10'd116;
           end
       10'd116 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= addrs4+adcyccnt[15:8];	
       cntw <= 24 'h000000;
           next <= 10'd117; 
           end
       10'd117 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		 //  tsw <= wdatain;  //12/28
       cntw <= 24 'h000000;
           next <= 10'd118; //116//119 //12/9変更
           end					
	//////////////////////////////////////////		
       10'd118 : if ( cntw == 24 'd4 ) begin //d26 12/15 //12/9 d35で動作  計算上の限界はale lowからd28 ここはd26 d35 12/28  03ならd26でもOK 12/30 02 d4でNG
		  	  	  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	       cntw <= 24 'h000000;
			 next <= 10'd117;//115
			 end else begin
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;//  12/9 1'b0//12/28 
			ale <= 1'b0;
			ren <= 1'b1;
			wp  <= 1'b1;
			tsw<=8 'hzz;   //wdatain から変更/12/28hzz->wdatain
	//		tsw<=wdatain;
			cntw <= 24 'h000000;
          next <= 10'd121; //119 //12/9 d117から変更
			  end
           end
       10'd119 : if ( cntw == 24 'd4 ) begin 
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;//       
			wp  <= 1'b1;
		//	tsw <= 8 'haa;
		//	tsw<= w_cyc_count1[7:0];
		//	tsw<= w_cyc_count1[15:0];
			tsw<=wdatain;
			cntw <= 24 'h000000;
           next <= 10'd120;
				end
		  10'd120:if(cntw==24'd2)begin
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;//       
			wp  <= 1'b1;
			wenspan <= 1'b0;
		 //tsw <= 8 'haa;
		 //tsw<= w_cyc_count1[7:0];
		 //tsw<= w_cyc_count1[15:0];
			tsw<=wdatain;
			cntw <= 24 'h000000;
           next <= 10'd121;	
				end
	  //   10'd119 : if ( cntw == 24 'd2 ) begin
		//   10'd119 : if ( cntw == 24 'd35 ) begin//25  計算上の限界はale lowからd28 ここはd26 d116で待たせるようにしたからd4で良い
			 10'd121 : if ( cntw == 24 'd16 )begin    //d4 //12/11 1/2  01 ならd40でOK   d16 3/10
     	//	   if(w_cyc_count1 < 16'h0003)begin
	     //   if(adcyccnt < adcyc +1)begin
	   if(RB == 1'b0)begin
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;
			wp  <= 1'b1;
			wenspan <= 1'b0;  
			tsw<=8'hzz;
			cntw <= 24 'h000000;
        next <= 10'd118;   //2020/222
	   end else 
		if(w_cyc_count1 < caddrs1 || w_cyc_count1 == caddrs1 )begin
	  		cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b0;//122/8 1
			ale <= 1'b0;
			ren <= 1'b1;
			wp  <= 1'b1;
			wenspan <= 1'b1;
			tsw<=wdatain;
		//	tsw<= w_cyc_count1[7:0];
			cntw <= 24 'h000000;
			next <= 10'd124;
				end else if (w_cyc_count1 > caddrs1)begin
						cle <= 1'b0;
						cen <= 1'b0;
						wen <= 1'b1;
						ale <= 1'b0;
						ren <= 1'b1;
						wp  <= 1'b1;
						wenspan <= 1'b1;
				      tsw <= wdatain;
						cntw <= 24 'h000000;
						adcyccnt <= adcyccnt +1;//11/24
					   next <= 10'd126;
			 end
			end
       10'd124 : if ( cntw == 24 'd4 ) begin //d4 12/11 12/12  d4 12/28
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;//       read trigger 0Byte
			wp  <= 1'b1;
			wenspan <= 1'b1;
			tsw <= wdatain; //12/12
		//	tsw<= w_cyc_count1[7:0];
		//		tsw <= 16 'hzzzz; //12/01
			cntw <= 24 'h000000;
        next <= 10'd125;
			end
		  10'd125:if(cntw==24'd2)begin      //d2 12/11
		     if(RB == 1'b0)begin
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;
			wp  <= 1'b1;
			wenspan <= 1'b0;		
			tsw<=8'hzz;
			cntw <= 24 'h000000;
			 next <= 10'd124;
			end else begin
			cle <= 1'b0;
			cen <= 1'b0;
			wen <= 1'b1;
			ale <= 1'b0;
			ren <= 1'b1;//       read trigger 0Byte
			wp  <= 1'b1;
			wenspan <= 1'b0;
			tsw <= 8 'hzz;
		//	tsw <= 16 'hzzzz;
			cntw <= 24 'h000000;
			w_cyc_count1 <= w_cyc_count1  +1;
        next <= 10'd121;		//119
			end
				end
		  10'd126 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h15;//12/28 10h
		  wenspan <= 1'b0;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd127;
           end
       10'd127 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h15;//12/28 10h
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd128; 
           end
       10'd128 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h15;//12/28 10h
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd129;
           end				
        10'd129 : if ( cntw == 24 'd2 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd130;
           end				       							
       10'd130 : if ( cntw == 24 'd3 ) begin // 2020/2/22 3
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;//12/28
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd131;
           end
       10'd131 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd132; 
           end
       10'd132 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd133;
           end
       10'd133 : if ( cntw == 24 'd2 ) begin
		  
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      // tsw <= 8 'hzz;//1210
		  tsw <= 8'h0000;
       cntw <= 24 'h000000;
           next <= 10'd134; 
           end
       10'd134 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;          
           next <= 10'd135;
           end
       10'd135 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd136; 
           end
       10'd136 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd137;
           end								
       10'd137 : if ( cntw == 24 'd4 ) begin //1/3 d21
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
              next <= 10'd138;
           end
       10'd138 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd139;//254 12/10
           end	
		 10'd139:if(cntw ==24'd2)begin  //12/10 d2/12/15 d21 12/24
	     if(din ==8'h80||din==8'hc0)begin
		  next <= 10'd137;
		  end else if(din ==8'he0)begin
		  next <= 10'd254;
		  end else begin
		  next <= 10'd137;
		//  end else begin  //12/17
		//  next <=10'd254; //12/17
	end 	  
				end
				
		  10'd140 : if ( cntw == 24 'd3 ) begin ////d30 b12/10
       toramren <=1'b0;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  instatus<=4'b0100;
		  w_cyc_count1<=16'h0000;
		  //  c_cyc_count1<=16'h0000;
       cntw <= 24 'h000000;
       next <= 10'd141;
           end
		  10'd141 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b1;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd142;	
				end
		  10'd142 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b0;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd143;	
				end
		  10'd143 : if ( cntw == 24 'd1 ) begin //	
	     toramren <=1'b1;
       cle <= 1'b0;//1
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
		  cntw <= 24 'h000000;
		  next <= 10'd144;	
				end
		  10'd144 : if ( cntw == 24 'd3 ) begin //
			  if(RB==1'b0)begin
		  cntw <= 24'h00000;
		  next <= 10'd143;   //249
		  end else if(bramstorecnt < 16'd99||bramstorecnt==16'd99)begin
				if(fromramdata[35:26] == {addrs4+adcyccnt[15:8],addrs3[7:6]+adcyccnt[7:6]} && fromramdata != 10'b0000000000)begin
				bramstorecnt <= bramstorecnt +1;
				adcyccnt <= adcyccnt +64;//1
				w_cyc_count1 <= 16'h0000;
				toramren <=1'b0;
				cntw <=24'h00000;
			   tsw <= 8 'hzz;
				next <= 10'd170;  // to read status 
				end else begin
				toramren <=1'b0;
				cntw <=24'h00000;
				
				tsw <= 8 'hzz;
				next <= 10'd145;
				end
		 end else begin 
			  toramren <=1'b0;
			  bramstorecnt <=16'h0000;
			  cle <= 1'b1;
			  tsw <= 8 'hzz;
			  cntw <=24'h00000;
			  next <= 10'd145;
		 end		
		 end	   
		//  toramren <= 1'b0;
   //    cle <= 1'b1;
    //   cen <= 1'b0;
     //  wen <= 1'b1;
		 // ale <= 1'b0;
		//  ren <= 1'b1;
		 // wp  <= 1'b1;
      // tsw <= 8 'h00;
		//   instatus<=4'b0100;
		//   w_cyc_count1<=16'h0000;
		//  c_cyc_count1<=16'h0000;
	//	  tsw <= 8 'h5f;   //movement check
     //  cntw <= 24 'h000000;
      //     next <= 10'd145;
     //      end
       10'd145 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd146; 
           end
       10'd146 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd147;
           end
       10'd147 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd148; 
           end
       10'd148 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000;
	  tsw<= addrs1;
       cntw <= 24 'h000000;          
           next <= 10'd149;
           end
       10'd149 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //     tsw <= 8 'h0000;
	  tsw<= addrs1;
       cntw <= 24 'h000000;
           next <= 10'd150; 
           end
       10'd150 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd151;
           end								
       10'd151 : if ( cntw == 24 'd6 ) begin //disp_clear //6/12/12
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000;
	   tsw <= addrs2;
       cntw <= 24 'h000000;          
           next <= 10'd152;
           end
       10'd152 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000;
		   tsw <= addrs2;
       cntw <= 24 'h000000;
           next <= 10'd153; 
           end
       10'd153 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd154;
           end								
       10'd154 : if ( cntw == 24 'd6 ) begin //disp_clear  //6/12/12
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //     tsw <= 8 'h0000;
		//     tsw <= 8 'h0001;
  tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;          
           next <= 10'd155;
           end
       10'd155 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
  //     tsw <= 8 'h0000;
	//	     tsw <= 8 'h0001;
  tsw <= addrs3+adcyccnt[7:0];			  
       cntw <= 24 'h000000;
           next <= 10'd156; 
           end
       10'd156 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd157;
           end											
       10'd157 : if ( cntw == 24 'd6 ) begin //disp_clear   //6/12/12
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
    //   tsw <= 8 'h0000;
		 tsw <= addrs4+adcyccnt[15:8];
       cntw <= 24 'h000000;          
           next <= 10'd158;
           end
       10'd158 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
     //  tsw <= 8 'h0000;
		 tsw <= addrs4+adcyccnt[15:8];  
       cntw <= 24 'h000000;
           next <= 10'd159; 
           end
       10'd159 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd160;
           end											
		  10'd160 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd161;
           end
       10'd161 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd162; 
           end
       10'd162 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
	//	   c_cyc_count1<=16'h0000;
	//	  storecnt<=8'b00000000;
           //next <= 10'd159;
				    next <= 10'd163;//162 12/10  159 12/26
           end				
	     10'd163 : if ( cntw == 24 'd21 ) begin//12/14 70  12/26  70 12/30
		  	  if(RB == 1'b0)begin
		  cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	       cntw <= 24 'h000000;
			 next<= 10'd162;
			 end else begin
     	cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;  //0 12/10
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
		//  c_cyc_count1<=16'h0000;
		//  storecnt<=8'b00000000;
          next <= 10'd166;  //160
			  end
          end
       10'd164 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd165;
				end
		  10'd165:if(cntw==24'd1)begin
		  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b0;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd161;	
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd166;			
				end		
        end	
				10'd166:if(cntw==24'd5)begin //2019/11/17 'd5  d4 12/15  d5 12/24  d4だと05hでNG
						
				
		//	if(r_cyc_count1 < 16'h0003)begin
		//	   if( c_cyc_count1 < caddrs1 || c_cyc_count1 == caddrs1)begin ///<=1
					   if( w_cyc_count1 < caddrs1 || w_cyc_count1 == caddrs1)begin ///<=1
		//				    if(din != wdatain)begin
	             //////////////////////////////////
		//			 		   ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+c_cyc_count1[11:8],addrs1+c_cyc_count1[7:0],din[7:0]};
	//			      storecnt <= storecnt + 1;
    		   cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;//d0 12/12  12/15
				wp  <= 1'b1;
				tsw <= 8 'h0000;
					cntw <= 24 'h000000;
				next <= 10'd167;
			//			       end else if (c_cyc_count1 > caddrs1)begin  //+1
								  end else if (w_cyc_count1 > caddrs1)begin  //+1
              cen <= 1'b0;
					wen <= 1'b1;
					ale <= 1'b0;
					ren <= 1'b1;//1//11/28
					wp  <= 1'b1;
				   tsw <= 8 'hzz;
					cntw <= 24 'h000000;
					adcyccnt <= adcyccnt +1;
				   next <= 10'd170;//d166 //d254   12/26 165
	  		 end
		//		end else begin
	/*			cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
					cntw <= 24 'h000000;
				next <= 10'd163;
       //    end else if (r_cyc_count1 ==16'h0003)begin

		   	end
	       	end*/
				end
		       10'd167:if(cntw==24'd4)begin //d1 12/15
	//	  if(din != wdatain)begin
	//	  		  CCERR <= 1'b0;
		
		  		  // ram[storecnt]<={addrp4,addrp3,addrp2[3:0],addrp1,din};
	//				ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+c_cyc_count1[11:8],addrs1+c_cyc_count1[7:0],din};
	//			   storecnt <= storecnt + 1;
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
       next <= 10'd168;	
	/*		end else  begin
			CCERR <= 1'b1;
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd164;
				end*/
				end
		10'd168:if(cntw==24'd4)	begin	//12/14 d2  12/14 d4  d4 12/26
		 if(din != wdatain )begin
	//	 if(din != c_cyc_count1[7:0] )begin
		 // if(din != w_cyc_count1[7:0] )begin
	//	 if(DATA != wdatain)begin
		  		//  CCERR <= 1'b0;
				 
			//		ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+c_cyc_count1[11:8],addrs1+c_cyc_count1[7:0],din[7:0]};
						ram[storecnt]<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+w_cyc_count1[11:8],addrs1+w_cyc_count1[7:0],din[7:0]};
				   storecnt <= storecnt + 1;
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
		//  c_cyc_count1 <=c_cyc_count1 +1;  //12/26
           next <= 10'd169;	//161 12/26		 //162
			
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
		 // c_cyc_count1 <=c_cyc_count1 +1;   //12/26
           next <= 10'd169;	//161 12/26		 //162				
				
		     end	 		
				end
			 10'd169 : if ( cntw == 24 'd1 ) begin //	
		//	   c_cyc_count1 <=c_cyc_count1 +1;
				w_cyc_count1 <=w_cyc_count1 +1;
				  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
				 cntw <= 24 'h000000;
				   next <= 10'd165;  //161 2020222
				end
		
///////////////////////////////////////////conparecheck 			
	
////////////////////////compare check read status  compare check concluding////////////////////////////////////////////////////////////////////////////
       10'd170 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	  tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd171;
           end
       10'd171 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
	//	    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd172; 
           end
       10'd172 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h70;
		//    tsw <= 8 'h5f;   //movement check
       cntw <= 24 'h000000;
           next <= 10'd173;
           end
       10'd173 : if ( cntw == 24 'd2 ) begin
		  
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
      // tsw <= 8 'hzz;//1210
		  tsw <= 8'h0000;
       cntw <= 24 'h000000;
           next <= 10'd174; 
           end
       10'd174 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;          
           next <= 10'd175;
           end
       10'd175 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd176; 
           end
       10'd176 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd177;
           end								
       10'd177 : if ( cntw == 24 'd21 ) begin //21 12/16
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b0;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
              next <= 10'd178;
           end
       10'd178 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd179;//254 12/10
           end	
		 10'd179:if(cntw ==24'd2)begin  //12/10
	     if(din ==8'h80||din==8'hc0)begin
		  next <= 10'd177;  //d172 12/26
		  end else if(din ==8'he0)begin
		  next <= 10'd254;
		  end
		 end 	  
		///////////////////////////////////////////read page all start///0x03/////////////////////////////////////////////////////////////	
		  10'd190 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
	     instatus <= 4'b1111;
       cntw <= 24 'h000000;
		  r_cyc_count1<=16'h0000;
       next <= 10'd191;
           end
       10'd191 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
       next <= 10'd192; 
           end
       10'd192 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
       next <= 10'd193;
           end
       10'd193 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd194; 
           end
       10'd194 : if ( cntw == 24 'd6 ) begin //LSB
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= addrs1;
       cntw <= 24 'h000000;          
       next <= 10'd195;
           end
       10'd195 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= addrs1;
       cntw <= 24 'h000000;
       next <= 10'd196; 
           end
       10'd196 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd197;
           end								
       10'd197 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs2;
       cntw <= 24 'h000000;          
       next <= 10'd198;
           end
       10'd198 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs2;
       cntw <= 24 'h000000;
       next <= 10'd199; 
           end
       10'd199 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd200;
           end								
       10'd200 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;          
       next <= 10'd201;
           end
       10'd201 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;
           next <= 10'd202; 
           end
       10'd202 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd203;
           end											
       10'd203 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= addrs4+adcyccnt[15:8];
       cntw <= 24 'h000000;          
           next <= 10'd204;
           end
       10'd204 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= addrs4+adcyccnt[15:8];  
       cntw <= 24 'h000000;
           next <= 10'd205; 
           end
       10'd205 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd206;
           end											
		  10'd206 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
       next <= 10'd207;
           end
       10'd207 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
           next <= 10'd208; 
           end
       10'd208 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
           next <= 10'd209;//11/23  12/28 d62
           end				
		  
	     10'd209 : if ( cntw == 24 'd21 ) begin
		  if(RB == 1'b0)begin
		  cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= 8 'h0000;
	     cntw <= 24 'h000000;
		  next<= 10'd208;  //
			 end else begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
       next <= 10'd210;
			  end
           end
    /*   10'd200 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;
				end
		  10'd201:if(cntw==24'd1)begin
		  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b0;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;	
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd202;			
				end		
				
        end	*/
				10'd210:if(cntw==24'd5)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				cntw <= 24 'h000000;
				next <= 10'd211;
			 end
				10'd211:if(cntw==24'd4)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				bramstorecnttemp2 <=bramstorecnt;//20
           bramstorecnt <= bramstorecntoffset2;
				cntw <= 24 'h000000;
				next <= 10'd212;
			 end
			  10'd212:if(cntw==24'd2)begin
			  toramen<=1'b0;
			  	toramdata<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+r_cyc_count1[11:8],addrs1+r_cyc_count1[7:0],din[7:0]};
 				cntw <= 24 'h000000;
					next <= 10'd213;//62
		  end
		  	 10'd213:if(cntw==24'd2)begin
			   toramen <=1'b1;
				adcyccnt <= adcyccnt + 64; //64/20/2/27	
				cntw <= 24 'h000000;
				next <= 10'd214;//62
				end
			10'd214:if(cntw==24'd2)begin
			   bramstorecntoffset2 <= bramstorecntoffset2 +1 ;
	         bramstorecnt <= bramstorecnttemp2;
			   toramen <=1'b0;		
				bramstorecnt<=bramstorecnt+1;
				cntw <= 24 'h000000;
		   	next <= 10'd254;//62
				end
		  10'd300 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
	     instatus <= 4'b0111;
       cntw <= 24 'h000000;
		  r_cyc_count1<=16'h0000;
       next <= 10'd301;
           end
       10'd301 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
       next <= 10'd302; 
           end
       10'd302 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h00;
       cntw <= 24 'h000000;
       next <= 10'd303;
           end
       10'd303 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd304; 
           end
       10'd304 : if ( cntw == 24 'd6 ) begin //LSB
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= addrs1;
       cntw <= 24 'h000000;          
       next <= 10'd305;
           end
       10'd305 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= addrs1;
       cntw <= 24 'h000000;
       next <= 10'd306; 
           end
       10'd306 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd307;
           end								
       10'd307 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs2;
       cntw <= 24 'h000000;          
       next <= 10'd308;
           end
       10'd308 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs2;
       cntw <= 24 'h000000;
       next <= 10'd309; 
           end
       10'd309 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd310;
           end								
       10'd310 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;          
       next <= 10'd311;
           end
       10'd311 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= addrs3+adcyccnt[7:0];
       cntw <= 24 'h000000;
           next <= 10'd312; 
           end
       10'd312 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd313;
           end											
       10'd313 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= addrs4+adcyccnt[15:8];
       cntw <= 24 'h000000;          
           next <= 10'd314;
           end
       10'd314 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= addrs4+adcyccnt[15:8];  
       cntw <= 24 'h000000;
           next <= 10'd315; 
           end
       10'd315 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
           next <= 10'd316;
           end											
		  10'd316 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
       next <= 10'd317;
           end
       10'd317 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
           next <= 10'd318; 
           end
       10'd318 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h30;
       cntw <= 24 'h000000;
           next <= 10'd319;//11/23  12/28 d62
           end				
		  
	     10'd319 : if ( cntw == 24 'd21 ) begin
		  if(RB == 1'b0)begin
		  cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= 8 'h0000;
	     cntw <= 24 'h000000;
		  next<= 10'd318;  //
			 end else begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
       next <= 10'd320;
			  end
           end
    /*   10'd200 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;
				end
		  10'd201:if(cntw==24'd1)begin
		  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b0;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;	
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd202;			
				end		
				
        end	*/
				10'd320:if(cntw==24'd5)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				cntw <= 24 'h000000;
				next <= 10'd321;
			 end
				10'd321:if(cntw==24'd4)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				bramstorecnttemp3 <=bramstorecnt;//20
           bramstorecnt <= bramstorecntoffset3;
				cntw <= 24 'h000000;
				next <= 10'd322;
			 end
			  10'd322:if(cntw==24'd2)begin
			  toramen<=1'b0;
			  	toramdata<={addrs4+adcyccnt[15:8],addrs3+adcyccnt[7:0],addrs2[3:0]+r_cyc_count1[11:8],addrs1+r_cyc_count1[7:0],din[7:0]};
 				cntw <= 24 'h000000;
					next <= 10'd323;//62
		  end
		  	 10'd323:if(cntw==24'd2)begin
			   toramen <=1'b1;
		//		adcyccnt <= adcyccnt + 64; //64/20/2/27	3/7
				cntw <= 24 'h000000;
				next <= 10'd324;//62
				end
			10'd324:if(cntw==24'd2)begin
	//		   bramstorecntoffset3 <= bramstorecntoffset3 +1 ;
	         bramstorecnt <= bramstorecnttemp3;
			   toramen <=1'b0;		
	//			bramstorecnt<=bramstorecnt+1;
				cntw <= 24 'h000000;
		   	next <= 10'd325;//62
				end
	/////////////////////random read 800h//////////////////////////////////////////
   	10'd325 : if ( cntw == 24 'd70 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h05;
	 //    instatus <= 4'b0111;
       cntw <= 24 'h000000;
		  r_cyc_count1<=16'h0000;
       next <= 10'd326;
           end
       10'd326 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h05;
       cntw <= 24 'h000000;
       next <= 10'd327; 
           end
       10'd327 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h05;
       cntw <= 24 'h000000;
       next <= 10'd328;
           end		
				
	    10'd328 : if ( cntw == 24 'd2 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd329; 
           end
       10'd329 : if ( cntw == 24 'd6 ) begin //LSB
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= 8'h00;
       cntw <= 24 'h000000;          
       next <= 10'd330;
           end
       10'd330 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw<= 8'h00;
       cntw <= 24 'h000000;
       next <= 10'd331; 
           end
       10'd331 : if ( cntw == 24 'd2 ) begin //entrymode_on
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd332;
           end								
       10'd332 : if ( cntw == 24 'd6 ) begin //disp_clear
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= 8'h08;
       cntw <= 24 'h000000;          
       next <= 10'd333;
           end
       10'd333 : if ( cntw == 24 'd4 ) begin
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b1;
		  ren <= 1'b1;
		  wp  <= 1'b1;
	     tsw <= 8'h08;
       cntw <= 24 'h000000;
       next <= 10'd334; 
           end
       10'd334 : if ( cntw == 24 'd2 ) begin //
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'hzz;
       cntw <= 24 'h000000;
       next <= 10'd335;
           end											
	//////////////////////////////rondom page read command2 E0h///////////////////////		
		  10'd335 : if ( cntw == 24 'd3 ) begin //
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'he0;
       cntw <= 24 'h000000;
       next <= 10'd336;
           end
       10'd336 : if ( cntw == 24 'd1 ) begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b0;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'he0;
       cntw <= 24 'h000000;
           next <= 10'd337; 
           end
       10'd337 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'he0;
       cntw <= 24 'h000000;
           next <= 10'd338;//11/23  12/28 d62
           end					
	//////////////////////////////////////////read cycle start//////read page///////////		
		  
	     10'd338 : if ( cntw == 24 'd21 ) begin
		  if(RB == 1'b0)begin
		  cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
		  tsw <= 8 'h0000;
	     cntw <= 24 'h000000;
		  next<= 10'd337;  //
			 end else begin
       cle <= 1'b1;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
       next <= 10'd339;
			  end
           end
    /*   10'd200 : if ( cntw == 24 'd4 ) begin 
       cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;
				end
		  10'd201:if(cntw==24'd1)begin
		  if(RB == 1'b0)begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b0;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd201;	
				end else begin
		  cle <= 1'b0;
       cen <= 1'b0;
       wen <= 1'b1;
		  ale <= 1'b0;
		  ren <= 1'b1;//       read trigger 0Byte
		  wp  <= 1'b1;
       tsw <= 8 'h0000;
       cntw <= 24 'h000000;
           next <= 10'd202;			
				end		
				
        end	*/
				10'd339:if(cntw==24'd5)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b0;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				cntw <= 24 'h000000;
				next <= 10'd340;
			 end
				10'd340:if(cntw==24'd4)begin
				cle <= 1'b0;
				cen <= 1'b0;
				wen <= 1'b1;
				ale <= 1'b0;
				ren <= 1'b1;
				wp  <= 1'b1;
				tsw <= 8 'h0000;
				bramstorecnttemp3 <=bramstorecnt;//20
           bramstorecnt <= bramstorecntoffset3;
				cntw <= 24 'h000000;
				next <= 10'd341;
			 end
			  10'd341:if(cntw==24'd2)begin
			  toramen<=1'b0;
			  	toramdata[19:0]<={12'b100000000000,din[7:0]};
 				cntw <= 24 'h000000;
					next <= 10'd342;//62
		  end
		  	 10'd342:if(cntw==24'd2)begin
			   toramen <=1'b1;
				adcyccnt <= adcyccnt + 64; //64/20/2/27	
				cntw <= 24 'h000000;
				next <= 10'd343;//62
				end
			10'd343:if(cntw==24'd2)begin
			   bramstorecntoffset3 <= bramstorecntoffset3 +1 ;
	         bramstorecnt <= bramstorecnttemp3;
			   toramen <=1'b0;		
				bramstorecnt<=bramstorecnt+1;
				cntw <= 24 'h000000;
		   	next <= 10'd254;//62			
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				end
      endcase
      //end
end
end

//assign WP =wp;
 assign WP =1'b1;
assign CLE = cle;
assign CE = cen;
assign WE = wen;
assign ALE =ale;
assign RE = ren;
//assign TSW=tsw;
//assign TSW = dataout;
assign R_CYC_COUNT1 = r_cyc_count1;
assign ADCYCCNT =adcyccnt;
assign EN = ~WE | ~RE ;
assign sEN = ~WE | ~RE;
assign W_CYC_COUNT1 =w_cyc_count1;
assign INSTATUS = instatus;
assign CCERR = ~RB;

endmodule