Full Code of daveshah1/CSI2Rx for AI

master 582f870d3140 cached
350 files
52.1 MB
6.2M tokens
13 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (24,970K chars total). Download the full file to get everything.
Repository: daveshah1/CSI2Rx
Branch: master
Commit: 582f870d3140
Files: 350
Total size: 52.1 MB

Directory structure:
gitextract_o_fqoapy/

├── LICENSE
├── README.md
├── misc/
│   └── caminit/
│       ├── .gitignore
│       └── picam_init.cc
├── verilog_cores/
│   ├── .gitignore
│   ├── Makefile
│   ├── README.md
│   ├── csi/
│   │   ├── header_ecc.v
│   │   └── rx_packet_handler.v
│   ├── csi2.core
│   ├── link/
│   │   └── csi_rx_ice40.v
│   ├── misc/
│   │   └── downsample.v
│   ├── phy/
│   │   ├── byte_aligner.v
│   │   ├── dphy_iserdes.v
│   │   ├── dphy_oserdes.v
│   │   └── word_combiner.v
│   └── test/
│       └── icebreaker/
│           ├── .gitignore
│           ├── Makefile
│           ├── constraints.py
│           ├── icecam.pcf
│           ├── top.v
│           └── uart.v
└── vhdl_rx/
    ├── .gitignore
    ├── LICENSE.notes
    ├── README.md
    ├── demo-top/
    │   ├── framebuffer_top.vhd
    │   ├── mig_a.prj
    │   └── ov13850_demo.vhd
    ├── dvi-tx/
    │   ├── dvi_tx_clk_drv.vhd
    │   ├── dvi_tx_tmds_enc.vhd
    │   ├── dvi_tx_tmds_phy.vhd
    │   └── dvi_tx_top.vhd
    ├── examples/
    │   ├── .gitignore
    │   └── ov13850_demo/
    │       ├── ov13850_demo.cache/
    │       │   └── ip/
    │       │       ├── 54144841a4506c29/
    │       │       │   ├── 54144841a4506c29.xci
    │       │       │   ├── dvi_pll_sim_netlist.v
    │       │       │   └── dvi_pll_stub.v
    │       │       ├── 548aa35948ad692b/
    │       │       │   ├── 548aa35948ad692b.xci
    │       │       │   ├── camera_pll_sim_netlist.v
    │       │       │   └── camera_pll_stub.v
    │       │       └── 75280199e9655e6a/
    │       │           ├── 75280199e9655e6a.xci
    │       │           ├── dvi_pll_sim_netlist.v
    │       │           └── dvi_pll_stub.v
    │       ├── ov13850_demo.ip_user_files/
    │       │   ├── ip/
    │       │   │   ├── camera_pll/
    │       │   │   │   └── camera_pll_stub.v
    │       │   │   ├── ddr3_if/
    │       │   │   │   └── ddr3_if_stub.v
    │       │   │   ├── dvi_pll/
    │       │   │   │   └── dvi_pll_stub.v
    │       │   │   ├── ila_0/
    │       │   │   │   └── ila_0_stub.v
    │       │   │   ├── input_line_buffer/
    │       │   │   │   └── input_line_buffer_stub.v
    │       │   │   └── output_line_buffer/
    │       │   │       └── output_line_buffer_stub.v
    │       │   ├── ipstatic/
    │       │   │   ├── hdl/
    │       │   │   │   ├── fifo_generator_v13_1_rfs.v
    │       │   │   │   └── fifo_generator_v13_1_rfs.vhd
    │       │   │   └── simulation/
    │       │   │       ├── blk_mem_gen_v8_3.v
    │       │   │       └── fifo_generator_vlog_beh.v
    │       │   ├── mem_init_files/
    │       │   │   ├── mig_a.prj
    │       │   │   └── mig_b.prj
    │       │   └── sim_scripts/
    │       │       ├── camera_pll_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── ddr3_if/
    │       │       │   ├── activehdl/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── ies/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── modelsim/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── questa/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── riviera/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── vcs/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       ├── mig_b.prj
    │       │       │       └── vlog.prj
    │       │       ├── ddr3_if_1/
    │       │       │   ├── activehdl/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── ies/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── modelsim/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── questa/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── riviera/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── vcs/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       ├── mig_a.prj
    │       │       │       └── vlog.prj
    │       │       ├── dvi_pll_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── framebuffer-ctrl/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   └── vcs/
    │       │       │       └── glbl.v
    │       │       ├── ila_0/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── input_line_buffer/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── input_line_buffer_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── output_line_buffer/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       └── output_line_buffer_1/
    │       │           ├── activehdl/
    │       │           │   └── glbl.v
    │       │           ├── ies/
    │       │           │   └── glbl.v
    │       │           ├── modelsim/
    │       │           │   └── glbl.v
    │       │           ├── questa/
    │       │           │   └── glbl.v
    │       │           ├── riviera/
    │       │           │   └── glbl.v
    │       │           ├── vcs/
    │       │           │   └── glbl.v
    │       │           └── xsim/
    │       │               ├── cmd.tcl
    │       │               ├── glbl.v
    │       │               └── vlog.prj
    │       ├── ov13850_demo.runs/
    │       │   ├── camera_pll_synth_1/
    │       │   │   ├── camera_pll.tcl
    │       │   │   └── dont_touch.xdc
    │       │   ├── ddr3_if_synth_1/
    │       │   │   └── ddr3_if.tcl
    │       │   ├── dvi_pll_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   └── dvi_pll.tcl
    │       │   ├── impl_1/
    │       │   │   └── ov13850_demo.tcl
    │       │   ├── input_line_buffer_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   ├── input_line_buffer.tcl
    │       │   │   ├── input_line_buffer_sim_netlist.v
    │       │   │   └── input_line_buffer_stub.v
    │       │   ├── output_line_buffer_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   ├── output_line_buffer.tcl
    │       │   │   ├── output_line_buffer_sim_netlist.v
    │       │   │   └── output_line_buffer_stub.v
    │       │   └── synth_1/
    │       │       ├── .Xil/
    │       │       │   └── ov13850_demo_propImpl.xdc
    │       │       └── ov13850_demo.tcl
    │       ├── ov13850_demo.sim/
    │       │   └── sim_1/
    │       │       └── synth/
    │       │           └── func/
    │       │               ├── genesys2_fbtest.tcl
    │       │               ├── genesys2_fbtest_func_synth.v
    │       │               └── genesys2_fbtest_vlog.prj
    │       ├── ov13850_demo.srcs/
    │       │   ├── constrs_1/
    │       │   │   └── imports/
    │       │   │       ├── constraints/
    │       │   │       │   └── ddr3_if.xdc
    │       │   │       └── new/
    │       │   │           └── genesys2.xdc
    │       │   └── sources_1/
    │       │       └── ip/
    │       │           ├── camera_pll_1/
    │       │           │   ├── camera_pll.v
    │       │           │   ├── camera_pll.xci
    │       │           │   ├── camera_pll.xdc
    │       │           │   ├── camera_pll_board.xdc
    │       │           │   ├── camera_pll_clk_wiz.v
    │       │           │   ├── camera_pll_ooc.xdc
    │       │           │   ├── camera_pll_sim_netlist.v
    │       │           │   └── camera_pll_stub.v
    │       │           ├── ddr3_if/
    │       │           │   ├── mig_a.prj
    │       │           │   └── mig_b.prj
    │       │           ├── ddr3_if_1/
    │       │           │   ├── ddr3_if/
    │       │           │   │   └── user_design/
    │       │           │   │       ├── constraints/
    │       │           │   │       │   ├── ddr3_if.xdc
    │       │           │   │       │   └── ddr3_if_ooc.xdc
    │       │           │   │       └── rtl/
    │       │           │   │           ├── axi/
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_addr_decode.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_read.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_reg.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_reg_bank.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_write.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_ar_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_aw_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_b_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_arbiter.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_fsm.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_translator.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_incr_cmd.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_r_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_simple_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_w_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_wr_cmd_fsm.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_wrap_cmd.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_a_upsizer.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axi_register_slice.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axi_upsizer.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axic_register_slice.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_and.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_latch_and.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_latch_or.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_or.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_command_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator_sel.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator_sel_static.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_r_upsizer.v
    │       │           │   │           │   └── mig_7series_v4_0_ddr_w_upsizer.v
    │       │           │   │           ├── clocking/
    │       │           │   │           │   ├── mig_7series_v4_0_clk_ibuf.v
    │       │           │   │           │   ├── mig_7series_v4_0_infrastructure.v
    │       │           │   │           │   ├── mig_7series_v4_0_iodelay_ctrl.v
    │       │           │   │           │   └── mig_7series_v4_0_tempmon.v
    │       │           │   │           ├── controller/
    │       │           │   │           │   ├── mig_7series_v4_0_arb_mux.v
    │       │           │   │           │   ├── mig_7series_v4_0_arb_row_col.v
    │       │           │   │           │   ├── mig_7series_v4_0_arb_select.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_cntrl.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_common.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_compare.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_mach.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_queue.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_state.v
    │       │           │   │           │   ├── mig_7series_v4_0_col_mach.v
    │       │           │   │           │   ├── mig_7series_v4_0_mc.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_cntrl.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_common.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_mach.v
    │       │           │   │           │   └── mig_7series_v4_0_round_robin_arb.v
    │       │           │   │           ├── ddr3_if.v
    │       │           │   │           ├── ddr3_if_mig.v
    │       │           │   │           ├── ddr3_if_mig_sim.v
    │       │           │   │           ├── ecc/
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_buf.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_dec_fix.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_gen.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_merge_enc.v
    │       │           │   │           │   └── mig_7series_v4_0_fi_xor.v
    │       │           │   │           ├── ip_top/
    │       │           │   │           │   ├── mig_7series_v4_0_mem_intfc.v
    │       │           │   │           │   └── mig_7series_v4_0_memc_ui_top_axi.v
    │       │           │   │           ├── phy/
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_byte_group_io.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_byte_lane.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_calib_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_if_post_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_mc_phy.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_mc_phy_wrapper.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_of_pre_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_4lanes.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_dqs_found_cal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_init.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_cntlr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_data.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_edge.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_lim.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_mux.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_samp.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_oclkdelay_cal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_prbs_rdlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_rdlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_tempmon.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrcal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_prbs_gen.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_skip_calib_tap.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_cc.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_edge_store.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_meta.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_pd.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_tap_base.v
    │       │           │   │           │   └── mig_7series_v4_0_poc_top.v
    │       │           │   │           └── ui/
    │       │           │   │               ├── mig_7series_v4_0_ui_cmd.v
    │       │           │   │               ├── mig_7series_v4_0_ui_rd_data.v
    │       │           │   │               ├── mig_7series_v4_0_ui_top.v
    │       │           │   │               └── mig_7series_v4_0_ui_wr_data.v
    │       │           │   ├── ddr3_if.xci
    │       │           │   ├── ddr3_if_sim_netlist.v
    │       │           │   ├── ddr3_if_stub.v
    │       │           │   └── mig_a.prj
    │       │           ├── dvi_pll_1/
    │       │           │   ├── dvi_pll.v
    │       │           │   ├── dvi_pll.xci
    │       │           │   ├── dvi_pll.xdc
    │       │           │   ├── dvi_pll_board.xdc
    │       │           │   ├── dvi_pll_clk_wiz.v
    │       │           │   ├── dvi_pll_ooc.xdc
    │       │           │   ├── dvi_pll_sim_netlist.v
    │       │           │   └── dvi_pll_stub.v
    │       │           ├── input_line_buffer_1/
    │       │           │   ├── hdl/
    │       │           │   │   └── blk_mem_gen_v8_3_vhsyn_rfs.vhd
    │       │           │   ├── input_line_buffer.xci
    │       │           │   ├── input_line_buffer_ooc.xdc
    │       │           │   ├── input_line_buffer_sim_netlist.v
    │       │           │   ├── input_line_buffer_stub.v
    │       │           │   ├── misc/
    │       │           │   │   └── blk_mem_gen_v8_3.vhd
    │       │           │   ├── sim/
    │       │           │   │   └── input_line_buffer.v
    │       │           │   ├── simulation/
    │       │           │   │   └── blk_mem_gen_v8_3.v
    │       │           │   └── synth/
    │       │           │       └── input_line_buffer.vhd
    │       │           └── output_line_buffer_1/
    │       │               ├── hdl/
    │       │               │   └── blk_mem_gen_v8_3_vhsyn_rfs.vhd
    │       │               ├── misc/
    │       │               │   └── blk_mem_gen_v8_3.vhd
    │       │               ├── output_line_buffer.xci
    │       │               ├── output_line_buffer_ooc.xdc
    │       │               ├── output_line_buffer_sim_netlist.v
    │       │               ├── output_line_buffer_stub.v
    │       │               ├── sim/
    │       │               │   └── output_line_buffer.v
    │       │               ├── simulation/
    │       │               │   └── blk_mem_gen_v8_3.v
    │       │               └── synth/
    │       │                   └── output_line_buffer.vhd
    │       └── ov13850_demo.xpr
    ├── framebuffer-ctrl/
    │   ├── framebuffer_ctrl.vhd
    │   ├── input_line_buffer.xci
    │   └── output_line_buffer.xci
    ├── mipi-csi-rx/
    │   ├── csi_rx_10bit_unpack.vhd
    │   ├── csi_rx_4_lane_link.vhd
    │   ├── csi_rx_byte_align.vhd
    │   ├── csi_rx_clock_det.vhd
    │   ├── csi_rx_hdr_ecc.vhd
    │   ├── csi_rx_hs_clk_phy.vhd
    │   ├── csi_rx_hs_lane_phy.vhd
    │   ├── csi_rx_idelayctrl_gen.vhd
    │   ├── csi_rx_line_buffer.vhd
    │   ├── csi_rx_packet_handler.vhd
    │   ├── csi_rx_top.vhd
    │   ├── csi_rx_video_output.vhd
    │   ├── csi_rx_word_align.vhd
    │   └── synth.ys
    ├── ov-cam-control/
    │   ├── manual_focus.vhd
    │   ├── ov13850_4k_regs.vhd
    │   ├── ov13850_control_top.vhd
    │   ├── ov16825_1080p120_regs.vhd
    │   ├── ov_i2c_control.vhd
    │   └── vcm_i2c_control.vhd
    └── video-misc/
        ├── image_gain_wb.vhd
        ├── simple_debayer.vhd
        ├── test_pattern_gen.vhd
        ├── video_fb_output.vhd
        ├── video_register.vhd
        └── video_timing_ctrl.vhd

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2016-2018 David Shah <dave@ds0.me>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# MIPI CSI-2 IP Cores

The _vhdl\_rx_ folder contains a tried-and-tested high performance CSI-2 receiver core in VHDL. This can handle 4k video at over 30fps (most likely 60fps with a suitable camera module). This has been tested with the OV13850 camera module with a Xilinx Kintex-7 FPGA. It is currently limited to a 4-lane and 10bpp without modification, other parameters such as timing can be modified at compile time. Also in this folder are an example project and some miscellaneous VHDL support IP such as an AXI-4 framebuffer controller.

The _verilog\_cores_ contains work-in-progress CSI-2 transmit and receive cores in Verilog. These are designed to be more flexible and run on a variety of platforms. The first target will be 640x480 video using a Raspberry Pi camera with an iCE40 FPGA.

All cores are licensed under the MIT License, see LICENSE for details.


================================================
FILE: misc/caminit/.gitignore
================================================
/caminit


================================================
FILE: misc/caminit/picam_init.cc
================================================
// Simple I2C using MPSSE bitbang implementation (passed thru FPGA) to initialise a PiCam2
// Some code taken from iceprog
#include <ftdi.h>
#include <stdint.h>
#include <stdio.h>

static struct ftdi_context ftdic;
static bool ftdic_open = false;
static bool verbose = false;
static bool ftdic_latency_set = false;
static unsigned char ftdi_latency;


/* MPSSE engine command definitions */
enum mpsse_cmd
{
	/* Mode commands */
	MC_SETB_LOW = 0x80, /* Set Data bits LowByte */
	MC_READB_LOW = 0x81, /* Read Data bits LowByte */
	MC_SETB_HIGH = 0x82, /* Set Data bits HighByte */
	MC_READB_HIGH = 0x83, /* Read data bits HighByte */
	MC_LOOPBACK_EN = 0x84, /* Enable loopback */
	MC_LOOPBACK_DIS = 0x85, /* Disable loopback */
	MC_SET_CLK_DIV = 0x86, /* Set clock divisor */
	MC_FLUSH = 0x87, /* Flush buffer fifos to the PC. */
	MC_WAIT_H = 0x88, /* Wait on GPIOL1 to go high. */
	MC_WAIT_L = 0x89, /* Wait on GPIOL1 to go low. */
	MC_TCK_X5 = 0x8A, /* Disable /5 div, enables 60MHz master clock */
	MC_TCK_D5 = 0x8B, /* Enable /5 div, backward compat to FT2232D */
	MC_EN_3PH_CLK = 0x8C, /* Enable 3 phase clk, DDR I2C */
	MC_DIS_3PH_CLK = 0x8D, /* Disable 3 phase clk */
	MC_CLK_N = 0x8E, /* Clock every bit, used for JTAG */
	MC_CLK_N8 = 0x8F, /* Clock every byte, used for JTAG */
	MC_CLK_TO_H = 0x94, /* Clock until GPIOL1 goes high */
	MC_CLK_TO_L = 0x95, /* Clock until GPIOL1 goes low */
	MC_EN_ADPT_CLK = 0x96, /* Enable adaptive clocking */
	MC_DIS_ADPT_CLK = 0x97, /* Disable adaptive clocking */
	MC_CLK8_TO_H = 0x9C, /* Clock until GPIOL1 goes high, count bytes */
	MC_CLK8_TO_L = 0x9D, /* Clock until GPIOL1 goes low, count bytes */
	MC_TRI = 0x9E, /* Set IO to only drive on 0 and tristate on 1 */
	/* CPU mode commands */
	MC_CPU_RS = 0x90, /* CPUMode read short address */
	MC_CPU_RE = 0x91, /* CPUMode read extended address */
	MC_CPU_WS = 0x92, /* CPUMode write short address */
	MC_CPU_WE = 0x93, /* CPUMode write extended address */
};


static void check_rx()
{
	while (1) {
		uint8_t data;
		int rc = ftdi_read_data(&ftdic, &data, 1);
		if (rc <= 0)
			break;
		fprintf(stderr, "unexpected rx byte: %02X\n", data);
	}
}

static void error(int status)
{
	check_rx();
	fprintf(stderr, "ABORT.\n");
	if (ftdic_open) {
		if (ftdic_latency_set)
			ftdi_set_latency_timer(&ftdic, ftdi_latency);
		ftdi_usb_close(&ftdic);
	}
	ftdi_deinit(&ftdic);
	exit(status);
}

static uint8_t recv_byte()
{
	uint8_t data;
	while (1) {
		int rc = ftdi_read_data(&ftdic, &data, 1);
		if (rc < 0) {
			fprintf(stderr, "Read error.\n");
			error(2);
		}
		if (rc == 1)
			break;
		usleep(100);
	}
	return data;
}

static void send_byte(uint8_t data)
{
	int rc = ftdi_write_data(&ftdic, &data, 1);
	if (rc != 1) {
		fprintf(stderr, "Write error (single byte, rc=%d, expected %d).\n", rc, 1);
		error(2);
	}
}

static void set_gpio(bool sda, bool scl)
{
	uint8_t gpio = 0;
	if (sda) gpio |= 0x01; //BDBUS0
	if (scl) gpio |= 0x02; //BDBUS1
	send_byte(MC_SETB_LOW);
	send_byte(gpio);
	send_byte(0x03); //both outputs
}

static void i2c_start() {
	set_gpio(1, 1);
	set_gpio(0, 1);
	set_gpio(0, 0);
}

static void i2c_send(uint8_t data) {
	for (int i = 7; i >= 0; i--) {
		bool bit = (data >> i) & 0x1;
		set_gpio(bit, 0);
		set_gpio(bit, 1);
		set_gpio(bit, 0);
	}
	set_gpio(1, 0);
	set_gpio(1, 1);
	set_gpio(1, 0);
}

static void i2c_stop() {
	set_gpio(0, 0);
	set_gpio(0, 1);
	set_gpio(1, 1);
}

static void write_cmos_sensor(uint16_t addr, uint8_t value) {
	fprintf(stderr, "cam[0x%04X] <= 0x%02X\n", addr, value);
	i2c_start();
	i2c_send(0x10 << 1);
	i2c_send((addr >> 8) & 0xFF);
	i2c_send(addr & 0xFF);
	i2c_send(value);
	i2c_stop();
}

const int framelength = 666;
const int linelength = 3448;

