Subversion Repositories pentevo

Rev

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

  1. module top
  2. (
  3.         input  wire fclk, // input clock from ICS501 or ext. generator
  4.  
  5.         output wire fclk_fpga, // buffered/delayed clocks for FPGA and videoDAC
  6.         output wire fclk_vdac, //
  7.  
  8.         // main inputs
  9.         input  wire [1:0] v_r, // v_r[1] is V_R+, v_r[0] is V_R-
  10.         input  wire [1:0] v_g, // v_g[1] is V_G+, v_g[0] is V_G-
  11.         input  wire [1:0] v_b, // v_b[1] is V_B+, v_b[0] is V_B-
  12.  
  13.         input  wire       vvsync, // sync signals from FPGA
  14.         input  wire       vhsync,
  15.         input  wire       vcsync,
  16.  
  17.         // main outputs
  18.         output reg  [3:0] d_r, // D_R[3..0]
  19.         output reg  [3:0] d_g,
  20.         output reg  [3:0] d_b,
  21.  
  22.         output reg        fl_vs,
  23.         output reg        fl_hs,
  24.         output reg        fl_cs
  25. );
  26.        
  27.         reg [1:0] ddr_r,
  28.                   ddr_g,
  29.                   ddr_b;
  30.  
  31.         // clock buffering/delay action
  32.         assign fclk_fpga = fclk;
  33.         assign fclk_vdac = fclk;
  34.  
  35.         always @(posedge fclk) // posedge fclk->(10ns)->posedge fclk_fpgs->(13ns)->change of v_* outputs. So here we latch [1:0] part
  36.         begin
  37.                 ddr_r <= v_r;
  38.                 ddr_g <= v_g;
  39.                 ddr_b <= v_b;
  40.         end
  41.  
  42.         always @(negedge fclk) // latch [3:2] part, pipeline [1:0] part to outputs, latch sync signals
  43.         begin
  44.                 d_r <= {v_r, ddr_r};
  45.                 d_g <= {v_g, ddr_g};
  46.                 d_b <= {v_b, ddr_b};
  47.  
  48.                 fl_vs <= vvsync;
  49.                 fl_hs <= vhsync;
  50.                 fl_cs <= vcsync;
  51.         end
  52.  
  53.  
  54. endmodule
  55.  
  56.