Achronix Speedster22i sBus User Manual

Page 26

Advertising
background image

26

UG047, October 24, 2013

if ((sbus_cs[3] && i_sbus_ack) || (sbus_cs[4] &&
(&rdwr_data_cnt)))
o_reg_rdwr_valid <= 1'b1;
else
o_reg_rdwr_valid <= 1'b0;
end


////////////////////////////////////////////////////////////////
// RD/WR DATA shift counter
////////////////////////////////////////////////////////////////
always @(posedge i_clk or negedge i_rst_n)
begin
if (!i_rst_n)
rdwr_data_cnt <= 'b0;
else
begin
if (sbus_cs[2] || (sbus_cs[4] && i_sbus_ack))
rdwr_data_cnt <= rdwr_data_cnt + 1;
else
rdwr_data_cnt <= 'b0;
end
end

////////////////////////////////////////////////////////////////
// Write data Shift, Serial to parallel conversion
////////////////////////////////////////////////////////////////
always @(posedge i_clk or negedge i_rst_n)
begin
if (!i_rst_n)
rd_data_shift_in <= 'b0;
else
if (sbus_cs[4] && i_sbus_ack)
rd_data_shift_in <=
{i_sbus_d[1:0],rd_data_shift_in[PBUS_DATA_WIDTH-1:2]};
else
rd_data_shift_in <= 'b0;
end

assign o_reg_rd_data = rd_data_shift_in;



endmodule

Advertising