reg[6:0] Count;
reg En_Count;
always @(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
begin
Count <= 7'b0;
end
else if(Count==7'd50)
Count <= 7'd0;
else if(En_Count)
Count <= Count+1'b1;
else
Count <=7'd0;
end
reg [5:0] i;
reg AD_Cs_r;
reg AD_Clk_r;
reg [7:0] Data_Out_r;
always@(posedge sys_clk or negedge sys_rstn)
if(!sys_rstn)
begin
i<=6'd0;
AD_Cs_r<=1'b1;
AD_Clk_r<=1'b0;
Data_Out_r<=8'd0;
En_Count<=1'b0;
end
else
case(i)
0,1,2,3:
if(Count==7'd50) begin En_Count<=1'b0;i<=i+1'b1;end
else begin En_Count<=1'b1;AD_Cs_r<=1'b0;end
4,6,8,10,12,14,16,18:
if(Count==7'd50) begin En_Count<=1'b0;i<=i+1'b1;end
else if(Count==7'd25) Data_Out_r<={Data_Out_r[6:0],AD_In};
else begin En_Count<=1'b1;AD_Clk_r<=1'b1;end
5,7,9,11,13,15,17,19:
if(Count==7'd50) begin En_Count<=1'b0;i<=i+1'b1;end
else begin En_Count<=1'b1;AD_Clk_r<=1'b0;end
20:
if(Count==7'd50) begin En_Count<=1'b0;i<=i+1'b1;end
else begin En_Count<=1'b1;AD_Cs_r<=1'b1;end
default:
if(Count==7'd50) begin En_Count<=1'b0;i<=i+1'b1;end
else begin En_Count<=1'b1;Data_Out<=Data_Out_r;end
endcase
always @(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
begin
Count <= 6'b0;
AD_CLK_r <= 1'b0;
end
else if(Count < 6'd50)
Count <= Count+1'b1;
else
begin
Count <= 6'd0;
AD_CLK_r <= ~AD_CLK_r;
end
end
assign clk_display = AD_CLK_r;
reg[4:0] COUNTER;
always @(posedge AD_CLK_r or negedge sys_rstn)
begin
if(!sys_rstn) COUNTER <= 1'b0;
else COUNTER <= COUNTER+1'b1;
end
always @(negedge AD_CLK_r )
begin
if(COUNTER >= 5'd2 && COUNTER <= 5'd9)
begin
Data_Out_r<={Data_Out_r[6:0],AD_In};
end
else Data_Out <= Data_Out_r;
end