static void cam_init() {
	// Based on "Preview Setting" from a Linux driver
	write_cmos_sensor(0x0100,  0x00); //standby mode
	write_cmos_sensor(0x30EB,  0x05); //mfg specific access begin
	write_cmos_sensor(0x30EB,  0x0C); //
	write_cmos_sensor(0x300A,  0xFF); //
	write_cmos_sensor(0x300B,  0xFF); //
	write_cmos_sensor(0x30EB,  0x05); //
	write_cmos_sensor(0x30EB,  0x09); //mfg specific access end
	write_cmos_sensor(0x0114,  0x01); //CSI_LANE_MODE: 2-lane
	write_cmos_sensor(0x0128,  0x00); //DPHY_CTRL: auto mode (?)
	write_cmos_sensor(0x012A,  0x18); //EXCK_FREQ[15:8] = 24MHz
	write_cmos_sensor(0x012B,  0x00); //EXCK_FREQ[7:0]
	write_cmos_sensor(0x0160,  ((framelength >> 8) & 0xFF)); //framelength
	write_cmos_sensor(0x0161,  (framelength & 0xFF));
	write_cmos_sensor(0x0162,  ((linelength >> 8) & 0xFF));
	write_cmos_sensor(0x0163,  (linelength & 0xFF));
	write_cmos_sensor(0x0164,  0x00); //X_ADD_STA_A[11:8]
	write_cmos_sensor(0x0165,  0x00); //X_ADD_STA_A[7:0]
	write_cmos_sensor(0x0166,  0x0A); //X_ADD_END_A[11:8]
	write_cmos_sensor(0x0167,  0x00); //X_ADD_END_A[7:0]
	write_cmos_sensor(0x0168,  0x00); //Y_ADD_STA_A[11:8]
	write_cmos_sensor(0x0169,  0x00); //Y_ADD_STA_A[7:0]
	write_cmos_sensor(0x016A,  0x07); //Y_ADD_END_A[11:8]
	write_cmos_sensor(0x016B,  0x80); //Y_ADD_END_A[7:0]
	write_cmos_sensor(0x016C,  0x02); //x_output_size[11:8] = 640
	write_cmos_sensor(0x016D,  0x80); //x_output_size[7:0]
	write_cmos_sensor(0x016E,  0x01); //y_output_size[11:8] = 480
	write_cmos_sensor(0x016F,  0xE0); //y_output_size[7:0]
	write_cmos_sensor(0x0170,  0x01); //X_ODD_INC_A
	write_cmos_sensor(0x0171,  0x01); //Y_ODD_INC_A
	write_cmos_sensor(0x0174,  0x02); //BINNING_MODE_H_A = x4-binning
	write_cmos_sensor(0x0175,  0x02); //BINNING_MODE_V_A = x4-binning
	write_cmos_sensor(0x018C,  0x08); //CSI_DATA_FORMAT_A[15:8]
	write_cmos_sensor(0x018D,  0x08); //CSI_DATA_FORMAT_A[7:0]
	write_cmos_sensor(0x0301,  0x08); //VTPXCK_DIV
	write_cmos_sensor(0x0303,  0x01); //VTSYCK_DIV
	write_cmos_sensor(0x0304,  0x03); //PREPLLCK_VT_DIV
	write_cmos_sensor(0x0305,  0x03); //PREPLLCK_OP_DIV
	write_cmos_sensor(0x0306,  0x00); //PLL_VT_MPY[10:8]
	write_cmos_sensor(0x0307,  0x14); //PLL_VT_MPY[7:0]
	write_cmos_sensor(0x0309,  0x08); //OPPXCK_DIV
	write_cmos_sensor(0x030B,  0x02); //OPSYCK_DIV
	write_cmos_sensor(0x030C,  0x00); //PLL_OP_MPY[10:8]
	write_cmos_sensor(0x030D,  0x0A); //PLL_OP_MPY[7:0]
	write_cmos_sensor(0x455E,  0x00); //??
	write_cmos_sensor(0x471E,  0x4B); //??
	write_cmos_sensor(0x4767,  0x0F); //??
	write_cmos_sensor(0x4750,  0x14); //??
	write_cmos_sensor(0x4540,  0x00); //??
	write_cmos_sensor(0x47B4,  0x14); //??
	write_cmos_sensor(0x4713,  0x30); //??
	write_cmos_sensor(0x478B,  0x10); //??
	write_cmos_sensor(0x478F,  0x10); //??
	write_cmos_sensor(0x4793,  0x10); //??
	write_cmos_sensor(0x4797,  0x0E); //??
	write_cmos_sensor(0x479B,  0x0E); //??
	
	//write_cmos_sensor(0x0157,  232); // ANA_GAIN_GLOBAL_A
	//write_cmos_sensor(0x0257,  232); // ANA_GAIN_GLOBAL_B

	
	//write_cmos_sensor(0x0600,  0x00); // Test pattern: disable
	//write_cmos_sensor(0x0601,  0x00); // Test pattern: disable

#if 0
	write_cmos_sensor(0x0600,  0x00); // Test pattern: solid colour
	write_cmos_sensor(0x0601,  0x01); //

	write_cmos_sensor(0x0602,  0x02); // Test pattern: red
	write_cmos_sensor(0x0603,  0xAA); //

	write_cmos_sensor(0x0604,  0x02); // Test pattern: greenR
	write_cmos_sensor(0x0605,  0xAA); //

	write_cmos_sensor(0x0606,  0x02); // Test pattern: blue
	write_cmos_sensor(0x0607,  0xAA); //

	write_cmos_sensor(0x0608,  0x02); // Test pattern: greenB
	write_cmos_sensor(0x0609,  0xAA); //


	write_cmos_sensor(0x0624,  0x0A); // Test pattern width
	write_cmos_sensor(0x0625,  0x00); //
	
	write_cmos_sensor(0x0626,  0x07); // Test pattern height
	write_cmos_sensor(0x0627,  0x80); //


#endif
	
	write_cmos_sensor(0x0100, 0x01);
}

int main() {
	enum ftdi_interface ifnum = INTERFACE_B;
	fprintf(stderr, "init..\n");
	ftdi_init(&ftdic);
	ftdi_set_interface(&ftdic, ifnum);

	if (ftdi_usb_open(&ftdic, 0x0403, 0x6010) && ftdi_usb_open(&ftdic, 0x0403, 0x6014)) {
		fprintf(stderr, "Can't find FTDI USB device (vendor_id 0x0403, device_id 0x6010 or 0x6014).\n");
		error(2);
	}

	if (ftdi_usb_reset(&ftdic)) {
		fprintf(stderr, "Failed to reset FTDI USB device.\n");
		error(2);
	}

	if (ftdi_usb_purge_buffers(&ftdic)) {
		fprintf(stderr, "Failed to purge buffers on FTDI USB device.\n");
		error(2);
	}

	if (ftdi_get_latency_timer(&ftdic, &ftdi_latency) < 0) {
		fprintf(stderr, "Failed to get latency timer (%s).\n", ftdi_get_error_string(&ftdic));
		error(2);
	}

	/* 1 is the fastest polling, it means 1 kHz polling */
	if (ftdi_set_latency_timer(&ftdic, 1) < 0) {
		fprintf(stderr, "Failed to set latency timer (%s).\n", ftdi_get_error_string(&ftdic));
		error(2);
	}

	if (ftdi_set_bitmode(&ftdic, 0xff, BITMODE_MPSSE) < 0) {
		fprintf(stderr, "Failed to set BITMODE_MPSSE on iCE FTDI USB device.\n");
		error(2);
	}

	// enable clock divide by 5
	send_byte(MC_TCK_D5);

	// set 6 MHz clock
	send_byte(MC_SET_CLK_DIV);
	send_byte(0x00);
	send_byte(0x00);

	cam_init();
}


================================================
FILE: verilog_cores/.gitignore
================================================
*.o
work/
*.cf
*.blif
*.json


