代码如下:
always @(posedge pixclk or negedge reset_n)
begin
if (!reset_n)
begin
cap_st <= STANBY;
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b10000;
end
else if (syn_rst_in) begin
cap_st <= STANBY;
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b10000;
end
else
casex (cap_st)
STANBY : begin
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b10000;
if (afe_init_end)
cap_st <= CAPTURE_IDLE;
end
CAPTURE_IDLE : begin
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b01000;
if ( fcon_en || (soft_trg_en && soft_trigger_in) || (ext_trg_en && ext_trigger_in))
cap_st <= SWEEP;
end
SWEEP : begin
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b00100;
if ( sweep_end ) cap_st <= LONG_INTG ;
// if (long_exp_en) cap_st <= LONG_INTG ;
// else cap_st <= FRAME_READ;
end
LONG_INTG : begin
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b00010;
if (long_exp_en)
if ( long_intg_end ) cap_st <= FRAME_READ ;
else cap_st <= LONG_INTG ;
else cap_st <= FRAME_READ;
end
FRAME_READ : begin
{cap_stby_en,cap_idle_en, sweep_en, long_intg_en, frame_rd_en} <= 5'b00001;
if ( frame_rd_end )
if (!fcon_en) cap_st <= CAPTURE_IDLE;
else cap_st <= LONG_INTG;
end
default : cap_st <= STANBY;
endcase
end |