OpenCores
URL https://opencores.org/ocsvn/i650/i650/trunk

Subversion Repositories i650

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 5 to Rev 6
    Reverse comparison

Rev 5 → Rev 6

/i650/trunk/rtl/timing.v
35,213 → 35,213
output reg dx, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10,
output reg d1_d5, d5_dx, d5_d10, d1_dx, d5_d9, d10_d1_d5,
//output reg dxcu_d1cu, d10cl_d0cu,
output dxl, dxu, d0l, d0u, d1l, d1u, d2l, d10u,
output reg w0, w1, w2, w3, w4, w5, w6, w7, w8, w9,
output reg wl, wu, ewl,
output reg s0, s1, s2, s3, s4,
output reg hp,
output reg[0:9] digit_idx,
output reg[0:3] early_idx, ontime_idx
output dxl, dxu, d0l, d0u, d1l, d1u, d2l, d10u,
output reg w0, w1, w2, w3, w4, w5, w6, w7, w8, w9,
output reg wl, wu, ewl,
output reg s0, s1, s2, s3, s4,
output reg hp,
output reg[0:9] digit_idx,
output reg[0:3] early_idx, ontime_idx
);
 
reg[0:3] digit_ctr;
reg[0:3] word_ctr;
reg[0:2] sector_ctr;
assign dxl = dx & wl;
assign dxu = dx & wu;
assign d0l = d0 & wl;
assign d0u = d0 & wu;
assign d1l = d1 & wl;
assign d1u = d1 & wu;
assign d2l = d2 & wl;
assign d10u = d10 & wu;
//-----------------------------------------------------------------------------
// 650 four-phase clock
//-----------------------------------------------------------------------------
always @(posedge rst, posedge clk) begin
if (rst) begin
ap <= 1;
bp <= 0;
cp <= 0;
dp <= 0;
end else begin
ap <= dp;
bp <= ap;
cp <= bp;
dp <= cp;
end;
end;
//-----------------------------------------------------------------------------
// Counter-based timing signals
//-----------------------------------------------------------------------------
always @(posedge rst, posedge dp) begin
if (rst) begin
dx <= 0;
d0 <= 0;
d1 <= 0;
d2 <= 0;
d3 <= 0;
d4 <= 0;
d5 <= 0;
d6 <= 0;
d7 <= 0;
d8 <= 0;
d9 <= 0;
d10 <= 0;
d1_d5 <= 0;
d5_dx <= 0;
d5_d10 <= 0;
d1_dx <= 0;
d5_d9 <= 0;
d10_d1_d5 <= 0;
w0 <= 0;
w1 <= 0;
w2 <= 0;
w3 <= 0;
w4 <= 0;
w5 <= 0;
w6 <= 0;
w7 <= 0;
w8 <= 0;
w9 <= 0;
wu <= 0;
wl <= 0;
ewl <= 0;
s0 <= 0;
s1 <= 0;
s2 <= 0;
s3 <= 0;
s4 <= 0;
hp <= 0;
digit_ctr <= 4'd0;
word_ctr <= 4'd0;
sector_ctr <= 4'd0;
digit_idx <= 10'd599;
early_idx <= 4'd10;
ontime_idx <= 4'd11;
end else begin
digit_idx <= (digit_idx + 1) % 600;
early_idx <= (early_idx + 1) % 12;
ontime_idx <= (ontime_idx + 1) % 12;
digit_ctr <= (digit_ctr + 1) % 12;
if (digit_ctr == 4'd11) begin
word_ctr <= (word_ctr + 1) % 10;
if (word_ctr == 9) begin
sector_ctr <= (sector_ctr + 1) % 5;
end;
end;
case (digit_ctr)
4'd0: begin
d10 <= 0; dx <= 1;
d5_dx <= 0;
d1_dx <= 0;
d10_d1_d5 <= 0;
wl <= ~word_ctr[3];
wu <= word_ctr[3];
case (word_ctr)
4'd0: begin
w9 <= 0; w0 <= 1;
case (sector_ctr)
3'd0: begin
s4 <= 0; s0 <= 1;
hp <= 1;
end
3'd1: begin
s0 <= 0; s1 <= 1;
end
3'd2: begin
s1 <= 0; s2 <= 1;
end
3'd3: begin
s2 <= 0; s3 <= 1;
end
3'd4: begin
s3 <= 0; s4 <= 1;
end
endcase;
end
4'd1: begin
w0 <= 0; w1 <= 1;
end
4'd2: begin
w1 <= 0; w2 <= 1;
end
4'd3: begin
w2 <= 0; w3 <= 1;
end
4'd4: begin
w3 <= 0; w4 <= 1;
end
4'd5: begin
w4 <= 0; w5 <= 1;
end
4'd6: begin
w5 <= 0; w6 <= 1;
end
4'd7: begin
w6 <= 0; w7 <= 1;
end
4'd8: begin
w7 <= 0; w8 <= 1;
end
4'd9: begin
w8 <= 0; w9 <= 1;
end
endcase;
end
4'd1: begin
dx <= 0; d0 <= 1;
hp <= 0;
end
4'd2: begin
d0 <= 0; d1 <= 1;
d1_d5 <= 1;
end
4'd3: begin
d1 <= 0; d2 <= 1;
d1_dx <= 1;
d10_d1_d5 <= 1;
end
4'd4: begin
d2 <= 0; d3 <= 1;
end
4'd5: begin
d3 <= 0; d4 <= 1;
ewl <= wu;
end
4'd6: begin
d4 <= 0; d5 <= 1;
d1_d5 <= 0;
d10_d1_d5 <= 0;
d5_dx <= 1;
d5_d10 <= 1;
d5_d9 <= 1;
end
4'd7: begin
d5 <= 0; d6 <= 1;
end
4'd8: begin
d6 <= 0; d7 <= 1;
end
4'd9: begin
d7 <= 0; d8 <= 1;
end
4'd10: begin
d8 <= 0; d9 <= 1;
d5_d9 <= 0;
end
4'd11: begin
d9 <= 0; d10 <= 1;
d5_d10 <= 0;
d10_d1_d5 <= 1;
end
endcase;
end;
end;
reg[0:3] digit_ctr;
reg[0:3] word_ctr;
reg[0:2] sector_ctr;
assign dxl = dx & wl;
assign dxu = dx & wu;
assign d0l = d0 & wl;
assign d0u = d0 & wu;
assign d1l = d1 & wl;
assign d1u = d1 & wu;
assign d2l = d2 & wl;
assign d10u = d10 & wu;
//-----------------------------------------------------------------------------
// 650 four-phase clock
//-----------------------------------------------------------------------------
always @(posedge rst, posedge clk) begin
if (rst) begin
ap <= 1;
bp <= 0;
cp <= 0;
dp <= 0;
end else begin
ap <= dp;
bp <= ap;
cp <= bp;
dp <= cp;
end;
end;
//-----------------------------------------------------------------------------
// Counter-based timing signals
//-----------------------------------------------------------------------------
always @(posedge rst, posedge dp) begin
if (rst) begin
dx <= 0;
d0 <= 0;
d1 <= 0;
d2 <= 0;
d3 <= 0;
d4 <= 0;
d5 <= 0;
d6 <= 0;
d7 <= 0;
d8 <= 0;
d9 <= 0;
d10 <= 0;
d1_d5 <= 0;
d5_dx <= 0;
d5_d10 <= 0;
d1_dx <= 0;
d5_d9 <= 0;
d10_d1_d5 <= 0;
w0 <= 0;
w1 <= 0;
w2 <= 0;
w3 <= 0;
w4 <= 0;
w5 <= 0;
w6 <= 0;
w7 <= 0;
w8 <= 0;
w9 <= 0;
wu <= 0;
wl <= 0;
ewl <= 0;
s0 <= 0;
s1 <= 0;
s2 <= 0;
s3 <= 0;
s4 <= 0;
hp <= 0;
digit_ctr <= 4'd0;
word_ctr <= 4'd0;
sector_ctr <= 4'd0;
digit_idx <= 10'd599;
early_idx <= 4'd10;
ontime_idx <= 4'd11;
end else begin
digit_idx <= (digit_idx + 1) % 600;
early_idx <= (early_idx + 1) % 12;
ontime_idx <= (ontime_idx + 1) % 12;
digit_ctr <= (digit_ctr + 1) % 12;
if (digit_ctr == 4'd11) begin
word_ctr <= (word_ctr + 1) % 10;
if (word_ctr == 9) begin
sector_ctr <= (sector_ctr + 1) % 5;
end;
end;
case (digit_ctr)
4'd0: begin
d10 <= 0; dx <= 1;
d5_dx <= 0;
d1_dx <= 0;
d10_d1_d5 <= 0;
wl <= ~word_ctr[3];
wu <= word_ctr[3];
case (word_ctr)
4'd0: begin
w9 <= 0; w0 <= 1;
case (sector_ctr)
3'd0: begin
s4 <= 0; s0 <= 1;
hp <= 1;
end
3'd1: begin
s0 <= 0; s1 <= 1;
end
3'd2: begin
s1 <= 0; s2 <= 1;
end
3'd3: begin
s2 <= 0; s3 <= 1;
end
3'd4: begin
s3 <= 0; s4 <= 1;
end
endcase;
end
4'd1: begin
w0 <= 0; w1 <= 1;
end
4'd2: begin
w1 <= 0; w2 <= 1;
end
4'd3: begin
w2 <= 0; w3 <= 1;
end
4'd4: begin
w3 <= 0; w4 <= 1;
end
4'd5: begin
w4 <= 0; w5 <= 1;
end
4'd6: begin
w5 <= 0; w6 <= 1;
end
4'd7: begin
w6 <= 0; w7 <= 1;
end
4'd8: begin
w7 <= 0; w8 <= 1;
end
4'd9: begin
w8 <= 0; w9 <= 1;
end
endcase;
end
4'd1: begin
dx <= 0; d0 <= 1;
hp <= 0;
end
4'd2: begin
d0 <= 0; d1 <= 1;
d1_d5 <= 1;
end
4'd3: begin
d1 <= 0; d2 <= 1;
d1_dx <= 1;
d10_d1_d5 <= 1;
end
4'd4: begin
d2 <= 0; d3 <= 1;
end
4'd5: begin
d3 <= 0; d4 <= 1;
ewl <= wu;
end
4'd6: begin
d4 <= 0; d5 <= 1;
d1_d5 <= 0;
d10_d1_d5 <= 0;
d5_dx <= 1;
d5_d10 <= 1;
d5_d9 <= 1;
end
4'd7: begin
d5 <= 0; d6 <= 1;
end
4'd8: begin
d6 <= 0; d7 <= 1;
end
4'd9: begin
d7 <= 0; d8 <= 1;
end
4'd10: begin
d8 <= 0; d9 <= 1;
d5_d9 <= 0;
end
4'd11: begin
d9 <= 0; d10 <= 1;
d5_d10 <= 0;
d10_d1_d5 <= 1;
end
endcase;
end;
end;
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.