@@ -406,8 +406,13 @@ module soc_top #(
406
406
407
407
graphite # (
408
408
.FB_ADDRESS (DEFAULT_FB_ADDRESS >> 'd1 ),
409
+ `ifdef ZOOM
410
+ .FB_WIDTH (H_RES / 2 ),
411
+ .FB_HEIGHT (V_RES / 2 )
412
+ `else
409
413
.FB_WIDTH (H_RES ),
410
414
.FB_HEIGHT (V_RES )
415
+ `endif
411
416
) graphite (
412
417
.clk (clk_cpu),
413
418
.reset_i (~ rst_n),
@@ -449,7 +454,11 @@ module soc_top #(
449
454
`endif // PS2_KBD
450
455
`ifdef VIDEO
451
456
(iowadr == 8 ) ? { 31'b0 , graphite_cmd_axis_tready} :
457
+ `ifdef ZOOM
458
+ (iowadr == 9 ) ? { 16 '(H_RES / 2 ), 16 '(V_RES / 2 )} :
459
+ `else // ZOOM
452
460
(iowadr == 9 ) ? { 16 '(H_RES ), 16 '(V_RES )} :
461
+ `endif // ZOOM
453
462
(iowadr == 10 ) ? fb_addr :
454
463
(iowadr == 11 ) ? { 31'b0 , vga_vsync} :
455
464
`else // VIDEO
@@ -677,6 +686,19 @@ module soc_top #(
677
686
.Reset (),
678
687
.RPReset ()
679
688
);
689
+
690
+ `ifdef ZOOM
691
+ logic [10 : 0 ] col_counter = 11'd0 ;
692
+ logic [10 : 0 ] line_counter = 11'd0 ;
693
+ logic [19 : 0 ] line_vidadr = 20'd0 ;
694
+ logic line_dup;
695
+
696
+ logic end_of_frame, end_of_line;
697
+ assign end_of_frame = line_counter == V_RES - 1 ;
698
+ assign end_of_line = col_counter == 11 '(H_RES / 32 - 1 );
699
+ assign line_dup = end_of_line && ! line_counter[0 ];
700
+ `endif
701
+
680
702
`endif // VIDEO
681
703
682
704
logic nop;
@@ -694,8 +716,27 @@ module soc_top #(
694
716
`ifdef VIDEO
695
717
2'b10 : begin
696
718
crw <= 1'b0 ; // VGA read
719
+ `ifdef ZOOM
720
+ if (col_counter == 11'd0 )
721
+ line_vidadr <= vidadr;
722
+
723
+ if (end_of_line) begin
724
+ col_counter <= 11'd0 ;
725
+ line_counter <= line_counter + 11'd1 ;
726
+ end else begin
727
+ col_counter <= col_counter + 11'd1 ;
728
+ end
729
+ if (end_of_frame && end_of_line) begin
730
+ vidadr <= 20'd0 ;
731
+ col_counter <= 11'd0 ;
732
+ line_counter <= 11'd0 ;
733
+ end else begin
734
+ vidadr <= line_dup ? line_vidadr : vidadr + 20'd1 ;
735
+ end
736
+ `else // ZOOM
697
737
if (vidadr == 20 '(H_RES * V_RES * 2 / 32 - 1 )) vidadr <= 20'd0 ;
698
738
else vidadr <= vidadr + 20'b1 ;
739
+ `endif // ZOOM
699
740
end
700
741
`endif // VIDEO
701
742
2'b01 , 2'b11 : crw <= 1'b1 ; // cache read/write
0 commit comments