Subversion Repositories pentevo

Rev

Rev 492 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. // 'fapch', based on zek govnokode
  2.  
  3.  
  4. module fapch_zek
  5. (
  6.         input  wire fclk,
  7.  
  8.         input  wire rdat_n,
  9.  
  10.         output reg  vg_rclk,
  11.         output reg  vg_rawr
  12. );
  13.  
  14.         reg [3:0] rdat_sr;
  15.         reg       rawr_sync;
  16.  
  17.         reg rdat_n_r;
  18.  
  19.         always @ (posedge fclk)
  20.         begin
  21.                 rdat_n_r <= rdat_n;
  22.  
  23.  
  24.             rdat_sr <= { rdat_sr[2:0], rdat_n_r };
  25.             if (rdat_sr == 4'hF || rdat_sr == 4'h0)
  26.                 rawr_sync <= rdat_sr[3];
  27.         end
  28.  
  29.         // rawr
  30.         reg [4:0] rawr_sr;
  31.  
  32.         always @ (posedge fclk)
  33.         begin
  34.             rawr_sr <= { rawr_sr[3:0], rawr_sync };
  35.             vg_rawr <= !(rawr_sr[4] && !rawr_sr[0] ); // rawr 140ns
  36.         end
  37.  
  38.         // rclk
  39.         reg [5:0] counter = 0;
  40.         wire[5:0] delta = 27 - counter;
  41.         wire[5:0] shift = { delta[5], delta[5], delta[4:1] }; // sign div
  42.         wire[5:0] inc   = rawr_sr[1:0] == 2'b10 ? shift : 1;
  43.  
  44.         always @ (posedge fclk)
  45.         begin
  46.             if (counter < 55)
  47.                 counter <= counter + inc;
  48.             else
  49.             begin
  50.                 counter <= 0;
  51.                 vg_rclk = ~vg_rclk;
  52.             end
  53.  
  54.         end
  55.  
  56.         initial
  57.             vg_rclk = 0;
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. endmodule
  66.  
  67.