From b14e842655756f2954129d60ae0224e731d9504d Mon Sep 17 00:00:00 2001
From: Daniel Newbrook <dwn1c21@soton.ac.uk>
Date: Fri, 22 Sep 2023 10:00:03 +0100
Subject: [PATCH] Add edge detection for trig converter

---
 wrapper/logical/sldma350_trig_converter.v | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/wrapper/logical/sldma350_trig_converter.v b/wrapper/logical/sldma350_trig_converter.v
index b27936d..f2cbe08 100644
--- a/wrapper/logical/sldma350_trig_converter.v
+++ b/wrapper/logical/sldma350_trig_converter.v
@@ -37,11 +37,28 @@ assign DMAC_DMA_REQ_ERR = dma_err;
 assign trig_in_req_type = 2'b10;
 assign DMAC_DMA_DONE = out_ack;
 
+reg         req_0;
+reg         req_1;
+reg         DMAC_DMA_REQ_EDGE;
+
+always @(posedge clk) begin
+    req_0<=DMAC_DMA_REQ;
+    req_1<=req_0;
+    if (req_0&~req_1) begin
+        DMAC_DMA_REQ_EDGE<=1'b1;
+    end else begin
+        DMAC_DMA_REQ_EDGE<=1'b0;
+    end
+end
+
 always @(negedge resetn or posedge clk) begin
     if(~resetn) begin
         state <= IDLE;
         dma_err<= 1'b0;
         out_ack <= 1'b0;
+        req_0 <= 1'b0;
+        req_1 <= 1'b0;
+        DMAC_DMA_REQ_EDGE <= 1'b0;
     end else begin
         state <= next_state;
     end
@@ -59,7 +76,7 @@ always @* begin
 case(state)
     IDLE: begin
         trig_req = 1'b0;
-        if (DMAC_DMA_REQ) begin
+        if (DMAC_DMA_REQ_EDGE & ~trig_in_ack) begin
             req_err = 1'b0;
             next_state = START_REQ;
         end
-- 
GitLab