Вспомнил, примерно так:
reg [6:0] State;
reg [19:0] Timer;
reg [19:0] TimerReg;
Код
always @(posedge CLK or negedge RESETn) begin
if (!RESETn) begin
State <= 0; SSP <= 1; TimerReg <= 0;
end else begin
if (Timer == 20'd0) begin
case (State)
0: begin
SSP <= 1;
TimerReg <= 10;
State <= 1;
end
1: begin
SSP <= 0;
TimerReg <= 2;
State <= 2;
end
2: begin
SSP <= 1;
TimerReg <= 2;
State <= 3;
end
3: begin
SSP <= 0;
TimerReg <= 3;
State <= 0;
end
endcase
end
end
end
always @(posedge CLK or negedge RESETn) begin
if (!RESETn) begin
Timer <= 0;
end else begin
if (Timer > 0) Timer <= Timer - 1'b1;
else Timer <= TimerReg;
end
end
У меня I2C конфигуратор так сделан был когда-то (содран)
Надо только довести до ума и параметризировать, еще не проверял...
Быть. torizin-liteha@yandex.ru