From 4fe3fd760692b6c6bc1d9f1c494017fbf3268604 Mon Sep 17 00:00:00 2001 From: Eugene Lozovoy Date: Sun, 18 Dec 2022 14:30:19 +0300 Subject: [PATCH] fix gs glitches with contended timings --- cpld/rtl/top.v | 26 ++++++++++++++++++++------ out/cpld.rev.A1.pof | Bin 16658 -> 16658 bytes 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/cpld/rtl/top.v b/cpld/rtl/top.v index f8db8e6..2221ceb 100644 --- a/cpld/rtl/top.v +++ b/cpld/rtl/top.v @@ -75,6 +75,12 @@ always @(negedge clk32 or negedge rst_n) begin rom_m1_access <= a[15:14] == 2'b00; end +reg n_rd_wr_delayed, n_rd_wr_delayed1; +always @(posedge clk32) begin + n_rd_wr_delayed <= n_rd_wr_delayed1; + n_rd_wr_delayed1 <= n_wr & n_rd; +end + /* CONFIGURATION */ wire ym_ena = cfg[0]; @@ -221,20 +227,28 @@ wire gs_dac3_wr = gs_dac3_cs && ~n_grd; reg gs_flag_cmd, gs_flag_data; wire [7:0] gs_status = {gs_flag_data, 6'b111111, gs_flag_cmd}; -always @(posedge clk32) begin - if ((~n_giorq && n_gm1 && ga[3:0] == 4'h2) || (ioreq_rd && port_b3)) +always @(posedge clk32 or negedge rst_n) begin + if (!rst_n) gs_flag_data <= 1'b0; - else if ((~n_giorq && n_gm1 && ga[3:0] == 4'h3) || (ioreq_wr && port_b3)) + else if (~n_iorq && ~n_rd && n_rd_wr_delayed && port_b3) + gs_flag_data <= 1'b0; + else if (~n_iorq && ~n_wr && n_rd_wr_delayed && port_b3) + gs_flag_data <= 1'b1; + else if (~n_giorq && n_gm1 && ga[3:0] == 4'h2) + gs_flag_data <= 1'b0; + else if (~n_giorq && n_gm1 && ga[3:0] == 4'h3) gs_flag_data <= 1'b1; else if (~n_giorq && n_gm1 && ga[3:0] == 4'hA) gs_flag_data <= ~gs_reg00[0]; end -always @(posedge clk32) begin - if (~n_giorq && n_gm1 && ga[3:0] == 4'h5) +always @(posedge clk32 or negedge rst_n) begin + if (!rst_n) gs_flag_cmd <= 1'b0; - else if (ioreq_wr && port_bb) + else if (~n_iorq && ~n_wr && n_rd_wr_delayed && port_bb) gs_flag_cmd <= 1'b1; + else if (~n_giorq && n_gm1 && ga[3:0] == 4'h5) + gs_flag_cmd <= 1'b0; else if (~n_giorq && n_gm1 && ga[3:0] == 4'hB) gs_flag_cmd <= vol3[5]; end diff --git a/out/cpld.rev.A1.pof b/out/cpld.rev.A1.pof index 89a8a17c700670b4eef92305258b506f27a30fcc..407f2383e8da1cef7a2574035da86197f0558392 100644 GIT binary patch literal 16658 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 literal 16658 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