]> Joshua Wise's Git repositories - mandelfpga.git/commitdiff
Fixed statekick once and for all, hopefully.
authorJoshua Wise <joshua@rebirth.joshuawise.com>
Tue, 18 Mar 2008 05:30:45 +0000 (01:30 -0400)
committerJoshua Wise <joshua@rebirth.joshuawise.com>
Tue, 18 Mar 2008 05:30:45 +0000 (01:30 -0400)
Main.v

diff --git a/Main.v b/Main.v
index ad8e90c98bf55a0fb261304960929116050da8c0..3dc546bb9f900aad1a4e58d6fe5b9439060af7b7 100644 (file)
--- a/Main.v
+++ b/Main.v
@@ -262,19 +262,21 @@ module Mandelbrot(
                        stageci[2];
        
        reg [7:0] out;
                        stageci[2];
        
        reg [7:0] out;
-       reg typethea = 0;       // Whether we have typed the A.
-       reg statekick = 0;      // State needs to be kicked back to 3'b010 on the next mclk.
-
-       // This is guaranteed to converge after two pixclks.
+       
+       // We detect when the state should be poked by a high negedge followed
+       // by a high posedge -- if tha thappens, then we're guaranteed that the
+       // state following the current state will be 100.
+       reg lastneg;
        always @(negedge mclk)
        always @(negedge mclk)
-               if (pixclk && !statekick) begin
-                       statekick <= 1;
-               end else if (statekick) begin // This is the edge of the falling anus.
-                       statekick <= 0;
-               end
+               lastneg <= pixclk;
        
        always @(posedge mclk)
        begin
        
        always @(posedge mclk)
        begin
+               if (lastneg && pixclk)  // If a pixclk has happened, the state should be reset.
+                       state <= 3'b100;
+               else                                            // Otherwise, just poke it forward.
+                       state <= {state[1], state[0], state[2]};
+       
                // Data output handling
                if (state[0]) begin
                        {red, green, blue} <= {out[0],out[3],out[6],out[1],out[4],out[7],out[2],out[5]};
                // Data output handling
                if (state[0]) begin
                        {red, green, blue} <= {out[0],out[3],out[6],out[1],out[4],out[7],out[2],out[5]};
@@ -308,11 +310,6 @@ module Mandelbrot(
                        stageb[1] <= mb[`MAXOUTN];
                        stageci[1] <= curiter[`MAXOUTN];
                end
                        stageb[1] <= mb[`MAXOUTN];
                        stageci[1] <= curiter[`MAXOUTN];
                end
-               
-               if (statekick)          // If a pixclk has happened, the state should be reset.
-                       state <= 3'b010;
-               else                                            // Otherwise, just poke it forward.
-                       state <= {state[1], state[0], state[2]};
        end
 
        MandelUnit mu0(
        end
 
        MandelUnit mu0(
This page took 0.026343 seconds and 4 git commands to generate.