From 96fd68f076b55434743d511dab7b002a8997ff85 Mon Sep 17 00:00:00 2001 From: UzixLS Date: Mon, 26 Oct 2020 21:56:58 +0300 Subject: [PATCH] cpld: do not stop screen render on reset --- cpld/top.v | 45 ++++++++++++++++----------------------------- cpld/zx_ula.qsf | 2 +- out/zx_ula.pof | Bin 8023 -> 8023 bytes 3 files changed, 17 insertions(+), 30 deletions(-) diff --git a/cpld/top.v b/cpld/top.v index dbcc61f..72de1c2 100644 --- a/cpld/top.v +++ b/cpld/top.v @@ -80,11 +80,8 @@ end reg [4:0] blink_cnt; wire blink = blink_cnt[$bits(blink_cnt)-1]; -always @(posedge n_int or negedge rst_n) begin - if (!rst_n) - blink_cnt <= 0; - else - blink_cnt <= blink_cnt + 1'b1; +always @(posedge n_int) begin + blink_cnt <= blink_cnt + 1'b1; end reg [2:0] border; @@ -99,32 +96,23 @@ wire screen_show = (vc < V_AREA) && (hc >= SCREEN_DELAY) && (hc < H_AREA + SCREE wire screen_update = (vc < V_AREA) && (hc < H_AREA) && hc0[3:0] == 4'b1111; wire border_update = (hc0[3:0] == 4'b1111) || (screen_show == 0); -always @(posedge clk14 or negedge rst_n) begin - if (!rst_n) begin - screen_read <= 0; - attr <= 0; - bitmap <= 0; - attr_next <= 0; - bitmap_next <= 0; - end - else begin - screen_read <= n_mreq == 1'b1 && n_iorq == 1'b1; +always @(posedge clk14) begin + screen_read <= n_mreq == 1'b1 && n_iorq == 1'b1; - if (attr_read) - attr_next <= vd; - if (bitmap_read) - bitmap_next <= vd; + if (attr_read) + attr_next <= vd; + if (bitmap_read) + bitmap_next <= vd; - if (screen_update) - attr <= attr_next; - else if (border_update) - attr[7:3] <= {2'b00, border}; + if (screen_update) + attr <= attr_next; + else if (border_update) + attr[7:3] <= {2'b00, border}; - if (screen_update) - bitmap <= {bitmap_next[7] ^ (attr_next[7] & blink), bitmap_next[6:0]}; - else if (hc0[0]) - bitmap <= {bitmap[6] ^ (attr[7] & blink), bitmap[5:0], 1'b0}; - end + if (screen_update) + bitmap <= {bitmap_next[7] ^ (attr_next[7] & blink), bitmap_next[6:0]}; + else if (hc0[0]) + bitmap <= {bitmap[6] ^ (attr[7] & blink), bitmap[5:0], 1'b0}; end @@ -155,7 +143,6 @@ always @(posedge clk14) n_int <= ~(vc == 239 && hc[8:6] == 3'b101); - /* CLOCK */ assign clkcpu = hc[0]; diff --git a/cpld/zx_ula.qsf b/cpld/zx_ula.qsf index 5b17dd0..a9b8f55 100644 --- a/cpld/zx_ula.qsf +++ b/cpld/zx_ula.qsf @@ -125,7 +125,7 @@ set_global_assignment -name MULTIPLY_BASE_CLOCK_PERIOD_BY 2 -section_id clkcpu set_global_assignment -name OPTIMIZE_HOLD_TIMING OFF set_global_assignment -name FITTER_EFFORT "STANDARD FIT" set_global_assignment -name AUTO_TURBO_BIT ON -set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING ON +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING NORMAL set_global_assignment -name SAVE_DISK_SPACE OFF set_global_assignment -name FIT_ONLY_ONE_ATTEMPT OFF set_global_assignment -name SLOW_SLEW_RATE OFF diff --git a/out/zx_ula.pof b/out/zx_ula.pof index 2b72ec2b49b50143b27d1ada16beba2ebc236314..5fa347b573556c030144352dce88226c260ee27c 100644 GIT binary patch literal 8023 zcmb7JPiP&-8Q&MX#sUjud?_`Q=R-n!aH1zGify{`O21MUChX_ZQIr?%KuKtJgkjzWZ)-Xz=97)YazM*_l7gUc7Q; za<=*5H+$}^wp`W?a5D~pFxe< z(dg@6vVboBi2~Ik*F{U60I)H3x+1f8^gAH{vXeqTac9)TuGE$<}pA6?x7-<0Fas2gpLtH z92XU`f=A;Z9kGbrQ=kmzwBEwtp;QFlE~Q#gaFrAlRK}R=4g8f&{^;3tu&mHbZoF26 zSWyUjbH>V1>L+{IfRf;($NQp%gA7;Fc__y2O74MH97(T|dn*Y$^EZ|N9HJa&-7{7M zR|>LD;pH?K@D+;4D`@G(hQlENMPw!~6L-}Z7V&foHd*d~ktD65Wm-xWsFP9^G7Bzw z98f>VQYnls=km!?yhWbE3LeTC2x;@qZM-H(VI3hz7NMK(43d;=`kr0ATP4Ag_S*Al zWDQN$g-$EB1!!0aqf9YTdJ37fBOEoLSW$er4V$25kz?7%PEk6@h3fuKi%FTt3+_JJHnJEb^ zIt3CHx@rrSgjE#xe)&qKEJZJz67)}rhw}DoK{oeA%PSiobn1#Gc6==Q-eiR~XEx1K z2**GqFkPF$$E=m%SV63z(GqgQ5LO7IC<)GQ_fht$UPB{iC<`^RU>x&=W_2;pigZ

f$N5+(ZSnx@IU&p-0P^H(#GI5^&q?(Tamv?~Q$S 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