================================================
FILE: verilog_cores/Makefile
================================================
SOURCES=$(wildcard phy/*.v csi/*.v link/*.v)
LINT_TOP=csi_rx_ice40 # temp
SYN_TOP=csi_rx_ice40

lint: $(SOURCES)
	verilator --top-module $(LINT_TOP) --lint-only $^ /usr/local/share/yosys/ice40/cells_sim.v

syn: $(SOURCES)
	yosys -p "synth_ice40 -top ${SYN_TOP} -blif top.blif" $^

.PHONY: lint syn


================================================
FILE: verilog_cores/README.md
================================================
# Verilog MIPI CSI-2 Cores - WIP


================================================
FILE: verilog_cores/csi/header_ecc.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI CSI-2 header ECC computation
 */

 module csi_header_ecc (
	 input [23:0] data,
	 output [7:0] ecc
);
	assign ecc[7:6] = 2'b00;
	assign ecc[5] = data[10] ^ data[11] ^ data[12] ^ data[13] ^ data[14] ^ data[15] ^ data[16] ^ data[17] ^ data[18] ^ data[19] ^ data[21] ^ data[22] ^ data[23];
	assign ecc[4] = data[4] ^ data[5] ^ data[6] ^ data[7] ^ data[8] ^ data[9] ^ data[16] ^ data[17] ^ data[18] ^ data[19] ^ data[20] ^ data[22] ^ data[23];
	assign ecc[3] = data[1] ^ data[2] ^ data[3] ^ data[7] ^ data[8] ^ data[9] ^ data[13] ^ data[14] ^ data[15] ^ data[19] ^ data[20] ^ data[21] ^ data[23];
	assign ecc[2] = data[0] ^ data[2] ^ data[3] ^ data[5] ^ data[6] ^ data[9] ^ data[11] ^ data[12] ^ data[15] ^ data[18] ^ data[20] ^ data[21] ^ data[22];
	assign ecc[1] = data[0] ^ data[1] ^ data[3] ^ data[4] ^ data[6] ^ data[8] ^ data[10] ^ data[12] ^ data[14] ^ data[17] ^ data[20] ^ data[21] ^ data[22] ^ data[23];
	assign ecc[0] = data[0] ^ data[1] ^ data[2] ^ data[4] ^ data[5] ^ data[7] ^ data[10] ^ data[11] ^ data[13] ^ data[16] ^ data[20] ^ data[21] ^ data[22] ^ data[23];
endmodule


================================================
FILE: verilog_cores/csi/rx_packet_handler.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI CSI-2 receive packet handler
 *
 * This controls wait_for_sync and packet_done handshaking with
 * byte/word aligners; keeps track of whether in frame
 * by detecting FS/FE; and extracts video payload from long packets
 */

module csi_rx_packet_handler #(
	parameter [1:0] VC = 2'b00, // MIPI CSI-2 "virtual channel"
	parameter [5:0] FS_DT = 6'h00, // Frame start data type
	parameter [5:0] FE_DT = 6'h01, // Frame end data type
	parameter [5:0] VIDEO_DT = 6'h2A, // Video payload data type (6'h2A = 8-bit raw, 6'h2B = 10-bit raw, 6'h2C = 12-bit raw)
	parameter [15:0] MAX_LEN = 8192 // Max expected packet len, used as timeout
) (
	input clock, // byte/word clock
	input reset, // active high sync reset
	input enable, // active high clock enable

	input [31:0] data, // data from word aligner
	input data_enable, // data enable for less than 4-lane links
	input data_frame, // data framing from word combiner

	input lp_detect, // D-PHY LP mode detection, forces EoP

	output sync_wait, // sync wait output to byte/word handlers
	output packet_done, // packet done output to word combiner

	output reg [31:0] payload, // payload output
	output reg payload_enable, // payload data enable
	output reg payload_frame, // payload framing

	output reg vsync, // quasi-vsync for FS signal
	output reg in_frame,
	output reg in_line
);

	wire [1:0] hdr_vc;
	wire [5:0] hdr_dt;
	wire [15:0] hdr_packet_len;
	wire [7:0] hdr_ecc, expected_ecc;
	wire long_packet, valid_packet;
	wire is_hdr;

	reg [15:0] packet_len;
	reg [2:0] state;
	reg [15:0] bytes_read;

	always @(posedge clock)
	begin
		if (reset) begin
			state <= 3'b000;

			packet_len <= 0;
			bytes_read <= 0;

			payload <= 0;
			payload_enable <= 0;
			payload_frame <= 0;

			vsync <= 0;
			in_frame <= 0;
			in_line <= 0;
		end else if (enable) begin

			if (lp_detect) begin
				state <= 3'b000;
			end else begin
				case (state)
					3'b000: state <= 3'b001; // init

					3'b001: begin // wait for start
						bytes_read <= 0;
						if (data_enable) begin
							packet_len <= hdr_packet_len;
							if (long_packet && valid_packet)
								state <= 3'b010;
							else
								state <= 3'b011;
						end
					end

					3'b010: begin // rx long packet
						if (data_enable) begin
							if ((bytes_read < (packet_len - 4)) && (bytes_read < MAX_LEN))
								bytes_read <= bytes_read + 4;
							else
								state <= 3'b011;
						end
					end

					3'b011: state <= 3'b100; // end of packet, assert packet_done
					3'b100: state <= 3'b001; // wait one cycle and reset

					default: state <= 3'b000;
				endcase
			end

			if (is_hdr && hdr_dt == FS_DT && valid_packet)
				in_frame <= 1'b1;
			else if (is_hdr && hdr_dt == FE_DT && valid_packet)
				in_frame <= 1'b0;

			if (is_hdr && hdr_dt == VIDEO_DT && valid_packet)
				in_line <= 1'b1;
			else if (state != 3'b010 && state != 3'b001)
				in_line <= 1'b0;

			vsync <= (is_hdr && hdr_dt == FS_DT && valid_packet);

			payload <= data;
			payload_frame <= (state == 3'b010);
			payload_enable <= (state == 3'b010) && data_enable;
		end
	end

	assign hdr_vc = data[7:6];
	assign hdr_dt = data[5:0];
	assign hdr_packet_len = data[23:8];
	assign hdr_ecc = data[31:24];

	csi_header_ecc ecc_i (
		.data(data[23:0]),
		.ecc(expected_ecc)
	);

	assign long_packet = hdr_dt > 6'h0F;
	assign valid_packet = (hdr_vc == VC)
							&& (hdr_dt == FS_DT || hdr_dt == FE_DT || hdr_dt == VIDEO_DT)
							&& (hdr_ecc == expected_ecc);

	assign is_hdr = data_enable && (state == 3'b001);

	assign sync_wait = (state == 3'b001);
	assign packet_done = (state == 3'b011) || lp_detect;
endmodule


================================================
FILE: verilog_cores/csi2.core
================================================
CAPI=2:

name : ::csi2:0

filesets:
  icebreaker:
    files:
      - misc/downsample.v : {file_type : verilogSource}
      - test/icebreaker/uart.v : {file_type : verilogSource}
      - test/icebreaker/top.v : {file_type : verilogSource}
      - test/icebreaker/icecam.pcf : {file_type : PCF}
  core:
    files:
      - phy/dphy_iserdes.v
      - phy/dphy_oserdes.v
      - phy/word_combiner.v
      - phy/byte_aligner.v
      - csi/header_ecc.v
      - csi/rx_packet_handler.v
    file_type : verilogSource
  link_ice40:
    files:
      - link/csi_rx_ice40.v : {file_type : verilogSource}
    depend : ["!tool_icestorm? (yosys:techlibs:ice40)"]

targets:
  default:
    filesets : [core, link_ice40]

  icebreaker:
    default_tool : icestorm
    filesets: [core, link_ice40, icebreaker]
    tools:
      icestorm:
        pnr : next
        nextpnr_options : [--up5k]
    toplevel : top

  lint:
    default_tool : verilator
    filesets: [core, link_ice40]
    tools:
      verilator:
        mode : lint-only
    toplevel : csi_rx_ice40


================================================
FILE: verilog_cores/link/csi_rx_ice40.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/*
 * Example CSI-2 receiver for iCE40
*/

module csi_rx_ice40 #(
	parameter LANES = 2, // lane count
	parameter PAIRSWAP = 2'b10, // lane pair swap (inverts data for given  lane)

	parameter [1:0] VC = 2'b00, // MIPI CSI-2 "virtual channel"
	parameter [5:0] FS_DT = 6'h00, // Frame start data type
	parameter [5:0] FE_DT = 6'h01, // Frame end data type
	parameter [5:0] VIDEO_DT = 6'h2A, // Video payload data type (6'h2A = 8-bit raw, 6'h2B = 10-bit raw, 6'h2C = 12-bit raw)
	parameter [15:0] MAX_LEN = 8192 // Max expected packet len, used as timeout
)(
	input dphy_clk_lane,
	input [LANES-1:0] dphy_data_lane,
	input dphy_lp_sense,

	input areset,

	output word_clk,
	output [31:0] payload_data,
	output payload_enable,
	output payload_frame,

	output [2*LANES-1:0] dbg_raw_ddr,
	output [8*LANES-1:0] dbg_raw_deser,
	output [8*LANES-1:0] dbg_aligned,
	output [LANES-1:0] dbg_aligned_valid,
	output dbg_wait_sync,

	output vsync,
	output in_line,
	output in_frame
);

	wire dphy_clk, dphy_clk_pre;

	SB_IO #(
		.PIN_TYPE(6'b000001),
		.IO_STANDARD("SB_LVDS_INPUT")
	) clk_iobuf (
		.PACKAGE_PIN(dphy_clk_lane),
		.D_IN_0(dphy_clk_pre)
	);
	
	SB_GB clk_gbuf (
		.USER_SIGNAL_TO_GLOBAL_BUFFER(dphy_clk_pre),
		.GLOBAL_BUFFER_OUTPUT(dphy_clk)
	);
	
	wire dphy_lp;
	SB_IO #(
		.PIN_TYPE(6'b000001),
		.IO_STANDARD("SB_LVDS_INPUT")
	) lp_compare (
		.PACKAGE_PIN(dphy_lp_sense),
		.D_IN_0(dphy_lp)
	);

	reg [1:0] div;
	always @(posedge dphy_clk or posedge areset)
		if (areset)
			div <= 0;
		else
			div <= div + 1'b1;
	assign word_clk = div[1];
	
	wire sreset;
	reg [7:0] sreset_ctr;
	always @(posedge word_clk or posedge areset)
		if (areset)
			sreset_ctr <= 0;
		else if (!(&sreset_ctr))
			sreset_ctr <= sreset_ctr + 1'b1;
			
	assign sreset = !(&sreset_ctr);
	
	wire byte_packet_done, wait_for_sync;
	wire [LANES*8-1:0] aligned_bytes;
	wire [LANES-1:0] aligned_bytes_valid;


	generate
	genvar ii;
	for (ii = 0; ii < LANES; ii++) begin
		wire [1:0] din_raw;
		SB_IO #(
			.PIN_TYPE(6'b000000),
			.IO_STANDARD("SB_LVDS_INPUT")
		) data_iobuf (
			.PACKAGE_PIN(dphy_data_lane[ii]),
			.INPUT_CLK(dphy_clk),
			.D_IN_0(din_raw[0]),
			.D_IN_1(din_raw[1])
		);
		assign dbg_raw_ddr[2*ii+1:2*ii] = din_raw;

		wire [7:0] din_deser;
		dphy_iserdes #(
			.REG_INPUT(1'b1)
		) iserdes_i (
		   .dphy_clk(dphy_clk),
		   .din(din_raw),
		   .sys_clk(word_clk),
		   .areset(areset),
		   .dout(din_deser)
	    );

    	wire [7:0] din_deser_swap = PAIRSWAP[ii] ? ~din_deser : din_deser;
		assign dbg_raw_deser[8*ii+7:8*ii] = din_deser_swap;

		dphy_rx_byte_align baligner_i (
			.clock(word_clk),
			.reset(sreset),
			.enable(1'b1),
			.deser_byte(din_deser_swap),
			.wait_for_sync(wait_for_sync),
			.packet_done(byte_packet_done),
			.valid_data(aligned_bytes_valid[ii]),
			.data_out(aligned_bytes[8*ii+7:8*ii])
		);

	end
	endgenerate

	assign dbg_aligned = aligned_bytes;
	assign dbg_aligned_valid = aligned_bytes_valid;

	wire [31:0] comb_word;
	wire comb_word_en, comb_word_frame;
	wire word_packet_done;

	dphy_rx_word_combiner #(
		.LANES(LANES)
	) combiner_i (
		.clock(word_clk),
		.reset(sreset),
		.enable(1'b1),
		.bytes_in(aligned_bytes),
		.bytes_valid(aligned_bytes_valid),
		.wait_for_sync(wait_for_sync),
		.packet_done(word_packet_done),
		.byte_packet_done(byte_packet_done),

		.word_out(comb_word),
		.word_enable(comb_word_en),
		.word_frame(comb_word_frame)
	);

	assign dbg_wait_sync = wait_for_sync;

	csi_rx_packet_handler #(
		.VC(VC),
		.FS_DT(FS_DT),
		.FE_DT(FE_DT),
		.VIDEO_DT(VIDEO_DT),
		.MAX_LEN(MAX_LEN)
	) handler_i (
		.clock(word_clk),
		.reset(sreset),
		.enable(1'b1),

		.data(comb_word),
		.data_enable(comb_word_en),
		.data_frame(comb_word_frame),

		.lp_detect(!dphy_lp),

		.sync_wait(wait_for_sync),
		.packet_done(word_packet_done),

		.payload(payload_data),
	 	.payload_enable(payload_enable),
		.payload_frame(payload_frame),

		.vsync(vsync),
		.in_frame(in_frame),
		.in_line(in_line)
	);
endmodule


================================================
FILE: verilog_cores/misc/downsample.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/*
 * Simple downsampler and buffer 640x480 => 40x30
*/

module downsample (
	input pixel_clock,
	input in_line,
	input in_frame,
	input [31:0] pixel_data,
	input data_enable,

	input read_clock,
	input [5:0] read_x,
	input [4:0] read_y,
	output reg [7:0] read_q
);


	reg [7:0] buffer[0:2047];

	reg [11:0] pixel_acc;
	reg [7:0] pixel_x;
	reg [8:0] pixel_y;
	reg last_in_line;

	wire [11:0] next_acc = pixel_acc + pixel_data[7:0] + pixel_data[15:8] + pixel_data[23:16] + pixel_data[31:24];

	always @(posedge pixel_clock)
	begin
		if (!in_frame) begin
			pixel_acc <= 0;
			pixel_x <= 0;
			pixel_y <= 0;
			last_in_line <= in_line;
		end else begin
			if (in_line && data_enable) begin
				if (pixel_y[3:0] == 0) begin
					if (&(pixel_x[1:0])) begin
						pixel_acc <= 0;
						buffer[{pixel_y[8:4], pixel_x[7:2]}] <= next_acc[11:4];
					end else begin
						pixel_acc <= next_acc;
					end
					if (pixel_x < 160)
						pixel_x <= pixel_x + 1;
				end
			end else if (!in_line) begin
				pixel_x <= 0;
				pixel_acc <= 0;
				if (last_in_line)
					pixel_y <= pixel_y + 1'b1;
			end
			last_in_line <= in_line;
		end
	end

	always @(posedge read_clock)
		read_q <= buffer[{read_y, read_x}];
endmodule


================================================
FILE: verilog_cores/phy/byte_aligner.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI D-PHY byte aligner
 * This receives raw, unaligned bytes (which could contain part of two actual bytes)
 * from the SERDES and aligns them by looking for the D-PHY sync pattern
 *
 * When wait_for_sync is high the entity will wait until it sees the valid header at some alignment,
 * at which point the found alignment is locked until packet_done is asserted
 *
 * valid_data is asserted as soon as the sync pattern is found, so the next byte
 * contains the CSI packet header
 *
 * In reality to avoid false triggers we must look for a valid sync pattern on all k lanes,
 * if this does not occur the word aligner (a seperate entity) will assert packet_done immediately
 *
 */
`default_nettype none
module dphy_rx_byte_align(
	input clock, // byte clock
	input reset, // active high sync reset
	input enable, // byte clock enable
	input [7:0] deser_byte, // raw bytes from iserdes
	input wait_for_sync, // when high will look for a sync pattern if sync not already found
	input packet_done, // assert to reset synchronisation status
	output reg valid_data, // goes high as soon as sync pattern is found (so data out on next cycle contains header)
	output reg [7:0] data_out //aligned data out, typically delayed by 2 cycles
);

	reg [7:0] curr_byte;
	reg [7:0] last_byte;
	reg [7:0] shifted_byte;

	reg found_sync;
	reg [2:0] sync_offs; // found offset of sync pattern
	reg [2:0] data_offs; // current data offset

	always @(posedge clock)
	begin
		if (reset) begin
			valid_data <= 1'b0;
			last_byte <= 0;
			curr_byte <= 0;
			data_out <= 0;
			data_offs <= 0;
		end else if (enable) begin
			last_byte <= curr_byte;
			curr_byte <= deser_byte;
			data_out <= shifted_byte;

			if (packet_done) begin
				valid_data <= found_sync;
			end else if (wait_for_sync && found_sync && !valid_data) begin
				// Waiting for sync, just found it now so use sync position as offset
				valid_data <= 1'b1;
				data_offs <= sync_offs;
			end
		end
	end

	localparam [7:0] sync_word = 8'b10111000;
	reg was_found;
	reg [2:0] offset;
	integer i;

	wire [15:0] concat_word = {curr_byte, last_byte};

	always @(*)
	begin
		offset = 0;
		was_found = 1'b0;
		found_sync = 1'b0;
		sync_offs = 0;
		for (i = 0; i < 8; i = i + 1) begin
			if ((concat_word[(1+i) +: 8] == sync_word) && (last_byte[i:0]  == 0)) begin
				was_found = 1'b1;
				offset = i;
			end
		end
		if (was_found) begin
			found_sync = 1'b1;
			sync_offs = offset;
		end
	end

	assign shifted_byte = concat_word[(1 + data_offs) +: 8];


endmodule


================================================
FILE: verilog_cores/phy/dphy_iserdes.v
================================================
/**
 * The MIT License
 * Copyright (c) 2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI D-PHY input SERDES
 * This is designed to take 2 inputs per clock from an architecture specific
 * DDR primitive
 */

module dphy_iserdes(
	input dphy_clk, // Fast D-PHY DDR clock (4x sys_clk)
	input [1:0] din, // Input from arch DDR primitive, D1 should be the bit after D0
	input sys_clk, // System byte clock
	input areset, // Active high async reset
	output [7:0] dout // Output data
);

	parameter REG_INPUT = 1'b0;
	parameter NUM_OUT_SYNCFFS = 2;
	wire [1:0] iserdes_din;

	generate
	if (REG_INPUT) begin
	  reg [1:0] din_reg;
		always @(posedge dphy_clk, posedge areset)
		  if (areset)
				din_reg <= 2'b00;
			else
				din_reg <= din;
		assign iserdes_din = din_reg;
	end else begin
	  assign iserdes_din = din;
	end
	endgenerate

	reg [7:0] reg_word;

	always @(posedge dphy_clk, posedge areset)
		if (areset)
			reg_word <= 0;
		else
			reg_word <= {iserdes_din, reg_word[7:2]}; // MIPI interface uses LSB first

	reg [7:0] out_sync_regs[0:NUM_OUT_SYNCFFS-1];
	integer i;
	always @(posedge sys_clk, posedge areset)
		if (areset)
			for (i = 0; i < NUM_OUT_SYNCFFS; i = i + 1)
				out_sync_regs[i] <= 0;
		else begin
			for (i = 1; i < NUM_OUT_SYNCFFS; i = i + 1)
				out_sync_regs[i] <= out_sync_regs[i-1];
			out_sync_regs[0] <= reg_word;
		end

	assign dout = out_sync_regs[NUM_OUT_SYNCFFS-1];
endmodule


================================================
FILE: verilog_cores/phy/dphy_oserdes.v
================================================
/**
 * The MIT License
 * Copyright (c) 2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI D-PHY output SERDES
 * This is designed to generate 2 outputs per clock for an architecture specific
 * DDR primitive
 */

module dphy_oserdes(
	input sys_clk, // System byte clock
	input areset, // Active high async reset
  input [7:0] din, // Input from CSI-2 packetiser
	input dphy_clk, // Fast D-PHY DDR clock (4x sys_clk)
	output reg [1:0] dout // Output data, bit 1 should be the second bit transmitted
);

	parameter NUM_SYNCFFS = 2;

	reg [8:0] dclk_sclk_din[0:NUM_SYNCFFS-1];

	// Input
	integer i;
	always @(posedge dphy_clk, posedge areset)
		if (areset) begin
			for (i = 0; i < NUM_SYNCFFS; i = i + 1)
				dclk_sclk_din[i] <= 0;
		end else begin
			for (i = 1; i < NUM_SYNCFFS; i = i + 1)
				dclk_sclk_din[i] <= dclk_sclk_din[i-1];
			dclk_sclk_din[0] <= {sys_clk, din};
		end

	wire dclk_sclk = dclk_sclk_din[NUM_SYNCFFS-1][8];
	wire [7:0] dclk_din = dclk_sclk_din[NUM_SYNCFFS-1][7:0];
	reg last_sclk;

	reg [7:0] reg_word;

	always @(posedge dphy_clk, posedge areset)
		if (areset) begin
			last_sclk <= 1'b0;
			dout <= 2'b00;
			reg_word <= 0;
		end else begin
			last_sclk <= dclk_sclk;
			dout <= reg_word[1:0]; // LSB first
			if (dclk_sclk && !last_sclk) begin
				reg_word <= dclk_din;
			end else begin
				reg_word <= {reg_word[1:0], reg_word[7:2]};
			end
		end
endmodule


================================================
FILE: verilog_cores/phy/word_combiner.v
================================================
/**
 * The MIT License
 * Copyright (c) 2016-2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

/**
 * MIPI D-PHY word combiner
 * This receives aligned bytes from the byte aligner(s), controls the byte aligner(s)
 * and assembles the data stream back into 32-bit words for consistency across different
 * widths
 *
 */

module dphy_rx_word_combiner #(
	parameter LANES = 2
) (
	input clock, // byte clock
	input reset, // active high sync reset
	input enable, // active high clock enable
	input [8*LANES-1:0] bytes_in, // input bytes from lane byte aligners
	input [LANES-1:0] bytes_valid, // valid signals from lane byte aligners
	input wait_for_sync, // input from packet handler
	input packet_done, // packet done input from packet handler
	output byte_packet_done, // packet done output to byte aligners

	output reg [31:0] word_out, //fixed width 32-bit data out
	output reg word_enable, // word enable used when in less than 4-lane mode
	output reg word_frame // valid output high during valid packet even if word enable low
);
	wire triggered = |bytes_valid;
	wire all_valid = &bytes_valid;
	wire invalid_start = triggered && !all_valid;

	reg valid;

	reg [31:0] word_int;
	reg [1:0] byte_cnt;

	always @(posedge clock)
	begin
		if (reset) begin
			valid <= 0;
			word_int <= 0;
			byte_cnt <= 0;

			word_out <= 0;
			word_enable <= 0;
			word_frame <= 0;
		end else if (enable) begin
			if (all_valid && !valid && wait_for_sync) begin
				byte_cnt <= 0;
				word_frame <= 1'b1;
				valid <= 1'b1;
			end else if (packet_done) begin
				word_frame <= 1'b0;
				valid <= 1'b0;
			end

			if (valid) begin
				if (LANES == 4) begin
					word_out <= bytes_in;
					word_enable <= 1'b1;
				end else begin
					byte_cnt <= byte_cnt + LANES;
					word_int <= {bytes_in, word_int[31:8*LANES]};
					if ((byte_cnt + LANES) % 4 == 0) begin
						word_out <= {bytes_in, word_int[31:8*LANES]};
						word_enable <= 1'b1;
					end else begin
						word_enable <= 1'b0;
					end
				end
			end else begin
				word_enable <= 1'b0;
			end
		end
	end

	assign byte_packet_done = packet_done | invalid_start;
endmodule


================================================
FILE: verilog_cores/test/icebreaker/.gitignore
================================================
*.blif
*.json
*.asc
*.bin
*.rpt
*.log


================================================
FILE: verilog_cores/test/icebreaker/Makefile
================================================
SOURCES = $(wildcard ../../csi/*.v ../../phy/*.v ../../link/*.v ../../misc/*.v uart.v top.v)
PROJ=camera
PIN_DEF=icecam.pcf
DEVICE=up5k

all: $(PROJ).rpt $(PROJ).bin

%.json: $(SOURCES)
	yosys -ql yosys.log -p 'synth_ice40 -top top -json $@' $(SOURCES)

%.asc: %.json $(PIN_DEF)
	nextpnr-ice40 --pre-pack constraints.py --up5k --pcf $(PIN_DEF) --json $< --asc $@ --freq 40

gui: %.json $(PIN_DEF)
	nextpnr-ice40 --up5k --pcf $(PIN_DEF) --json $< --asc $@ --freq 40 --gui

%.bin: %.asc
	icepack $< $@

%.rpt: %.asc
	icetime -d $(DEVICE) -mtr $@ $<

prog: $(PROJ).bin
	iceprog $<

sudo-prog: $(PROJ).bin
	@echo 'Executing prog as root!!!'
	sudo iceprog $<

clean:
	rm -f $(PROJ).blif $(PROJ).asc $(PROJ).rpt $(PROJ).bin

.SECONDARY:
.PHONY: all prog clean gui


================================================
FILE: verilog_cores/test/icebreaker/constraints.py
================================================
ctx.addClock("csi_rx_i.dphy_clk", 96)
ctx.addClock("video_clk", 24)
ctx.addClock("uart_i.sys_clk_i", 12)


================================================
FILE: verilog_cores/test/icebreaker/icecam.pcf
================================================
set_io mpsse_sda 6 #FTDI D0
set_io mpsse_scl 9 #FTDI D1

set_io cam_enable 3 #P1A7
set_io cam_sda 34 #P1B3
set_io cam_scl 28 #P1B10

set_io dphy_clk 32 #P1B9
set_io dphy_data[0] 42 #P1B7
set_io dphy_data[1] 43 #P1B1
set_io dphy_lp 48 #P1A8

set_io BTN_N      10
set_io LEDR_N     11
set_io LEDG_N     37

set_io LED2       27
set_io LED3       25
set_io LED5       21
set_io BTN2       19
set_io LED1       26
set_io LED4       23
set_io BTN1       20
set_io BTN3       18

set_io clk12 35
set_io dbg_tx 13


================================================
FILE: verilog_cores/test/icebreaker/top.v
================================================
/**
 * The MIT License
 * Copyright (c) 2018 David Shah
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

module top(input clk12,
		   input mpsse_sda, mpsse_scl, inout cam_sda, cam_scl, output cam_enable,
		   input dphy_clk, input [1:0] dphy_data, input dphy_lp,
		   output LEDR_N, LEDG_N, LED1, LED2, LED3, LED4, LED5,
		   input BTN_N, BTN1, BTN2, BTN3,
		   output dbg_tx);

	wire areset = !BTN_N;
	assign cam_scl = mpsse_scl ? 1'bz : 1'b0;
    assign cam_sda = mpsse_sda ? 1'bz : 1'b0;
	assign cam_enable = 1'b1;
	wire video_clk;
	wire in_line, in_frame, vsync;
	wire [31:0] payload_data;
	wire payload_valid;
	wire [15:0] raw_deser;
	wire [15:0] aligned_deser;
	wire [3:0] raw_ddr;
	wire [1:0] aligned_valid;
	wire wait_sync;
	wire payload_frame;

	csi_rx_ice40 #(
		.LANES(2), // lane count
		.PAIRSWAP(2'b10), // lane pair swap (inverts data for given  lane)

		.VC(2'b00), // MIPI CSI-2 "virtual channel"
		.FS_DT(6'h12), // Frame start data type
		.FE_DT(6'h01), // Frame end data type
		.VIDEO_DT(6'h2A), // Video payload data type (6'h2A = 8-bit raw, 6'h2B = 10-bit raw, 6'h2C = 12-bit raw)
		.MAX_LEN(8192) // Max expected packet len, used as timeout
	) csi_rx_i (
		.dphy_clk_lane(dphy_clk),
		.dphy_data_lane(dphy_data),
		.dphy_lp_sense(dphy_lp),

		.areset(areset),

		.word_clk(video_clk),
		.payload_data(payload_data),
		.payload_enable(payload_valid),
		.payload_frame(payload_frame),

		.vsync(vsync),
		.in_line(in_line),
		.in_frame(in_frame),

		.dbg_aligned_valid(aligned_valid),
		.dbg_raw_deser(raw_deser),
		.dbg_raw_ddr(raw_ddr),
		.dbg_wait_sync(wait_sync)
	);


	reg [22:0] sclk_div;
	always @(posedge video_clk)
		sclk_div <= sclk_div + 1'b1;
	
	reg [15:0] vsync_monostable = 0;
	always @(posedge video_clk)
		if (vsync || vsync_monostable != 0)
			vsync_monostable <= vsync_monostable + 1'b1;
	
	
	assign LEDR_N = !sclk_div[22];
	assign LEDG_N = !(|vsync_monostable);
	assign LED1 = video_clk;
	assign {LED5, LED4, LED3, LED2} = (payload_frame&&payload_valid) ? payload_data[5:2] : 0;

	reg [5:0] read_x;
	reg [4:0] read_y;
	wire [7:0] read_data;
	downsample ds_i(
		.pixel_clock(video_clk),
		.in_line(in_line),
		.in_frame(!vsync),
		.pixel_data(payload_data),
		.data_enable(payload_frame&&payload_valid),

		.read_clock(clk12),
		.read_x(read_x),
		.read_y(read_y),
		.read_q(read_data)
	);

	reg do_send = 1'b0;
	wire uart_busy;
	reg uart_write;
	reg [13:0] btn_debounce;
	reg btn_reg;
	reg [12:0] uart_holdoff;

	always @(posedge clk12)
	begin
		btn_reg <= BTN1;

		if (btn_reg)
			btn_debounce <= 0;
		else if (!&(btn_debounce))
			btn_debounce <= btn_debounce + 1;


		uart_write <= 1'b0;
		if (btn_reg && &btn_debounce && !do_send) begin
			do_send <= 1'b1;
			read_x <= 0;
			read_y <= 0;
		end

		if (uart_busy)
			uart_holdoff <= 0;
		else if (!&(uart_holdoff))
			uart_holdoff <= uart_holdoff + 1'b1;

		if (do_send) begin
			if (read_x == 0 && read_y == 30) begin
				do_send <= 1'b0;
			end else begin
				if (&uart_holdoff && !uart_busy && !uart_write) begin
					uart_write <= 1'b1;
					if (read_x == 39) begin
						read_y <= read_y + 1'b1;
						read_x <= 0;
					end else begin
						read_x <= read_x + 1'b1;
					end
				end
			end
		end
	end

	uart uart_i (
	   // Outputs
	   .uart_busy(uart_busy),   // High means UART is transmitting
	   .uart_tx(dbg_tx),     // UART transmit wire
	   // Inputs
	   .uart_wr_i(uart_write),   // Raise to transmit byte
	   .uart_dat_i(read_data),  // 8-bit data
	   .sys_clk_i(clk12),   // System clock, 12 MHz
	   .sys_rst_i(areset)    // System reset
	);

endmodule


================================================
FILE: verilog_cores/test/icebreaker/uart.v
================================================
// From http://www.excamera.com/sphinx/fpga-uart.html

module uart(
   // Outputs
   uart_busy,   // High means UART is transmitting
   uart_tx,     // UART transmit wire
   // Inputs
   uart_wr_i,   // Raise to transmit byte
   uart_dat_i,  // 8-bit data
   sys_clk_i,   // System clock, 12 MHz
   sys_rst_i    // System reset
);

  input uart_wr_i;
  input [7:0] uart_dat_i;
  input sys_clk_i;
  input sys_rst_i;

  output uart_busy;
  output uart_tx;

  reg [3:0] bitcount;
  reg [8:0] shifter;
  reg uart_tx;

  wire uart_busy = |bitcount[3:1];
  wire sending = |bitcount;

  // sys_clk_i is 12MHz.  We want a 3MHz clock

  reg [28:0] d;
  wire [28:0] dInc = d[28] ? (3000000) : (3000000 - 12000000);
  wire [28:0] dNxt = d + dInc;
  always @(posedge sys_clk_i)
  begin
    d = dNxt;
  end
  wire ser_clk = ~d[28]; // this is the 115200 Hz clock

  always @(posedge sys_clk_i)
  begin
    if (sys_rst_i) begin
      uart_tx <= 1;
      bitcount <= 0;
      shifter <= 0;
    end else begin
      // just got a new byte
      if (uart_wr_i & ~uart_busy) begin
        shifter <= { uart_dat_i[7:0], 1'h0 };
        bitcount <= (1 + 8 + 2);
      end

      if (sending & ser_clk) begin
        { shifter, uart_tx } <= { 1'h1, shifter };
        bitcount <= bitcount - 1;
      end
    end
  end

endmodule


================================================
FILE: vhdl_rx/.gitignore
================================================
*.o
work/
*.cf


================================================
FILE: vhdl_rx/LICENSE.notes
================================================
All of the source code written by me (in particular */*.vhd except the examples
folder) is licensed under the MIT license,see the LICENSE file for more
information.

For obvious reasons this does not extend to any files in the example project
generated or included by Xilinx's tools (including but not limited to Xilinx's
IP cores such as the DDR3 interface). The copyright on these belongs to Xilinx
and Xilinx's restrictions will apply.

The register values in the `ov13850_4k_regs.vhd` file were based on open source
Linux drivers, but it is my understanding that these are not copyrightable in
themselves.

All mentioned trademarks are property of their respective owners.


================================================
FILE: vhdl_rx/README.md
================================================
# 4k MIPI CSI-2 FPGA Camera Interface

## Overview
This project is an open source (MIT license) MIPI CSI-2 receive core for Xilinx FPGAs, supporting 4k resolution at greater than 30fps.
It includes a complete demo project, designed for the Genesys 2 board with a custom FMC to camera card, that writes the 4k video into a DDR3 framebuffer and
outputs at 1080p (with a choice of scaled or cropped) to the HDMI and VGA ports. The demo camera module is the Omnivision OV13850 (using the Firefly camera module),
which supports 4k at up to 30fps, although the demo runs at 24fps where it seems performance is better - this may partly be down to the choice of register values though. Although the OV13850
sensor/ADC does not seem to work much above 30fps; the camera also has a "test pattern" mode which bypasses this and which I have used to test my driver up to 45fps.

## Structure
  - The `mipi-csi-rx` folder contains all the components (except the `video_timing_ctrl` timing generator, in the `video-misc` folder) needed for the CSI-2 Rx itself.
    - `csi_rx_top` is the top level for the CSI-2 interface, this is what you should use in your design
    - `csi_rx_4_lane_link` encapsulates the link layer. In particular
      - `csi_rx_hs_lane_phy` is the low-level data PHY, one for each lane, containing the input buffer and input SERDES
      - `csi_rx_byte_align` ensures bytes are correctly aligned by looking for the sync byte that precedes packets
      - `csi_rx_word_align` corrects any slight alignment differences between lanes, concatenating the 4 lane byte inputs to a single 32-bit word output
      - `csi_rx_hs_clk_phy` handles the clock input and contains the necessary clock buffers
    - `csi_rx_packet_handler` processes packets, looking for video packets and seperating off the payload
    - `csi_rx_10bit_unpack` converts 32-bit packet payload input and outputs 4 10-bit pixels (with a `valid` output, as it does not produce pixels every clock cycle)
    - `csi_rx_video_output` synchronises the CSI-2 clock domain to the pixel clock domain using a line buffer and outputs standard video format
  - `ov-cam-control` contains a I2C interface for camera configuration, the 4k24 configuration for the OV13850, and `ov13850_control_top` which handles camera reseting
  and writes the register values from the configuration ROM to the I2C interface.
  - `framebuffer-ctrl` contains the framebuffer controller, which interfaces with external framebuffer memory (providing an AXI4 master to interface with the Xilinx DDR3 controller) to scale or crop the 4k frames from the camera to 1080p for the video output.
  - `video-misc` contains the video timing controller, a test pattern generator for debugging, a video register for timing purposes and the basic ISP (a simple debayering core and colour channel gain adjustment for white balance).
  - `dvi-tx` contains a simple DVI transmitter, for the Genesys 2 HDMI output port
  - `demo-top` contains the top level files for the demo project; and `examples` contains the Vivado project itself for the demo

## Test Hardware
The current test platform is the Digilent Genesys 2 (Kintex-7 XC7K325T-2) with an OV13850 camera. The CSI-2 lanes connect to 2.5V LVDS inputs on the FPGA, using
a custom FMC interface board. Earlier testing was done on a Virtex-6 FPGA, unfortunately I no longer have access to this platform so support cannot be guaranteed.

The exact camera used was the Firefly RK3288 camera module, which is a convenient way of obtaining the OV13850 camera - search for "OV13850 Firefly RK3288" and various sites selling it can be
found starting from $40 or so. In the future I'm looking into using smartphone replacement camera modules. I have ordered some IUNI U2 replacement back cameras which are P16V01A modules based
on the 4k60-capable OV16825 and have a publicly available pinout.

The FMC board also has a connector for the 4k 5.5" Z5 premium LCD; which I am also working on code to drive. The KiCad board designs and gerbers are in the [DSITx](https://github.com/daveshah1/DSITx/tree/master/hardware/fmc-v1.2) repo.

A quick picture of my test setup is below.

![4k Camera Testing](http://ds0.me/csi_rx/csi_testing.jpg)

## Customisation
See `csi_rx_top.vhd` for more information on the parameters that need to be adjusted depending on your camera and application.

## Future Work
In the future the debayering block needs to be improved to reduce colour fringing at sharp edges. A driver for the focus voice coil driver inside the camera module
needs to be added; along with autofocus and AEC/AGC (at the moment gain and exposure are buried deep within the camera config ROM).


================================================
FILE: vhdl_rx/demo-top/framebuffer_top.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

--Top Level Framebuffer and Video Output Design
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

entity framebuffer_top is
  port(
    --Video input port
    input_pixck : in std_logic;
    input_vsync : in std_logic;
    input_line_start : in std_logic;
    input_den : in std_logic;
    input_data_even : in std_logic_vector(23 downto 0);
    input_data_odd : in std_logic_vector(23 downto 0);
    
    --System/control inputs
    system_clock : in std_logic;
    system_reset : in std_logic;
    zoom_mode : in std_logic;
    freeze : in std_logic;
    
    --Video output port
    output_pixck : in std_logic;
    output_vsync : out std_logic;
    output_hsync : out std_logic;
    output_den : out std_logic;
    output_line_start : out std_logic;
    output_data : out std_logic_vector(23 downto 0);
    
    --DDR3 interface
    ddr3_addr : out std_logic_vector(14 downto 0);
    ddr3_ba : out std_logic_vector(2 downto 0);
    ddr3_cas_n : out std_logic;
    ddr3_ck_n : out std_logic_vector(0 downto 0);
    ddr3_ck_p : out std_logic_vector(0 downto 0);
    ddr3_cke : out std_logic_vector(0 downto 0);
    ddr3_ras_n : out std_logic;
    ddr3_reset_n : out std_logic;
    ddr3_we_n : out std_logic;
    ddr3_dq : inout std_logic_vector(31 downto 0);
    ddr3_dqs_n : inout std_logic_vector(3 downto 0);
    ddr3_dqs_p : inout std_logic_vector(3 downto 0);
    ddr3_cs_n : out std_logic_vector(0 downto 0);
    ddr3_dm : out std_logic_vector(3 downto 0);
    ddr3_odt : out std_logic_vector(0 downto 0)
  );
end framebuffer_top;

architecture Behavioral of framebuffer_top is
  signal ui_clock : std_logic;
  signal axi_resetn : std_logic;
  
  signal axi_awid : std_logic_vector(0 downto 0);
  signal axi_awaddr : std_logic_vector(29 downto 0);
  signal axi_awlen : std_logic_vector(7 downto 0);
  signal axi_awsize : std_logic_vector(2 downto 0);
  signal axi_awburst : std_logic_vector(1 downto 0);
  signal axi_awlock : std_logic_vector(0 downto 0);
  signal axi_awcache : std_logic_vector(3 downto 0);
  signal axi_awprot : std_logic_vector(2 downto 0);
  signal axi_awqos : std_logic_vector(3 downto 0);
  signal axi_awvalid : std_logic;
  signal axi_awready : std_logic;
  
  signal axi_wdata : std_logic_vector(255 downto 0);
  signal axi_wstrb : std_logic_vector(31 downto 0);
  signal axi_wlast : std_logic;
  signal axi_wvalid : std_logic;
  signal axi_wready : std_logic;
  
  signal axi_bid : std_logic_vector(0 downto 0);
  signal axi_bresp : std_logic_vector(1 downto 0);
  signal axi_bvalid : std_logic;
  signal axi_bready : std_logic;
  
  signal axi_arid : std_logic_vector(0 downto 0);
  signal axi_araddr : std_logic_vector(29 downto 0);
  signal axi_arlen : std_logic_vector(7 downto 0);
  signal axi_arsize : std_logic_vector(2 downto 0);
  signal axi_arburst : std_logic_vector(1 downto 0);
  signal axi_arlock : std_logic_vector(0 downto 0);
  signal axi_arcache : std_logic_vector(3 downto 0);
  signal axi_arprot : std_logic_vector(2 downto 0);
  signal axi_arqos : std_logic_vector(3 downto 0);
  signal axi_arvalid : std_logic;
  signal axi_arready : std_logic;
  
  signal axi_rid : std_logic_vector(0 downto 0);
  signal axi_rdata : std_logic_vector(255 downto 0);
  signal axi_rresp : std_logic_vector(1 downto 0);
  signal axi_rlast : std_logic;
  signal axi_rvalid : std_logic;
  signal axi_rready : std_logic;
  
  signal fbc_ovsync : std_logic;
  signal fbc_data : std_logic_vector(23 downto 0);
  
  signal output_line_start_int : std_logic;
  signal output_den_int : std_logic;
  
  component ddr3_if is
    port(
      ddr3_addr : out std_logic_vector(14 downto 0);
      ddr3_ba : out std_logic_vector(2 downto 0);
      ddr3_cas_n : out std_logic;
      ddr3_ck_n : out std_logic_vector(0 downto 0);
      ddr3_ck_p : out std_logic_vector(0 downto 0);
      ddr3_cke : out std_logic_vector(0 downto 0);
      ddr3_ras_n : out std_logic;
      ddr3_reset_n : out std_logic;
      ddr3_we_n : out std_logic;
      ddr3_dq : inout std_logic_vector(31 downto 0);
      ddr3_dqs_n : inout std_logic_vector(3 downto 0);
      ddr3_dqs_p : inout std_logic_vector(3 downto 0);
      init_calib_complete : out std_logic;
      ddr3_cs_n : out std_logic_vector(0 downto 0);
      ddr3_dm : out std_logic_vector(3 downto 0);
      ddr3_odt : out std_logic_vector(0 downto 0);
      
      ui_clk : out std_logic;
      ui_clk_sync_rst : out std_logic;
      mmcm_locked : out std_logic;
      aresetn : in std_logic;
      app_sr_req : in std_logic;
      app_ref_req : in std_logic;
      app_zq_req : in std_logic;
      app_sr_active : out std_logic;
      app_ref_ack : out std_logic;
      app_zq_ack : out std_logic;
      
      s_axi_awid : in std_logic_vector(0 downto 0);
      s_axi_awaddr : in std_logic_vector(29 downto 0);
      s_axi_awlen : in std_logic_vector(7 downto 0);
      s_axi_awsize : in std_logic_vector(2 downto 0);
      s_axi_awburst : in std_logic_vector(1 downto 0);
      s_axi_awlock : in std_logic_vector(0 downto 0);
      s_axi_awcache : in std_logic_vector(3 downto 0);
      s_axi_awprot : in std_logic_vector(2 downto 0);
      s_axi_awqos : in std_logic_vector(3 downto 0);
      s_axi_awvalid : in std_logic;
      s_axi_awready : out std_logic;
      
      s_axi_wdata : in std_logic_vector(255 downto 0);
      s_axi_wstrb : in std_logic_vector(31 downto 0);
      s_axi_wlast : in std_logic;
      s_axi_wvalid : in std_logic;
      s_axi_wready : out std_logic;
      
      s_axi_bid : out std_logic_vector(0 downto 0);
      s_axi_bresp : out std_logic_vector(1 downto 0);
      s_axi_bvalid : out std_logic;
      s_axi_bready : in std_logic;
      
      s_axi_arid : in std_logic_vector(0 downto 0);
      s_axi_araddr : in std_logic_vector(29 downto 0);
      s_axi_arlen : in std_logic_vector(7 downto 0);
      s_axi_arsize : in std_logic_vector(2 downto 0);
      s_axi_arburst : in std_logic_vector(1 downto 0);
      s_axi_arlock : in std_logic_vector(0 downto 0);
      s_axi_arcache : in std_logic_vector(3 downto 0);
      s_axi_arprot : in std_logic_vector(2 downto 0);
      s_axi_arqos : in std_logic_vector(3 downto 0);
      s_axi_arvalid : in std_logic;
      s_axi_arready : out std_logic;
      
      s_axi_rid : out std_logic_vector(0 downto 0);
      s_axi_rdata : out std_logic_vector(255 downto 0);
      s_axi_rresp : out std_logic_vector(1 downto 0);
      s_axi_rlast : out std_logic;
      s_axi_rvalid : out std_logic;
      s_axi_rready : in std_logic;
      
      sys_clk_i : in std_logic;
      sys_rst : in std_logic
    );
  end component;

begin
  
    axi_resetn <= not system_reset;
    
    fbctl : entity work.framebuffer_ctrl_crop_scale
      generic map(
        burst_len => 16,
        input_width => 3840,
        input_height => 2160,
        output_width => 1920,
        output_height => 1080,
        crop_xoffset => 1024,
        crop_yoffset => 540,
        scale_xoffset => 0,
        scale_yoffset => 0)
      port map(
        input_clock => input_pixck,
        input_vsync => input_vsync,
        input_line_start => input_line_start,
        input_den => input_den,
        input_data_even => input_data_even,
        input_data_odd => input_data_odd,
        
        output_clock => output_pixck,
        output_vsync => fbc_ovsync,
        output_line_start => output_line_start_int,
        output_den => output_den_int,
        output_data => fbc_data,
        
        axi_clock => ui_clock,
        axi_resetn => axi_resetn,
        
        axi_awid => axi_awid,
        axi_awaddr => axi_awaddr,
        axi_awlen => axi_awlen,
        axi_awsize => axi_awsize,
        axi_awburst => axi_awburst,
        axi_awlock => axi_awlock,
        axi_awcache => axi_awcache,
        axi_awprot => axi_awprot,
        axi_awqos => axi_awqos,
        axi_awvalid => axi_awvalid,
        axi_awready => axi_awready,
        
        axi_wdata => axi_wdata,
        axi_wstrb => axi_wstrb,
        axi_wlast => axi_wlast,
        axi_wvalid => axi_wvalid,
        axi_wready => axi_wready,
        
        axi_bid => axi_bid,
        axi_bresp => axi_bresp,
        axi_bvalid => axi_bvalid,
        axi_bready => axi_bready,
        
        axi_arid => axi_arid,
        axi_araddr => axi_araddr,
        axi_arlen => axi_arlen,
        axi_arsize => axi_arsize,
        axi_arburst => axi_arburst,
        axi_arlock => axi_arlock,
        axi_arcache => axi_arcache,
        axi_arprot => axi_arprot,
        axi_arqos => axi_arqos,
        axi_arvalid => axi_arvalid,
        axi_arready => axi_arready,
        
        axi_rid => axi_rid,
        axi_rdata => axi_rdata,
        axi_rresp => axi_rresp,
        axi_rlast => axi_rlast,
        axi_rvalid => axi_rvalid,
        axi_rready => axi_rready,
        
        zoom_mode => zoom_mode,
        freeze => freeze
      );
    
    output : entity work.video_fb_output
      generic map(
        video_hlength => 2200,
        video_vlength => 1125,
        
        video_hsync_pol => true,
        video_hsync_len => 44,
        video_hbp_len => 148,
        video_h_visible => 1920,
        
        video_vsync_pol => true,
        video_vsync_len => 5,
        video_vbp_len => 36,
        video_v_visible => 1080)
      port map(
        pixel_clock => output_pixck,
        reset => system_reset,
        
        fbc_vsync => fbc_ovsync,
        fbc_data => fbc_data,
        
        video_vsync => output_vsync,
        video_hsync => output_hsync,
        video_den => output_den_int,
        video_line_start => output_line_start_int,
        video_data => output_data);
    
    output_den <= output_den_int;
    output_line_start <= output_line_start_int;
    
    memctl : ddr3_if
      port map(
        ddr3_addr => ddr3_addr,
        ddr3_ba => ddr3_ba,
        ddr3_cas_n => ddr3_cas_n,
        ddr3_ck_n => ddr3_ck_n,
        ddr3_ck_p => ddr3_ck_p,
        ddr3_cke => ddr3_cke,
        ddr3_ras_n => ddr3_ras_n,
        ddr3_reset_n => ddr3_reset_n,
        ddr3_we_n => ddr3_we_n,
        ddr3_dq => ddr3_dq,
        ddr3_dqs_p => ddr3_dqs_p,
        ddr3_dqs_n => ddr3_dqs_n,
        init_calib_complete => open,
        ddr3_cs_n => ddr3_cs_n,
        ddr3_dm => ddr3_dm,
        ddr3_odt => ddr3_odt,
        
        ui_clk => ui_clock,
        ui_clk_sync_rst => open,
        mmcm_locked => open,
        aresetn => axi_resetn,
        app_sr_req => '0',
        app_ref_req => '0',
        app_zq_req => '0',
        app_sr_active => open,
        app_ref_ack => open,
        app_zq_ack => open,
        
        s_axi_awid => axi_awid,
        s_axi_awaddr => axi_awaddr,
        s_axi_awlen => axi_awlen,
        s_axi_awsize => axi_awsize,
        s_axi_awburst => axi_awburst,
        s_axi_awlock => axi_awlock,
        s_axi_awcache => axi_awcache,
        s_axi_awprot => axi_awprot,
        s_axi_awqos => axi_awqos,
        s_axi_awvalid => axi_awvalid,
        s_axi_awready => axi_awready,
        
        s_axi_wdata => axi_wdata,
        s_axi_wstrb => axi_wstrb,
        s_axi_wlast => axi_wlast,
        s_axi_wvalid => axi_wvalid,
        s_axi_wready => axi_wready,
        
        s_axi_bid => axi_bid,
        s_axi_bresp => axi_bresp,
        s_axi_bvalid => axi_bvalid,
        s_axi_bready => axi_bready,
        
        s_axi_arid => axi_arid,
        s_axi_araddr => axi_araddr,
        s_axi_arlen => axi_arlen,
        s_axi_arsize => axi_arsize,
        s_axi_arburst => axi_arburst,
        s_axi_arlock => axi_arlock,
        s_axi_arcache => axi_arcache,
        s_axi_arprot => axi_arprot,
        s_axi_arqos => axi_arqos,
        s_axi_arvalid => axi_arvalid,
        s_axi_arready => axi_arready,
        
        s_axi_rid => axi_rid,
        s_axi_rdata => axi_rdata,
        s_axi_rresp => axi_rresp,
        s_axi_rlast => axi_rlast,
        s_axi_rvalid => axi_rvalid,
        s_axi_rready => axi_rready,
        
        sys_clk_i => system_clock,
        sys_rst => '1');

end Behavioral;


================================================
FILE: vhdl_rx/demo-top/mig_a.prj
================================================
<?xml version='1.0' encoding='UTF-8'?>
<!-- IMPORTANT: This is an internal file that has been generated by the MIG software. Any direct editing or changes made to this file may result in unpredictable behavior or data corruption. It is strongly advised that users do not edit the contents of this file. Re-run the MIG GUI with the required settings if any of the options provided below need to be altered. -->
<Project NoOfControllers="1" >
    <ModuleName>ddr3_if</ModuleName>
    <dci_inouts_inputs>1</dci_inouts_inputs>
    <dci_inputs>1</dci_inputs>
    <Debug_En>OFF</Debug_En>
    <DataDepth_En>1024</DataDepth_En>
    <LowPower_En>ON</LowPower_En>
    <XADC_En>Enabled</XADC_En>
    <TargetFPGA>xc7k325t-ffg900/-2</TargetFPGA>
    <Version>4.0</Version>
    <SystemClock>No Buffer</SystemClock>
    <ReferenceClock>Use System Clock</ReferenceClock>
    <SysResetPolarity>ACTIVE LOW</SysResetPolarity>
    <BankSelectionFlag>FALSE</BankSelectionFlag>
    <InternalVref>0</InternalVref>
    <dci_hr_inouts_inputs>OFF</dci_hr_inouts_inputs>
    <dci_cascade>0</dci_cascade>
    <Controller number="0" >
        <MemoryDevice>DDR3_SDRAM/Components/MT41J256m16XX-107</MemoryDevice>
        <TimePeriod>1250</TimePeriod>
        <VccAuxIO>2.0V</VccAuxIO>
        <PHYRatio>4:1</PHYRatio>
        <InputClkFreq>200</InputClkFreq>
        <UIExtraClocks>0</UIExtraClocks>
        <MMCM_VCO>800</MMCM_VCO>
        <MMCMClkOut0> 1.000</MMCMClkOut0>
        <MMCMClkOut1>1</MMCMClkOut1>
        <MMCMClkOut2>1</MMCMClkOut2>
        <MMCMClkOut3>1</MMCMClkOut3>
        <MMCMClkOut4>1</MMCMClkOut4>
        <DataWidth>32</DataWidth>
        <DeepMemory>1</DeepMemory>
        <DataMask>1</DataMask>
        <ECC>Disabled</ECC>
        <Ordering>Normal</Ordering>
        <BankMachineCnt>2</BankMachineCnt>
        <CustomPart>FALSE</CustomPart>
        <NewPartName></NewPartName>
        <RowAddress>15</RowAddress>
        <ColAddress>10</ColAddress>
        <BankAddress>3</BankAddress>
        <MemoryVoltage>1.5V</MemoryVoltage>
        <UserMemoryAddressMap>ROW_BANK_COLUMN</UserMemoryAddressMap>
        <PinSelection>
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AC12" SLEW="" name="ddr3_addr[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AB8" SLEW="" name="ddr3_addr[10]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AA8" SLEW="" name="ddr3_addr[11]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AB12" SLEW="" name="ddr3_addr[12]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AA12" SLEW="" name="ddr3_addr[13]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AH9" SLEW="" name="ddr3_addr[14]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AE8" SLEW="" name="ddr3_addr[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AD8" SLEW="" name="ddr3_addr[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AC10" SLEW="" name="ddr3_addr[3]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AD9" SLEW="" name="ddr3_addr[4]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AA13" SLEW="" name="ddr3_addr[5]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AA10" SLEW="" name="ddr3_addr[6]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AA11" SLEW="" name="ddr3_addr[7]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="Y10" SLEW="" name="ddr3_addr[8]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="Y11" SLEW="" name="ddr3_addr[9]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AE9" SLEW="" name="ddr3_ba[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AB10" SLEW="" name="ddr3_ba[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AC11" SLEW="" name="ddr3_ba[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AF11" SLEW="" name="ddr3_cas_n" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15" PADName="AC9" SLEW="" name="ddr3_ck_n[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15" PADName="AB9" SLEW="" name="ddr3_ck_p[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AJ9" SLEW="" name="ddr3_cke[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AH12" SLEW="" name="ddr3_cs_n[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AD4" SLEW="" name="ddr3_dm[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AF3" SLEW="" name="ddr3_dm[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AH4" SLEW="" name="ddr3_dm[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AF8" SLEW="" name="ddr3_dm[3]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AD3" SLEW="" name="ddr3_dq[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AF1" SLEW="" name="ddr3_dq[10]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AE4" SLEW="" name="ddr3_dq[11]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AE3" SLEW="" name="ddr3_dq[12]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AE5" SLEW="" name="ddr3_dq[13]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AF5" SLEW="" name="ddr3_dq[14]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AF6" SLEW="" name="ddr3_dq[15]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ4" SLEW="" name="ddr3_dq[16]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AH6" SLEW="" name="ddr3_dq[17]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AH5" SLEW="" name="ddr3_dq[18]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AH2" SLEW="" name="ddr3_dq[19]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AC2" SLEW="" name="ddr3_dq[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ2" SLEW="" name="ddr3_dq[20]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ1" SLEW="" name="ddr3_dq[21]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AK1" SLEW="" name="ddr3_dq[22]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ3" SLEW="" name="ddr3_dq[23]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AF7" SLEW="" name="ddr3_dq[24]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AG7" SLEW="" name="ddr3_dq[25]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ6" SLEW="" name="ddr3_dq[26]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AK6" SLEW="" name="ddr3_dq[27]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AJ8" SLEW="" name="ddr3_dq[28]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AK8" SLEW="" name="ddr3_dq[29]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AC1" SLEW="" name="ddr3_dq[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AK5" SLEW="" name="ddr3_dq[30]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AK4" SLEW="" name="ddr3_dq[31]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AC5" SLEW="" name="ddr3_dq[3]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AC4" SLEW="" name="ddr3_dq[4]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AD6" SLEW="" name="ddr3_dq[5]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AE6" SLEW="" name="ddr3_dq[6]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AC7" SLEW="" name="ddr3_dq[7]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AF2" SLEW="" name="ddr3_dq[8]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15_T_DCI" PADName="AE1" SLEW="" name="ddr3_dq[9]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AD1" SLEW="" name="ddr3_dqs_n[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AG3" SLEW="" name="ddr3_dqs_n[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AH1" SLEW="" name="ddr3_dqs_n[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AJ7" SLEW="" name="ddr3_dqs_n[3]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AD2" SLEW="" name="ddr3_dqs_p[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AG4" SLEW="" name="ddr3_dqs_p[1]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AG2" SLEW="" name="ddr3_dqs_p[2]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="DIFF_SSTL15_T_DCI" PADName="AH7" SLEW="" name="ddr3_dqs_p[3]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AK9" SLEW="" name="ddr3_odt[0]" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AE11" SLEW="" name="ddr3_ras_n" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="LVCMOS15" PADName="AG5" SLEW="" name="ddr3_reset_n" IN_TERM="" />
            <Pin VCCAUX_IO="HIGH" IOSTANDARD="SSTL15" PADName="AG13" SLEW="" name="ddr3_we_n" IN_TERM="" />
        </PinSelection>
        <System_Control>
            <Pin PADName="No connect" Bank="Select Bank" name="sys_rst" />
            <Pin PADName="No connect" Bank="Select Bank" name="init_calib_complete" />
            <Pin PADName="No connect" Bank="Select Bank" name="tg_compare_error" />
        </System_Control>
        <TimingParameters>
            <Parameters twtr="7.5" trrd="6" trefi="7.8" tfaw="35" trtp="7.5" tcke="5" trfc="260" trp="13.91" tras="34" trcd="13.91" />
        </TimingParameters>
        <mrBurstLength name="Burst Length" >8 - Fixed</mrBurstLength>
        <mrBurstType name="Read Burst Type and Length" >Sequential</mrBurstType>
        <mrCasLatency name="CAS Latency" >11</mrCasLatency>
        <mrMode name="Mode" >Normal</mrMode>
        <mrDllReset name="DLL Reset" >No</mrDllReset>
        <mrPdMode name="DLL control for precharge PD" >Slow Exit</mrPdMode>
        <emrDllEnable name="DLL Enable" >Enable</emrDllEnable>
        <emrOutputDriveStrength name="Output Driver Impedance Control" >RZQ/7</emrOutputDriveStrength>
        <emrMirrorSelection name="Address Mirroring" >Disable</emrMirrorSelection>
        <emrCSSelection name="Controller Chip Select Pin" >Enable</emrCSSelection>
        <emrRTT name="RTT (nominal) - On Die Termination (ODT)" >RZQ/6</emrRTT>
        <emrPosted name="Additive Latency (AL)" >0</emrPosted>
        <emrOCD name="Write Leveling Enable" >Disabled</emrOCD>
        <emrDQS name="TDQS enable" >Enabled</emrDQS>
        <emrRDQS name="Qoff" >Output Buffer Enabled</emrRDQS>
        <mr2PartialArraySelfRefresh name="Partial-Array Self Refresh" >Full Array</mr2PartialArraySelfRefresh>
        <mr2CasWriteLatency name="CAS write latency" >8</mr2CasWriteLatency>
        <mr2AutoSelfRefresh name="Auto Self Refresh" >Enabled</mr2AutoSelfRefresh>
        <mr2SelfRefreshTempRange name="High Temparature Self Refresh Rate" >Normal</mr2SelfRefreshTempRange>
        <mr2RTTWR name="RTT_WR - Dynamic On Die Termination (ODT)" >Dynamic ODT off</mr2RTTWR>
        <PortInterface>AXI</PortInterface>
        <AXIParameters>
            <C0_C_RD_WR_ARB_ALGORITHM>RD_PRI_REG_STARVE_LIMIT</C0_C_RD_WR_ARB_ALGORITHM>
            <C0_S_AXI_ADDR_WIDTH>30</C0_S_AXI_ADDR_WIDTH>
            <C0_S_AXI_DATA_WIDTH>256</C0_S_AXI_DATA_WIDTH>
            <C0_S_AXI_ID_WIDTH>1</C0_S_AXI_ID_WIDTH>
            <C0_S_AXI_SUPPORTS_NARROW_BURST>0</C0_S_AXI_SUPPORTS_NARROW_BURST>
        </AXIParameters>
    </Controller>

</Project>


================================================
FILE: vhdl_rx/demo-top/ov13850_demo.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

library UNISIM;
use UNISIM.VComponents.all;

--OV13850 Demo Top Level Design
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

entity ov13850_demo is
  Port (
    clock_p : in std_logic;
    clock_n : in std_logic;
    reset_n : in std_logic;

    hdmi_clk : out std_logic_vector(1 downto 0);
    hdmi_d0 : out std_logic_vector(1 downto 0);
    hdmi_d1 : out std_logic_vector(1 downto 0);
    hdmi_d2 : out std_logic_vector(1 downto 0);
    
    vga_hsync : out std_logic;
    vga_vsync : out std_logic;
    vga_r : out std_logic_vector(4 downto 0);
    vga_g : out std_logic_vector(5 downto 0);
    vga_b : out std_logic_vector(4 downto 0);

    zoom_mode : in std_logic;
    freeze : in std_logic;

    --Camera CSI port
    csi0_clk : in std_logic_vector(1 downto 0);
    csi0_d0 : in std_logic_vector(1 downto 0);
    csi0_d1 : in std_logic_vector(1 downto 0);
    csi0_d2 : in std_logic_vector(1 downto 0);
    csi0_d3 : in std_logic_vector(1 downto 0);

    --Camera control port
    cam_mclk : out std_logic;
    cam_rstn : out std_logic;
    cam_i2c_sda : inout std_logic;
    cam_i2c_sck : inout std_logic;

   --DDR3 interface
    ddr3_addr : out std_logic_vector(14 downto 0);
    ddr3_ba : out std_logic_vector(2 downto 0);
    ddr3_cas_n : out std_logic;
    ddr3_ck_n : out std_logic_vector(0 downto 0);
    ddr3_ck_p : out std_logic_vector(0 downto 0);
    ddr3_cke : out std_logic_vector(0 downto 0);
    ddr3_ras_n : out std_logic;
    ddr3_reset_n : out std_logic;
    ddr3_we_n : out std_logic;
    ddr3_dq : inout std_logic_vector(31 downto 0);
    ddr3_dqs_n : inout std_logic_vector(3 downto 0);
    ddr3_dqs_p : inout std_logic_vector(3 downto 0);
    ddr3_cs_n : out std_logic_vector(0 downto 0);
    ddr3_dm : out std_logic_vector(3 downto 0);
    ddr3_odt : out std_logic_vector(0 downto 0)
  );
end ov13850_demo;

architecture Behavioral of ov13850_demo is

  signal sys_clock : std_logic;

  signal reset : std_logic;
  signal dvi_pixel_clock, dvi_bit_clock : std_logic;

  signal dvi_data : std_logic_vector(23 downto 0);
  signal dvi_den, dvi_hsync, dvi_vsync : std_logic;

  signal i2c_clk_in, i2c_clk_div_1, i2c_clk_div : std_logic;
  signal cam_loading, csi_en, csi_rst : std_logic;

  signal camera_rstn_int : std_logic;
  signal input_pixel_clock : std_logic;

  signal camera_line_start, camera_den, camera_hsync, camera_vsync, camera_odd_line : std_logic;
  signal camera_data, camera_prev_line_data : std_logic_vector(19 downto 0);

  signal debayer_line_start, debayer_den, debayer_hsync, debayer_vsync : std_logic;
  signal debayer_data_even, debayer_data_odd : std_logic_vector(29 downto 0);

  signal fbin_line_start, fbin_den, fbin_hsync, fbin_vsync : std_logic;
  signal fbin_data_even, fbin_data_odd : std_logic_vector(23 downto 0);

  component dvi_pll is
    port(
      sysclk : in std_logic;
      pixel_clock : out std_logic;
      dvi_bit_clock : out std_logic);
  end component;

  component camera_pll is
    port(
      sysclk : in std_logic;
      camera_pixel_clock : out std_logic;
      camera_mclk : out std_logic;
      i2c_clkin : out std_logic);
  end component;


begin
    reset <= not reset_n;

    clkbuf : IBUFGDS
    generic map(
        DIFF_TERM => TRUE,
        IBUF_LOW_PWR => FALSE,
        IOSTANDARD => "DEFAULT")
    port map(
        O => sys_clock,
        I => clock_p,
        IB => clock_n);

    pll1 : dvi_pll
    port map(
        sysclk => sys_clock,
        pixel_clock => dvi_pixel_clock,
        dvi_bit_clock => dvi_bit_clock
    );

    pll2 : camera_pll
    port map(
        sysclk => sys_clock,
        camera_pixel_clock => input_pixel_clock,
        camera_mclk => cam_mclk,
        i2c_clkin => i2c_clk_in
    );

    --Divide 5MHz from PLL to slower I2C/reset controller input clock
    i2c_clkdiv : BUFR
      generic map(
        BUFR_DIVIDE => "8",
        SIM_DEVICE => "7SERIES")
      port map(
        O => i2c_clk_div_1,
        CE => '1',
        CLR => reset,
        I => i2c_clk_in);

    i2c_clkdiv2 : BUFR
      generic map(
        BUFR_DIVIDE => "4",
        SIM_DEVICE => "7SERIES")
      port map(
        O => i2c_clk_div,
        CE => '1',
        CLR => reset,
        I => i2c_clk_div_1);

    cam_ctl : entity work.ov13850_control_top
      port map (
        reset => reset,
        clock => i2c_clk_div,
        i2c_sda => cam_i2c_sda,
        i2c_sck => cam_i2c_sck,
        rst_out => camera_rstn_int,
        loading_out => cam_loading);

    cam_rstn <= camera_rstn_int;
    csi_rst <= not camera_rstn_int;
    csi_en <= not cam_loading;

    csi_rx : entity work.csi_rx_4lane
      generic map(
        fpga_series => "7SERIES",
        dphy_term_en => true,
        d0_invert => false,
        d1_invert => false,
        d2_invert => false,
        d3_invert => false,
        d0_skew => 10,
        d1_skew => 10,
        d2_skew => 10,
        d3_skew => 10,
        video_hlength =>  4041,
        video_vlength => 2992,
        video_hsync_pol => true,
        video_hsync_len => 48,
        video_hbp_len => 122,
        video_h_visible => 3840,
        video_vsync_pol => true,
        video_vsync_len => 3,
        video_vbp_len => 23 ,
        video_v_visible => 2160,
        pixels_per_clock => 2,
        generate_idelayctrl => true)
      port map(
        ref_clock_in => sys_clock,
        pixel_clock_in => input_pixel_clock,
        byte_clock_out => open,
        enable => csi_en,
        reset => csi_rst,
        video_valid => open,

        dphy_clk => csi0_clk,
        dphy_d0 => csi0_d0,
        dphy_d1 => csi0_d1,
        dphy_d2 => csi0_d2,
        dphy_d3 => csi0_d3,

        video_hsync => camera_hsync,
        video_vsync => camera_vsync,
        video_den => camera_den,
        video_line_start => camera_line_start,
        video_odd_line => camera_odd_line,
        video_data => camera_data,
        video_prev_line_data => camera_prev_line_data);

    db : entity work.simple_debayer
      port map(
        clock => input_pixel_clock,
        input_vsync => camera_vsync,
        input_hsync => camera_hsync,
        input_den => camera_den,
        input_odd_line => camera_odd_line,
        input_line_start => camera_line_start,
        input_data => camera_data,
        input_prev_line_data => camera_prev_line_data,
       
        output_vsync => debayer_vsync,
        output_hsync => debayer_hsync,
        output_den => debayer_den,
        output_line_start => debayer_line_start,
        output_data_even => debayer_data_even,
        output_data_odd => debayer_data_odd);

    wb : entity work.image_gain_wb
      generic map(
        red_gain => 10,
        green_gain => 7,
        blue_gain => 9)
      port map(
        clock => input_pixel_clock,
        input_vsync => debayer_vsync,
        input_hsync => debayer_hsync,
        input_den => debayer_den,
        input_line_start => debayer_line_start,
        input_data_even => debayer_data_even,
        input_data_odd => debayer_data_odd,
        
        output_vsync => fbin_vsync,
        output_hsync => fbin_hsync,
        output_den => fbin_den,
        output_line_start => fbin_line_start,
        output_data_even => fbin_data_even,
        output_data_odd => fbin_data_odd);

    fbtest : entity work.framebuffer_top
      port map(
        input_pixck => input_pixel_clock,
        input_vsync => fbin_vsync,
        input_line_start => fbin_line_start,
        input_den => fbin_den,
        input_data_even => fbin_data_even,
        input_data_odd => fbin_data_odd,

        system_clock => sys_clock,
        system_reset => reset,
        zoom_mode => zoom_mode,
        freeze => freeze,

        output_pixck => dvi_pixel_clock,
        output_vsync => dvi_vsync,
        output_hsync => dvi_hsync,
        output_den => dvi_den,
        output_line_start  => open,
        output_data => dvi_data,

        --DDR3 interface
        ddr3_addr => ddr3_addr,
        ddr3_ba => ddr3_ba,
        ddr3_cas_n => ddr3_cas_n,
        ddr3_ck_n => ddr3_ck_n,
        ddr3_ck_p => ddr3_ck_p,
        ddr3_cke => ddr3_cke,
        ddr3_ras_n => ddr3_ras_n,
        ddr3_reset_n => ddr3_reset_n,
        ddr3_we_n => ddr3_we_n,
        ddr3_dq => ddr3_dq,
        ddr3_dqs_n => ddr3_dqs_n,
        ddr3_dqs_p => ddr3_dqs_p,
        ddr3_cs_n => ddr3_cs_n,
        ddr3_dm => ddr3_dm,
        ddr3_odt => ddr3_odt
     );

    dvi_tx : entity work.dvi_tx
      port map(
          pixel_clock => dvi_pixel_clock,
          ddr_bit_clock => dvi_bit_clock,
          reset => reset,
          den => dvi_den,
          hsync => dvi_hsync,
          vsync => dvi_vsync,
          pixel_data => dvi_data,

          tmds_clk => hdmi_clk,
          tmds_d0 => hdmi_d0,
          tmds_d1 => hdmi_d1,
          tmds_d2 => hdmi_d2
      );
      
    vga_hsync <= dvi_hsync;
    vga_vsync <= dvi_vsync;
    vga_r <= dvi_data(23 downto 19);
    vga_g <= dvi_data(15 downto 10);
    vga_b <= dvi_data(7 downto 3);
end Behavioral;


================================================
FILE: vhdl_rx/dvi-tx/dvi_tx_clk_drv.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

library UNISIM;
use UNISIM.VComponents.all;

--DVI Transmitter clock lane driver
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

--This drives the TMDS clock lane, taking the pixel clock as input
entity dvi_tx_clk_drv is
  port(
    pixel_clock : in std_logic;
    tmds_clk : out std_logic_vector(1 downto 0));
end dvi_tx_clk_drv;

architecture Behavioral of dvi_tx_clk_drv is
  signal tmds_clk_pre : std_logic;
begin
  --Using an ODDR simplifies clock routing and avoids the need for a clock capable output
  clk_oddr : ODDR
    generic map(
      DDR_CLK_EDGE => "OPPOSITE_EDGE",
      INIT => '0',
      SRTYPE => "SYNC")
    port map(
      Q => tmds_clk_pre,
      C => pixel_clock,
      CE => '1',
      D1 => '1',
      D2 => '0',
      R => '0',
      S => '0');

  clk_obuf : OBUFDS
    generic map (
      IOSTANDARD => "DEFAULT",
      SLEW => "FAST")
    port map (
      O => tmds_clk(1),
      OB => tmds_clk(0),
      I => tmds_clk_pre);
end Behavioral;


================================================
FILE: vhdl_rx/dvi-tx/dvi_tx_tmds_enc.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

--DVI Transmitter TMDS encoder
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

--This encodes TMDS 'characters' according to the algorithm in the DVI specification

entity dvi_tx_tmds_enc is
  port(
    clock : in std_logic; --TMDS character clock
    reset : in std_logic; --synchronous reset input
    den   : in std_logic; --display data enable
    data  : in std_logic_vector(7 downto 0); --8bit display data
    ctrl  : in std_logic_vector(1 downto 0); --2bit control (vsync+hsync for ch0)
    tmds  : out std_logic_vector(9 downto 0) --10bit encoded TMDS to transmit
  );
end dvi_tx_tmds_enc;

architecture Behavioral of dvi_tx_tmds_enc is
  signal data_lat : std_logic_vector(7 downto 0);
  signal den_lat : std_logic;
  signal ctrl_lat : std_logic_vector(1 downto 0);
  signal tmds_int : std_logic_vector(9 downto 0);
  signal cnt_q    : integer range -256 to 255;
  signal cnt_d    : integer range -256 to 255;

  signal q_m      : std_logic_vector(8 downto 0);

  function count_ones(x : std_logic_vector) return integer is
    variable count : natural := 0;
  begin
    for i in x'range loop
      if x(i) = '1' then
        count := count + 1;
      end if;
    end loop;
    return count;
  end function;

  function count_zeros(x : std_logic_vector) return integer is
    variable count : natural := 0;
  begin
    for i in x'range loop
      if x(i) = '0' then
        count := count + 1;
      end if;
    end loop;
    return count;
  end function;

begin

  process(clock)
  begin
    if rising_edge(clock) then
      if reset = '1' then
        data_lat <= (others => '0');
        ctrl_lat <= (others => '0');
        den_lat <= '0';
        tmds <= (others => '0');
        cnt_q <= 0;
      else
        data_lat <= data;
        den_lat <= den;
        ctrl_lat <= ctrl;
        tmds <= tmds_int;
        cnt_q <= cnt_d;
      end if;
    end if;
  end process;

  process(data_lat)
    variable q_m_temp : std_logic_vector(8 downto 0);
  begin
    q_m_temp(0) := data_lat(0);
    if count_ones(data_lat) > 4 or ((count_ones(data_lat) = 4) and data_lat(0) = '0') then
      for i in 1 to 7 loop
        q_m_temp(i) := not(q_m_temp(i-1) xor data_lat(i));
      end loop;
      q_m_temp(8) := '0';
    else
      for i in 1 to 7 loop
        q_m_temp(i) := q_m_temp(i-1) xor data_lat(i);
      end loop;
      q_m_temp(8) := '1';
    end if;
    q_m <= q_m_temp;
  end process;

  process(cnt_q, q_m, den_lat, ctrl_lat)
    variable q_out : std_logic_vector(9 downto 0);
  begin
    if den_lat = '0' then
      cnt_d <= 0;
      case ctrl_lat is
        when "00" =>
          q_out := "1101010100";
        when "01" =>
          q_out := "0010101011";
        when "10" =>
          q_out := "0101010100";
        when "11" =>
          q_out := "1010101011";
        when others => --never occurs in synthesised system but keeps sims happy
          q_out := "0000000000";
      end case;
    else
      if cnt_q = 0 or count_ones(q_m(7 downto 0)) = 4 then
        q_out(9) := not q_m(8);
        q_out(8) := q_m(8);
        if q_m(8) = '1' then
          q_out(7 downto 0) := q_m(7 downto 0);
          cnt_d <= cnt_q + 2 * (count_ones(q_m(7 downto 0)) - 4);
        else
          q_out(7 downto 0) := not q_m(7 downto 0);
          cnt_d <= cnt_q + 2 * (4 - count_ones(q_m(7 downto 0)));
        end if;
      else
        if ((cnt_q > 0) and (count_ones(q_m(7 downto 0)) > 4))
            or ((cnt_q < 0) and (count_ones(q_m(7 downto 0)) < 4)) then
          q_out(9) := '1';
          q_out(8) := q_m(8);
          q_out(7 downto 0) := not q_m(7 downto 0);
          if q_m(8) = '1' then
            cnt_d <= cnt_q + 2 + 2 * (4 - count_ones(q_m(7 downto 0)));
          else
            cnt_d <= cnt_q + 2 * (4 - count_ones(q_m(7 downto 0)));
          end if;
        else
          q_out(9) := '0';
          q_out(8) := q_m(8);
          q_out(7 downto 0) := q_m(7 downto 0);
          if q_m(8) = '0' then
            cnt_d <= (cnt_q - 2) + 2 * (count_ones(q_m(7 downto 0)) - 4);
          else
            cnt_d <= cnt_q + 2 * (count_ones(q_m(7 downto 0)) - 4);
          end if;
        end if;
      end if;
    end if;
    tmds_int <= q_out;
  end process;
end Behavioral;


================================================
FILE: vhdl_rx/dvi-tx/dvi_tx_tmds_phy.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

library UNISIM;
use UNISIM.VComponents.all;

--DVI Transmitter TMDS PHY for Xilinx 7-series devices
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

--This handles the actual serialisation and transmission of 10bit encoded
--TMDS data

entity dvi_tx_tmds_phy is
  port(
    pixel_clock : in std_logic; --DVI pixel clock in
    ddr_bit_clock : in std_logic; --DDR bit clock i.e. pixel_clock*5 - must be from same MMCM/PLL as pixel_clock
    reset : in std_logic; --SERDES reset input
    data : in std_logic_vector(9 downto 0);
    tmds_lane : out std_logic_vector(1 downto 0) --1 is P, 0 is N
  );
end dvi_tx_tmds_phy;

architecture Behavioral of dvi_tx_tmds_phy is
  signal reset_lat : std_logic; --reset latched to pixel clock
  signal shift_1, shift_2 : std_logic; --used to link master and slave OSERDES
  signal data_se : std_logic; --serialised data before output buffer
begin
  process(pixel_clock)
  begin
    if rising_edge(pixel_clock) then
      reset_lat <= reset;
    end if;
  end process;

  master_oserdes : OSERDESE2
    generic map(
      DATA_RATE_OQ => "DDR",
      DATA_RATE_TQ => "SDR",
      DATA_WIDTH => 10,
      INIT_OQ => '0',
      INIT_TQ => '0',
      SERDES_MODE => "MASTER",
      SRVAL_OQ => '0',
      SRVAL_TQ => '0',
      TBYTE_CTL => "FALSE",
      TBYTE_SRC => "FALSE",
      TRISTATE_WIDTH => 1)
    port map(
      CLK => ddr_bit_clock,
      CLKDIV => pixel_clock,
      D1 => data(0),
      D2 => data(1),
      D3 => data(2),
      D4 => data(3),
      D5 => data(4),
      D6 => data(5),
      D7 => data(6),
      D8 => data(7),
      OCE => '1',
      OFB => open,
      OQ => data_se,
      RST => reset_lat,
      SHIFTIN1 => shift_1,
      SHIFTIN2 => shift_2,
      SHIFTOUT1 => open,
      SHIFTOUT2 => open,
      TBYTEIN => '0',
      TCE => '1',
      TFB => open,
      TQ => open,
      T1 => '0',
      T2 => '0',
      T3 => '0',
      T4 => '0');

  slave_oserdes : OSERDESE2
    generic map(
      DATA_RATE_OQ => "DDR",
      DATA_RATE_TQ => "SDR",
      DATA_WIDTH => 10,
      INIT_OQ => '0',
      INIT_TQ => '0',
      SERDES_MODE => "SLAVE",
      SRVAL_OQ => '0',
      SRVAL_TQ => '0',
      TBYTE_CTL => "FALSE",
      TBYTE_SRC => "FALSE",
      TRISTATE_WIDTH => 1)
    port map(
      CLK => ddr_bit_clock,
      CLKDIV => pixel_clock,
      D1 => '0',
      D2 => '0',
      D3 => data(8),
      D4 => data(9),
      D5 => '0',
      D6 => '0',
      D7 => '0',
      D8 => '0',
      OCE => '1',
      OFB => open,
      OQ => open,
      RST => reset_lat,
      SHIFTIN1 => '0',
      SHIFTIN2 => '0',
      SHIFTOUT1 => shift_1,
      SHIFTOUT2 => shift_2,
      TBYTEIN => '0',
      TCE => '1',
      TFB => open,
      TQ => open,
      T1 => '0',
      T2 => '0',
      T3 => '0',
      T4 => '0');

  outbuf : OBUFDS
    generic map (
      IOSTANDARD => "DEFAULT",
      SLEW => "FAST")
    port map (
      O => tmds_lane(1),
      OB => tmds_lane(0),
      I => data_se);
end Behavioral;


================================================
FILE: vhdl_rx/dvi-tx/dvi_tx_top.vhd
================================================
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

--Simple DVI Transmitter for Xilinx 7-series devices
--Copyright (C) 2016 David Shah
--Licensed under the MIT License

--This is a minimal DVI transmitter core designed for Xilinx 7-series devices
--and tested using the HDMI output the Digilent Genesys 2 board (Kintex-7 XC7K325T)

entity dvi_tx is
  port(
    pixel_clock : in std_logic; --pixel clock input
    ddr_bit_clock : in std_logic; --DDR bit clock i.e. pixel_clock*5 - must be from same MMCM/PLL as pixel_clock
    reset : in std_logic; --synchronous active high reset input
    den : in std_logic; --video data valid input (active high)
    hsync : in std_logic; --video hsync input (polarity is timing dependent)
    vsync : in std_logic; --video vsync input (polarity is timing dependent)
    pixel_data : in std_logic_vector(23 downto 0); --24-bit video data

    tmds_clk : out std_logic_vector(1 downto 0); --TMDS clock lane; 1 is P, 0 is N
    tmds_d0 : out std_logic_vector(1 downto 0); --TMDS data lanes; 1 is P, 0 is N
    tmds_d1 : out std_logic_vector(1 downto 0);
    tmds_d2 : out std_logic_vector(1 downto 0));
end dvi_tx;

architecture Behavioral of dvi_tx is
  signal ctrl : std_logic_vector(5 downto 0); --TMDS control signal states
  signal tmds_enc : std_logic_vector(29 downto 0); --TMDS encoded data

  type tmds_lanes_t is array (0 to 2) of std_logic_vector(1 downto 0);
  signal tmds_lanes : tmds_lanes_t;

begin
  ctrl(0) <= hsync;
  ctrl(1) <= vsync;
  ctrl(5 downto 2) <= "0000";

  gen_lane : for i in 0 to 2 generate
    lane_enc : entity work.dvi_tx_tmds_enc
      port map(
        clock => pixel_clock,
        reset => reset,
        den => den,
        data => pixel_data(((8*i) + 7) downto (8*i)),
        ctrl => ctrl(((2*i) + 1) downto (2*i)),
        tmds => tmds_enc( ((10*i) + 9) downto (10*i)));

    lane_phy : entity work.dvi_tx_tmds_phy
      port map(
        pixel_clock => pixel_clock,
        ddr_bit_clock => ddr_bit_clock,
        reset => reset,
        data => tmds_enc( ((10*i) + 9) downto (10*i)),
        tmds_lane => tmds_lanes(i));
  end generate;

  clock_phy : entity work.dvi_tx_clk_drv
    port map(
      pixel_clock => pixel_clock,
      tmds_clk => tmds_clk);

  tmds_d0 <= tmds_lanes(0);
  tmds_d1 <= tmds_lanes(1);
  tmds_d2 <= tmds_lanes(2);

end Behavioral;


================================================
FILE: vhdl_rx/examples/.gitignore
================================================
#########################################################################################################
##	This is an example .gitignore file for Vivado, please treat it as an example as
##	it might not be complete. In addition, XAPP 1165 should be followed.
#########################################################################################################
#########
#Exclude all
#########
*
!*/
!.gitignore
###########################################################################
##	VIVADO
###########################################################################
#########
#Source files:
#########
#Do NOT ignore VHDL, Verilog, block diagrams or EDIF files.
!*.vhd
!*.v
!*.bd
!*.edif
#########
#IP files
#########
#.xci: synthesis and implemented not possible - you need to return back to the previous version to generate output products
#.xci + .dcp: implementation possible but not re-synthesis
#*.xci(www.spiritconsortium.org)
!*.xci
*.dcp(checkpoint files)
#!*.dcp
*.vds
*.pb
#All bd comments and layout coordinates are stored within .ui
!*.ui
!*.ooc
#########
#System Generator
#########
!*.mdl
!*.slx
!*.bxml
#########
#Simulation logic analyzer
#########
!*.wcfg
!*.coe
#########
#MIG
#########
!*.prj
!*.mem
#########
#Project files
#########
#XPR  +  *.XML ? XPR (Files are merged into a single XPR file for 2014.1 version)
#Do NOT ignore *.xpr files
!*.xpr
#Include *.xml files for 2013.4 or earlier version
*.xml
#########
#Constraint files
#########
#Do NOT ignore *.xdc files
!*.xdc
#########
#TCL - files
#########
!*.tcl
#########
#Journal - files
#########
*.jou
#########
#Reports
#########
*.rpt
*.txt
*.vdi
#########
#C-files
#########
!*.c
!*.h
!*.elf
!*.bmm
!*.xmp


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/54144841a4506c29.xci
================================================
<?xml version="1.0" encoding="UTF-8"?>
<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <spirit:vendor>xilinx.com</spirit:vendor>
  <spirit:library>ipcache</spirit:library>
  <spirit:name>54144841a4506c29</spirit:name>
  <spirit:version>0</spirit:version>
  <spirit:componentInstances>
    <spirit:componentInstance>
      <spirit:instanceName>dvi_pll</spirit:instanceName>
      <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="clk_wiz" spirit:version="5.3"/>
      <spirit:configurableElementValues>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AUTO_PRIMITIVE">MMCM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_DRP">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CALC_DONE">empty</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCDONE_PORT">cddcdone</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCREQ_PORT">cddcreq</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_JITTER_PS">50.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_JITTER">136.844</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR">157.836</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_OUT_FREQ">124</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_JITTER">105.471</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR">157.836</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ">620</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUTPHY_REQUESTED_FREQ">600.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN_SEL_PORT">clk_in_sel</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_PORT">pixel_clock</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_PORT">dvi_bit_clock</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_PORT">clk_out3</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_PORT">clk_out4</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_PORT">clk_out5</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_PORT">clk_out6</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_PORT">clk_out7</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_VALID_PORT">CLK_VALID</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLOCK_MGR_TYPE">auto</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">dvi_pll</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DADDR_PORT">daddr</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DCLK_PORT">dclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DEN_PORT">den</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIN_PORT">din</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DOUT_PORT">dout</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRDY_PORT">drdy</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DWE_PORT">dwe</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CDDC">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLKOUTPHY">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLOCK_MONITOR">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK0">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK1">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK2">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK3">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL0">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL1">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FEEDBACK_SOURCE">FDBK_AUTO</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_CLK_STOPPED_PORT">input_clk_stopped</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_MODE">frequency</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_SELECTION">Enable_AXI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_FREQ_UNITS">Units_MHz</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_JITTER_UNITS">Units_UI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_OPTIONS">UI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_SEL">No_Jitter</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOCKED_PORT">locked</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F">31</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN1_PERIOD">5.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN2_PERIOD">10.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F">10</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE">2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_CASCADE">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLOCK_HOLD">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_COMPENSATION">ZHOLD</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_DIVCLK_DIVIDE">5</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_NOTES">None</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER1">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER2">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_STARTUP_WAIT">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.NUM_OUT_CLKS">2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_MMCM">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_PLL">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASESHIFT_MODE">WAVEFORM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASE_DUTY_CONFIG">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLATFORM">UNKNOWN</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_MULT">4</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKIN_PERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLK_FEEDBACK">CLKFBOUT</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_COMPENSATION">SYSTEM_SYNCHRONOUS</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_DIVCLK_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_NOTES">None</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_REF_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.POWER_DOWN_PORT">power_down</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRECISION">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMARY_PORT">sysclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">PLL</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMTYPE_SEL">mmcm_adv</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_FREQ">200</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_TIMEPERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_SOURCE">Global_buffer</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSCLK_PORT">psclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSDONE_PORT">psdone</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSEN_PORT">psen</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSINCDEC_PORT">psincdec</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REF_CLK_FREQ">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RELATIVE_INCLK">REL_PRIMARY</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PORT">reset</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">ACTIVE_HIGH</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_TIMEPERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_PORT">clk_in2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MODE">CENTER_HIGH</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_FREQ">250</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_TIME">0.004</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.STATUS_PORT">STATUS</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SUMMARY_STRINGS">empty</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ0">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ1">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ2">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ3">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BOARD_FLOW">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLKFB_STOPPED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLK_VALID">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLOCK_SEQUENCING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_PHASE_SHIFT">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_RECONFIG">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREEZE">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREQ_SYNTH">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_STOPPED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_SWITCHOVER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_LOCKED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MAX_I_JITTER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_O_JITTER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_POWER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_PHASE_ALIGNMENT">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_POWER_DOWN">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RESET">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SAFE_CLOCK_STARTUP">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SPREAD_SPECTRUM">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_STATUS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">kintex7</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BOARD"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xc7k325t</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">ffg900</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VERILOG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SIMULATOR_LANGUAGE">MIXED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_CUSTOMIZATION">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_GENERATION">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHECRC">e2451eba</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHEID">54144841a4506c29</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESPECIALDATA">dvi_pll</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Unknown</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2016.3</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">GLOBAL</spirit:configurableElementValue>
      </spirit:configurableElementValues>
    </spirit:componentInstance>
  </spirit:componentInstances>
</spirit:design>


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/dvi_pll_sim_netlist.v
================================================
// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2016.3 (lin64) Build 1682563 Mon Oct 10 19:07:26 MDT 2016
// Date        : Tue Nov 15 16:22:12 2016
// Host        : david-desktop-arch running 64-bit unknown
// Command     : write_verilog -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix
//               decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ dvi_pll_sim_netlist.v
// Design      : dvi_pll
// Purpose     : This verilog netlist is a functional simulation representation of the design and should not be modified
//               or synthesized. This netlist cannot be used for SDF annotated simulation.
// Device      : xc7k325tffg900-2
// --------------------------------------------------------------------------------
`timescale 1 ps / 1 ps

(* NotValidForBitStream *)
module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix
   (pixel_clock,
    dvi_bit_clock,
    sysclk);
  output pixel_clock;
  output dvi_bit_clock;
  input sysclk;

  wire dvi_bit_clock;
  wire pixel_clock;
  wire sysclk;

  decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_dvi_pll_clk_wiz inst
       (.dvi_bit_clock(dvi_bit_clock),
        .pixel_clock(pixel_clock),
        .sysclk(sysclk));
endmodule

module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_dvi_pll_clk_wiz
   (pixel_clock,
    dvi_bit_clock,
    sysclk);
  output pixel_clock;
  output dvi_bit_clock;
  input sysclk;

  wire clkfbout_buf_dvi_pll;
  wire clkfbout_dvi_pll;
  wire dvi_bit_clock;
  wire dvi_bit_clock_dvi_pll;
  wire pixel_clock;
  wire pixel_clock_dvi_pll;
  wire sysclk;
  wire sysclk_dvi_pll;
  wire NLW_plle2_adv_inst_CLKOUT2_UNCONNECTED;
  wire NLW_plle2_adv_inst_CLKOUT3_UNCONNECTED;
  wire NLW_plle2_adv_inst_CLKOUT4_UNCONNECTED;
  wire NLW_plle2_adv_inst_CLKOUT5_UNCONNECTED;
  wire NLW_plle2_adv_inst_DRDY_UNCONNECTED;
  wire NLW_plle2_adv_inst_LOCKED_UNCONNECTED;
  wire [15:0]NLW_plle2_adv_inst_DO_UNCONNECTED;

  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkf_buf
       (.I(clkfbout_dvi_pll),
        .O(clkfbout_buf_dvi_pll));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkin1_bufg
       (.I(sysclk),
        .O(sysclk_dvi_pll));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkout1_buf
       (.I(pixel_clock_dvi_pll),
        .O(pixel_clock));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkout2_buf
       (.I(dvi_bit_clock_dvi_pll),
        .O(dvi_bit_clock));
  (* BOX_TYPE = "PRIMITIVE" *) 
  PLLE2_ADV #(
    .BANDWIDTH("OPTIMIZED"),
    .CLKFBOUT_MULT(31),
    .CLKFBOUT_PHASE(0.000000),
    .CLKIN1_PERIOD(5.000000),
    .CLKIN2_PERIOD(0.000000),
    .CLKOUT0_DIVIDE(10),
    .CLKOUT0_DUTY_CYCLE(0.500000),
    .CLKOUT0_PHASE(0.000000),
    .CLKOUT1_DIVIDE(2),
    .CLKOUT1_DUTY_CYCLE(0.500000),
    .CLKOUT1_PHASE(0.000000),
    .CLKOUT2_DIVIDE(1),
    .CLKOUT2_DUTY_CYCLE(0.500000),
    .CLKOUT2_PHASE(0.000000),
    .CLKOUT3_DIVIDE(1),
    .CLKOUT3_DUTY_CYCLE(0.500000),
    .CLKOUT3_PHASE(0.000000),
    .CLKOUT4_DIVIDE(1),
    .CLKOUT4_DUTY_CYCLE(0.500000),
    .CLKOUT4_PHASE(0.000000),
    .CLKOUT5_DIVIDE(1),
    .CLKOUT5_DUTY_CYCLE(0.500000),
    .CLKOUT5_PHASE(0.000000),
    .COMPENSATION("BUF_IN"),
    .DIVCLK_DIVIDE(5),
    .IS_CLKINSEL_INVERTED(1'b0),
    .IS_PWRDWN_INVERTED(1'b0),
    .IS_RST_INVERTED(1'b0),
    .REF_JITTER1(0.010000),
    .REF_JITTER2(0.010000),
    .STARTUP_WAIT("FALSE")) 
    plle2_adv_inst
       (.CLKFBIN(clkfbout_buf_dvi_pll),
        .CLKFBOUT(clkfbout_dvi_pll),
        .CLKIN1(sysclk_dvi_pll),
        .CLKIN2(1'b0),
        .CLKINSEL(1'b1),
        .CLKOUT0(pixel_clock_dvi_pll),
        .CLKOUT1(dvi_bit_clock_dvi_pll),
        .CLKOUT2(NLW_plle2_adv_inst_CLKOUT2_UNCONNECTED),
        .CLKOUT3(NLW_plle2_adv_inst_CLKOUT3_UNCONNECTED),
        .CLKOUT4(NLW_plle2_adv_inst_CLKOUT4_UNCONNECTED),
        .CLKOUT5(NLW_plle2_adv_inst_CLKOUT5_UNCONNECTED),
        .DADDR({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
        .DCLK(1'b0),
        .DEN(1'b0),
        .DI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
        .DO(NLW_plle2_adv_inst_DO_UNCONNECTED[15:0]),
        .DRDY(NLW_plle2_adv_inst_DRDY_UNCONNECTED),
        .DWE(1'b0),
        .LOCKED(NLW_plle2_adv_inst_LOCKED_UNCONNECTED),
        .PWRDWN(1'b0),
        .RST(1'b0));
endmodule
`ifndef GLBL
`define GLBL
`timescale  1 ps / 1 ps

module glbl ();

    parameter ROC_WIDTH = 100000;
    parameter TOC_WIDTH = 0;

//--------   STARTUP Globals --------------
    wire GSR;
    wire GTS;
    wire GWE;
    wire PRLD;
    tri1 p_up_tmp;
    tri (weak1, strong0) PLL_LOCKG = p_up_tmp;

    wire PROGB_GLBL;
    wire CCLKO_GLBL;
    wire FCSBO_GLBL;
    wire [3:0] DO_GLBL;
    wire [3:0] DI_GLBL;
   
    reg GSR_int;
    reg GTS_int;
    reg PRLD_int;

//--------   JTAG Globals --------------
    wire JTAG_TDO_GLBL;
    wire JTAG_TCK_GLBL;
    wire JTAG_TDI_GLBL;
    wire JTAG_TMS_GLBL;
    wire JTAG_TRST_GLBL;

    reg JTAG_CAPTURE_GLBL;
    reg JTAG_RESET_GLBL;
    reg JTAG_SHIFT_GLBL;
    reg JTAG_UPDATE_GLBL;
    reg JTAG_RUNTEST_GLBL;

    reg JTAG_SEL1_GLBL = 0;
    reg JTAG_SEL2_GLBL = 0 ;
    reg JTAG_SEL3_GLBL = 0;
    reg JTAG_SEL4_GLBL = 0;

    reg JTAG_USER_TDO1_GLBL = 1'bz;
    reg JTAG_USER_TDO2_GLBL = 1'bz;
    reg JTAG_USER_TDO3_GLBL = 1'bz;
    reg JTAG_USER_TDO4_GLBL = 1'bz;

    assign (weak1, weak0) GSR = GSR_int;
    assign (weak1, weak0) GTS = GTS_int;
    assign (weak1, weak0) PRLD = PRLD_int;

    initial begin
	GSR_int = 1'b1;
	PRLD_int = 1'b1;
	#(ROC_WIDTH)
	GSR_int = 1'b0;
	PRLD_int = 1'b0;
    end

    initial begin
	GTS_int = 1'b1;
	#(TOC_WIDTH)
	GTS_int = 1'b0;
    end

endmodule
`endif


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/dvi_pll_stub.v
================================================
// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2016.3 (lin64) Build 1682563 Mon Oct 10 19:07:26 MDT 2016
// Date        : Tue Nov 15 16:22:12 2016
// Host        : david-desktop-arch running 64-bit unknown
// Command     : write_verilog -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix
//               decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ dvi_pll_stub.v
// Design      : dvi_pll
// Purpose     : Stub declaration of top-level module interface
// Device      : xc7k325tffg900-2
// --------------------------------------------------------------------------------

// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix(pixel_clock, dvi_bit_clock, sysclk)
/* synthesis syn_black_box black_box_pad_pin="pixel_clock,dvi_bit_clock,sysclk" */;
  output pixel_clock;
  output dvi_bit_clock;
  input sysclk;
endmodule


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/548aa35948ad692b.xci
================================================
<?xml version="1.0" encoding="UTF-8"?>
<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <spirit:vendor>xilinx.com</spirit:vendor>
  <spirit:library>ipcache</spirit:library>
  <spirit:name>548aa35948ad692b</spirit:name>
  <spirit:version>0</spirit:version>
  <spirit:componentInstances>
    <spirit:componentInstance>
      <spirit:instanceName>camera_pll</spirit:instanceName>
      <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="clk_wiz" spirit:version="5.3"/>
      <spirit:configurableElementValues>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AUTO_PRIMITIVE">MMCM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_DRP">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CALC_DONE">empty</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCDONE_PORT">cddcdone</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCREQ_PORT">cddcreq</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_JITTER_PS">50.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_JITTER">280.569</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR">321.802</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_OUT_FREQ">145</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_JITTER">391.507</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR">321.802</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ">24.4</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_JITTER">519.540</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR">321.802</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ">5</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT4_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT5_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_USED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUTPHY_REQUESTED_FREQ">600.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_IN_SEL_PORT">clk_in_sel</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_PORT">camera_pixel_clock</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT1_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_PORT">camera_mclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT2_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_PORT">i2c_clkin</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT3_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_PORT">clk_out4</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT4_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_PORT">clk_out5</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT5_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_PORT">clk_out6</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT6_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_PORT">clk_out7</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_OUT7_USE_FINE_PS_GUI">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLK_VALID_PORT">CLK_VALID</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLOCK_MGR_TYPE">auto</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">camera_pll</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DADDR_PORT">daddr</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DCLK_PORT">dclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DEN_PORT">den</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN1_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIFF_CLK_IN2_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DIN_PORT">din</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DOUT_PORT">dout</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRDY_PORT">drdy</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DWE_PORT">dwe</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CDDC">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLKOUTPHY">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_CLOCK_MONITOR">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK0">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK1">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK2">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_USER_CLOCK3">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL0">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_PLL1">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FEEDBACK_SOURCE">FDBK_AUTO</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_CLK_STOPPED_PORT">input_clk_stopped</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_MODE">frequency</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_SELECTION">Enable_AXI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_FREQ_UNITS">Units_MHz</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.IN_JITTER_UNITS">Units_UI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_OPTIONS">UI</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.JITTER_SEL">No_Jitter</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOCKED_PORT">locked</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_MULT_F">25.375</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKFBOUT_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN1_PERIOD">5.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKIN2_PERIOD">10.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DIVIDE_F">4.375</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT0_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DIVIDE">26</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT1_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DIVIDE">127</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT2_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT3_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_CASCADE">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT4_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_USE_FINE_PS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLOCK_HOLD">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_COMPENSATION">ZHOLD</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_DIVCLK_DIVIDE">8</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_NOTES">None</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER1">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_REF_JITTER2">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_STARTUP_WAIT">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.NUM_OUT_CLKS">3</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_MMCM">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERRIDE_PLL">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASESHIFT_MODE">WAVEFORM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHASE_DUTY_CONFIG">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLATFORM">UNKNOWN</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_BANDWIDTH">OPTIMIZED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_MULT">4</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKFBOUT_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKIN_PERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT0_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT1_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT2_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT3_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT4_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_CLK_FEEDBACK">CLKFBOUT</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_COMPENSATION">SYSTEM_SYNCHRONOUS</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_DIVCLK_DIVIDE">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_NOTES">None</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PLL_REF_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.POWER_DOWN_PORT">power_down</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRECISION">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMARY_PORT">sysclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">MMCM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMTYPE_SEL">mmcm_adv</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_FREQ">200</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_IN_TIMEPERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIM_SOURCE">Global_buffer</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSCLK_PORT">psclk</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSDONE_PORT">psdone</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSEN_PORT">psen</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PSINCDEC_PORT">psincdec</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REF_CLK_FREQ">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RELATIVE_INCLK">REL_PRIMARY</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PORT">reset</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">ACTIVE_HIGH</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_IN_TIMEPERIOD">10.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_PORT">clk_in2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SECONDARY_SOURCE">Single_ended_clock_capable_pin</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MODE">CENTER_HIGH</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_FREQ">250</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SS_MOD_TIME">0.004</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.STATUS_PORT">STATUS</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SUMMARY_STRINGS">empty</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ0">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ1">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ2">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USER_CLK_FREQ3">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BOARD_FLOW">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLKFB_STOPPED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLK_VALID">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_CLOCK_SEQUENCING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_PHASE_SHIFT">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DYN_RECONFIG">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREEZE">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_FREQ_SYNTH">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_STOPPED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_INCLK_SWITCHOVER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_LOCKED">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MAX_I_JITTER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_O_JITTER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_MIN_POWER">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_PHASE_ALIGNMENT">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_POWER_DOWN">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RESET">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SAFE_CLOCK_STARTUP">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_SPREAD_SPECTRUM">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_STATUS">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">kintex7</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BOARD"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xc7k325t</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">ffg900</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VERILOG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SIMULATOR_LANGUAGE">MIXED</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE"/>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_CUSTOMIZATION">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_GENERATION">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHECRC">e2451eba</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHEID">548aa35948ad692b</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCACHESPECIALDATA">camera_pll</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Unknown</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">2</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2016.3</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">GLOBAL</spirit:configurableElementValue>
      </spirit:configurableElementValues>
    </spirit:componentInstance>
  </spirit:componentInstances>
</spirit:design>


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/camera_pll_sim_netlist.v
================================================
// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2016.3 (lin64) Build 1682563 Mon Oct 10 19:07:26 MDT 2016
// Date        : Tue Nov 15 14:32:35 2016
// Host        : david-desktop-arch running 64-bit unknown
// Command     : write_verilog -force -mode funcsim -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix
//               decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ camera_pll_sim_netlist.v
// Design      : camera_pll
// Purpose     : This verilog netlist is a functional simulation representation of the design and should not be modified
//               or synthesized. This netlist cannot be used for SDF annotated simulation.
// Device      : xc7k325tffg900-2
// --------------------------------------------------------------------------------
`timescale 1 ps / 1 ps

(* NotValidForBitStream *)
module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix
   (camera_pixel_clock,
    camera_mclk,
    i2c_clkin,
    sysclk);
  output camera_pixel_clock;
  output camera_mclk;
  output i2c_clkin;
  input sysclk;

  wire camera_mclk;
  wire camera_pixel_clock;
  wire i2c_clkin;
  wire sysclk;

  decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_camera_pll_clk_wiz inst
       (.camera_mclk(camera_mclk),
        .camera_pixel_clock(camera_pixel_clock),
        .i2c_clkin(i2c_clkin),
        .sysclk(sysclk));
endmodule

module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_camera_pll_clk_wiz
   (camera_pixel_clock,
    camera_mclk,
    i2c_clkin,
    sysclk);
  output camera_pixel_clock;
  output camera_mclk;
  output i2c_clkin;
  input sysclk;

  wire camera_mclk;
  wire camera_mclk_camera_pll;
  wire camera_pixel_clock;
  wire camera_pixel_clock_camera_pll;
  wire clkfbout_buf_camera_pll;
  wire clkfbout_camera_pll;
  wire i2c_clkin;
  wire i2c_clkin_camera_pll;
  wire sysclk;
  wire sysclk_camera_pll;
  wire NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT3_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED;
  wire NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED;
  wire NLW_mmcm_adv_inst_DRDY_UNCONNECTED;
  wire NLW_mmcm_adv_inst_LOCKED_UNCONNECTED;
  wire NLW_mmcm_adv_inst_PSDONE_UNCONNECTED;
  wire [15:0]NLW_mmcm_adv_inst_DO_UNCONNECTED;

  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkf_buf
       (.I(clkfbout_camera_pll),
        .O(clkfbout_buf_camera_pll));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkin1_bufg
       (.I(sysclk),
        .O(sysclk_camera_pll));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkout1_buf
       (.I(camera_pixel_clock_camera_pll),
        .O(camera_pixel_clock));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkout2_buf
       (.I(camera_mclk_camera_pll),
        .O(camera_mclk));
  (* BOX_TYPE = "PRIMITIVE" *) 
  BUFG clkout3_buf
       (.I(i2c_clkin_camera_pll),
        .O(i2c_clkin));
  (* BOX_TYPE = "PRIMITIVE" *) 
  MMCME2_ADV #(
    .BANDWIDTH("OPTIMIZED"),
    .CLKFBOUT_MULT_F(25.375000),
    .CLKFBOUT_PHASE(0.000000),
    .CLKFBOUT_USE_FINE_PS("FALSE"),
    .CLKIN1_PERIOD(5.000000),
    .CLKIN2_PERIOD(0.000000),
    .CLKOUT0_DIVIDE_F(4.375000),
    .CLKOUT0_DUTY_CYCLE(0.500000),
    .CLKOUT0_PHASE(0.000000),
    .CLKOUT0_USE_FINE_PS("FALSE"),
    .CLKOUT1_DIVIDE(26),
    .CLKOUT1_DUTY_CYCLE(0.500000),
    .CLKOUT1_PHASE(0.000000),
    .CLKOUT1_USE_FINE_PS("FALSE"),
    .CLKOUT2_DIVIDE(127),
    .CLKOUT2_DUTY_CYCLE(0.500000),
    .CLKOUT2_PHASE(0.000000),
    .CLKOUT2_USE_FINE_PS("FALSE"),
    .CLKOUT3_DIVIDE(1),
    .CLKOUT3_DUTY_CYCLE(0.500000),
    .CLKOUT3_PHASE(0.000000),
    .CLKOUT3_USE_FINE_PS("FALSE"),
    .CLKOUT4_CASCADE("FALSE"),
    .CLKOUT4_DIVIDE(1),
    .CLKOUT4_DUTY_CYCLE(0.500000),
    .CLKOUT4_PHASE(0.000000),
    .CLKOUT4_USE_FINE_PS("FALSE"),
    .CLKOUT5_DIVIDE(1),
    .CLKOUT5_DUTY_CYCLE(0.500000),
    .CLKOUT5_PHASE(0.000000),
    .CLKOUT5_USE_FINE_PS("FALSE"),
    .CLKOUT6_DIVIDE(1),
    .CLKOUT6_DUTY_CYCLE(0.500000),
    .CLKOUT6_PHASE(0.000000),
    .CLKOUT6_USE_FINE_PS("FALSE"),
    .COMPENSATION("BUF_IN"),
    .DIVCLK_DIVIDE(8),
    .IS_CLKINSEL_INVERTED(1'b0),
    .IS_PSEN_INVERTED(1'b0),
    .IS_PSINCDEC_INVERTED(1'b0),
    .IS_PWRDWN_INVERTED(1'b0),
    .IS_RST_INVERTED(1'b0),
    .REF_JITTER1(0.010000),
    .REF_JITTER2(0.010000),
    .SS_EN("FALSE"),
    .SS_MODE("CENTER_HIGH"),
    .SS_MOD_PERIOD(10000),
    .STARTUP_WAIT("FALSE")) 
    mmcm_adv_inst
       (.CLKFBIN(clkfbout_buf_camera_pll),
        .CLKFBOUT(clkfbout_camera_pll),
        .CLKFBOUTB(NLW_mmcm_adv_inst_CLKFBOUTB_UNCONNECTED),
        .CLKFBSTOPPED(NLW_mmcm_adv_inst_CLKFBSTOPPED_UNCONNECTED),
        .CLKIN1(sysclk_camera_pll),
        .CLKIN2(1'b0),
        .CLKINSEL(1'b1),
        .CLKINSTOPPED(NLW_mmcm_adv_inst_CLKINSTOPPED_UNCONNECTED),
        .CLKOUT0(camera_pixel_clock_camera_pll),
        .CLKOUT0B(NLW_mmcm_adv_inst_CLKOUT0B_UNCONNECTED),
        .CLKOUT1(camera_mclk_camera_pll),
        .CLKOUT1B(NLW_mmcm_adv_inst_CLKOUT1B_UNCONNECTED),
        .CLKOUT2(i2c_clkin_camera_pll),
        .CLKOUT2B(NLW_mmcm_adv_inst_CLKOUT2B_UNCONNECTED),
        .CLKOUT3(NLW_mmcm_adv_inst_CLKOUT3_UNCONNECTED),
        .CLKOUT3B(NLW_mmcm_adv_inst_CLKOUT3B_UNCONNECTED),
        .CLKOUT4(NLW_mmcm_adv_inst_CLKOUT4_UNCONNECTED),
        .CLKOUT5(NLW_mmcm_adv_inst_CLKOUT5_UNCONNECTED),
        .CLKOUT6(NLW_mmcm_adv_inst_CLKOUT6_UNCONNECTED),
        .DADDR({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
        .DCLK(1'b0),
        .DEN(1'b0),
        .DI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
        .DO(NLW_mmcm_adv_inst_DO_UNCONNECTED[15:0]),
        .DRDY(NLW_mmcm_adv_inst_DRDY_UNCONNECTED),
        .DWE(1'b0),
        .LOCKED(NLW_mmcm_adv_inst_LOCKED_UNCONNECTED),
        .PSCLK(1'b0),
        .PSDONE(NLW_mmcm_adv_inst_PSDONE_UNCONNECTED),
        .PSEN(1'b0),
        .PSINCDEC(1'b0),
        .PWRDWN(1'b0),
        .RST(1'b0));
endmodule
`ifndef GLBL
`define GLBL
`timescale  1 ps / 1 ps

module glbl ();

    parameter ROC_WIDTH = 100000;
    parameter TOC_WIDTH = 0;

//--------   STARTUP Globals --------------
    wire GSR;
    wire GTS;
    wire GWE;
    wire PRLD;
    tri1 p_up_tmp;
    tri (weak1, strong0) PLL_LOCKG = p_up_tmp;

    wire PROGB_GLBL;
    wire CCLKO_GLBL;
    wire FCSBO_GLBL;
    wire [3:0] DO_GLBL;
    wire [3:0] DI_GLBL;
   
    reg GSR_int;
    reg GTS_int;
    reg PRLD_int;

//--------   JTAG Globals --------------
    wire JTAG_TDO_GLBL;
    wire JTAG_TCK_GLBL;
    wire JTAG_TDI_GLBL;
    wire JTAG_TMS_GLBL;
    wire JTAG_TRST_GLBL;

    reg JTAG_CAPTURE_GLBL;
    reg JTAG_RESET_GLBL;
    reg JTAG_SHIFT_GLBL;
    reg JTAG_UPDATE_GLBL;
    reg JTAG_RUNTEST_GLBL;

    reg JTAG_SEL1_GLBL = 0;
    reg JTAG_SEL2_GLBL = 0 ;
    reg JTAG_SEL3_GLBL = 0;
    reg JTAG_SEL4_GLBL = 0;

    reg JTAG_USER_TDO1_GLBL = 1'bz;
    reg JTAG_USER_TDO2_GLBL = 1'bz;
    reg JTAG_USER_TDO3_GLBL = 1'bz;
    reg JTAG_USER_TDO4_GLBL = 1'bz;

    assign (weak1, weak0) GSR = GSR_int;
    assign (weak1, weak0) GTS = GTS_int;
    assign (weak1, weak0) PRLD = PRLD_int;

    initial begin
	GSR_int = 1'b1;
	PRLD_int = 1'b1;
	#(ROC_WIDTH)
	GSR_int = 1'b0;
	PRLD_int = 1'b0;
    end

    initial begin
	GTS_int = 1'b1;
	#(TOC_WIDTH)
	GTS_int = 1'b0;
    end

endmodule
`endif


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/camera_pll_stub.v
================================================
// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2016.3 (lin64) Build 1682563 Mon Oct 10 19:07:26 MDT 2016
// Date        : Tue Nov 15 14:32:35 2016
// Host        : david-desktop-arch running 64-bit unknown
// Command     : write_verilog -force -mode synth_stub -rename_top decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix -prefix
//               decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix_ camera_pll_stub.v
// Design      : camera_pll
// Purpose     : Stub declaration of top-level module interface
// Device      : xc7k325tffg900-2
// --------------------------------------------------------------------------------

// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
module decalper_eb_ot_sdeen_pot_pi_dehcac_xnilix(camera_pixel_clock, camera_mclk, i2c_clkin, 
  sysclk)
/* synthesis syn_black_box black_box_pad_pin="camera_pixel_clock,camera_mclk,i2c_clkin,sysclk" */;
  output camera_pixel_clock;
  output camera_mclk;
  output i2c_clkin;
  input sysclk;
endmodule


================================================
FILE: vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/75280199e9655e6a/75280199e9655e6a.xci
================================================
<?xml version="1.0" encoding="UTF-8"?>
<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <spirit:vendor>xilinx.com</spirit:vendor>
  <spirit:library>ipcache</spirit:library>
  <spirit:name>75280199e9655e6a</spirit:name>
  <spirit:version>0</spirit:version>
  <spirit:componentInstances>
    <spirit:componentInstance>
      <spirit:instanceName>dvi_pll</spirit:instanceName>
      <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="clk_wiz" spirit:version="5.3"/>
      <spirit:configurableElementValues>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AUTO_PRIMITIVE">MMCM</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_DRP">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CALC_DONE">empty</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCDONE_PORT">cddcdone</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CDDCREQ_PORT">cddcreq</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_N_PORT">clkfb_in_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_PORT">clkfb_in</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_P_PORT">clkfb_in_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_IN_SIGNALING">SINGLE</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_N_PORT">clkfb_out_n</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_PORT">clkfb_out</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_OUT_P_PORT">clkfb_out_p</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKFB_STOPPED_PORT">clkfb_stopped</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_JITTER_PS">50.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN1_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_JITTER_PS">100.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKIN2_UI_JITTER">0.010</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_JITTER">111.449</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_PHASE_ERROR">139.507</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_OUT_FREQ">148</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT1_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_JITTER">87.091</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_PHASE_ERROR">139.507</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_OUT_FREQ">740</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT2_USED">true</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_DRIVES">BUFG</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_JITTER">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_MATCHED_ROUTING">false</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_PHASE_ERROR">0.0</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_OUT_FREQ">100.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT3_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
        <spirit:configurableElementVal
Download .txt
gitextract_o_fqoapy/

├── LICENSE
├── README.md
├── misc/
│   └── caminit/
│       ├── .gitignore
│       └── picam_init.cc
├── verilog_cores/
│   ├── .gitignore
│   ├── Makefile
│   ├── README.md
│   ├── csi/
│   │   ├── header_ecc.v
│   │   └── rx_packet_handler.v
│   ├── csi2.core
│   ├── link/
│   │   └── csi_rx_ice40.v
│   ├── misc/
│   │   └── downsample.v
│   ├── phy/
│   │   ├── byte_aligner.v
│   │   ├── dphy_iserdes.v
│   │   ├── dphy_oserdes.v
│   │   └── word_combiner.v
│   └── test/
│       └── icebreaker/
│           ├── .gitignore
│           ├── Makefile
│           ├── constraints.py
│           ├── icecam.pcf
│           ├── top.v
│           └── uart.v
└── vhdl_rx/
    ├── .gitignore
    ├── LICENSE.notes
    ├── README.md
    ├── demo-top/
    │   ├── framebuffer_top.vhd
    │   ├── mig_a.prj
    │   └── ov13850_demo.vhd
    ├── dvi-tx/
    │   ├── dvi_tx_clk_drv.vhd
    │   ├── dvi_tx_tmds_enc.vhd
    │   ├── dvi_tx_tmds_phy.vhd
    │   └── dvi_tx_top.vhd
    ├── examples/
    │   ├── .gitignore
    │   └── ov13850_demo/
    │       ├── ov13850_demo.cache/
    │       │   └── ip/
    │       │       ├── 54144841a4506c29/
    │       │       │   ├── 54144841a4506c29.xci
    │       │       │   ├── dvi_pll_sim_netlist.v
    │       │       │   └── dvi_pll_stub.v
    │       │       ├── 548aa35948ad692b/
    │       │       │   ├── 548aa35948ad692b.xci
    │       │       │   ├── camera_pll_sim_netlist.v
    │       │       │   └── camera_pll_stub.v
    │       │       └── 75280199e9655e6a/
    │       │           ├── 75280199e9655e6a.xci
    │       │           ├── dvi_pll_sim_netlist.v
    │       │           └── dvi_pll_stub.v
    │       ├── ov13850_demo.ip_user_files/
    │       │   ├── ip/
    │       │   │   ├── camera_pll/
    │       │   │   │   └── camera_pll_stub.v
    │       │   │   ├── ddr3_if/
    │       │   │   │   └── ddr3_if_stub.v
    │       │   │   ├── dvi_pll/
    │       │   │   │   └── dvi_pll_stub.v
    │       │   │   ├── ila_0/
    │       │   │   │   └── ila_0_stub.v
    │       │   │   ├── input_line_buffer/
    │       │   │   │   └── input_line_buffer_stub.v
    │       │   │   └── output_line_buffer/
    │       │   │       └── output_line_buffer_stub.v
    │       │   ├── ipstatic/
    │       │   │   ├── hdl/
    │       │   │   │   ├── fifo_generator_v13_1_rfs.v
    │       │   │   │   └── fifo_generator_v13_1_rfs.vhd
    │       │   │   └── simulation/
    │       │   │       ├── blk_mem_gen_v8_3.v
    │       │   │       └── fifo_generator_vlog_beh.v
    │       │   ├── mem_init_files/
    │       │   │   ├── mig_a.prj
    │       │   │   └── mig_b.prj
    │       │   └── sim_scripts/
    │       │       ├── camera_pll_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── ddr3_if/
    │       │       │   ├── activehdl/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── ies/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── modelsim/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── questa/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── riviera/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   ├── vcs/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_b.prj
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       ├── mig_b.prj
    │       │       │       └── vlog.prj
    │       │       ├── ddr3_if_1/
    │       │       │   ├── activehdl/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── ies/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── modelsim/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── questa/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── riviera/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   ├── vcs/
    │       │       │   │   ├── glbl.v
    │       │       │   │   └── mig_a.prj
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       ├── mig_a.prj
    │       │       │       └── vlog.prj
    │       │       ├── dvi_pll_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── framebuffer-ctrl/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   └── vcs/
    │       │       │       └── glbl.v
    │       │       ├── ila_0/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── input_line_buffer/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── input_line_buffer_1/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       ├── output_line_buffer/
    │       │       │   ├── activehdl/
    │       │       │   │   └── glbl.v
    │       │       │   ├── ies/
    │       │       │   │   └── glbl.v
    │       │       │   ├── modelsim/
    │       │       │   │   └── glbl.v
    │       │       │   ├── questa/
    │       │       │   │   └── glbl.v
    │       │       │   ├── riviera/
    │       │       │   │   └── glbl.v
    │       │       │   ├── vcs/
    │       │       │   │   └── glbl.v
    │       │       │   └── xsim/
    │       │       │       ├── cmd.tcl
    │       │       │       ├── glbl.v
    │       │       │       └── vlog.prj
    │       │       └── output_line_buffer_1/
    │       │           ├── activehdl/
    │       │           │   └── glbl.v
    │       │           ├── ies/
    │       │           │   └── glbl.v
    │       │           ├── modelsim/
    │       │           │   └── glbl.v
    │       │           ├── questa/
    │       │           │   └── glbl.v
    │       │           ├── riviera/
    │       │           │   └── glbl.v
    │       │           ├── vcs/
    │       │           │   └── glbl.v
    │       │           └── xsim/
    │       │               ├── cmd.tcl
    │       │               ├── glbl.v
    │       │               └── vlog.prj
    │       ├── ov13850_demo.runs/
    │       │   ├── camera_pll_synth_1/
    │       │   │   ├── camera_pll.tcl
    │       │   │   └── dont_touch.xdc
    │       │   ├── ddr3_if_synth_1/
    │       │   │   └── ddr3_if.tcl
    │       │   ├── dvi_pll_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   └── dvi_pll.tcl
    │       │   ├── impl_1/
    │       │   │   └── ov13850_demo.tcl
    │       │   ├── input_line_buffer_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   ├── input_line_buffer.tcl
    │       │   │   ├── input_line_buffer_sim_netlist.v
    │       │   │   └── input_line_buffer_stub.v
    │       │   ├── output_line_buffer_synth_1/
    │       │   │   ├── dont_touch.xdc
    │       │   │   ├── output_line_buffer.tcl
    │       │   │   ├── output_line_buffer_sim_netlist.v
    │       │   │   └── output_line_buffer_stub.v
    │       │   └── synth_1/
    │       │       ├── .Xil/
    │       │       │   └── ov13850_demo_propImpl.xdc
    │       │       └── ov13850_demo.tcl
    │       ├── ov13850_demo.sim/
    │       │   └── sim_1/
    │       │       └── synth/
    │       │           └── func/
    │       │               ├── genesys2_fbtest.tcl
    │       │               ├── genesys2_fbtest_func_synth.v
    │       │               └── genesys2_fbtest_vlog.prj
    │       ├── ov13850_demo.srcs/
    │       │   ├── constrs_1/
    │       │   │   └── imports/
    │       │   │       ├── constraints/
    │       │   │       │   └── ddr3_if.xdc
    │       │   │       └── new/
    │       │   │           └── genesys2.xdc
    │       │   └── sources_1/
    │       │       └── ip/
    │       │           ├── camera_pll_1/
    │       │           │   ├── camera_pll.v
    │       │           │   ├── camera_pll.xci
    │       │           │   ├── camera_pll.xdc
    │       │           │   ├── camera_pll_board.xdc
    │       │           │   ├── camera_pll_clk_wiz.v
    │       │           │   ├── camera_pll_ooc.xdc
    │       │           │   ├── camera_pll_sim_netlist.v
    │       │           │   └── camera_pll_stub.v
    │       │           ├── ddr3_if/
    │       │           │   ├── mig_a.prj
    │       │           │   └── mig_b.prj
    │       │           ├── ddr3_if_1/
    │       │           │   ├── ddr3_if/
    │       │           │   │   └── user_design/
    │       │           │   │       ├── constraints/
    │       │           │   │       │   ├── ddr3_if.xdc
    │       │           │   │       │   └── ddr3_if_ooc.xdc
    │       │           │   │       └── rtl/
    │       │           │   │           ├── axi/
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_addr_decode.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_read.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_reg.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_reg_bank.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_ctrl_write.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_ar_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_aw_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_b_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_arbiter.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_fsm.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_cmd_translator.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_incr_cmd.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_r_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_simple_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_w_channel.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_wr_cmd_fsm.v
    │       │           │   │           │   ├── mig_7series_v4_0_axi_mc_wrap_cmd.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_a_upsizer.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axi_register_slice.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axi_upsizer.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_axic_register_slice.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_and.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_latch_and.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_latch_or.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_carry_or.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_command_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator_sel.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_comparator_sel_static.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_r_upsizer.v
    │       │           │   │           │   └── mig_7series_v4_0_ddr_w_upsizer.v
    │       │           │   │           ├── clocking/
    │       │           │   │           │   ├── mig_7series_v4_0_clk_ibuf.v
    │       │           │   │           │   ├── mig_7series_v4_0_infrastructure.v
    │       │           │   │           │   ├── mig_7series_v4_0_iodelay_ctrl.v
    │       │           │   │           │   └── mig_7series_v4_0_tempmon.v
    │       │           │   │           ├── controller/
    │       │           │   │           │   ├── mig_7series_v4_0_arb_mux.v
    │       │           │   │           │   ├── mig_7series_v4_0_arb_row_col.v
    │       │           │   │           │   ├── mig_7series_v4_0_arb_select.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_cntrl.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_common.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_compare.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_mach.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_queue.v
    │       │           │   │           │   ├── mig_7series_v4_0_bank_state.v
    │       │           │   │           │   ├── mig_7series_v4_0_col_mach.v
    │       │           │   │           │   ├── mig_7series_v4_0_mc.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_cntrl.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_common.v
    │       │           │   │           │   ├── mig_7series_v4_0_rank_mach.v
    │       │           │   │           │   └── mig_7series_v4_0_round_robin_arb.v
    │       │           │   │           ├── ddr3_if.v
    │       │           │   │           ├── ddr3_if_mig.v
    │       │           │   │           ├── ddr3_if_mig_sim.v
    │       │           │   │           ├── ecc/
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_buf.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_dec_fix.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_gen.v
    │       │           │   │           │   ├── mig_7series_v4_0_ecc_merge_enc.v
    │       │           │   │           │   └── mig_7series_v4_0_fi_xor.v
    │       │           │   │           ├── ip_top/
    │       │           │   │           │   ├── mig_7series_v4_0_mem_intfc.v
    │       │           │   │           │   └── mig_7series_v4_0_memc_ui_top_axi.v
    │       │           │   │           ├── phy/
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_byte_group_io.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_byte_lane.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_calib_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_if_post_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_mc_phy.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_mc_phy_wrapper.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_of_pre_fifo.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_4lanes.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_dqs_found_cal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_init.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_cntlr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_data.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_edge.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_lim.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_mux.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_ocd_samp.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_oclkdelay_cal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_prbs_rdlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_rdlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_tempmon.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_top.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrcal.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrlvl.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_prbs_gen.v
    │       │           │   │           │   ├── mig_7series_v4_0_ddr_skip_calib_tap.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_cc.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_edge_store.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_meta.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_pd.v
    │       │           │   │           │   ├── mig_7series_v4_0_poc_tap_base.v
    │       │           │   │           │   └── mig_7series_v4_0_poc_top.v
    │       │           │   │           └── ui/
    │       │           │   │               ├── mig_7series_v4_0_ui_cmd.v
    │       │           │   │               ├── mig_7series_v4_0_ui_rd_data.v
    │       │           │   │               ├── mig_7series_v4_0_ui_top.v
    │       │           │   │               └── mig_7series_v4_0_ui_wr_data.v
    │       │           │   ├── ddr3_if.xci
    │       │           │   ├── ddr3_if_sim_netlist.v
    │       │           │   ├── ddr3_if_stub.v
    │       │           │   └── mig_a.prj
    │       │           ├── dvi_pll_1/
    │       │           │   ├── dvi_pll.v
    │       │           │   ├── dvi_pll.xci
    │       │           │   ├── dvi_pll.xdc
    │       │           │   ├── dvi_pll_board.xdc
    │       │           │   ├── dvi_pll_clk_wiz.v
    │       │           │   ├── dvi_pll_ooc.xdc
    │       │           │   ├── dvi_pll_sim_netlist.v
    │       │           │   └── dvi_pll_stub.v
    │       │           ├── input_line_buffer_1/
    │       │           │   ├── hdl/
    │       │           │   │   └── blk_mem_gen_v8_3_vhsyn_rfs.vhd
    │       │           │   ├── input_line_buffer.xci
    │       │           │   ├── input_line_buffer_ooc.xdc
    │       │           │   ├── input_line_buffer_sim_netlist.v
    │       │           │   ├── input_line_buffer_stub.v
    │       │           │   ├── misc/
    │       │           │   │   └── blk_mem_gen_v8_3.vhd
    │       │           │   ├── sim/
    │       │           │   │   └── input_line_buffer.v
    │       │           │   ├── simulation/
    │       │           │   │   └── blk_mem_gen_v8_3.v
    │       │           │   └── synth/
    │       │           │       └── input_line_buffer.vhd
    │       │           └── output_line_buffer_1/
    │       │               ├── hdl/
    │       │               │   └── blk_mem_gen_v8_3_vhsyn_rfs.vhd
    │       │               ├── misc/
    │       │               │   └── blk_mem_gen_v8_3.vhd
    │       │               ├── output_line_buffer.xci
    │       │               ├── output_line_buffer_ooc.xdc
    │       │               ├── output_line_buffer_sim_netlist.v
    │       │               ├── output_line_buffer_stub.v
    │       │               ├── sim/
    │       │               │   └── output_line_buffer.v
    │       │               ├── simulation/
    │       │               │   └── blk_mem_gen_v8_3.v
    │       │               └── synth/
    │       │                   └── output_line_buffer.vhd
    │       └── ov13850_demo.xpr
    ├── framebuffer-ctrl/
    │   ├── framebuffer_ctrl.vhd
    │   ├── input_line_buffer.xci
    │   └── output_line_buffer.xci
    ├── mipi-csi-rx/
    │   ├── csi_rx_10bit_unpack.vhd
    │   ├── csi_rx_4_lane_link.vhd
    │   ├── csi_rx_byte_align.vhd
    │   ├── csi_rx_clock_det.vhd
    │   ├── csi_rx_hdr_ecc.vhd
    │   ├── csi_rx_hs_clk_phy.vhd
    │   ├── csi_rx_hs_lane_phy.vhd
    │   ├── csi_rx_idelayctrl_gen.vhd
    │   ├── csi_rx_line_buffer.vhd
    │   ├── csi_rx_packet_handler.vhd
    │   ├── csi_rx_top.vhd
    │   ├── csi_rx_video_output.vhd
    │   ├── csi_rx_word_align.vhd
    │   └── synth.ys
    ├── ov-cam-control/
    │   ├── manual_focus.vhd
    │   ├── ov13850_4k_regs.vhd
    │   ├── ov13850_control_top.vhd
    │   ├── ov16825_1080p120_regs.vhd
    │   ├── ov_i2c_control.vhd
    │   └── vcm_i2c_control.vhd
    └── video-misc/
        ├── image_gain_wb.vhd
        ├── simple_debayer.vhd
        ├── test_pattern_gen.vhd
        ├── video_fb_output.vhd
        ├── video_register.vhd
        └── video_timing_ctrl.vhd
Download .txt
SYMBOL INDEX (13 symbols across 1 files)

FILE: misc/caminit/picam_init.cc
  type ftdi_context (line 7) | struct ftdi_context
  type mpsse_cmd (line 15) | enum mpsse_cmd
  function check_rx (line 49) | static void check_rx()
  function error (line 60) | static void error(int status)
  function recv_byte (line 73) | static uint8_t recv_byte()
  function send_byte (line 89) | static void send_byte(uint8_t data)
  function set_gpio (line 98) | static void set_gpio(bool sda, bool scl)
  function i2c_start (line 108) | static void i2c_start() {
  function i2c_send (line 114) | static void i2c_send(uint8_t data) {
  function i2c_stop (line 126) | static void i2c_stop() {
  function write_cmos_sensor (line 132) | static void write_cmos_sensor(uint16_t addr, uint8_t value) {
  function cam_init (line 145) | static void cam_init() {
  function main (line 239) | int main() {
Copy disabled (too large) Download .json
Condensed preview — 350 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,820K chars).
[
  {
    "path": "LICENSE",
    "chars": 1086,
    "preview": "MIT License\n\nCopyright (c) 2016-2018 David Shah <dave@ds0.me>\n\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "README.md",
    "chars": 872,
    "preview": "# MIPI CSI-2 IP Cores\n\nThe _vhdl\\_rx_ folder contains a tried-and-tested high performance CSI-2 receiver core in VHDL. T"
  },
  {
    "path": "misc/caminit/.gitignore",
    "chars": 9,
    "preview": "/caminit\n"
  },
  {
    "path": "misc/caminit/picam_init.cc",
    "chars": 8809,
    "preview": "// Simple I2C using MPSSE bitbang implementation (passed thru FPGA) to initialise a PiCam2\n// Some code taken from icepr"
  },
  {
    "path": "verilog_cores/.gitignore",
    "chars": 29,
    "preview": "*.o\nwork/\n*.cf\n*.blif\n*.json\n"
  },
  {
    "path": "verilog_cores/Makefile",
    "chars": 298,
    "preview": "SOURCES=$(wildcard phy/*.v csi/*.v link/*.v)\nLINT_TOP=csi_rx_ice40 # temp\nSYN_TOP=csi_rx_ice40\n\nlint: $(SOURCES)\n\tverila"
  },
  {
    "path": "verilog_cores/README.md",
    "chars": 33,
    "preview": "# Verilog MIPI CSI-2 Cores - WIP\n"
  },
  {
    "path": "verilog_cores/csi/header_ecc.v",
    "chars": 2240,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/csi/rx_packet_handler.v",
    "chars": 4750,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/csi2.core",
    "chars": 1042,
    "preview": "CAPI=2:\n\nname : ::csi2:0\n\nfilesets:\n  icebreaker:\n    files:\n      - misc/downsample.v : {file_type : verilogSource}\n   "
  },
  {
    "path": "verilog_cores/link/csi_rx_ice40.v",
    "chars": 5097,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/misc/downsample.v",
    "chars": 2350,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/phy/byte_aligner.v",
    "chars": 3655,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/phy/dphy_iserdes.v",
    "chars": 2468,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any perso"
  },
  {
    "path": "verilog_cores/phy/dphy_oserdes.v",
    "chars": 2449,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any perso"
  },
  {
    "path": "verilog_cores/phy/word_combiner.v",
    "chars": 3161,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2016-2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any "
  },
  {
    "path": "verilog_cores/test/icebreaker/.gitignore",
    "chars": 38,
    "preview": "*.blif\n*.json\n*.asc\n*.bin\n*.rpt\n*.log\n"
  },
  {
    "path": "verilog_cores/test/icebreaker/Makefile",
    "chars": 758,
    "preview": "SOURCES = $(wildcard ../../csi/*.v ../../phy/*.v ../../link/*.v ../../misc/*.v uart.v top.v)\nPROJ=camera\nPIN_DEF=icecam."
  },
  {
    "path": "verilog_cores/test/icebreaker/constraints.py",
    "chars": 105,
    "preview": "ctx.addClock(\"csi_rx_i.dphy_clk\", 96)\nctx.addClock(\"video_clk\", 24)\nctx.addClock(\"uart_i.sys_clk_i\", 12)\n"
  },
  {
    "path": "verilog_cores/test/icebreaker/icecam.pcf",
    "chars": 507,
    "preview": "set_io mpsse_sda 6 #FTDI D0\nset_io mpsse_scl 9 #FTDI D1\n\nset_io cam_enable 3 #P1A7\nset_io cam_sda 34 #P1B3\nset_io cam_sc"
  },
  {
    "path": "verilog_cores/test/icebreaker/top.v",
    "chars": 4596,
    "preview": "/**\n * The MIT License\n * Copyright (c) 2018 David Shah\n *\n * Permission is hereby granted, free of charge, to any perso"
  },
  {
    "path": "verilog_cores/test/icebreaker/uart.v",
    "chars": 1308,
    "preview": "// From http://www.excamera.com/sphinx/fpga-uart.html\n\nmodule uart(\n   // Outputs\n   uart_busy,   // High means UART is "
  },
  {
    "path": "vhdl_rx/.gitignore",
    "chars": 15,
    "preview": "*.o\nwork/\n*.cf\n"
  },
  {
    "path": "vhdl_rx/LICENSE.notes",
    "chars": 677,
    "preview": "All of the source code written by me (in particular */*.vhd except the examples\nfolder) is licensed under the MIT licens"
  },
  {
    "path": "vhdl_rx/README.md",
    "chars": 4661,
    "preview": "# 4k MIPI CSI-2 FPGA Camera Interface\n\n## Overview\nThis project is an open source (MIT license) MIPI CSI-2 receive core "
  },
  {
    "path": "vhdl_rx/demo-top/framebuffer_top.vhd",
    "chars": 12058,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\nuse IEEE.NUMERIC_STD.ALL;\n\n--Top Level Framebuffer and Video Output Design\n--"
  },
  {
    "path": "vhdl_rx/demo-top/mig_a.prj",
    "chars": 12670,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/demo-top/ov13850_demo.vhd",
    "chars": 9056,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\nuse IEEE.NUMERIC_STD.ALL;\n\nlibrary UNISIM;\nuse UNISIM.VComponents.all;\n\n--OV1"
  },
  {
    "path": "vhdl_rx/dvi-tx/dvi_tx_clk_drv.vhd",
    "chars": 1032,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\n\nlibrary UNISIM;\nuse UNISIM.VComponents.all;\n\n--DVI Transmitter clock lane dr"
  },
  {
    "path": "vhdl_rx/dvi-tx/dvi_tx_tmds_enc.vhd",
    "chars": 4298,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\nuse IEEE.NUMERIC_STD.ALL;\n\n--DVI Transmitter TMDS encoder\n--Copyright (C) 201"
  },
  {
    "path": "vhdl_rx/dvi-tx/dvi_tx_tmds_phy.vhd",
    "chars": 3035,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\n\nlibrary UNISIM;\nuse UNISIM.VComponents.all;\n\n--DVI Transmitter TMDS PHY for "
  },
  {
    "path": "vhdl_rx/dvi-tx/dvi_tx_top.vhd",
    "chars": 2331,
    "preview": "library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\n\n--Simple DVI Transmitter for Xilinx 7-series devices\n--Copyright (C) 2016 Da"
  },
  {
    "path": "vhdl_rx/examples/.gitignore",
    "chars": 1703,
    "preview": "#########################################################################################################\n##\tThis is an "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/54144841a4506c29.xci",
    "chars": 37304,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spirit:design xmlns:xilinx=\"http://www.xilinx.com\" xmlns:spirit=\"http://www.spir"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/dvi_pll_sim_netlist.v",
    "chars": 5677,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/54144841a4506c29/dvi_pll_stub.v",
    "chars": 1261,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/548aa35948ad692b.xci",
    "chars": 37332,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spirit:design xmlns:xilinx=\"http://www.xilinx.com\" xmlns:spirit=\"http://www.spir"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/camera_pll_sim_netlist.v",
    "chars": 7592,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/548aa35948ad692b/camera_pll_stub.v",
    "chars": 1326,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/75280199e9655e6a/75280199e9655e6a.xci",
    "chars": 37303,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spirit:design xmlns:xilinx=\"http://www.xilinx.com\" xmlns:spirit=\"http://www.spir"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/75280199e9655e6a/dvi_pll_sim_netlist.v",
    "chars": 5677,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.cache/ip/75280199e9655e6a/dvi_pll_stub.v",
    "chars": 1261,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/camera_pll/camera_pll_stub.v",
    "chars": 1233,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/ddr3_if/ddr3_if_stub.v",
    "chars": 4479,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/dvi_pll/dvi_pll_stub.v",
    "chars": 1199,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/ila_0/ila_0_stub.v",
    "chars": 1169,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/input_line_buffer/input_line_buffer_stub.v",
    "chars": 1433,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ip/output_line_buffer/output_line_buffer_stub.v",
    "chars": 1437,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ipstatic/hdl/fifo_generator_v13_1_rfs.v",
    "chars": 595529,
    "preview": "`pragma protect begin_protected\n`pragma protect version = 1\n`pragma protect encrypt_agent = \"XILINX\"\n`pragma protect enc"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ipstatic/hdl/fifo_generator_v13_1_rfs.vhd",
    "chars": 1422259,
    "preview": "`protect begin_protected\n`protect version = 1\n`protect encrypt_agent = \"XILINX\"\n`protect encrypt_agent_info = \"Xilinx En"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ipstatic/simulation/blk_mem_gen_v8_3.v",
    "chars": 170692,
    "preview": "/******************************************************************************\n-- (c) Copyright 2006 - 2013 Xilinx, Inc"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/ipstatic/simulation/fifo_generator_vlog_beh.v",
    "chars": 452753,
    "preview": "/*\n *******************************************************************************\n *\n * FIFO Generator - Verilog Behav"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/mem_init_files/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/mem_init_files/mig_b.prj",
    "chars": 12812,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/camera_pll_1/xsim/vlog.prj",
    "chars": 297,
    "preview": "verilog xil_defaultlib \"../../../../ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_clk_wiz.v\" --include \"../../."
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/activehdl/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/ies/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/modelsim/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/questa/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/riviera/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/vcs/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/xsim/mig_b.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if/xsim/vlog.prj",
    "chars": 14525,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/ddr3_if/ddr3_if/user_design/rtl/axi/mig_7series_v"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/activehdl/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/ies/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/modelsim/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/questa/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/riviera/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/vcs/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/xsim/mig_a.prj",
    "chars": 12673,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ddr3_if_1/xsim/vlog.prj",
    "chars": 14727,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/dvi_pll_1/xsim/vlog.prj",
    "chars": 285,
    "preview": "verilog xil_defaultlib \"../../../../ov13850_demo.srcs/sources_1/ip/dvi_pll_1/dvi_pll_clk_wiz.v\" --include \"../../../ipst"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/framebuffer-ctrl/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/ila_0/xsim/vlog.prj",
    "chars": 208,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/ila_0/sim/ila_0.v\" --include \"../../../../framebu"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer/xsim/vlog.prj",
    "chars": 156,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/input_line_buffer/sim/input_line_buffer.v\" \n\nveri"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/input_line_buffer_1/xsim/vlog.prj",
    "chars": 158,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/input_line_buffer_1/sim/input_line_buffer.v\" \n\nve"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer/xsim/vlog.prj",
    "chars": 158,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/output_line_buffer/sim/output_line_buffer.v\" \n\nve"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/activehdl/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/ies/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/modelsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/questa/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/riviera/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/vcs/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/xsim/cmd.tcl",
    "chars": 452,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/xsim/glbl.v",
    "chars": 1470,
    "preview": "// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.ip_user_files/sim_scripts/output_line_buffer_1/xsim/vlog.prj",
    "chars": 160,
    "preview": "verilog xil_defaultlib \"../../../../framebuffer_test.srcs/sources_1/ip/output_line_buffer_1/sim/output_line_buffer.v\" \n\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/camera_pll_synth_1/camera_pll.tcl",
    "chars": 8093,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_msg_config -id {HDL 9-1061} -limit 100000\nset_msg_config -id {HDL "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/camera_pll_synth_1/dont_touch.xdc",
    "chars": 2233,
    "preview": "# This file is automatically generated.\n# It contains project source information necessary for synthesis and implementat"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/ddr3_if_synth_1/ddr3_if.tcl",
    "chars": 7940,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_msg_config -msgmgr_mode ooc_run\ncreate_project -in_memory -part xc"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/dvi_pll_synth_1/dont_touch.xdc",
    "chars": 2161,
    "preview": "# This file is automatically generated.\n# It contains project source information necessary for synthesis and implementat"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/dvi_pll_synth_1/dvi_pll.tcl",
    "chars": 7933,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_param xicom.use_bs_reader 1\nset_msg_config -id {HDL 9-1061} -limit"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/impl_1/ov13850_demo.tcl",
    "chars": 1992,
    "preview": "proc start_step { step } {\n  set stopFile \".stop.rst\"\n  if {[file isfile .stop.rst]} {\n    puts \"\"\n    puts \"*** Halting"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/input_line_buffer_synth_1/dont_touch.xdc",
    "chars": 1201,
    "preview": "# This file is automatically generated.\n# It contains project source information necessary for synthesis and implementat"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/input_line_buffer_synth_1/input_line_buffer.tcl",
    "chars": 8673,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_msg_config -msgmgr_mode ooc_run\ncreate_project -in_memory -part xc"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/input_line_buffer_synth_1/input_line_buffer_sim_netlist.v",
    "chars": 165886,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/input_line_buffer_synth_1/input_line_buffer_stub.v",
    "chars": 1467,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/output_line_buffer_synth_1/dont_touch.xdc",
    "chars": 1213,
    "preview": "# This file is automatically generated.\n# It contains project source information necessary for synthesis and implementat"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/output_line_buffer_synth_1/output_line_buffer.tcl",
    "chars": 8737,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_msg_config -msgmgr_mode ooc_run\ncreate_project -in_memory -part xc"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/output_line_buffer_synth_1/output_line_buffer_sim_netlist.v",
    "chars": 165232,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/output_line_buffer_synth_1/output_line_buffer_stub.v",
    "chars": 1469,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/synth_1/.Xil/ov13850_demo_propImpl.xdc",
    "chars": 28276,
    "preview": "set_property SRC_FILE_INFO {cfile:/home/dave/ip/examples/ov13850_demo/ov13850_demo.srcs/constrs_1/imports/new/genesys2.x"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.runs/synth_1/ov13850_demo.tcl",
    "chars": 4430,
    "preview": "# \n# Synthesis run script generated by Vivado\n# \n\nset_param xicom.use_bs_reader 1\nset_msg_config -id {HDL 9-1061} -limit"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.sim/sim_1/synth/func/genesys2_fbtest.tcl",
    "chars": 449,
    "preview": "set curr_wave [current_wave_config]\nif { [string length $curr_wave] == 0 } {\n  if { [llength [get_objects]] > 0} {\n    a"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.sim/sim_1/synth/func/genesys2_fbtest_func_synth.v",
    "chars": 8670539,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.sim/sim_1/synth/func/genesys2_fbtest_vlog.prj",
    "chars": 281,
    "preview": "# compile verilog/system verilog design source files\nverilog xil_defaultlib  \"genesys2_fbtest_func_synth.v\" --include \"."
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/constrs_1/imports/constraints/ddr3_if.xdc",
    "chars": 22314,
    "preview": "##################################################################################################\n##\n##  Xilinx, Inc. 2"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/constrs_1/imports/new/genesys2.xdc",
    "chars": 5569,
    "preview": "set_property PACKAGE_PIN AA20 [get_ports {hdmi_clk[1]}]\nset_property IOSTANDARD TMDS_33 [get_ports {hdmi_clk[1]}]\nset_pr"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll.v",
    "chars": 4097,
    "preview": "\n// file: camera_pll.v\n// \n// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.\n// \n// This file contains conf"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll.xci",
    "chars": 83037,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spirit:design xmlns:xilinx=\"http://www.xilinx.com\" xmlns:spirit=\"http://www.spir"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll.xdc",
    "chars": 2645,
    "preview": "\n# file: camera_pll.xdc\n# \n# (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.\n# \n# This file contains confide"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_board.xdc",
    "chars": 60,
    "preview": "#--------------------Physical Constraints-----------------\n\n"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_clk_wiz.v",
    "chars": 7375,
    "preview": "\n// file: camera_pll.v\n// \n// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.\n// \n// This file contains conf"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_ooc.xdc",
    "chars": 2482,
    "preview": "\n# file: camera_pll_ooc.xdc\n# \n# (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.\n# \n# This file contains con"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_sim_netlist.v",
    "chars": 7437,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/camera_pll_1/camera_pll_stub.v",
    "chars": 1233,
    "preview": "// Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.\n// ------------------------------------------------------------"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if/mig_a.prj",
    "chars": 12670,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if/mig_b.prj",
    "chars": 12812,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- IMPORTANT: This is an internal file that has been generated by the MIG softw"
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/constraints/ddr3_if.xdc",
    "chars": 26402,
    "preview": "##################################################################################################\n## \n##  Xilinx, Inc. "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/constraints/ddr3_if_ooc.xdc",
    "chars": 1694,
    "preview": "###################################################################################################\n## This constraints "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_addr_decode.v",
    "chars": 6853,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_read.v",
    "chars": 6159,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_reg.v",
    "chars": 6113,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_reg_bank.v",
    "chars": 29650,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_top.v",
    "chars": 28756,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_ctrl_write.v",
    "chars": 7619,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc.v",
    "chars": 49183,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc_ar_channel.v",
    "chars": 10259,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc_aw_channel.v",
    "chars": 10654,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc_b_channel.v",
    "chars": 8172,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc_cmd_arbiter.v",
    "chars": 12138,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  },
  {
    "path": "vhdl_rx/examples/ov13850_demo/ov13850_demo.srcs/sources_1/ip/ddr3_if_1/ddr3_if/user_design/rtl/axi/mig_7series_v4_0_axi_mc_cmd_fsm.v",
    "chars": 6274,
    "preview": "// -- (c) Copyright 2013 Xilinx, Inc. All rights reserved. \n// --                                                       "
  }
]

// ... and 150 more files (download for full content)

About this extraction

This page contains the full source code of the daveshah1/CSI2Rx GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 350 files (52.1 MB), approximately 6.2M tokens, and a symbol index with 13 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!