User`s manual

529 wire[16:0] vga_out_addr;
530 wire[11:0] ntsc_cb_din;
531 wire[11:0] ntsc_dout;
532 wire[11:0] vga_din;
533 wire[11:0] vga_dout;
534 wire ntsc_cb_in_wr;
535 wire vga_in_wr;
536 assign ntsc_cb_in_wr = 1;
537
538 // ntsc
539
540 adv7185init adv7185(.reset(reset), .clock_27mhz(clock_27mhz),
541 .source(1’b0), .tv_in_reset_b(tv_in_reset_b),
542 .tv_in_i2c_clock(tv_in_i2c_clock),
543 .tv_in_i2c_data(tv_in_i2c_data));
544
545 wire [29:0] ycrcb; // video data (luminance, chrominance)
546 wire [2:0] fvh; // sync for field, vertical, horizontal
547 wire dv; // data valid
548
549 ntsc_decode decode (.clk(tv_in_line_clock1), .reset(reset),
550 .tv_in_ycrcb(tv_in_ycrcb[19:10]),
551 .ycrcb(ycrcb), .f(fvh[2]),
552 .v(fvh[1]), .h(fvh[0]), .data_valid(dv));
553
554 // code to write NTSC data to video memory
555
556 wire [16:0] ntsc_addr;
557 wire [11:0] ntsc_data;
558 wire ntsc_we;
559 ntsc_to_bram n2b (tv_in_line_clock1, tv_in_line_clock1, fvh, dv,
560 ycrcb, ntsc_addr, ntsc_data, ntsc_we, switch[6]);
561
562 // dump a checkerboard into "ntsc" buffer
563 reg[9:0] cur_x = 0;
564 reg[9:0] cur_y = 0;
565 wire[2:0] checkerboard;
566 assign checkerboard = cur_x[7:5] + cur_y[7:5];
567 assign ntsc_cb_din = {{4{checkerboard[2]}}, {4{checkerboard[1]}}, {4{checkerboard[0]}}};
568 always @(posedge tv_in_line_clock1) begin
569 ntsc_cb_in_addr <= (ntsc_cb_in_addr < 76799) ? (ntsc_cb_in_addr + 1) : 0;
570 cur_x <= (cur_x < 319) ? (cur_x + 1) : 0;
571 if ((cur_x == 319) && (cur_y == 239)) begin
572 cur_y <= 0;
573 end
574 else if (cur_x == 319) begin
100