Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. `include "../include/tune.v"
  2.  
  3. module zint(
  4.         input zclk,
  5.         input fclk,
  6.         input int_start,
  7.  
  8.         input iorq_n,
  9.         input m1_n,
  10.  
  11.         output reg int_n
  12. );
  13.  
  14.         reg ibeg;
  15.         reg ibg1,ibg2,ibg3;
  16.  
  17.         wire intend;
  18.  
  19.         reg [6:0] intctr;
  20.  
  21.  
  22.  
  23. `ifdef SIMULATE
  24.         initial
  25.         begin
  26.                 ibeg = 0;
  27.                 intctr = 7'b0100000;
  28.         //      int_n = 1'b1;
  29.  
  30.                 force int_n = 1'b1;
  31.         end
  32. `endif
  33.  
  34.  
  35.  
  36.         always @(posedge fclk)
  37.         begin
  38.                 if( int_start )
  39.                         ibeg <= ~ibeg;
  40.         end
  41.  
  42.         always @(posedge zclk)
  43.         begin
  44.                 ibg1 <= ibeg;
  45.                 ibg2 <= ibg1;
  46.                 ibg3 <= ibg2;
  47.         end
  48.  
  49.  
  50.         always @(posedge zclk)
  51.         begin
  52.                 if( ibg3!=ibg2 )
  53.                         intctr <= 7'd0;
  54.                 else if( ~intctr[5] )
  55.                         intctr <= intctr + 7'd1;
  56.         end
  57.  
  58.  
  59.         assign intend = intctr[5] | ( ~(iorq_n|m1_n) );
  60.  
  61.  
  62.         always @(posedge zclk)
  63.         begin
  64.                 if( ibg3!=ibg2 )
  65.                         int_n <= 1'b0;
  66.                 else if( intend )
  67.                         int_n <= 1'b1;
  68.         end
  69.  
  70.  
  71.  
  72.  
  73.  
  74. endmodule
  75.  
  76.