├── 01_四路视频拼接+视频移动
├── 01_four_channel_viideo_splicer
│ ├── td_project
│ │ ├── al_ip
│ │ │ ├── ddr_ip.adc
│ │ │ ├── ddr_ip.ipc
│ │ │ ├── ddr_ip.mif
│ │ │ ├── ddr_ip.sdc
│ │ │ ├── ddr_ip.v
│ │ │ ├── ddr_ip_1.mif
│ │ │ ├── ddr_ip_1.txt
│ │ │ ├── ddr_ip_dbg.mif
│ │ │ ├── pll.ipc
│ │ │ ├── pll.v
│ │ │ └── pll.vhd
│ │ ├── fpga_prj.al
│ │ └── fpga_prj_Runs
│ │ │ └── best_result
│ │ │ ├── fpga_prj.bit
│ │ │ ├── fpga_prj_inst.bid
│ │ │ └── readMe.txt
│ └── user_source
│ │ ├── constraints_source
│ │ ├── ap106_ddr_pin.adc
│ │ ├── pin.adc
│ │ └── timing.sdc
│ │ └── hdl_source
│ │ ├── design_top_wrapper.v
│ │ ├── down_samping
│ │ └── down_samping_2x2.v
│ │ ├── four_channel_video_splicer.v
│ │ ├── ph1a_hdmi_tx_lvds
│ │ ├── hdmi_edid_receiver_wrapper.v
│ │ ├── hdmi_phy_wrapper.v
│ │ ├── hdmi_tx.v
│ │ └── hdmi_tx_controller_wrapper.v
│ │ ├── tpg
│ │ ├── uitpg_0.v
│ │ ├── uitpg_1.v
│ │ ├── uitpg_2.v
│ │ └── uitpg_3.v
│ │ ├── uibuf_interconnect
│ │ └── uidbufw_interconnect.v
│ │ ├── uifdma
│ │ ├── uiFDMA.v
│ │ └── uifdma_axi_ddr.v
│ │ ├── uifdmadbuf
│ │ ├── fs_cap.v
│ │ ├── rfifo
│ │ │ ├── rfifo.ipc
│ │ │ ├── rfifo.tcl
│ │ │ └── rfifo.v
│ │ ├── uidbuf.v
│ │ ├── uidbuf_only_w.v
│ │ └── wfifo
│ │ │ ├── wfifo.ipc
│ │ │ ├── wfifo.tcl
│ │ │ └── wfifo.v
│ │ ├── uisetvbuf
│ │ └── uisetvbuf.v
│ │ ├── vtc
│ │ └── uivtc.v
│ │ └── width_conversion
│ │ ├── rd_width_convert.v
│ │ └── wr_width_convert.v
├── 02_four_channel_viideo_splicer_move
│ ├── td_project
│ │ ├── al_ip
│ │ │ ├── ddr_ip.adc
│ │ │ ├── ddr_ip.ipc
│ │ │ ├── ddr_ip.mif
│ │ │ ├── ddr_ip.sdc
│ │ │ ├── ddr_ip.v
│ │ │ ├── ddr_ip_1.mif
│ │ │ ├── ddr_ip_1.txt
│ │ │ ├── ddr_ip_dbg.mif
│ │ │ ├── pll.ipc
│ │ │ ├── pll.v
│ │ │ └── pll.vhd
│ │ ├── fpga_prj.al
│ │ └── fpga_prj_Runs
│ │ │ └── best_result
│ │ │ ├── fpga_prj.bit
│ │ │ ├── fpga_prj_inst.bid
│ │ │ └── readMe.txt
│ └── user_source
│ │ ├── constraints_source
│ │ ├── ap106_ddr_pin.adc
│ │ ├── pin.adc
│ │ └── timing.sdc
│ │ └── hdl_source
│ │ ├── design_top_wrapper.v
│ │ ├── down_samping
│ │ └── down_samping_2x2.v
│ │ ├── four_channel_video_splicer_move.v
│ │ ├── ph1a_hdmi_tx_lvds
│ │ ├── hdmi_edid_receiver_wrapper.v
│ │ ├── hdmi_phy_wrapper.v
│ │ ├── hdmi_tx.v
│ │ └── hdmi_tx_controller_wrapper.v
│ │ ├── tpg
│ │ ├── uitpg_0.v
│ │ ├── uitpg_1.v
│ │ ├── uitpg_2.v
│ │ └── uitpg_3.v
│ │ ├── uart
│ │ ├── command_parsing.v
│ │ ├── uart_trans.v
│ │ ├── uiuart_rx.v
│ │ └── uiuart_tx.v
│ │ ├── uibuf_interconnect
│ │ ├── uidbufr_interconnect.v
│ │ └── uidbufw_interconnect.v
│ │ ├── uifdma
│ │ ├── uiFDMA.v
│ │ └── uifdma_axi_ddr.v
│ │ ├── uifdmadbuf
│ │ ├── fs_cap.v
│ │ ├── rfifo
│ │ │ ├── rfifo.ipc
│ │ │ ├── rfifo.tcl
│ │ │ └── rfifo.v
│ │ ├── uidbuf.v
│ │ └── wfifo
│ │ │ ├── wfifo.ipc
│ │ │ ├── wfifo.tcl
│ │ │ └── wfifo.v
│ │ ├── uisetvbuf
│ │ └── uisetvbuf.v
│ │ ├── vtc
│ │ ├── uivtc.v
│ │ └── uivtc_video_move.v
│ │ └── width_conversion
│ │ ├── rd_width_convert.v
│ │ └── wr_width_convert.v
└── README.md
├── 02_四分屏显示与全屏自由切换
└── 03_split_screen_full_screen_switch
│ ├── README.md
│ ├── td_project
│ ├── al_ip
│ │ ├── ddr_ip.adc
│ │ ├── ddr_ip.ipc
│ │ ├── ddr_ip.mif
│ │ ├── ddr_ip.sdc
│ │ ├── ddr_ip.v
│ │ ├── ddr_ip_1.mif
│ │ ├── ddr_ip_1.txt
│ │ ├── ddr_ip_dbg.mif
│ │ ├── pll.ipc
│ │ ├── pll.v
│ │ └── pll.vhd
│ ├── fpga_prj.al
│ └── fpga_prj_Runs
│ │ └── best_result
│ │ ├── fpga_prj.bit
│ │ ├── fpga_prj_inst.bid
│ │ └── readMe.txt
│ └── user_source
│ ├── constraints_source
│ ├── ap106_ddr_pin.adc
│ ├── pin.adc
│ └── timing.sdc
│ └── hdl_source
│ ├── design_top_wrapper.v
│ ├── down_samping
│ └── down_samping_2x2.v
│ ├── four_channel_video_splicer_move.v
│ ├── full_screen_switch.v
│ ├── ph1a_hdmi_tx_lvds
│ ├── hdmi_edid_receiver_wrapper.v
│ ├── hdmi_phy_wrapper.v
│ ├── hdmi_tx.v
│ └── hdmi_tx_controller_wrapper.v
│ ├── tpg
│ ├── uitpg_0.v
│ ├── uitpg_1.v
│ ├── uitpg_2.v
│ └── uitpg_3.v
│ ├── uart
│ ├── command_parsing.v
│ ├── uart_trans.v
│ ├── uiuart_rx.v
│ └── uiuart_tx.v
│ ├── uibuf_interconnect
│ ├── uidbufr_interconnect.v
│ └── uidbufw_interconnect.v
│ ├── uifdma
│ ├── uiFDMA.v
│ └── uifdma_axi_ddr.v
│ ├── uifdmadbuf
│ ├── fs_cap.v
│ ├── rfifo
│ │ ├── rfifo.ipc
│ │ ├── rfifo.tcl
│ │ └── rfifo.v
│ ├── uidbuf.v
│ ├── uidbuf_only_w.v
│ ├── uidbuf_r_baseaddr_switch.v
│ └── wfifo
│ │ ├── wfifo.ipc
│ │ ├── wfifo.tcl
│ │ └── wfifo.v
│ ├── uisetvbuf
│ └── uisetvbuf.v
│ ├── vtc
│ ├── uivtc.v
│ └── uivtc_video_move.v
│ └── width_conversion
│ ├── rd_width_convert.v
│ └── wr_width_convert.v
├── 03_任意角度视频旋转
├── 04_video_rotate_180
│ ├── td_project
│ │ ├── al_ip
│ │ │ ├── ddr_ip.adc
│ │ │ ├── ddr_ip.ipc
│ │ │ ├── ddr_ip.mif
│ │ │ ├── ddr_ip.sdc
│ │ │ ├── ddr_ip.v
│ │ │ ├── ddr_ip_1.mif
│ │ │ ├── ddr_ip_1.txt
│ │ │ ├── ddr_ip_dbg.mif
│ │ │ ├── hdmi_pll.ipc
│ │ │ ├── hdmi_pll.v
│ │ │ ├── hdmi_pll.vhd
│ │ │ ├── ila
│ │ │ │ ├── .m_params_ila.txt
│ │ │ │ ├── .params_ila.txt
│ │ │ │ ├── .ports_ila.txt
│ │ │ │ ├── ChipWatcher_e89d8dc9dd72.sv
│ │ │ │ ├── Design.xml
│ │ │ │ ├── DesignConfiguration.xml
│ │ │ │ ├── ila.sv
│ │ │ │ └── ila.xml
│ │ │ ├── pll.ipc
│ │ │ ├── pll.v
│ │ │ └── pll.vhd
│ │ ├── chip_debugger
│ │ │ └── user.cwc
│ │ ├── fpga_prj.al
│ │ └── fpga_prj_Runs
│ │ │ └── best_result
│ │ │ ├── fpga_prj.bit
│ │ │ ├── fpga_prj_compress.bit
│ │ │ ├── fpga_prj_inst.bid
│ │ │ └── readMe.txt
│ └── user_source
│ │ ├── constraints_source
│ │ ├── ap106_ddr_pin.adc
│ │ ├── pin.adc
│ │ └── timing.sdc
│ │ └── hdl_source
│ │ ├── design_top_wrapper.v
│ │ ├── down_samping
│ │ └── down_samping_2x2.v
│ │ ├── hdmi_in
│ │ ├── dram_10bit.v
│ │ ├── edid_1280720.mif
│ │ ├── hdmi_1_4b_receiver_core_wrapper.enc.v
│ │ ├── hdmi_rx_phy_wrapper.v
│ │ └── lane_lvds_1_10.v
│ │ ├── ph1a_hdmi_tx_lvds
│ │ ├── hdmi_edid_receiver_wrapper.v
│ │ ├── hdmi_phy_wrapper.v
│ │ ├── hdmi_tx.v
│ │ └── hdmi_tx_controller_wrapper.v
│ │ ├── uibuf_interconnect
│ │ └── uidbufr_interconnect.v
│ │ ├── uifdma
│ │ ├── uiFDMA.v
│ │ └── uifdma_axi_ddr.v
│ │ ├── uifdmadbuf
│ │ ├── fs_cap.v
│ │ ├── ram_rd_buf
│ │ │ ├── ram_rd_buf.ipc
│ │ │ ├── ram_rd_buf.v
│ │ │ └── ram_rd_buf.vhd
│ │ ├── rfifo
│ │ │ ├── rfifo.ipc
│ │ │ ├── rfifo.tcl
│ │ │ └── rfifo.v
│ │ ├── uidbuf.v
│ │ ├── uidbuf_only_r_rotate_180.v
│ │ └── wfifo
│ │ │ ├── wfifo.ipc
│ │ │ ├── wfifo.tcl
│ │ │ └── wfifo.v
│ │ ├── uisetvbuf
│ │ └── uisetvbuf.v
│ │ ├── video_rotate_180_process.v
│ │ ├── vtc
│ │ └── uivtc_video_rotate_180.v
│ │ └── width_conversion
│ │ ├── rd_width_convert.v
│ │ └── wr_width_convert.v
└── README.md
└── README.md
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/ddr_ip.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
18 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
19 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
20 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
21 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
24 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
25 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
34 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
35 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
36 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
37 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
38 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
39 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
40 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
41 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
46 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
47 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
49 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_hard_controller_0} {LOCATION = X65Y40Z0}
50 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_1$ph1_ddr_4lanes} {LOCATION = X81Y40Z0}
51 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_2$ph1_ddr_4lanes} {LOCATION = X81Y0Z0}
52 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll0/pll_inst} { LOCATION = X81Y39Z0}
53 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll1/pll_inst} { LOCATION = X81Y0Z0}
54 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/ddr_ip.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PH1_LOGIC_DDR_SDRAM
5 | 3.0
6 | PH1A90SBG484
7 | false
8 | ddr_ip
9 | DDR3
10 | MC and Standard PHY
11 | 1
12 | 2-1
13 | ENABLE
14 | ENABLE
15 | 4
16 | 533.000000
17 | MHz
18 | 25.000000
19 | MHz
20 | Bank31
21 | false
22 | 4:1
23 | false
24 | false
25 | false
26 | false
27 | 100.000000
28 | 100.000000
29 | 100.000000
30 | 100.000000
31 | MHz
32 | MHz
33 | MHz
34 | MHz
35 | 100.000000
36 | 100.000000
37 | 100.000000
38 | 100.000000
39 | MT41J128M16JT-125
40 | 1.5V
41 | 16
42 | false
43 | true
44 | Row_Column_Bank
45 | Normal
46 | Sequential
47 | RZQ/6
48 | RZQ/4
49 | Enable
50 | DISABLE
51 | DISABLE
52 | DISABLE
53 | ENABLE
54 | DISABLE
55 | ENABLE
56 | Pin
57 | L1,M3,K1,N2,K2,N3,K3,L3,R2,P1,U1,R3,T1,P2,R4,R1,M1,M2,N4,M5,L5,P4,Y9,W9,R7,AB6,U8,U6,W11,AA5,AA6,AB7,V9,V8,W6,AA11,U7,Y11,AA8,U12,AB8,AB10,AA10,V10,U10,Y6,AB11,T8
58 | None
59 |
60 |
61 | ddr_ip.adc
62 | ddr_ip.v
63 | ddr_ip.sdc
64 |
65 |
66 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/ddr_ip_1.txt:
--------------------------------------------------------------------------------
1 | 00000042
2 | 00000000
3 | 8000042a
4 | 00000010
5 | 00000000
6 | 00000000
7 | 00000000
8 | 00000000
9 | 00000000
10 | 00000000
11 | ff55f0ff
12 | ffffff54
13 | ffff89ab
14 | ffffffff
15 | ffffffff
16 | ffffffff
17 | 05_08_0d_09
18 | 0a_06_04_07
19 | 00_01_00_02
20 | 0c_0b_01_00
21 | 00_00_00_00
22 | 02_07_08_0d
23 | 09_05_0a_06
24 | 00_01_00_04
25 | 0c_0b_01_00
26 | 00_00_00_00
27 | 00000000
28 | 00000000
29 | 00000000
30 | 00000000
31 | 00000000
32 | 00000000
33 | 00000000
34 | 00000000
35 | 00000000
36 | 00000000
37 | 00000000
38 | 00000000
39 | 00000000
40 | 00000000
41 | 00000000
42 | 00000000
43 | 00000000
44 | 00000000
45 | 00000000
46 | 00000000
47 | 00000000
48 | 00000000
49 | 00000000
50 | 00000000
51 | 00000000
52 | 00000000
53 | 00000000
54 | 00000000
55 | 00000000
56 | 00000000
57 | 00000000
58 | 00000000
59 | 00000000
60 | 00000000
61 | 00000000
62 | 00000000
63 | 00000000
64 | 00000000
65 | 00000830
66 | 00000004
67 | 00000008
68 | 00000000
69 | 00000000
70 | 00000000
71 | 00000000
72 | 00000000
73 | 00000000
74 | 06140704
75 | 281b0004
76 | 0003005b
77 | 82000000
78 | 00560504
79 | 001b0704
80 | 00000000
81 | 030b0200
82 | bb5d9999
83 | 030b0200
84 | bb5d9999
85 | 030b0200
86 | bb5d9999
87 | 030b0200
88 | bb5d9999
89 | 030b0200
90 | bb5d9999
91 | 030b0200
92 | bb5d9999
93 | 030b0200
94 | bb5d9999
95 | 030b0200
96 | bb5d9999
97 | 030b0200
98 | bb5d9999
99 | 00000000
100 | 00000000
101 | 00000000
102 | 00000000
103 | 00000000
104 | 00000000
105 | 00000000
106 | 00000000
107 | 00000000
108 | 00000000
109 | 00000000
110 | 00000000
111 | 00000000
112 | 00000000
113 | 00000000
114 | 00000000
115 | 00000000
116 | 00000000
117 | 00000000
118 | 00000000
119 | 00000000
120 | 00000000
121 | 00000000
122 | 00000000
123 | 00000000
124 | 00000000
125 | 00000000
126 | 00000000
127 | 00000000
128 | 00000000
129 | 00000000
130 | 00000000
131 | 00000000
132 | 00000000
133 | 00000000
134 | 00000000
135 | 00000000
136 | 00000000
137 | 00000000
138 | 00000000
139 | 00000000
140 | 00000000
141 | 00000000
142 | 00000000
143 | 00000000
144 | 00000000
145 | 00000000
146 | 00000000
147 | 00000000
148 | 00000000
149 | 00000000
150 | 00000000
151 | 00000000
152 | 00000000
153 | 00000000
154 | 00000000
155 | 00000000
156 | 00000000
157 | 00000000
158 | 00000000
159 | 00000000
160 | 00000000
161 | 00000000
162 | 00000000
163 | 00000000
164 | 00000000
165 | 00000000
166 | 00000000
167 | 00000000
168 | 00000000
169 | 00000000
170 | 00000000
171 | 00000000
172 | 00000000
173 | 00000000
174 | 00000000
175 | 00000000
176 | 00000000
177 | 00000000
178 | 00000000
179 | 00000000
180 | 00000000
181 | 00000000
182 | 00000000
183 | 00000000
184 | 00000000
185 | 00000000
186 | 00000000
187 | 00000000
188 | 00000000
189 | 00000000
190 | 00000000
191 | 00000000
192 | 00000000
193 | 00000000
194 | 00000000
195 | 00000000
196 | 00000000
197 | 00000000
198 | 00000000
199 | 00000000
200 | 00000000
201 | 00000000
202 | 00000000
203 | 00000000
204 | 00000000
205 | 00000000
206 | 00000000
207 | 00000000
208 | 00000000
209 | 00000000
210 | 00000000
211 | 00000000
212 | 00000000
213 | 00000000
214 | 00000000
215 | 00000000
216 | 00000000
217 | 00000000
218 | 00000000
219 | 00000000
220 | 00000000
221 | 00000000
222 | 00000000
223 | 00000000
224 | 00000000
225 | 00000000
226 | 00000000
227 | 00000000
228 | 00000000
229 | 00000000
230 | 00000000
231 | 00000000
232 | 00000000
233 | 00000000
234 | 00000000
235 | 00000000
236 | 00000000
237 | 00000000
238 | 00000000
239 | 00000000
240 | 00000000
241 | 00000000
242 | 00000000
243 | 00000000
244 | 00000000
245 | 00000000
246 | 00000000
247 | 00000000
248 | 00000000
249 | 00000000
250 | 00000000
251 | 00000000
252 | 00000000
253 | 00000000
254 | 00000000
255 | 00000000
256 | 00000000
257 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/pll.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PLL
5 | PH1A90SBG484
6 | true
7 |
8 |
9 | Any
10 | 25.0000000000000000MHz
11 | Normal
12 | CLKC0
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 | DISABLE
17 | DISABLE
18 | DISABLE
19 | ENABLE
20 | ENABLE
21 |
22 |
23 | Medium
24 |
25 |
26 | frequncy_setting
27 | 3
28 | 1
29 |
30 |
31 | 0
32 | 15
33 | 75.0000000000000000MHz
34 | 0.0000000000000000deg
35 | 0.5
36 | false
37 | false
38 | BUFG
39 |
40 |
41 | 1
42 | 3
43 | 375.0000000000000000MHz
44 | 0.0000000000000000deg
45 | 0.5
46 | false
47 | false
48 | NONE
49 |
50 |
51 |
52 |
53 | pll.vhd
54 | pll.v
55 |
56 |
57 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/pll.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2024 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.v
8 | ** Date : 2024 12 07
9 | ** TD version : 6.0.117864
10 | \************************************************************/
11 |
12 | ///////////////////////////////////////////////////////////////////////////////
13 | // Input frequency: 25.000000MHz
14 | // Clock multiplication factor: 3
15 | // Clock division factor: 1
16 | // Clock information:
17 | // Clock name | Frequency | Phase shift
18 | // C0 | 75.000000 MHZ | 0.0000 DEG
19 | // C1 | 375.000000MHZ | 0.0000 DEG
20 | ///////////////////////////////////////////////////////////////////////////////
21 | `timescale 1 ns / 100 fs
22 |
23 | module pll (
24 | refclk,
25 | reset,
26 | lock,
27 | clk0_out,
28 | clk1_out
29 | );
30 |
31 | input refclk;
32 | input reset;
33 | output lock;
34 | output clk0_out;
35 | output clk1_out;
36 |
37 | wire clk0_buf;
38 |
39 | PH1_LOGIC_BUFG bufg_feedback (
40 | .i(clk0_buf),
41 | .o(clk0_out)
42 | );
43 |
44 | PH1_PHY_PLL #(
45 | .DYN_PHASE_PATH_SEL("DISABLE"),
46 | .DYN_FPHASE_EN("DISABLE"),
47 | .MPHASE_ENABLE("DISABLE"),
48 | .FIN("25.000000"),
49 | .FEEDBK_MODE("NORMAL"),
50 | .FBKCLK("CLKC0_EXT"),
51 | .PLL_FEED_TYPE("EXTERNAL"),
52 | .PLL_USR_RST("ENABLE"),
53 | .GMC_GAIN(1),
54 | .ICP_CUR(11),
55 | .LPF_CAP(2),
56 | .LPF_RES(3),
57 | .REFCLK_DIV(1),
58 | .FBCLK_DIV(3),
59 | .CLKC0_ENABLE("ENABLE"),
60 | .CLKC0_DIV(15),
61 | .CLKC0_CPHASE(14),
62 | .CLKC0_FPHASE(0),
63 | .CLKC0_FPHASE_RSTSEL(0),
64 | .CLKC0_DUTY_INT(8),
65 | .CLKC0_DUTY50("ENABLE"),
66 | .CLKC1_ENABLE("ENABLE"),
67 | .CLKC1_DIV(3),
68 | .CLKC1_CPHASE(2),
69 | .CLKC1_FPHASE(0),
70 | .CLKC1_FPHASE_RSTSEL(0),
71 | .CLKC1_DUTY_INT(2),
72 | .CLKC1_DUTY50("ENABLE"),
73 | .INTPI(1),
74 | .HIGH_SPEED_EN("DISABLE"),
75 | .SSC_ENABLE("DISABLE"),
76 | .SSC_MODE("CENTER"),
77 | .SSC_AMP(0.0000),
78 | .SSC_FREQ_DIV(0),
79 | .SSC_RNGE(0),
80 | .FRAC_ENABLE("DISABLE"),
81 | .DITHER_ENABLE("DISABLE"),
82 | .SDM_FRAC(0)
83 | ) pll_inst (
84 | .refclk(refclk),
85 | .pllreset(reset),
86 | .lock(lock),
87 | .pllpd(1'b0),
88 | .refclk_rst(1'b0),
89 | .wakeup(1'b0),
90 | .psclk(1'b0),
91 | .psdown(1'b0),
92 | .psstep(1'b0),
93 | .psclksel(3'b000),
94 | .psdone(pll_open0),
95 | .cps_step(2'b00),
96 | .drp_clk(1'b0),
97 | .drp_rstn(1'b1),
98 | .drp_sel(1'b0),
99 | .drp_rd(1'b0),
100 | .drp_wr(1'b0),
101 | .drp_addr(8'b00000000),
102 | .drp_wdata(8'b00000000),
103 | .drp_err(pll_open1),
104 | .drp_rdy(pll_open2),
105 | .drp_rdata({pll_open10, pll_open9, pll_open8, pll_open7, pll_open6, pll_open5, pll_open4, pll_open3}),
106 | .fbclk(clk0_out),
107 | .clkc({pll_open23, pll_open21, pll_open19, pll_open17, pll_open15, pll_open13, clk1_out, clk0_buf}),
108 | .clkcb({pll_open24, pll_open22, pll_open20, pll_open18, pll_open16, pll_open14, pll_open12, pll_open11}),
109 | .clkc_en({8'b00000011}),
110 | .clkc_rst(2'b00),
111 | .ext_freq_mod_clk(1'b0),
112 | .ext_freq_mod_en(1'b0),
113 | .ext_freq_mod_val(17'b00000000000000000),
114 | .ssc_en(1'b0)
115 | );
116 |
117 | endmodule
118 |
119 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/al_ip/pll.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2024 Anlogic Inc. -- All Right Reserved.
3 | --------------------------------------------------------------
4 | -- Log : This file is generated by Anlogic IP Generator.
5 | -- File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.vhd
6 | -- Date : 2024 12 07
7 | -- TD version : 6.0.117864
8 | --------------------------------------------------------------
9 |
10 | -------------------------------------------------------------------------------
11 | -- Input frequency: 25.000000MHz
12 | -- Clock multiplication factor: 3
13 | -- Clock division factor: 1
14 | -- Clock information:
15 | -- Clock name | Frequency | Phase shift
16 | -- C0 | 75.000000 MHZ | 0.0000 DEG
17 | -- C1 | 375.000000MHZ | 0.0000 DEG
18 | -------------------------------------------------------------------------------
19 |
20 | LIBRARY ieee;
21 | USE ieee.std_logic_1164.ALL;
22 | USE ieee.numeric_std.ALL;
23 | USE ieee.std_logic_unsigned.ALL;
24 | USE ieee.std_logic_arith.ALL;
25 | LIBRARY ph1_macro;
26 | USE ph1_macro.PH1_COMPONENTS.ALL;
27 |
28 | ENTITY pll IS
29 | PORT (
30 | refclk : IN STD_LOGIC;
31 | reset : IN STD_LOGIC;
32 | lock : OUT STD_LOGIC;
33 | clk0_out : OUT STD_LOGIC;
34 | clk1_out : OUT STD_LOGIC
35 | );
36 | END pll;
37 |
38 | ARCHITECTURE rtl OF pll IS
39 | SIGNAL clk0_buf : STD_LOGIC;
40 | SIGNAL fbk_wire : STD_LOGIC;
41 | SIGNAL clkc_en_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
42 | SIGNAL clkc_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
43 | SIGNAL clkcb_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
44 | BEGIN
45 | bufg_feedback : PH1_LOGIC_BUFG
46 | PORT MAP (
47 | i => clk0_buf,
48 | o => fbk_wire
49 | );
50 |
51 | pll_inst : PH1_PHY_PLL
52 | GENERIC MAP (
53 | DYN_PHASE_PATH_SEL => "DISABLE",
54 | DYN_FPHASE_EN => "DISABLE",
55 | MPHASE_ENABLE => "DISABLE",
56 | FIN => "25.000000",
57 | FEEDBK_MODE => "NORMAL",
58 | FBKCLK => "CLKC0_EXT",
59 | PLL_FEED_TYPE => "EXTERNAL",
60 | PLL_USR_RST => "ENABLE",
61 | GMC_GAIN => 1,
62 | ICP_CUR => 11,
63 | LPF_CAP => 2,
64 | LPF_RES => 3,
65 | REFCLK_DIV => 1,
66 | FBCLK_DIV => 3,
67 | CLKC0_ENABLE => "ENABLE",
68 | CLKC0_DIV => 15,
69 | CLKC0_CPHASE => 14,
70 | CLKC0_FPHASE => 0,
71 | CLKC0_FPHASE_RSTSEL => 0,
72 | CLKC0_DUTY_INT => 8,
73 | CLKC0_DUTY50 => "ENABLE",
74 | CLKC1_ENABLE => "ENABLE",
75 | CLKC1_DIV => 3,
76 | CLKC1_CPHASE => 2,
77 | CLKC1_FPHASE => 0,
78 | CLKC1_FPHASE_RSTSEL => 0,
79 | CLKC1_DUTY_INT => 2,
80 | CLKC1_DUTY50 => "ENABLE",
81 | INTPI => 1,
82 | HIGH_SPEED_EN => "DISABLE",
83 | SSC_ENABLE => "DISABLE",
84 | SSC_MODE => "CENTER",
85 | SSC_AMP => 0.0000,
86 | SSC_FREQ_DIV => 0,
87 | SSC_RNGE => 0,
88 | FRAC_ENABLE => "DISABLE",
89 | DITHER_ENABLE => "DISABLE",
90 | SDM_FRAC => 0
91 | )
92 | PORT MAP (
93 | refclk => refclk,
94 | pllreset => reset,
95 | lock => lock,
96 | pllpd => '0',
97 | refclk_rst => '0',
98 | wakeup => '0',
99 | psclk => '0',
100 | psdown => '0',
101 | psstep => '0',
102 | psclksel => b"000",
103 | cps_step => b"00",
104 | drp_clk => '0',
105 | drp_rstn => '1',
106 | drp_sel => '0',
107 | drp_rd => '0',
108 | drp_wr => '0',
109 | drp_addr => b"00000000",
110 | drp_wdata => b"00000000",
111 | fbclk => fbk_wire,
112 | clkc => clkc_wire,
113 | clkcb => clkcb_wire,
114 | clkc_en => clkc_en_wire,
115 | clkc_rst => b"00",
116 | ext_freq_mod_clk => '0',
117 | ext_freq_mod_en => '0',
118 | ext_freq_mod_val => b"00000000000000000",
119 | ssc_en => '0'
120 | );
121 |
122 | clk0_out <= fbk_wire;
123 | clkc_en_wire <= b"00000011";
124 | clk1_out <= clkc_wire(1);
125 | clk0_buf <= clkc_wire(0);
126 |
127 | END rtl;
128 |
129 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/fpga_prj_Runs/best_result/fpga_prj.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/fpga_prj_Runs/best_result/fpga_prj.bit
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/td_project/fpga_prj_Runs/best_result/readMe.txt:
--------------------------------------------------------------------------------
1 | The implemented result of phy_1 is saved as best result.
2 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/constraints_source/ap106_ddr_pin.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dq[16] } {LOCATION = U3; IOSTANDARD = SSTL15; }
18 | set_ippin_assignment { ddr_dq[17] } {LOCATION = W2; IOSTANDARD = SSTL15; }
19 | set_ippin_assignment { ddr_dq[18] } {LOCATION = T4; IOSTANDARD = SSTL15; }
20 | set_ippin_assignment { ddr_dq[19] } {LOCATION = W4; IOSTANDARD = SSTL15; }
21 | set_ippin_assignment { ddr_dq[20] } {LOCATION = V4; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dq[21] } {LOCATION = U5; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_dq[22] } {LOCATION = V3; IOSTANDARD = SSTL15; }
24 | set_ippin_assignment { ddr_dq[23] } {LOCATION = T5; IOSTANDARD = SSTL15; }
25 | set_ippin_assignment { ddr_dq[24] } {LOCATION = AA3; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_dq[25] } {LOCATION = W1; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_dq[26] } {LOCATION = AB3; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_dq[27] } {LOCATION = AB2; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_dq[28] } {LOCATION = W5; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_dq[29] } {LOCATION = AB1; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_dq[30] } {LOCATION = AA1; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_dq[31] } {LOCATION = Y1; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
34 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
35 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
36 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
37 | set_ippin_assignment { ddr_dqs_n[2] } {LOCATION = V2; IOSTANDARD = DIFF_SSTL15; }
38 | set_ippin_assignment { ddr_dqs_p[2] } {LOCATION = U2; IOSTANDARD = DIFF_SSTL15; }
39 | set_ippin_assignment { ddr_dqs_n[3] } {LOCATION = Y2; IOSTANDARD = DIFF_SSTL15; }
40 | set_ippin_assignment { ddr_dqs_p[3] } {LOCATION = Y3; IOSTANDARD = DIFF_SSTL15; }
41 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_dm[2] } {LOCATION = N5; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_dm[3] } {LOCATION = AA4; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
46 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
47 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
49 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
50 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
51 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
52 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
53 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
54 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
55 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
56 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
57 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
58 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
59 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
60 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
61 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
62 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
63 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
64 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
65 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
66 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
67 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
68 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
69 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
70 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
71 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/constraints_source/pin.adc:
--------------------------------------------------------------------------------
1 | set_pin_assignment { I_rst_n } { LOCATION = K4; IOSTANDARD = LVCMOS15; PULLTYPE = PULLUP; }
2 | set_pin_assignment { I_sys_clk } { LOCATION = N18; IOSTANDARD = LVCMOS33; PULLTYPE = PULLUP; }
3 |
4 | set_pin_assignment { O_uart_txd } { LOCATION = R22 ; IOSTANDARD = LVCMOS33;}
5 | set_pin_assignment { I_uart_rxd } { LOCATION = M16 ; IOSTANDARD = LVCMOS33; }
6 |
7 | set_pin_assignment { O_hdmi_tx_p[0] } { LOCATION = V13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
8 | set_pin_assignment { O_hdmi_tx_p[1] } { LOCATION = Y12; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
9 | set_pin_assignment { O_hdmi_tx_p[2] } { LOCATION = T13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
10 | set_pin_assignment { O_hdmi_clk_p } { LOCATION = V17; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
11 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/constraints_source/timing.sdc:
--------------------------------------------------------------------------------
1 | create_clock -name {sys_clk_25m} -period 40.000 -waveform {0.000 20.000} [get_ports {I_sys_clk}]
2 | derive_pll_clocks
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/down_samping/down_samping_2x2.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:33:13
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:33:33
6 | */
7 |
8 |
9 | module down_samping_2x2#(
10 | parameter [13:0] H_SIZE = 1920,
11 | parameter [13:0] V_SIZE = 1080
12 | )
13 | (
14 | input wire I_clk,
15 | input wire I_rst_n,
16 |
17 | input wire I_rgb_vs,
18 | input wire I_rgb_de,
19 | input wire [31:0] I_rgb_data,
20 |
21 | output reg O_rgb_vs,
22 | output reg O_rgb_de,
23 | output reg [31:0] O_rgb_data
24 |
25 | );
26 |
27 | reg [11:0] col_count, row_count;
28 |
29 |
30 | wire vs_up_edge;
31 |
32 | assign vs_up_edge = I_rgb_vs &(~O_rgb_vs) ;
33 |
34 | always @(posedge I_clk or negedge I_rst_n) begin
35 | if (!I_rst_n) begin
36 | col_count <= 0;
37 | end else if (vs_up_edge) begin
38 | col_count <= 0;
39 | end else if (I_rgb_de) begin
40 | if (col_count == (H_SIZE- 1)) begin
41 | col_count <= 0;
42 | end else begin
43 | col_count <= col_count + 1;
44 | end
45 | end else begin
46 | col_count<=col_count;
47 | end
48 | end
49 |
50 | always @(posedge I_clk or negedge I_rst_n) begin
51 | if (!I_rst_n) begin
52 | row_count <= 0;
53 | end else if (vs_up_edge) begin
54 | row_count <= 0;
55 | end else if (I_rgb_de) begin
56 | if (row_count == (V_SIZE - 1) && col_count == (H_SIZE - 1)) begin
57 | row_count <= 0;
58 | end else if (col_count == (H_SIZE- 1)) begin
59 | row_count <= row_count + 1;
60 | end
61 | end else begin
62 | row_count<=row_count;
63 | end
64 | end
65 |
66 |
67 | reg sample_select;
68 | // wire sample_select;
69 |
70 | // assign sample_select = (col_count % 2 == 0) && (row_count % 2 == 0);
71 |
72 | always @(*) begin
73 | if(!I_rst_n) begin
74 | sample_select<=1'b0;
75 | end else begin
76 | sample_select <= (col_count % 2 == 0) && (row_count % 2 == 0);
77 | end
78 | end
79 |
80 | always @(posedge I_clk or negedge I_rst_n) begin
81 | if (!I_rst_n) begin
82 | O_rgb_vs <= 0;
83 | end else begin
84 | O_rgb_vs<=I_rgb_vs;
85 | end
86 | end
87 |
88 | always @(posedge I_clk or negedge I_rst_n) begin
89 | if (!I_rst_n) begin
90 | O_rgb_de <= 0;
91 | end else if(I_rgb_de) begin
92 | O_rgb_de<=sample_select;
93 | end else begin
94 | O_rgb_de<=0;
95 | end
96 | end
97 |
98 | always @(posedge I_clk or negedge I_rst_n) begin
99 | if (!I_rst_n) begin
100 | O_rgb_data <= 'd0;
101 | end else if(sample_select) begin
102 | O_rgb_data<=I_rgb_data;
103 | end
104 | end
105 |
106 |
107 |
108 |
109 |
110 | endmodule //video_samping
111 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_0.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_0.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_1.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_1.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_2.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_3.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/tpg/uitpg_3.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdma/uiFDMA.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdma/uiFDMA.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdma/uifdma_axi_ddr.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdma/uifdma_axi_ddr.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/fs_cap.v:
--------------------------------------------------------------------------------
1 | `timescale 1ns / 1ps
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop: https://milianke.taobao.com
9 | *Create Date: 2022/09/25
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 3.1
20 | *Signal description
21 | *1) _i input
22 | *2) _o output
23 | *3) _n activ low
24 | *4) _dg debug signal
25 | *5) _r delay or register
26 | *6) _s state mechine
27 | *********************************************************************/
28 |
29 |
30 | module fs_cap#(
31 | parameter integer VIDEO_ENABLE = 1
32 | )
33 | (
34 | input I_clk,
35 | input I_rstn,
36 | input I_vs,
37 | output reg O_fs_cap
38 | );
39 |
40 | //----CH0_CNT_FS�źŵ�ƽ���� ʵ�ʾ��Dz���VS�ź�----------------
41 | reg[4:0]CNT_FS = 6'b0;
42 | reg[4:0]CNT_FS_n = 6'b0;
43 | reg FS = 1'b0;
44 | (* ASYNC_REG = "TRUE" *) reg vs_i_r1;
45 | (* ASYNC_REG = "TRUE" *) reg vs_i_r2;
46 | (* ASYNC_REG = "TRUE" *) reg vs_i_r3;
47 | (* ASYNC_REG = "TRUE" *) reg vs_i_r4;
48 | //----ͬ�����ε�·��֮ǰ����û�����ε�·�������Dzɼ�vs����-----
49 | always@(posedge I_clk) begin
50 | vs_i_r1 <= I_vs;
51 | vs_i_r2 <= vs_i_r1;
52 | vs_i_r3 <= vs_i_r2;
53 | vs_i_r4 <= vs_i_r3;
54 | end
55 |
56 | always@(posedge I_clk) begin
57 | if(!I_rstn)begin
58 | O_fs_cap <= 1'd0;
59 | end
60 | else if(VIDEO_ENABLE == 1)begin
61 | if({vs_i_r4,vs_i_r3} == 2'b01)begin
62 | O_fs_cap <= 1'b1;
63 | end
64 | else begin
65 | O_fs_cap <= 1'b0;
66 | end
67 | end
68 | else begin
69 | O_fs_cap <= vs_i_r4;
70 | end
71 | end
72 |
73 | endmodule
74 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 253
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 2048
11 | 32
12 | Enable
13 | 256
14 | 256
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | rfifo
22 |
23 |
24 | rfifo.v
25 | rfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/uidbuf.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/uidbuf.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/uidbuf_only_w.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/uidbuf_only_w.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 2045
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 256
11 | 256
12 | Enable
13 | 2048
14 | 32
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | wfifo
22 |
23 |
24 | wfifo.v
25 | wfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/uisetvbuf/uisetvbuf.v:
--------------------------------------------------------------------------------
1 |
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop1: https://milianke.taobao.com
9 | *Create Date: 2023/03/23
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 1.1
20 | *Signal description
21 | *1) I_ input
22 | *2) O_ output
23 | *3) IO_ input output
24 | *3) S_ system internal signal
25 | *3) _n activ low
26 | *4) _dg debug signal
27 | *5) _r delay or register
28 | *6) _s state mechine
29 | *********************************************************************/
30 | `timescale 1ns / 1ps
31 |
32 | module uisetvbuf#(
33 | parameter integer BUF_DELAY = 1,
34 | parameter integer BUF_LENTH = 3
35 | )
36 | (
37 |
38 | input [7 :0] I_bufn,
39 | output [7 :0] O_bufn
40 | );
41 |
42 |
43 |
44 | assign O_bufn = I_bufn < BUF_DELAY? (BUF_LENTH - BUF_DELAY + I_bufn) : (I_bufn - BUF_DELAY) ;
45 |
46 |
47 | endmodule
48 |
49 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/vtc/uivtc.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/vtc/uivtc.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/width_conversion/rd_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:20
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:20
6 | */
7 |
8 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
9 | module rd_width_convert(
10 | input wire [15:0] I_rd_data,
11 |
12 | output wire [31:0] O_rd_data
13 | );
14 |
15 |
16 | assign O_rd_data ={8'd0,I_rd_data[15:11], 3'd0, I_rd_data[10:5], 2'd0,I_rd_data[4:0], 3'd0} ;
17 |
18 |
19 |
20 | endmodule
21 |
22 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/01_four_channel_viideo_splicer/user_source/hdl_source/width_conversion/wr_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:27
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:27
6 | */
7 |
8 |
9 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
10 | module wr_width_convert(
11 | input wire [31:0] I_wr_data,
12 |
13 | output wire [15:0] O_wr_data
14 | );
15 |
16 | assign O_wr_data = {I_wr_data[23:19],I_wr_data[15:10],I_wr_data[7:3]};
17 |
18 | endmodule
19 |
20 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/ddr_ip.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
18 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
19 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
20 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
21 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
24 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
25 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
34 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
35 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
36 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
37 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
38 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
39 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
40 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
41 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
46 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
47 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
49 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_hard_controller_0} {LOCATION = X65Y40Z0}
50 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_1$ph1_ddr_4lanes} {LOCATION = X81Y40Z0}
51 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_2$ph1_ddr_4lanes} {LOCATION = X81Y0Z0}
52 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll0/pll_inst} { LOCATION = X81Y39Z0}
53 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll1/pll_inst} { LOCATION = X81Y0Z0}
54 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/ddr_ip.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PH1_LOGIC_DDR_SDRAM
5 | 3.0
6 | PH1A90SBG484
7 | false
8 | ddr_ip
9 | DDR3
10 | MC and Standard PHY
11 | 1
12 | 2-1
13 | ENABLE
14 | ENABLE
15 | 4
16 | 533.000000
17 | MHz
18 | 25.000000
19 | MHz
20 | Bank31
21 | false
22 | 4:1
23 | false
24 | false
25 | false
26 | false
27 | 100.000000
28 | 100.000000
29 | 100.000000
30 | 100.000000
31 | MHz
32 | MHz
33 | MHz
34 | MHz
35 | 100.000000
36 | 100.000000
37 | 100.000000
38 | 100.000000
39 | MT41J128M16JT-125
40 | 1.5V
41 | 16
42 | false
43 | true
44 | Row_Column_Bank
45 | Normal
46 | Sequential
47 | RZQ/6
48 | RZQ/4
49 | Enable
50 | DISABLE
51 | DISABLE
52 | DISABLE
53 | ENABLE
54 | DISABLE
55 | ENABLE
56 | Pin
57 | L1,M3,K1,N2,K2,N3,K3,L3,R2,P1,U1,R3,T1,P2,R4,R1,M1,M2,N4,M5,L5,P4,Y9,W9,R7,AB6,U8,U6,W11,AA5,AA6,AB7,V9,V8,W6,AA11,U7,Y11,AA8,U12,AB8,AB10,AA10,V10,U10,Y6,AB11,T8
58 | None
59 |
60 |
61 | ddr_ip.adc
62 | ddr_ip.v
63 | ddr_ip.sdc
64 |
65 |
66 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/ddr_ip_1.txt:
--------------------------------------------------------------------------------
1 | 00000042
2 | 00000000
3 | 8000042a
4 | 00000010
5 | 00000000
6 | 00000000
7 | 00000000
8 | 00000000
9 | 00000000
10 | 00000000
11 | ff55f0ff
12 | ffffff54
13 | ffff89ab
14 | ffffffff
15 | ffffffff
16 | ffffffff
17 | 05_08_0d_09
18 | 0a_06_04_07
19 | 00_01_00_02
20 | 0c_0b_01_00
21 | 00_00_00_00
22 | 02_07_08_0d
23 | 09_05_0a_06
24 | 00_01_00_04
25 | 0c_0b_01_00
26 | 00_00_00_00
27 | 00000000
28 | 00000000
29 | 00000000
30 | 00000000
31 | 00000000
32 | 00000000
33 | 00000000
34 | 00000000
35 | 00000000
36 | 00000000
37 | 00000000
38 | 00000000
39 | 00000000
40 | 00000000
41 | 00000000
42 | 00000000
43 | 00000000
44 | 00000000
45 | 00000000
46 | 00000000
47 | 00000000
48 | 00000000
49 | 00000000
50 | 00000000
51 | 00000000
52 | 00000000
53 | 00000000
54 | 00000000
55 | 00000000
56 | 00000000
57 | 00000000
58 | 00000000
59 | 00000000
60 | 00000000
61 | 00000000
62 | 00000000
63 | 00000000
64 | 00000000
65 | 00000830
66 | 00000004
67 | 00000008
68 | 00000000
69 | 00000000
70 | 00000000
71 | 00000000
72 | 00000000
73 | 00000000
74 | 06140704
75 | 281b0004
76 | 0003005b
77 | 82000000
78 | 00560504
79 | 001b0704
80 | 00000000
81 | 030b0200
82 | bb5d9999
83 | 030b0200
84 | bb5d9999
85 | 030b0200
86 | bb5d9999
87 | 030b0200
88 | bb5d9999
89 | 030b0200
90 | bb5d9999
91 | 030b0200
92 | bb5d9999
93 | 030b0200
94 | bb5d9999
95 | 030b0200
96 | bb5d9999
97 | 030b0200
98 | bb5d9999
99 | 00000000
100 | 00000000
101 | 00000000
102 | 00000000
103 | 00000000
104 | 00000000
105 | 00000000
106 | 00000000
107 | 00000000
108 | 00000000
109 | 00000000
110 | 00000000
111 | 00000000
112 | 00000000
113 | 00000000
114 | 00000000
115 | 00000000
116 | 00000000
117 | 00000000
118 | 00000000
119 | 00000000
120 | 00000000
121 | 00000000
122 | 00000000
123 | 00000000
124 | 00000000
125 | 00000000
126 | 00000000
127 | 00000000
128 | 00000000
129 | 00000000
130 | 00000000
131 | 00000000
132 | 00000000
133 | 00000000
134 | 00000000
135 | 00000000
136 | 00000000
137 | 00000000
138 | 00000000
139 | 00000000
140 | 00000000
141 | 00000000
142 | 00000000
143 | 00000000
144 | 00000000
145 | 00000000
146 | 00000000
147 | 00000000
148 | 00000000
149 | 00000000
150 | 00000000
151 | 00000000
152 | 00000000
153 | 00000000
154 | 00000000
155 | 00000000
156 | 00000000
157 | 00000000
158 | 00000000
159 | 00000000
160 | 00000000
161 | 00000000
162 | 00000000
163 | 00000000
164 | 00000000
165 | 00000000
166 | 00000000
167 | 00000000
168 | 00000000
169 | 00000000
170 | 00000000
171 | 00000000
172 | 00000000
173 | 00000000
174 | 00000000
175 | 00000000
176 | 00000000
177 | 00000000
178 | 00000000
179 | 00000000
180 | 00000000
181 | 00000000
182 | 00000000
183 | 00000000
184 | 00000000
185 | 00000000
186 | 00000000
187 | 00000000
188 | 00000000
189 | 00000000
190 | 00000000
191 | 00000000
192 | 00000000
193 | 00000000
194 | 00000000
195 | 00000000
196 | 00000000
197 | 00000000
198 | 00000000
199 | 00000000
200 | 00000000
201 | 00000000
202 | 00000000
203 | 00000000
204 | 00000000
205 | 00000000
206 | 00000000
207 | 00000000
208 | 00000000
209 | 00000000
210 | 00000000
211 | 00000000
212 | 00000000
213 | 00000000
214 | 00000000
215 | 00000000
216 | 00000000
217 | 00000000
218 | 00000000
219 | 00000000
220 | 00000000
221 | 00000000
222 | 00000000
223 | 00000000
224 | 00000000
225 | 00000000
226 | 00000000
227 | 00000000
228 | 00000000
229 | 00000000
230 | 00000000
231 | 00000000
232 | 00000000
233 | 00000000
234 | 00000000
235 | 00000000
236 | 00000000
237 | 00000000
238 | 00000000
239 | 00000000
240 | 00000000
241 | 00000000
242 | 00000000
243 | 00000000
244 | 00000000
245 | 00000000
246 | 00000000
247 | 00000000
248 | 00000000
249 | 00000000
250 | 00000000
251 | 00000000
252 | 00000000
253 | 00000000
254 | 00000000
255 | 00000000
256 | 00000000
257 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/pll.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PLL
5 | PH1A90SBG484
6 | true
7 |
8 |
9 | Any
10 | 25.0000000000000000MHz
11 | Normal
12 | CLKC0
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 | DISABLE
17 | DISABLE
18 | DISABLE
19 | ENABLE
20 | ENABLE
21 |
22 |
23 | Medium
24 |
25 |
26 | frequncy_setting
27 | 3
28 | 1
29 |
30 |
31 | 0
32 | 15
33 | 75.0000000000000000MHz
34 | 0.0000000000000000deg
35 | 0.5
36 | false
37 | false
38 | BUFG
39 |
40 |
41 | 1
42 | 3
43 | 375.0000000000000000MHz
44 | 0.0000000000000000deg
45 | 0.5
46 | false
47 | false
48 | NONE
49 |
50 |
51 |
52 |
53 | pll.vhd
54 | pll.v
55 |
56 |
57 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/pll.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2024 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.v
8 | ** Date : 2024 12 07
9 | ** TD version : 6.0.117864
10 | \************************************************************/
11 |
12 | ///////////////////////////////////////////////////////////////////////////////
13 | // Input frequency: 25.000000MHz
14 | // Clock multiplication factor: 3
15 | // Clock division factor: 1
16 | // Clock information:
17 | // Clock name | Frequency | Phase shift
18 | // C0 | 75.000000 MHZ | 0.0000 DEG
19 | // C1 | 375.000000MHZ | 0.0000 DEG
20 | ///////////////////////////////////////////////////////////////////////////////
21 | `timescale 1 ns / 100 fs
22 |
23 | module pll (
24 | refclk,
25 | reset,
26 | lock,
27 | clk0_out,
28 | clk1_out
29 | );
30 |
31 | input refclk;
32 | input reset;
33 | output lock;
34 | output clk0_out;
35 | output clk1_out;
36 |
37 | wire clk0_buf;
38 |
39 | PH1_LOGIC_BUFG bufg_feedback (
40 | .i(clk0_buf),
41 | .o(clk0_out)
42 | );
43 |
44 | PH1_PHY_PLL #(
45 | .DYN_PHASE_PATH_SEL("DISABLE"),
46 | .DYN_FPHASE_EN("DISABLE"),
47 | .MPHASE_ENABLE("DISABLE"),
48 | .FIN("25.000000"),
49 | .FEEDBK_MODE("NORMAL"),
50 | .FBKCLK("CLKC0_EXT"),
51 | .PLL_FEED_TYPE("EXTERNAL"),
52 | .PLL_USR_RST("ENABLE"),
53 | .GMC_GAIN(1),
54 | .ICP_CUR(11),
55 | .LPF_CAP(2),
56 | .LPF_RES(3),
57 | .REFCLK_DIV(1),
58 | .FBCLK_DIV(3),
59 | .CLKC0_ENABLE("ENABLE"),
60 | .CLKC0_DIV(15),
61 | .CLKC0_CPHASE(14),
62 | .CLKC0_FPHASE(0),
63 | .CLKC0_FPHASE_RSTSEL(0),
64 | .CLKC0_DUTY_INT(8),
65 | .CLKC0_DUTY50("ENABLE"),
66 | .CLKC1_ENABLE("ENABLE"),
67 | .CLKC1_DIV(3),
68 | .CLKC1_CPHASE(2),
69 | .CLKC1_FPHASE(0),
70 | .CLKC1_FPHASE_RSTSEL(0),
71 | .CLKC1_DUTY_INT(2),
72 | .CLKC1_DUTY50("ENABLE"),
73 | .INTPI(1),
74 | .HIGH_SPEED_EN("DISABLE"),
75 | .SSC_ENABLE("DISABLE"),
76 | .SSC_MODE("CENTER"),
77 | .SSC_AMP(0.0000),
78 | .SSC_FREQ_DIV(0),
79 | .SSC_RNGE(0),
80 | .FRAC_ENABLE("DISABLE"),
81 | .DITHER_ENABLE("DISABLE"),
82 | .SDM_FRAC(0)
83 | ) pll_inst (
84 | .refclk(refclk),
85 | .pllreset(reset),
86 | .lock(lock),
87 | .pllpd(1'b0),
88 | .refclk_rst(1'b0),
89 | .wakeup(1'b0),
90 | .psclk(1'b0),
91 | .psdown(1'b0),
92 | .psstep(1'b0),
93 | .psclksel(3'b000),
94 | .psdone(pll_open0),
95 | .cps_step(2'b00),
96 | .drp_clk(1'b0),
97 | .drp_rstn(1'b1),
98 | .drp_sel(1'b0),
99 | .drp_rd(1'b0),
100 | .drp_wr(1'b0),
101 | .drp_addr(8'b00000000),
102 | .drp_wdata(8'b00000000),
103 | .drp_err(pll_open1),
104 | .drp_rdy(pll_open2),
105 | .drp_rdata({pll_open10, pll_open9, pll_open8, pll_open7, pll_open6, pll_open5, pll_open4, pll_open3}),
106 | .fbclk(clk0_out),
107 | .clkc({pll_open23, pll_open21, pll_open19, pll_open17, pll_open15, pll_open13, clk1_out, clk0_buf}),
108 | .clkcb({pll_open24, pll_open22, pll_open20, pll_open18, pll_open16, pll_open14, pll_open12, pll_open11}),
109 | .clkc_en({8'b00000011}),
110 | .clkc_rst(2'b00),
111 | .ext_freq_mod_clk(1'b0),
112 | .ext_freq_mod_en(1'b0),
113 | .ext_freq_mod_val(17'b00000000000000000),
114 | .ssc_en(1'b0)
115 | );
116 |
117 | endmodule
118 |
119 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/al_ip/pll.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2024 Anlogic Inc. -- All Right Reserved.
3 | --------------------------------------------------------------
4 | -- Log : This file is generated by Anlogic IP Generator.
5 | -- File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.vhd
6 | -- Date : 2024 12 07
7 | -- TD version : 6.0.117864
8 | --------------------------------------------------------------
9 |
10 | -------------------------------------------------------------------------------
11 | -- Input frequency: 25.000000MHz
12 | -- Clock multiplication factor: 3
13 | -- Clock division factor: 1
14 | -- Clock information:
15 | -- Clock name | Frequency | Phase shift
16 | -- C0 | 75.000000 MHZ | 0.0000 DEG
17 | -- C1 | 375.000000MHZ | 0.0000 DEG
18 | -------------------------------------------------------------------------------
19 |
20 | LIBRARY ieee;
21 | USE ieee.std_logic_1164.ALL;
22 | USE ieee.numeric_std.ALL;
23 | USE ieee.std_logic_unsigned.ALL;
24 | USE ieee.std_logic_arith.ALL;
25 | LIBRARY ph1_macro;
26 | USE ph1_macro.PH1_COMPONENTS.ALL;
27 |
28 | ENTITY pll IS
29 | PORT (
30 | refclk : IN STD_LOGIC;
31 | reset : IN STD_LOGIC;
32 | lock : OUT STD_LOGIC;
33 | clk0_out : OUT STD_LOGIC;
34 | clk1_out : OUT STD_LOGIC
35 | );
36 | END pll;
37 |
38 | ARCHITECTURE rtl OF pll IS
39 | SIGNAL clk0_buf : STD_LOGIC;
40 | SIGNAL fbk_wire : STD_LOGIC;
41 | SIGNAL clkc_en_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
42 | SIGNAL clkc_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
43 | SIGNAL clkcb_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
44 | BEGIN
45 | bufg_feedback : PH1_LOGIC_BUFG
46 | PORT MAP (
47 | i => clk0_buf,
48 | o => fbk_wire
49 | );
50 |
51 | pll_inst : PH1_PHY_PLL
52 | GENERIC MAP (
53 | DYN_PHASE_PATH_SEL => "DISABLE",
54 | DYN_FPHASE_EN => "DISABLE",
55 | MPHASE_ENABLE => "DISABLE",
56 | FIN => "25.000000",
57 | FEEDBK_MODE => "NORMAL",
58 | FBKCLK => "CLKC0_EXT",
59 | PLL_FEED_TYPE => "EXTERNAL",
60 | PLL_USR_RST => "ENABLE",
61 | GMC_GAIN => 1,
62 | ICP_CUR => 11,
63 | LPF_CAP => 2,
64 | LPF_RES => 3,
65 | REFCLK_DIV => 1,
66 | FBCLK_DIV => 3,
67 | CLKC0_ENABLE => "ENABLE",
68 | CLKC0_DIV => 15,
69 | CLKC0_CPHASE => 14,
70 | CLKC0_FPHASE => 0,
71 | CLKC0_FPHASE_RSTSEL => 0,
72 | CLKC0_DUTY_INT => 8,
73 | CLKC0_DUTY50 => "ENABLE",
74 | CLKC1_ENABLE => "ENABLE",
75 | CLKC1_DIV => 3,
76 | CLKC1_CPHASE => 2,
77 | CLKC1_FPHASE => 0,
78 | CLKC1_FPHASE_RSTSEL => 0,
79 | CLKC1_DUTY_INT => 2,
80 | CLKC1_DUTY50 => "ENABLE",
81 | INTPI => 1,
82 | HIGH_SPEED_EN => "DISABLE",
83 | SSC_ENABLE => "DISABLE",
84 | SSC_MODE => "CENTER",
85 | SSC_AMP => 0.0000,
86 | SSC_FREQ_DIV => 0,
87 | SSC_RNGE => 0,
88 | FRAC_ENABLE => "DISABLE",
89 | DITHER_ENABLE => "DISABLE",
90 | SDM_FRAC => 0
91 | )
92 | PORT MAP (
93 | refclk => refclk,
94 | pllreset => reset,
95 | lock => lock,
96 | pllpd => '0',
97 | refclk_rst => '0',
98 | wakeup => '0',
99 | psclk => '0',
100 | psdown => '0',
101 | psstep => '0',
102 | psclksel => b"000",
103 | cps_step => b"00",
104 | drp_clk => '0',
105 | drp_rstn => '1',
106 | drp_sel => '0',
107 | drp_rd => '0',
108 | drp_wr => '0',
109 | drp_addr => b"00000000",
110 | drp_wdata => b"00000000",
111 | fbclk => fbk_wire,
112 | clkc => clkc_wire,
113 | clkcb => clkcb_wire,
114 | clkc_en => clkc_en_wire,
115 | clkc_rst => b"00",
116 | ext_freq_mod_clk => '0',
117 | ext_freq_mod_en => '0',
118 | ext_freq_mod_val => b"00000000000000000",
119 | ssc_en => '0'
120 | );
121 |
122 | clk0_out <= fbk_wire;
123 | clkc_en_wire <= b"00000011";
124 | clk1_out <= clkc_wire(1);
125 | clk0_buf <= clkc_wire(0);
126 |
127 | END rtl;
128 |
129 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/fpga_prj_Runs/best_result/fpga_prj.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/fpga_prj_Runs/best_result/fpga_prj.bit
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/td_project/fpga_prj_Runs/best_result/readMe.txt:
--------------------------------------------------------------------------------
1 | The implemented result of phy_1 is saved as best result.
2 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/constraints_source/ap106_ddr_pin.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dq[16] } {LOCATION = U3; IOSTANDARD = SSTL15; }
18 | set_ippin_assignment { ddr_dq[17] } {LOCATION = W2; IOSTANDARD = SSTL15; }
19 | set_ippin_assignment { ddr_dq[18] } {LOCATION = T4; IOSTANDARD = SSTL15; }
20 | set_ippin_assignment { ddr_dq[19] } {LOCATION = W4; IOSTANDARD = SSTL15; }
21 | set_ippin_assignment { ddr_dq[20] } {LOCATION = V4; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dq[21] } {LOCATION = U5; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_dq[22] } {LOCATION = V3; IOSTANDARD = SSTL15; }
24 | set_ippin_assignment { ddr_dq[23] } {LOCATION = T5; IOSTANDARD = SSTL15; }
25 | set_ippin_assignment { ddr_dq[24] } {LOCATION = AA3; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_dq[25] } {LOCATION = W1; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_dq[26] } {LOCATION = AB3; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_dq[27] } {LOCATION = AB2; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_dq[28] } {LOCATION = W5; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_dq[29] } {LOCATION = AB1; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_dq[30] } {LOCATION = AA1; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_dq[31] } {LOCATION = Y1; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
34 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
35 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
36 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
37 | set_ippin_assignment { ddr_dqs_n[2] } {LOCATION = V2; IOSTANDARD = DIFF_SSTL15; }
38 | set_ippin_assignment { ddr_dqs_p[2] } {LOCATION = U2; IOSTANDARD = DIFF_SSTL15; }
39 | set_ippin_assignment { ddr_dqs_n[3] } {LOCATION = Y2; IOSTANDARD = DIFF_SSTL15; }
40 | set_ippin_assignment { ddr_dqs_p[3] } {LOCATION = Y3; IOSTANDARD = DIFF_SSTL15; }
41 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_dm[2] } {LOCATION = N5; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_dm[3] } {LOCATION = AA4; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
46 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
47 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
49 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
50 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
51 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
52 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
53 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
54 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
55 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
56 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
57 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
58 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
59 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
60 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
61 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
62 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
63 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
64 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
65 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
66 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
67 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
68 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
69 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
70 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
71 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/constraints_source/pin.adc:
--------------------------------------------------------------------------------
1 | set_pin_assignment { I_rst_n } { LOCATION = K4; IOSTANDARD = LVCMOS15; PULLTYPE = PULLUP; }
2 | set_pin_assignment { I_sys_clk } { LOCATION = N18; IOSTANDARD = LVCMOS33; PULLTYPE = PULLUP; }
3 |
4 | set_pin_assignment { O_uart_txd } { LOCATION = R22 ; IOSTANDARD = LVCMOS33;}
5 | set_pin_assignment { I_uart_rxd } { LOCATION = M16 ; IOSTANDARD = LVCMOS33; }
6 |
7 | set_pin_assignment { O_hdmi_tx_p[0] } { LOCATION = V13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
8 | set_pin_assignment { O_hdmi_tx_p[1] } { LOCATION = Y12; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
9 | set_pin_assignment { O_hdmi_tx_p[2] } { LOCATION = T13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
10 | set_pin_assignment { O_hdmi_clk_p } { LOCATION = V17; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
11 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/constraints_source/timing.sdc:
--------------------------------------------------------------------------------
1 | create_clock -name {sys_clk_25m} -period 40.000 -waveform {0.000 20.000} [get_ports {I_sys_clk}]
2 | derive_clocks
3 | set_clock_groups -asynchronous -group [get_clocks {sys_clk_25m}] -group [get_clocks {u_pll/pll_inst.clkc[0]}] -group [get_clocks {u_uifdma_axi_ddr/u_ddr_phy/dfi_clk}] -group [get_clocks {u_pll/pll_inst.clkc[1]}]
4 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/down_samping/down_samping_2x2.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:33:13
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:33:33
6 | */
7 |
8 |
9 | module down_samping_2x2#(
10 | parameter [13:0] H_SIZE = 1920,
11 | parameter [13:0] V_SIZE = 1080
12 | )
13 | (
14 | input wire I_clk,
15 | input wire I_rst_n,
16 |
17 | input wire I_rgb_vs,
18 | input wire I_rgb_de,
19 | input wire [31:0] I_rgb_data,
20 |
21 | output reg O_rgb_vs,
22 | output reg O_rgb_de,
23 | output reg [31:0] O_rgb_data
24 |
25 | );
26 |
27 | reg [11:0] col_count, row_count;
28 |
29 |
30 | wire vs_up_edge;
31 |
32 | assign vs_up_edge = I_rgb_vs &(~O_rgb_vs) ;
33 |
34 | always @(posedge I_clk or negedge I_rst_n) begin
35 | if (!I_rst_n) begin
36 | col_count <= 0;
37 | end else if (vs_up_edge) begin
38 | col_count <= 0;
39 | end else if (I_rgb_de) begin
40 | if (col_count == (H_SIZE- 1)) begin
41 | col_count <= 0;
42 | end else begin
43 | col_count <= col_count + 1;
44 | end
45 | end else begin
46 | col_count<=col_count;
47 | end
48 | end
49 |
50 | always @(posedge I_clk or negedge I_rst_n) begin
51 | if (!I_rst_n) begin
52 | row_count <= 0;
53 | end else if (vs_up_edge) begin
54 | row_count <= 0;
55 | end else if (I_rgb_de) begin
56 | if (row_count == (V_SIZE - 1) && col_count == (H_SIZE - 1)) begin
57 | row_count <= 0;
58 | end else if (col_count == (H_SIZE- 1)) begin
59 | row_count <= row_count + 1;
60 | end
61 | end else begin
62 | row_count<=row_count;
63 | end
64 | end
65 |
66 |
67 | reg sample_select;
68 | // wire sample_select;
69 |
70 | // assign sample_select = (col_count % 2 == 0) && (row_count % 2 == 0);
71 |
72 | always @(*) begin
73 | if(!I_rst_n) begin
74 | sample_select<=1'b0;
75 | end else begin
76 | sample_select <= (col_count % 2 == 0) && (row_count % 2 == 0);
77 | end
78 | end
79 |
80 | always @(posedge I_clk or negedge I_rst_n) begin
81 | if (!I_rst_n) begin
82 | O_rgb_vs <= 0;
83 | end else begin
84 | O_rgb_vs<=I_rgb_vs;
85 | end
86 | end
87 |
88 | always @(posedge I_clk or negedge I_rst_n) begin
89 | if (!I_rst_n) begin
90 | O_rgb_de <= 0;
91 | end else if(I_rgb_de) begin
92 | O_rgb_de<=sample_select;
93 | end else begin
94 | O_rgb_de<=0;
95 | end
96 | end
97 |
98 | always @(posedge I_clk or negedge I_rst_n) begin
99 | if (!I_rst_n) begin
100 | O_rgb_data <= 'd0;
101 | end else if(sample_select) begin
102 | O_rgb_data<=I_rgb_data;
103 | end
104 | end
105 |
106 |
107 |
108 |
109 |
110 | endmodule //video_samping
111 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_0.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_0.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_1.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_1.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_2.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_3.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/tpg/uitpg_3.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/command_parsing.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-12 19:11:31
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-12 19:11:31
6 | */
7 |
8 | module command_parsing(
9 | input wire clk,
10 | input wire rst_n,
11 | input wire I_command_flag,
12 | input wire [3:0] I_ctrl_command ,
13 | input wire [3:0] I_value_command,
14 |
15 | output reg O_video_move_en
16 | );
17 |
18 |
19 | always @(posedge clk or negedge rst_n) begin
20 | if(!rst_n) begin
21 | O_video_move_en <= 'd0;
22 | end
23 | else if((I_ctrl_command == 4'b0000) && (I_command_flag == 1'b1)) begin //视频移动命令: 00 复位,回到初始位置 01 移动使能
24 | O_video_move_en <= I_value_command[0];
25 | end
26 | end
27 |
28 |
29 |
30 |
31 | endmodule //command_parsing
32 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/uart_trans.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-12 19:09:02
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-12 19:11:11
6 | */
7 |
8 | module uart_trans(
9 | input I_sysclk,//系统时钟输入
10 | input I_uart_rx,//uart rx接收信号
11 | output O_uart_tx, //uart tx发送信号
12 | output wire O_video_move_en
13 | );
14 |
15 |
16 | localparam SYSCLKHZ = 25_000_000; //系统输入时钟
17 |
18 | reg [11:0] rstn_cnt = 0;//上电后延迟复位
19 | wire uart_rstn_i;//内部复位信号
20 | wire uart_wreq,uart_rvalid;
21 | wire [7:0]uart_wdata,uart_rdata;
22 |
23 | assign uart_wreq = uart_rvalid;//用uart rx接收数据有效的uart_rvalid信号,控制uart发送模块的发送请求
24 | assign uart_wdata = uart_rdata; //接收的数据给发送模块发送
25 | assign uart_rstn_i = rstn_cnt[11];//延迟复位设计,用计数器的高bit控制复位
26 |
27 | //同步计数器实现复位
28 | always @(posedge I_sysclk)begin
29 | if(rstn_cnt[11] == 1'b0)
30 | rstn_cnt <= rstn_cnt + 1'b1;
31 | else
32 | rstn_cnt <= rstn_cnt;
33 | end
34 |
35 |
36 |
37 | reg [3:0] reg_ctrl_command;
38 | reg [3:0] reg_value_command;
39 |
40 | reg command_out_flag;
41 |
42 | // 延迟一个周期
43 | always @(posedge I_sysclk or negedge uart_rstn_i) begin
44 | if(!uart_rstn_i) begin
45 | command_out_flag <= 'b0;
46 | end
47 | else begin
48 | command_out_flag <= uart_rvalid;
49 | end
50 | end
51 |
52 | // 控制信号只有效一个时钟周期
53 | always @(posedge I_sysclk or negedge uart_rstn_i) begin
54 | if(!uart_rstn_i) begin
55 | reg_ctrl_command <= 'b0;
56 | reg_value_command <= 'b0;
57 | end
58 | else if(uart_rvalid) begin
59 | reg_ctrl_command <= uart_rdata[7:4];
60 | reg_value_command <= uart_rdata[3:0];
61 | end
62 | else begin
63 | reg_ctrl_command <= reg_ctrl_command;
64 | reg_value_command <= reg_value_command;
65 | end
66 | end
67 |
68 |
69 | command_parsing u_command_parsing(
70 | .clk ( I_sysclk ),
71 | .rst_n ( uart_rstn_i ),
72 | .I_command_flag ( command_out_flag ),
73 | .I_ctrl_command ( reg_ctrl_command ),
74 | .I_value_command ( reg_value_command ),
75 | .O_video_move_en ( O_video_move_en )
76 | );
77 |
78 |
79 | //例化uart 发送模块
80 | uiuart_tx#
81 | (
82 | .BAUD_DIV(SYSCLKHZ/115200-1)
83 | )
84 | uart_tx_u
85 | (
86 | .I_clk(I_sysclk),//系统时钟输入
87 | .I_uart_rstn(uart_rstn_i), //系统复位
88 | .I_uart_wreq(uart_wreq), //uart发送驱动的写请求信号,高电平有效
89 | .I_uart_wdata(uart_wdata), //uart发送驱动的写数据
90 | .O_uart_wbusy(),//uart 发送驱动的忙标志
91 | .O_uart_tx(O_uart_tx)//uart 串行数据发送
92 | );
93 |
94 | //例化uart 接收
95 | uiuart_rx#
96 | (
97 | .BAUD_DIV(SYSCLKHZ/115200-1)
98 | )
99 | uiuart_rx_u
100 | (
101 | .I_clk(I_sysclk), //系统时钟输入
102 | .I_uart_rstn(uart_rstn_i),//系统复位
103 | .I_uart_rx(I_uart_rx), //uart 串行数据接收
104 | .O_uart_rdata(uart_rdata), //uart 接收数据
105 | .O_uart_rvalid(uart_rvalid)//uart 接收数据有效,当O_uart_rvalid =1'b1 O_uart_rdata输出的数据有效
106 | );
107 |
108 | endmodule
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/uiuart_rx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/uiuart_rx.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/uiuart_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uart/uiuart_tx.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdma/uiFDMA.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdma/uiFDMA.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdma/uifdma_axi_ddr.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdma/uifdma_axi_ddr.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/fs_cap.v:
--------------------------------------------------------------------------------
1 | `timescale 1ns / 1ps
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop: https://milianke.taobao.com
9 | *Create Date: 2022/09/25
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 3.1
20 | *Signal description
21 | *1) _i input
22 | *2) _o output
23 | *3) _n activ low
24 | *4) _dg debug signal
25 | *5) _r delay or register
26 | *6) _s state mechine
27 | *********************************************************************/
28 |
29 |
30 | module fs_cap#(
31 | parameter integer VIDEO_ENABLE = 1
32 | )
33 | (
34 | input I_clk,
35 | input I_rstn,
36 | input I_vs,
37 | output reg O_fs_cap
38 | );
39 |
40 | //----CH0_CNT_FS�źŵ�ƽ���� ʵ�ʾ��Dz���VS�ź�----------------
41 | reg[4:0]CNT_FS = 6'b0;
42 | reg[4:0]CNT_FS_n = 6'b0;
43 | reg FS = 1'b0;
44 | (* ASYNC_REG = "TRUE" *) reg vs_i_r1;
45 | (* ASYNC_REG = "TRUE" *) reg vs_i_r2;
46 | (* ASYNC_REG = "TRUE" *) reg vs_i_r3;
47 | (* ASYNC_REG = "TRUE" *) reg vs_i_r4;
48 | //----ͬ�����ε�·��֮ǰ����û�����ε�·�������Dzɼ�vs����-----
49 | always@(posedge I_clk) begin
50 | vs_i_r1 <= I_vs;
51 | vs_i_r2 <= vs_i_r1;
52 | vs_i_r3 <= vs_i_r2;
53 | vs_i_r4 <= vs_i_r3;
54 | end
55 |
56 | always@(posedge I_clk) begin
57 | if(!I_rstn)begin
58 | O_fs_cap <= 1'd0;
59 | end
60 | else if(VIDEO_ENABLE == 1)begin
61 | if({vs_i_r4,vs_i_r3} == 2'b01)begin
62 | O_fs_cap <= 1'b1;
63 | end
64 | else begin
65 | O_fs_cap <= 1'b0;
66 | end
67 | end
68 | else begin
69 | O_fs_cap <= vs_i_r4;
70 | end
71 | end
72 |
73 | endmodule
74 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 253
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 2048
11 | 32
12 | Enable
13 | 256
14 | 256
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | rfifo
22 |
23 |
24 | rfifo.v
25 | rfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/uidbuf.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/uidbuf.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 2045
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 256
11 | 256
12 | Enable
13 | 2048
14 | 32
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | wfifo
22 |
23 |
24 | wfifo.v
25 | wfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/uisetvbuf/uisetvbuf.v:
--------------------------------------------------------------------------------
1 |
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop1: https://milianke.taobao.com
9 | *Create Date: 2023/03/23
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 1.1
20 | *Signal description
21 | *1) I_ input
22 | *2) O_ output
23 | *3) IO_ input output
24 | *3) S_ system internal signal
25 | *3) _n activ low
26 | *4) _dg debug signal
27 | *5) _r delay or register
28 | *6) _s state mechine
29 | *********************************************************************/
30 | `timescale 1ns / 1ps
31 |
32 | module uisetvbuf#(
33 | parameter integer BUF_DELAY = 1,
34 | parameter integer BUF_LENTH = 3
35 | )
36 | (
37 |
38 | input [7 :0] I_bufn,
39 | output [7 :0] O_bufn
40 | );
41 |
42 |
43 |
44 | assign O_bufn = I_bufn < BUF_DELAY? (BUF_LENTH - BUF_DELAY + I_bufn) : (I_bufn - BUF_DELAY) ;
45 |
46 |
47 | endmodule
48 |
49 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/vtc/uivtc.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/vtc/uivtc.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/vtc/uivtc_video_move.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/vtc/uivtc_video_move.v
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/width_conversion/rd_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:20
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:20
6 | */
7 |
8 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
9 | module rd_width_convert(
10 | input wire [15:0] I_rd_data,
11 |
12 | output wire [31:0] O_rd_data
13 | );
14 |
15 |
16 | assign O_rd_data ={8'd0,I_rd_data[15:11], 3'd0, I_rd_data[10:5], 2'd0,I_rd_data[4:0], 3'd0} ;
17 |
18 |
19 |
20 | endmodule
21 |
22 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/02_four_channel_viideo_splicer_move/user_source/hdl_source/width_conversion/wr_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:27
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:27
6 | */
7 |
8 |
9 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
10 | module wr_width_convert(
11 | input wire [31:0] I_wr_data,
12 |
13 | output wire [15:0] O_wr_data
14 | );
15 |
16 | assign O_wr_data = {I_wr_data[23:19],I_wr_data[15:10],I_wr_data[7:3]};
17 |
18 | endmodule
19 |
20 |
--------------------------------------------------------------------------------
/01_四路视频拼接+视频移动/README.md:
--------------------------------------------------------------------------------
1 | 四分屏显示+分屏时视频自动移动可以分成两个部分
2 |
3 | 四路视频源的拼接工程文件见01_four_channel_viideo_splicer文件夹
4 |
5 | 四路视频拼接+视频移动见02_four_channel_viideo_splicer_move文件夹
6 |
7 | 移植注意事项
8 |
9 | 1、 在本工程中,为了减少ERAM资源的使用,我们将图像像素点在DDR3中的存储和读取格式设置为RGB565格式,其中每个像素点占用16bit,并将DDR3的数据位宽设置为16bit。由于DDR3的突发传输长度固定为8,每次突发传输8次16bit数据,即总共传输128bit。因此,在进行DDR3存取时,FIFO的读写位宽可以设置为16bit和128bit。与此不同,若将图像像素点的存储格式设置为RGB888格式,每个像素点将占用24bit,并将DDR3的数据位宽设置为32bit。在这种情况下,进行存取时,FIFO的读写位宽将为32bit和256bit,这样会导致ERAM资源消耗的加倍。
10 |
11 | 2、本工程把四路视频源拼接模块输入的视频分辨率为1280×720,如果要改为1920×1080,需要更改
12 | down_samping_2x2、uidbuf、uivtc模块的参数。
13 |
14 | 3、使用串口命令发送16进制 00 视频不移动,发送16进制01 视频开始移动。波特率为115200。
15 |
16 | 关于四路视频源拼接方案实现讲解,博客地址如下:[FPGA实现四分屏显示+分屏时视频自动移动(一)](https://blog.csdn.net/weixin_53015183/article/details/144307736?spm=1001.2014.3001.5502)
17 |
18 | 关于四路视频拼接+视频移动实现讲解,博客地址如下:[国产安路FPGA实现多路视频拼接,四分屏显示+分屏时视频自动移动(二)](https://blog.csdn.net/weixin_53015183/article/details/144431849?spm=1001.2014.3001.5501)
19 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/README.md:
--------------------------------------------------------------------------------
1 | 移植注意事项
2 |
3 | 1、 在本工程中,为了减少ERAM资源的使用,我们将图像像素点在DDR3中的存储和读取格式设置为RGB565格式,其中每个像素点占用16bit,并将DDR3的数据位宽设置为16bit。由于DDR3的突发传输长度固定为8,每次突发传输8次16bit数据,即总共传输128bit。因此,在进行DDR3存取时,FIFO的读写位宽可以设置为16bit和128bit。与此不同,若将图像像素点的存储格式设置为RGB888格式,每个像素点将占用24bit,并将DDR3的数据位宽设置为32bit。在这种情况下,进行存取时,FIFO的读写位宽将为32bit和256bit,这样会导致ERAM资源消耗的加倍。
4 |
5 | 2、本工程四路视频源输入的视频分辨率为1280×720
6 |
7 | **3、使用串口命令发送16进制 00 视频不移动,发送16进制01 视频开始移动。10 分屏显示 11 Video0全屏 12 video1全屏 13 video2全屏 14 video3全屏,波特率为115200。**
8 |
9 |
10 | 关于四分屏显示与全屏自由切换实现讲解,博客地址如下:[FPGA实现四分屏显示与全屏自由切换](https://blog.csdn.net/weixin_53015183/article/details/144698331?spm=1001.2014.3001.5501)
11 |
12 |
13 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/ddr_ip.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
18 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
19 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
20 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
21 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
24 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
25 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
34 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
35 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
36 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
37 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
38 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
39 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
40 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
41 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
46 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
47 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
49 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_hard_controller_0} {LOCATION = X65Y40Z0}
50 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_1$ph1_ddr_4lanes} {LOCATION = X81Y40Z0}
51 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_2$ph1_ddr_4lanes} {LOCATION = X81Y0Z0}
52 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll0/pll_inst} { LOCATION = X81Y39Z0}
53 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll1/pll_inst} { LOCATION = X81Y0Z0}
54 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/ddr_ip.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PH1_LOGIC_DDR_SDRAM
5 | 3.0
6 | PH1A90SBG484
7 | false
8 | ddr_ip
9 | DDR3
10 | MC and Standard PHY
11 | 1
12 | 2-1
13 | ENABLE
14 | ENABLE
15 | 4
16 | 533.000000
17 | MHz
18 | 25.000000
19 | MHz
20 | Bank31
21 | false
22 | 4:1
23 | false
24 | false
25 | false
26 | false
27 | 100.000000
28 | 100.000000
29 | 100.000000
30 | 100.000000
31 | MHz
32 | MHz
33 | MHz
34 | MHz
35 | 100.000000
36 | 100.000000
37 | 100.000000
38 | 100.000000
39 | MT41J128M16JT-125
40 | 1.5V
41 | 16
42 | false
43 | true
44 | Row_Column_Bank
45 | Normal
46 | Sequential
47 | RZQ/6
48 | RZQ/4
49 | Enable
50 | DISABLE
51 | DISABLE
52 | DISABLE
53 | ENABLE
54 | DISABLE
55 | ENABLE
56 | Pin
57 | L1,M3,K1,N2,K2,N3,K3,L3,R2,P1,U1,R3,T1,P2,R4,R1,M1,M2,N4,M5,L5,P4,Y9,W9,R7,AB6,U8,U6,W11,AA5,AA6,AB7,V9,V8,W6,AA11,U7,Y11,AA8,U12,AB8,AB10,AA10,V10,U10,Y6,AB11,T8
58 | None
59 |
60 |
61 | ddr_ip.adc
62 | ddr_ip.v
63 | ddr_ip.sdc
64 |
65 |
66 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/ddr_ip_1.txt:
--------------------------------------------------------------------------------
1 | 00000042
2 | 00000000
3 | 8000042a
4 | 00000010
5 | 00000000
6 | 00000000
7 | 00000000
8 | 00000000
9 | 00000000
10 | 00000000
11 | ff55f0ff
12 | ffffff54
13 | ffff89ab
14 | ffffffff
15 | ffffffff
16 | ffffffff
17 | 05_08_0d_09
18 | 0a_06_04_07
19 | 00_01_00_02
20 | 0c_0b_01_00
21 | 00_00_00_00
22 | 02_07_08_0d
23 | 09_05_0a_06
24 | 00_01_00_04
25 | 0c_0b_01_00
26 | 00_00_00_00
27 | 00000000
28 | 00000000
29 | 00000000
30 | 00000000
31 | 00000000
32 | 00000000
33 | 00000000
34 | 00000000
35 | 00000000
36 | 00000000
37 | 00000000
38 | 00000000
39 | 00000000
40 | 00000000
41 | 00000000
42 | 00000000
43 | 00000000
44 | 00000000
45 | 00000000
46 | 00000000
47 | 00000000
48 | 00000000
49 | 00000000
50 | 00000000
51 | 00000000
52 | 00000000
53 | 00000000
54 | 00000000
55 | 00000000
56 | 00000000
57 | 00000000
58 | 00000000
59 | 00000000
60 | 00000000
61 | 00000000
62 | 00000000
63 | 00000000
64 | 00000000
65 | 00000830
66 | 00000004
67 | 00000008
68 | 00000000
69 | 00000000
70 | 00000000
71 | 00000000
72 | 00000000
73 | 00000000
74 | 06140704
75 | 281b0004
76 | 0003005b
77 | 82000000
78 | 00560504
79 | 001b0704
80 | 00000000
81 | 030b0200
82 | bb5d9999
83 | 030b0200
84 | bb5d9999
85 | 030b0200
86 | bb5d9999
87 | 030b0200
88 | bb5d9999
89 | 030b0200
90 | bb5d9999
91 | 030b0200
92 | bb5d9999
93 | 030b0200
94 | bb5d9999
95 | 030b0200
96 | bb5d9999
97 | 030b0200
98 | bb5d9999
99 | 00000000
100 | 00000000
101 | 00000000
102 | 00000000
103 | 00000000
104 | 00000000
105 | 00000000
106 | 00000000
107 | 00000000
108 | 00000000
109 | 00000000
110 | 00000000
111 | 00000000
112 | 00000000
113 | 00000000
114 | 00000000
115 | 00000000
116 | 00000000
117 | 00000000
118 | 00000000
119 | 00000000
120 | 00000000
121 | 00000000
122 | 00000000
123 | 00000000
124 | 00000000
125 | 00000000
126 | 00000000
127 | 00000000
128 | 00000000
129 | 00000000
130 | 00000000
131 | 00000000
132 | 00000000
133 | 00000000
134 | 00000000
135 | 00000000
136 | 00000000
137 | 00000000
138 | 00000000
139 | 00000000
140 | 00000000
141 | 00000000
142 | 00000000
143 | 00000000
144 | 00000000
145 | 00000000
146 | 00000000
147 | 00000000
148 | 00000000
149 | 00000000
150 | 00000000
151 | 00000000
152 | 00000000
153 | 00000000
154 | 00000000
155 | 00000000
156 | 00000000
157 | 00000000
158 | 00000000
159 | 00000000
160 | 00000000
161 | 00000000
162 | 00000000
163 | 00000000
164 | 00000000
165 | 00000000
166 | 00000000
167 | 00000000
168 | 00000000
169 | 00000000
170 | 00000000
171 | 00000000
172 | 00000000
173 | 00000000
174 | 00000000
175 | 00000000
176 | 00000000
177 | 00000000
178 | 00000000
179 | 00000000
180 | 00000000
181 | 00000000
182 | 00000000
183 | 00000000
184 | 00000000
185 | 00000000
186 | 00000000
187 | 00000000
188 | 00000000
189 | 00000000
190 | 00000000
191 | 00000000
192 | 00000000
193 | 00000000
194 | 00000000
195 | 00000000
196 | 00000000
197 | 00000000
198 | 00000000
199 | 00000000
200 | 00000000
201 | 00000000
202 | 00000000
203 | 00000000
204 | 00000000
205 | 00000000
206 | 00000000
207 | 00000000
208 | 00000000
209 | 00000000
210 | 00000000
211 | 00000000
212 | 00000000
213 | 00000000
214 | 00000000
215 | 00000000
216 | 00000000
217 | 00000000
218 | 00000000
219 | 00000000
220 | 00000000
221 | 00000000
222 | 00000000
223 | 00000000
224 | 00000000
225 | 00000000
226 | 00000000
227 | 00000000
228 | 00000000
229 | 00000000
230 | 00000000
231 | 00000000
232 | 00000000
233 | 00000000
234 | 00000000
235 | 00000000
236 | 00000000
237 | 00000000
238 | 00000000
239 | 00000000
240 | 00000000
241 | 00000000
242 | 00000000
243 | 00000000
244 | 00000000
245 | 00000000
246 | 00000000
247 | 00000000
248 | 00000000
249 | 00000000
250 | 00000000
251 | 00000000
252 | 00000000
253 | 00000000
254 | 00000000
255 | 00000000
256 | 00000000
257 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/pll.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PLL
5 | PH1A90SBG484
6 | true
7 |
8 |
9 | Any
10 | 25.0000000000000000MHz
11 | Normal
12 | CLKC0
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 | DISABLE
17 | DISABLE
18 | DISABLE
19 | ENABLE
20 | ENABLE
21 |
22 |
23 | Medium
24 |
25 |
26 | frequncy_setting
27 | 3
28 | 1
29 |
30 |
31 | 0
32 | 15
33 | 75.0000000000000000MHz
34 | 0.0000000000000000deg
35 | 0.5
36 | false
37 | false
38 | BUFG
39 |
40 |
41 | 1
42 | 3
43 | 375.0000000000000000MHz
44 | 0.0000000000000000deg
45 | 0.5
46 | false
47 | false
48 | NONE
49 |
50 |
51 |
52 |
53 | pll.vhd
54 | pll.v
55 |
56 |
57 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/pll.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2024 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.v
8 | ** Date : 2024 12 07
9 | ** TD version : 6.0.117864
10 | \************************************************************/
11 |
12 | ///////////////////////////////////////////////////////////////////////////////
13 | // Input frequency: 25.000000MHz
14 | // Clock multiplication factor: 3
15 | // Clock division factor: 1
16 | // Clock information:
17 | // Clock name | Frequency | Phase shift
18 | // C0 | 75.000000 MHZ | 0.0000 DEG
19 | // C1 | 375.000000MHZ | 0.0000 DEG
20 | ///////////////////////////////////////////////////////////////////////////////
21 | `timescale 1 ns / 100 fs
22 |
23 | module pll (
24 | refclk,
25 | reset,
26 | lock,
27 | clk0_out,
28 | clk1_out
29 | );
30 |
31 | input refclk;
32 | input reset;
33 | output lock;
34 | output clk0_out;
35 | output clk1_out;
36 |
37 | wire clk0_buf;
38 |
39 | PH1_LOGIC_BUFG bufg_feedback (
40 | .i(clk0_buf),
41 | .o(clk0_out)
42 | );
43 |
44 | PH1_PHY_PLL #(
45 | .DYN_PHASE_PATH_SEL("DISABLE"),
46 | .DYN_FPHASE_EN("DISABLE"),
47 | .MPHASE_ENABLE("DISABLE"),
48 | .FIN("25.000000"),
49 | .FEEDBK_MODE("NORMAL"),
50 | .FBKCLK("CLKC0_EXT"),
51 | .PLL_FEED_TYPE("EXTERNAL"),
52 | .PLL_USR_RST("ENABLE"),
53 | .GMC_GAIN(1),
54 | .ICP_CUR(11),
55 | .LPF_CAP(2),
56 | .LPF_RES(3),
57 | .REFCLK_DIV(1),
58 | .FBCLK_DIV(3),
59 | .CLKC0_ENABLE("ENABLE"),
60 | .CLKC0_DIV(15),
61 | .CLKC0_CPHASE(14),
62 | .CLKC0_FPHASE(0),
63 | .CLKC0_FPHASE_RSTSEL(0),
64 | .CLKC0_DUTY_INT(8),
65 | .CLKC0_DUTY50("ENABLE"),
66 | .CLKC1_ENABLE("ENABLE"),
67 | .CLKC1_DIV(3),
68 | .CLKC1_CPHASE(2),
69 | .CLKC1_FPHASE(0),
70 | .CLKC1_FPHASE_RSTSEL(0),
71 | .CLKC1_DUTY_INT(2),
72 | .CLKC1_DUTY50("ENABLE"),
73 | .INTPI(1),
74 | .HIGH_SPEED_EN("DISABLE"),
75 | .SSC_ENABLE("DISABLE"),
76 | .SSC_MODE("CENTER"),
77 | .SSC_AMP(0.0000),
78 | .SSC_FREQ_DIV(0),
79 | .SSC_RNGE(0),
80 | .FRAC_ENABLE("DISABLE"),
81 | .DITHER_ENABLE("DISABLE"),
82 | .SDM_FRAC(0)
83 | ) pll_inst (
84 | .refclk(refclk),
85 | .pllreset(reset),
86 | .lock(lock),
87 | .pllpd(1'b0),
88 | .refclk_rst(1'b0),
89 | .wakeup(1'b0),
90 | .psclk(1'b0),
91 | .psdown(1'b0),
92 | .psstep(1'b0),
93 | .psclksel(3'b000),
94 | .psdone(pll_open0),
95 | .cps_step(2'b00),
96 | .drp_clk(1'b0),
97 | .drp_rstn(1'b1),
98 | .drp_sel(1'b0),
99 | .drp_rd(1'b0),
100 | .drp_wr(1'b0),
101 | .drp_addr(8'b00000000),
102 | .drp_wdata(8'b00000000),
103 | .drp_err(pll_open1),
104 | .drp_rdy(pll_open2),
105 | .drp_rdata({pll_open10, pll_open9, pll_open8, pll_open7, pll_open6, pll_open5, pll_open4, pll_open3}),
106 | .fbclk(clk0_out),
107 | .clkc({pll_open23, pll_open21, pll_open19, pll_open17, pll_open15, pll_open13, clk1_out, clk0_buf}),
108 | .clkcb({pll_open24, pll_open22, pll_open20, pll_open18, pll_open16, pll_open14, pll_open12, pll_open11}),
109 | .clkc_en({8'b00000011}),
110 | .clkc_rst(2'b00),
111 | .ext_freq_mod_clk(1'b0),
112 | .ext_freq_mod_en(1'b0),
113 | .ext_freq_mod_val(17'b00000000000000000),
114 | .ssc_en(1'b0)
115 | );
116 |
117 | endmodule
118 |
119 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/al_ip/pll.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2024 Anlogic Inc. -- All Right Reserved.
3 | --------------------------------------------------------------
4 | -- Log : This file is generated by Anlogic IP Generator.
5 | -- File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.vhd
6 | -- Date : 2024 12 07
7 | -- TD version : 6.0.117864
8 | --------------------------------------------------------------
9 |
10 | -------------------------------------------------------------------------------
11 | -- Input frequency: 25.000000MHz
12 | -- Clock multiplication factor: 3
13 | -- Clock division factor: 1
14 | -- Clock information:
15 | -- Clock name | Frequency | Phase shift
16 | -- C0 | 75.000000 MHZ | 0.0000 DEG
17 | -- C1 | 375.000000MHZ | 0.0000 DEG
18 | -------------------------------------------------------------------------------
19 |
20 | LIBRARY ieee;
21 | USE ieee.std_logic_1164.ALL;
22 | USE ieee.numeric_std.ALL;
23 | USE ieee.std_logic_unsigned.ALL;
24 | USE ieee.std_logic_arith.ALL;
25 | LIBRARY ph1_macro;
26 | USE ph1_macro.PH1_COMPONENTS.ALL;
27 |
28 | ENTITY pll IS
29 | PORT (
30 | refclk : IN STD_LOGIC;
31 | reset : IN STD_LOGIC;
32 | lock : OUT STD_LOGIC;
33 | clk0_out : OUT STD_LOGIC;
34 | clk1_out : OUT STD_LOGIC
35 | );
36 | END pll;
37 |
38 | ARCHITECTURE rtl OF pll IS
39 | SIGNAL clk0_buf : STD_LOGIC;
40 | SIGNAL fbk_wire : STD_LOGIC;
41 | SIGNAL clkc_en_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
42 | SIGNAL clkc_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
43 | SIGNAL clkcb_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
44 | BEGIN
45 | bufg_feedback : PH1_LOGIC_BUFG
46 | PORT MAP (
47 | i => clk0_buf,
48 | o => fbk_wire
49 | );
50 |
51 | pll_inst : PH1_PHY_PLL
52 | GENERIC MAP (
53 | DYN_PHASE_PATH_SEL => "DISABLE",
54 | DYN_FPHASE_EN => "DISABLE",
55 | MPHASE_ENABLE => "DISABLE",
56 | FIN => "25.000000",
57 | FEEDBK_MODE => "NORMAL",
58 | FBKCLK => "CLKC0_EXT",
59 | PLL_FEED_TYPE => "EXTERNAL",
60 | PLL_USR_RST => "ENABLE",
61 | GMC_GAIN => 1,
62 | ICP_CUR => 11,
63 | LPF_CAP => 2,
64 | LPF_RES => 3,
65 | REFCLK_DIV => 1,
66 | FBCLK_DIV => 3,
67 | CLKC0_ENABLE => "ENABLE",
68 | CLKC0_DIV => 15,
69 | CLKC0_CPHASE => 14,
70 | CLKC0_FPHASE => 0,
71 | CLKC0_FPHASE_RSTSEL => 0,
72 | CLKC0_DUTY_INT => 8,
73 | CLKC0_DUTY50 => "ENABLE",
74 | CLKC1_ENABLE => "ENABLE",
75 | CLKC1_DIV => 3,
76 | CLKC1_CPHASE => 2,
77 | CLKC1_FPHASE => 0,
78 | CLKC1_FPHASE_RSTSEL => 0,
79 | CLKC1_DUTY_INT => 2,
80 | CLKC1_DUTY50 => "ENABLE",
81 | INTPI => 1,
82 | HIGH_SPEED_EN => "DISABLE",
83 | SSC_ENABLE => "DISABLE",
84 | SSC_MODE => "CENTER",
85 | SSC_AMP => 0.0000,
86 | SSC_FREQ_DIV => 0,
87 | SSC_RNGE => 0,
88 | FRAC_ENABLE => "DISABLE",
89 | DITHER_ENABLE => "DISABLE",
90 | SDM_FRAC => 0
91 | )
92 | PORT MAP (
93 | refclk => refclk,
94 | pllreset => reset,
95 | lock => lock,
96 | pllpd => '0',
97 | refclk_rst => '0',
98 | wakeup => '0',
99 | psclk => '0',
100 | psdown => '0',
101 | psstep => '0',
102 | psclksel => b"000",
103 | cps_step => b"00",
104 | drp_clk => '0',
105 | drp_rstn => '1',
106 | drp_sel => '0',
107 | drp_rd => '0',
108 | drp_wr => '0',
109 | drp_addr => b"00000000",
110 | drp_wdata => b"00000000",
111 | fbclk => fbk_wire,
112 | clkc => clkc_wire,
113 | clkcb => clkcb_wire,
114 | clkc_en => clkc_en_wire,
115 | clkc_rst => b"00",
116 | ext_freq_mod_clk => '0',
117 | ext_freq_mod_en => '0',
118 | ext_freq_mod_val => b"00000000000000000",
119 | ssc_en => '0'
120 | );
121 |
122 | clk0_out <= fbk_wire;
123 | clkc_en_wire <= b"00000011";
124 | clk1_out <= clkc_wire(1);
125 | clk0_buf <= clkc_wire(0);
126 |
127 | END rtl;
128 |
129 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/fpga_prj_Runs/best_result/fpga_prj.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/fpga_prj_Runs/best_result/fpga_prj.bit
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/td_project/fpga_prj_Runs/best_result/readMe.txt:
--------------------------------------------------------------------------------
1 | The implemented result of phy_1 is saved as best result.
2 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/constraints_source/pin.adc:
--------------------------------------------------------------------------------
1 | set_pin_assignment { I_rst_n } { LOCATION = K4; IOSTANDARD = LVCMOS15; PULLTYPE = PULLUP; }
2 | set_pin_assignment { I_sys_clk } { LOCATION = N18; IOSTANDARD = LVCMOS33; PULLTYPE = PULLUP; }
3 |
4 | set_pin_assignment { O_uart_txd } { LOCATION = R22 ; IOSTANDARD = LVCMOS33;}
5 | set_pin_assignment { I_uart_rxd } { LOCATION = M16 ; IOSTANDARD = LVCMOS33; }
6 |
7 | set_pin_assignment { O_hdmi_tx_p[0] } { LOCATION = V13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
8 | set_pin_assignment { O_hdmi_tx_p[1] } { LOCATION = Y12; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
9 | set_pin_assignment { O_hdmi_tx_p[2] } { LOCATION = T13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
10 | set_pin_assignment { O_hdmi_clk_p } { LOCATION = V17; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
11 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/constraints_source/timing.sdc:
--------------------------------------------------------------------------------
1 | create_clock -name {sys_clk_25m} -period 40.000 -waveform {0.000 20.000} [get_ports {I_sys_clk}]
2 | derive_pll_clocks
3 | set_clock_groups -asynchronous -group [get_clocks {sys_clk_25m}] -group [get_clocks {u_pll/pll_inst.clkc[0]}] -group [get_clocks {u_pll/pll_inst.clkc[1]}]
4 | set_clock_groups -asynchronous -group [get_clocks {sys_clk_25m}] -group [get_clocks {u_uifdma_axi_ddr/u_ddr_phy/dfi_clk}]
5 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/down_samping/down_samping_2x2.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:33:13
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:33:33
6 | */
7 |
8 |
9 | module down_samping_2x2#(
10 | parameter [13:0] H_SIZE = 1920,
11 | parameter [13:0] V_SIZE = 1080
12 | )
13 | (
14 | input wire I_clk,
15 | input wire I_rst_n,
16 |
17 | input wire I_rgb_vs,
18 | input wire I_rgb_de,
19 | input wire [31:0] I_rgb_data,
20 |
21 | output reg O_rgb_vs,
22 | output reg O_rgb_de,
23 | output reg [31:0] O_rgb_data
24 |
25 | );
26 |
27 | reg [11:0] col_count, row_count;
28 |
29 |
30 | wire vs_up_edge;
31 |
32 | assign vs_up_edge = I_rgb_vs &(~O_rgb_vs) ;
33 |
34 | always @(posedge I_clk or negedge I_rst_n) begin
35 | if (!I_rst_n) begin
36 | col_count <= 0;
37 | end else if (vs_up_edge) begin
38 | col_count <= 0;
39 | end else if (I_rgb_de) begin
40 | if (col_count == (H_SIZE- 1)) begin
41 | col_count <= 0;
42 | end else begin
43 | col_count <= col_count + 1;
44 | end
45 | end else begin
46 | col_count<=col_count;
47 | end
48 | end
49 |
50 | always @(posedge I_clk or negedge I_rst_n) begin
51 | if (!I_rst_n) begin
52 | row_count <= 0;
53 | end else if (vs_up_edge) begin
54 | row_count <= 0;
55 | end else if (I_rgb_de) begin
56 | if (row_count == (V_SIZE - 1) && col_count == (H_SIZE - 1)) begin
57 | row_count <= 0;
58 | end else if (col_count == (H_SIZE- 1)) begin
59 | row_count <= row_count + 1;
60 | end
61 | end else begin
62 | row_count<=row_count;
63 | end
64 | end
65 |
66 |
67 | reg sample_select;
68 | // wire sample_select;
69 |
70 | // assign sample_select = (col_count % 2 == 0) && (row_count % 2 == 0);
71 |
72 | always @(*) begin
73 | if(!I_rst_n) begin
74 | sample_select<=1'b0;
75 | end else begin
76 | sample_select <= (col_count % 2 == 0) && (row_count % 2 == 0);
77 | end
78 | end
79 |
80 | always @(posedge I_clk or negedge I_rst_n) begin
81 | if (!I_rst_n) begin
82 | O_rgb_vs <= 0;
83 | end else begin
84 | O_rgb_vs<=I_rgb_vs;
85 | end
86 | end
87 |
88 | always @(posedge I_clk or negedge I_rst_n) begin
89 | if (!I_rst_n) begin
90 | O_rgb_de <= 0;
91 | end else if(I_rgb_de) begin
92 | O_rgb_de<=sample_select;
93 | end else begin
94 | O_rgb_de<=0;
95 | end
96 | end
97 |
98 | always @(posedge I_clk or negedge I_rst_n) begin
99 | if (!I_rst_n) begin
100 | O_rgb_data <= 'd0;
101 | end else if(sample_select) begin
102 | O_rgb_data<=I_rgb_data;
103 | end
104 | end
105 |
106 |
107 |
108 |
109 |
110 | endmodule //video_samping
111 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_0.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_0.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_1.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_1.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_2.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_3.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/tpg/uitpg_3.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/command_parsing.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-12 19:11:31
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-12 19:11:31
6 | */
7 |
8 | module command_parsing(
9 | input wire clk,
10 | input wire rst_n,
11 | input wire I_command_flag,
12 | input wire [3:0] I_ctrl_command ,
13 | input wire [3:0] I_value_command,
14 |
15 | output reg O_video_move_en,
16 | output reg O_split_full_flag,//0 分屏 1 全屏
17 | output reg [3:0] O_screen_switch
18 | );
19 |
20 |
21 | always @(posedge clk or negedge rst_n) begin
22 | if(!rst_n) begin
23 | O_video_move_en <= 'd0;
24 | O_split_full_flag <= 'd0;
25 | O_screen_switch <= 'd0;
26 | end
27 | else if((I_ctrl_command == 4'b0000) && (I_command_flag == 1'b1)) begin //视频移动命令: 00 复位,回到初始位置 01 移动使能
28 | O_video_move_en <= I_value_command[0];
29 | end else if((I_ctrl_command == 4'b0001) && (I_command_flag == 1'b1)) begin //控制分屏/全屏切换: 10 分屏显示 11 Video0全屏 12 video1全屏 13 video2全屏 14 video3全屏
30 | if (I_value_command == 4'd0) begin
31 | O_split_full_flag <= 0;
32 | end else if (I_value_command == 4'd1) begin
33 | O_split_full_flag <= 1;
34 | O_screen_switch <= 4'b0001;
35 | end else if (I_value_command == 4'd2) begin
36 | O_split_full_flag <= 1;
37 | O_screen_switch <= 4'b0010;
38 | end else if (I_value_command == 4'd3) begin
39 | O_split_full_flag <= 1;
40 | O_screen_switch <= 4'b0100;
41 | end else if (I_value_command == 4'd4) begin
42 | O_split_full_flag <= 1;
43 | O_screen_switch <= 4'b1000;
44 | end
45 | end
46 | end
47 |
48 |
49 |
50 |
51 | endmodule //command_parsing
52 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/uart_trans.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-12 19:09:02
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-12 19:11:11
6 | */
7 |
8 | module uart_trans(
9 | input I_sysclk,//系统时钟输入
10 | input I_uart_rx,//uart rx接收信号
11 | output O_uart_tx, //uart tx发送信号
12 |
13 | output wire O_video_move_en,
14 | output wire O_split_full_flag,//0 分屏 1 全屏
15 | output wire [3:0] O_screen_switch
16 | );
17 |
18 |
19 | localparam SYSCLKHZ = 25_000_000; //系统输入时钟
20 |
21 | reg [11:0] rstn_cnt = 0;//上电后延迟复位
22 | wire uart_rstn_i;//内部复位信号
23 | wire uart_wreq,uart_rvalid;
24 | wire [7:0]uart_wdata,uart_rdata;
25 |
26 | assign uart_wreq = uart_rvalid;//用uart rx接收数据有效的uart_rvalid信号,控制uart发送模块的发送请求
27 | assign uart_wdata = uart_rdata; //接收的数据给发送模块发送
28 | assign uart_rstn_i = rstn_cnt[11];//延迟复位设计,用计数器的高bit控制复位
29 |
30 | //同步计数器实现复位
31 | always @(posedge I_sysclk)begin
32 | if(rstn_cnt[11] == 1'b0)
33 | rstn_cnt <= rstn_cnt + 1'b1;
34 | else
35 | rstn_cnt <= rstn_cnt;
36 | end
37 |
38 |
39 |
40 | reg [3:0] reg_ctrl_command;
41 | reg [3:0] reg_value_command;
42 |
43 | reg command_out_flag;
44 |
45 | // 延迟一个周期
46 | always @(posedge I_sysclk or negedge uart_rstn_i) begin
47 | if(!uart_rstn_i) begin
48 | command_out_flag <= 'b0;
49 | end
50 | else begin
51 | command_out_flag <= uart_rvalid;
52 | end
53 | end
54 |
55 | // 控制信号只有效一个时钟周期
56 | always @(posedge I_sysclk or negedge uart_rstn_i) begin
57 | if(!uart_rstn_i) begin
58 | reg_ctrl_command <= 'b0;
59 | reg_value_command <= 'b0;
60 | end
61 | else if(uart_rvalid) begin
62 | reg_ctrl_command <= uart_rdata[7:4];
63 | reg_value_command <= uart_rdata[3:0];
64 | end
65 | else begin
66 | reg_ctrl_command <= reg_ctrl_command;
67 | reg_value_command <= reg_value_command;
68 | end
69 | end
70 |
71 |
72 | command_parsing u_command_parsing(
73 | .clk ( I_sysclk ),
74 | .rst_n ( uart_rstn_i ),
75 | .I_command_flag ( command_out_flag ),
76 | .I_ctrl_command ( reg_ctrl_command ),
77 | .I_value_command ( reg_value_command ),
78 | .O_video_move_en ( O_video_move_en ),
79 | .O_split_full_flag ( O_split_full_flag ),
80 | .O_screen_switch ( O_screen_switch )
81 | );
82 |
83 |
84 | //例化uart 发送模块
85 | uiuart_tx#
86 | (
87 | .BAUD_DIV(SYSCLKHZ/115200-1)
88 | )
89 | uart_tx_u
90 | (
91 | .I_clk(I_sysclk),//系统时钟输入
92 | .I_uart_rstn(uart_rstn_i), //系统复位
93 | .I_uart_wreq(uart_wreq), //uart发送驱动的写请求信号,高电平有效
94 | .I_uart_wdata(uart_wdata), //uart发送驱动的写数据
95 | .O_uart_wbusy(),//uart 发送驱动的忙标志
96 | .O_uart_tx(O_uart_tx)//uart 串行数据发送
97 | );
98 |
99 | //例化uart 接收
100 | uiuart_rx#
101 | (
102 | .BAUD_DIV(SYSCLKHZ/115200-1)
103 | )
104 | uiuart_rx_u
105 | (
106 | .I_clk(I_sysclk), //系统时钟输入
107 | .I_uart_rstn(uart_rstn_i),//系统复位
108 | .I_uart_rx(I_uart_rx), //uart 串行数据接收
109 | .O_uart_rdata(uart_rdata), //uart 接收数据
110 | .O_uart_rvalid(uart_rvalid)//uart 接收数据有效,当O_uart_rvalid =1'b1 O_uart_rdata输出的数据有效
111 | );
112 |
113 | endmodule
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/uiuart_rx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/uiuart_rx.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/uiuart_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uart/uiuart_tx.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdma/uiFDMA.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdma/uiFDMA.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdma/uifdma_axi_ddr.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdma/uifdma_axi_ddr.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/fs_cap.v:
--------------------------------------------------------------------------------
1 | `timescale 1ns / 1ps
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop: https://milianke.taobao.com
9 | *Create Date: 2022/09/25
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 3.1
20 | *Signal description
21 | *1) _i input
22 | *2) _o output
23 | *3) _n activ low
24 | *4) _dg debug signal
25 | *5) _r delay or register
26 | *6) _s state mechine
27 | *********************************************************************/
28 |
29 |
30 | module fs_cap#(
31 | parameter integer VIDEO_ENABLE = 1
32 | )
33 | (
34 | input I_clk,
35 | input I_rstn,
36 | input I_vs,
37 | output reg O_fs_cap
38 | );
39 |
40 | //----CH0_CNT_FS�źŵ�ƽ���� ʵ�ʾ��Dz���VS�ź�----------------
41 | reg[4:0]CNT_FS = 6'b0;
42 | reg[4:0]CNT_FS_n = 6'b0;
43 | reg FS = 1'b0;
44 | (* ASYNC_REG = "TRUE" *) reg vs_i_r1;
45 | (* ASYNC_REG = "TRUE" *) reg vs_i_r2;
46 | (* ASYNC_REG = "TRUE" *) reg vs_i_r3;
47 | (* ASYNC_REG = "TRUE" *) reg vs_i_r4;
48 | //----ͬ�����ε�·��֮ǰ����û�����ε�·�������Dzɼ�vs����-----
49 | always@(posedge I_clk) begin
50 | vs_i_r1 <= I_vs;
51 | vs_i_r2 <= vs_i_r1;
52 | vs_i_r3 <= vs_i_r2;
53 | vs_i_r4 <= vs_i_r3;
54 | end
55 |
56 | always@(posedge I_clk) begin
57 | if(!I_rstn)begin
58 | O_fs_cap <= 1'd0;
59 | end
60 | else if(VIDEO_ENABLE == 1)begin
61 | if({vs_i_r4,vs_i_r3} == 2'b01)begin
62 | O_fs_cap <= 1'b1;
63 | end
64 | else begin
65 | O_fs_cap <= 1'b0;
66 | end
67 | end
68 | else begin
69 | O_fs_cap <= vs_i_r4;
70 | end
71 | end
72 |
73 | endmodule
74 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 253
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 2048
11 | 32
12 | Enable
13 | 256
14 | 256
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | rfifo
22 |
23 |
24 | rfifo.v
25 | rfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf_only_w.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf_only_w.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf_r_baseaddr_switch.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/uidbuf_r_baseaddr_switch.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 2045
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 256
11 | 256
12 | Enable
13 | 2048
14 | 32
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | wfifo
22 |
23 |
24 | wfifo.v
25 | wfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/uisetvbuf/uisetvbuf.v:
--------------------------------------------------------------------------------
1 |
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop1: https://milianke.taobao.com
9 | *Create Date: 2023/03/23
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 1.1
20 | *Signal description
21 | *1) I_ input
22 | *2) O_ output
23 | *3) IO_ input output
24 | *3) S_ system internal signal
25 | *3) _n activ low
26 | *4) _dg debug signal
27 | *5) _r delay or register
28 | *6) _s state mechine
29 | *********************************************************************/
30 | `timescale 1ns / 1ps
31 |
32 | module uisetvbuf#(
33 | parameter integer BUF_DELAY = 1,
34 | parameter integer BUF_LENTH = 3
35 | )
36 | (
37 |
38 | input [7 :0] I_bufn,
39 | output [7 :0] O_bufn
40 | );
41 |
42 |
43 |
44 | assign O_bufn = I_bufn < BUF_DELAY? (BUF_LENTH - BUF_DELAY + I_bufn) : (I_bufn - BUF_DELAY) ;
45 |
46 |
47 | endmodule
48 |
49 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/vtc/uivtc.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/vtc/uivtc.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/vtc/uivtc_video_move.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/vtc/uivtc_video_move.v
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/width_conversion/rd_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:20
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:20
6 | */
7 |
8 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
9 | module rd_width_convert(
10 | input wire [15:0] I_rd_data,
11 |
12 | output wire [31:0] O_rd_data
13 | );
14 |
15 |
16 | assign O_rd_data ={8'd0,I_rd_data[15:11], 3'd0, I_rd_data[10:5], 2'd0,I_rd_data[4:0], 3'd0} ;
17 |
18 |
19 |
20 | endmodule
21 |
22 |
--------------------------------------------------------------------------------
/02_四分屏显示与全屏自由切换/03_split_screen_full_screen_switch/user_source/hdl_source/width_conversion/wr_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:27
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:27
6 | */
7 |
8 |
9 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
10 | module wr_width_convert(
11 | input wire [31:0] I_wr_data,
12 |
13 | output wire [15:0] O_wr_data
14 | );
15 |
16 | assign O_wr_data = {I_wr_data[23:19],I_wr_data[15:10],I_wr_data[7:3]};
17 |
18 | endmodule
19 |
20 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ddr_ip.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
18 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
19 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
20 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
21 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
24 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
25 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
34 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
35 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
36 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
37 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
38 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
39 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
40 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
41 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
46 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
47 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
49 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_hard_controller_0} {LOCATION = X65Y40Z0}
50 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_1$ph1_ddr_4lanes} {LOCATION = X81Y40Z0}
51 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_ddrphy_standard/u_ddrphy/ddr_phy_4lanes_2$ph1_ddr_4lanes} {LOCATION = X81Y0Z0}
52 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll0/pll_inst} { LOCATION = X81Y39Z0}
53 | set_ipinst_assignment {u_ph1_logic_standard_phy/u_clk/u_pll1/pll_inst} { LOCATION = X81Y0Z0}
54 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ddr_ip.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PH1_LOGIC_DDR_SDRAM
5 | 3.0
6 | PH1A90SBG484
7 | false
8 | ddr_ip
9 | DDR3
10 | MC and Standard PHY
11 | 1
12 | 2-1
13 | ENABLE
14 | ENABLE
15 | 4
16 | 533.000000
17 | MHz
18 | 25.000000
19 | MHz
20 | Bank31
21 | false
22 | 4:1
23 | false
24 | false
25 | false
26 | false
27 | 100.000000
28 | 100.000000
29 | 100.000000
30 | 100.000000
31 | MHz
32 | MHz
33 | MHz
34 | MHz
35 | 100.000000
36 | 100.000000
37 | 100.000000
38 | 100.000000
39 | MT41J128M16JT-125
40 | 1.5V
41 | 16
42 | false
43 | true
44 | Row_Column_Bank
45 | Normal
46 | Sequential
47 | RZQ/6
48 | RZQ/4
49 | Enable
50 | DISABLE
51 | DISABLE
52 | DISABLE
53 | ENABLE
54 | DISABLE
55 | ENABLE
56 | Pin
57 | L1,M3,K1,N2,K2,N3,K3,L3,R2,P1,U1,R3,T1,P2,R4,R1,M1,M2,N4,M5,L5,P4,Y9,W9,R7,AB6,U8,U6,W11,AA5,AA6,AB7,V9,V8,W6,AA11,U7,Y11,AA8,U12,AB8,AB10,AA10,V10,U10,Y6,AB11,T8
58 | None
59 |
60 |
61 | ddr_ip.adc
62 | ddr_ip.v
63 | ddr_ip.sdc
64 |
65 |
66 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ddr_ip_1.txt:
--------------------------------------------------------------------------------
1 | 00000042
2 | 00000000
3 | 8000042a
4 | 00000010
5 | 00000000
6 | 00000000
7 | 00000000
8 | 00000000
9 | 00000000
10 | 00000000
11 | ff55f0ff
12 | ffffff54
13 | ffff89ab
14 | ffffffff
15 | ffffffff
16 | ffffffff
17 | 05_08_0d_09
18 | 0a_06_04_07
19 | 00_01_00_02
20 | 0c_0b_01_00
21 | 00_00_00_00
22 | 02_07_08_0d
23 | 09_05_0a_06
24 | 00_01_00_04
25 | 0c_0b_01_00
26 | 00_00_00_00
27 | 00000000
28 | 00000000
29 | 00000000
30 | 00000000
31 | 00000000
32 | 00000000
33 | 00000000
34 | 00000000
35 | 00000000
36 | 00000000
37 | 00000000
38 | 00000000
39 | 00000000
40 | 00000000
41 | 00000000
42 | 00000000
43 | 00000000
44 | 00000000
45 | 00000000
46 | 00000000
47 | 00000000
48 | 00000000
49 | 00000000
50 | 00000000
51 | 00000000
52 | 00000000
53 | 00000000
54 | 00000000
55 | 00000000
56 | 00000000
57 | 00000000
58 | 00000000
59 | 00000000
60 | 00000000
61 | 00000000
62 | 00000000
63 | 00000000
64 | 00000000
65 | 00000830
66 | 00000004
67 | 00000008
68 | 00000000
69 | 00000000
70 | 00000000
71 | 00000000
72 | 00000000
73 | 00000000
74 | 06140704
75 | 281b0004
76 | 0003005b
77 | 82000000
78 | 00560504
79 | 001b0704
80 | 00000000
81 | 030b0200
82 | bb5d9999
83 | 030b0200
84 | bb5d9999
85 | 030b0200
86 | bb5d9999
87 | 030b0200
88 | bb5d9999
89 | 030b0200
90 | bb5d9999
91 | 030b0200
92 | bb5d9999
93 | 030b0200
94 | bb5d9999
95 | 030b0200
96 | bb5d9999
97 | 030b0200
98 | bb5d9999
99 | 00000000
100 | 00000000
101 | 00000000
102 | 00000000
103 | 00000000
104 | 00000000
105 | 00000000
106 | 00000000
107 | 00000000
108 | 00000000
109 | 00000000
110 | 00000000
111 | 00000000
112 | 00000000
113 | 00000000
114 | 00000000
115 | 00000000
116 | 00000000
117 | 00000000
118 | 00000000
119 | 00000000
120 | 00000000
121 | 00000000
122 | 00000000
123 | 00000000
124 | 00000000
125 | 00000000
126 | 00000000
127 | 00000000
128 | 00000000
129 | 00000000
130 | 00000000
131 | 00000000
132 | 00000000
133 | 00000000
134 | 00000000
135 | 00000000
136 | 00000000
137 | 00000000
138 | 00000000
139 | 00000000
140 | 00000000
141 | 00000000
142 | 00000000
143 | 00000000
144 | 00000000
145 | 00000000
146 | 00000000
147 | 00000000
148 | 00000000
149 | 00000000
150 | 00000000
151 | 00000000
152 | 00000000
153 | 00000000
154 | 00000000
155 | 00000000
156 | 00000000
157 | 00000000
158 | 00000000
159 | 00000000
160 | 00000000
161 | 00000000
162 | 00000000
163 | 00000000
164 | 00000000
165 | 00000000
166 | 00000000
167 | 00000000
168 | 00000000
169 | 00000000
170 | 00000000
171 | 00000000
172 | 00000000
173 | 00000000
174 | 00000000
175 | 00000000
176 | 00000000
177 | 00000000
178 | 00000000
179 | 00000000
180 | 00000000
181 | 00000000
182 | 00000000
183 | 00000000
184 | 00000000
185 | 00000000
186 | 00000000
187 | 00000000
188 | 00000000
189 | 00000000
190 | 00000000
191 | 00000000
192 | 00000000
193 | 00000000
194 | 00000000
195 | 00000000
196 | 00000000
197 | 00000000
198 | 00000000
199 | 00000000
200 | 00000000
201 | 00000000
202 | 00000000
203 | 00000000
204 | 00000000
205 | 00000000
206 | 00000000
207 | 00000000
208 | 00000000
209 | 00000000
210 | 00000000
211 | 00000000
212 | 00000000
213 | 00000000
214 | 00000000
215 | 00000000
216 | 00000000
217 | 00000000
218 | 00000000
219 | 00000000
220 | 00000000
221 | 00000000
222 | 00000000
223 | 00000000
224 | 00000000
225 | 00000000
226 | 00000000
227 | 00000000
228 | 00000000
229 | 00000000
230 | 00000000
231 | 00000000
232 | 00000000
233 | 00000000
234 | 00000000
235 | 00000000
236 | 00000000
237 | 00000000
238 | 00000000
239 | 00000000
240 | 00000000
241 | 00000000
242 | 00000000
243 | 00000000
244 | 00000000
245 | 00000000
246 | 00000000
247 | 00000000
248 | 00000000
249 | 00000000
250 | 00000000
251 | 00000000
252 | 00000000
253 | 00000000
254 | 00000000
255 | 00000000
256 | 00000000
257 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/hdmi_pll.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PLL
5 | PH1A90SBG484
6 | true
7 |
8 |
9 | Any
10 | 75.0000000000000000MHz
11 | Normal
12 | CLKC0
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 | DISABLE
17 | DISABLE
18 | DISABLE
19 | ENABLE
20 | ENABLE
21 |
22 |
23 | Medium
24 |
25 |
26 | frequncy_setting
27 | 1
28 | 1
29 |
30 |
31 | 0
32 | 15
33 | 75.0000000000000000MHz
34 | 0.0000000000000000deg
35 | 0.5
36 | false
37 | false
38 | BUFG
39 |
40 |
41 | 1
42 | 6
43 | 187.5000000000000000MHz
44 | 0.0000000000000000deg
45 | 0.5
46 | false
47 | false
48 | NONE
49 |
50 |
51 | 2
52 | 3
53 | 375.0000000000000000MHz
54 | 90.0000000000000000deg
55 | 0.5
56 | false
57 | false
58 | NONE
59 |
60 |
61 | 3
62 | 15
63 | 75.0000000000000000MHz
64 | 0.0000000000000000deg
65 | 0.5
66 | false
67 | false
68 | NONE
69 |
70 |
71 |
72 |
73 | hdmi_pll.v
74 | hdmi_pll.vhd
75 |
76 |
77 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/hdmi_pll.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2023 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/FPGA_compete/prj/cascade/second_card_rotate/user_source/ip_source/hdmi_pll.v
8 | ** Date : 2024 11 17
9 | ** TD version : 5.6.88061
10 | \************************************************************/
11 |
12 | ///////////////////////////////////////////////////////////////////////////////
13 | // Input frequency: 75.000000MHz
14 | // Clock multiplication factor: 1
15 | // Clock division factor: 1
16 | // Clock information:
17 | // Clock name | Frequency | Phase shift
18 | // C0 | 75.000000 MHZ | 0.0000 DEG
19 | // C1 | 187.500000MHZ | 0.0000 DEG
20 | // C2 | 375.000000MHZ | 90.0000 DEG
21 | // C3 | 75.000000 MHZ | 0.0000 DEG
22 | ///////////////////////////////////////////////////////////////////////////////
23 | `timescale 1 ns / 100 fs
24 |
25 | module hdmi_pll (
26 | refclk,
27 | reset,
28 | lock,
29 | clk0_out,
30 | clk1_out,
31 | clk2_out,
32 | clk3_out
33 | );
34 |
35 | input refclk;
36 | input reset;
37 | output lock;
38 | output clk0_out;
39 | output clk1_out;
40 | output clk2_out;
41 | output clk3_out;
42 |
43 | wire clk0_buf;
44 |
45 | PH1_LOGIC_BUFG bufg_feedback (
46 | .i(clk0_buf),
47 | .o(clk0_out)
48 | );
49 |
50 | PH1_PHY_PLL #(
51 | .DYN_PHASE_PATH_SEL("DISABLE"),
52 | .DYN_FPHASE_EN("DISABLE"),
53 | .MPHASE_ENABLE("ENABLE"),
54 | .FIN("75.000000"),
55 | .FEEDBK_MODE("NORMAL"),
56 | .FBKCLK("CLKC0_EXT"),
57 | .PLL_FEED_TYPE("EXTERNAL"),
58 | .PLL_USR_RST("ENABLE"),
59 | .GMC_GAIN(2),
60 | .ICP_CUR(12),
61 | .LPF_CAP(2),
62 | .LPF_RES(2),
63 | .REFCLK_DIV(1),
64 | .FBCLK_DIV(1),
65 | .CLKC0_ENABLE("ENABLE"),
66 | .CLKC0_DIV(15),
67 | .CLKC0_CPHASE(14),
68 | .CLKC0_FPHASE(0),
69 | .CLKC0_FPHASE_RSTSEL(0),
70 | .CLKC0_DUTY_INT(8),
71 | .CLKC0_DUTY50("ENABLE"),
72 | .CLKC1_ENABLE("ENABLE"),
73 | .CLKC1_DIV(6),
74 | .CLKC1_CPHASE(5),
75 | .CLKC1_FPHASE(0),
76 | .CLKC1_FPHASE_RSTSEL(0),
77 | .CLKC1_DUTY_INT(3),
78 | .CLKC1_DUTY50("ENABLE"),
79 | .CLKC2_ENABLE("ENABLE"),
80 | .CLKC2_DIV(3),
81 | .CLKC2_CPHASE(2),
82 | .CLKC2_FPHASE(6),
83 | .CLKC2_FPHASE_RSTSEL(1),
84 | .CLKC2_DUTY_INT(2),
85 | .CLKC2_DUTY50("ENABLE"),
86 | .CLKC3_ENABLE("ENABLE"),
87 | .CLKC3_DIV(15),
88 | .CLKC3_CPHASE(14),
89 | .CLKC3_FPHASE(0),
90 | .CLKC3_FPHASE_RSTSEL(0),
91 | .CLKC3_DUTY_INT(8),
92 | .CLKC3_DUTY50("ENABLE"),
93 | .INTPI(1),
94 | .HIGH_SPEED_EN("DISABLE"),
95 | .SSC_ENABLE("DISABLE"),
96 | .SSC_MODE("CENTER"),
97 | .SSC_AMP(0.0000),
98 | .SSC_FREQ_DIV(0),
99 | .SSC_RNGE(0),
100 | .FRAC_ENABLE("DISABLE"),
101 | .DITHER_ENABLE("DISABLE"),
102 | .SDM_FRAC(0)
103 | ) pll_inst (
104 | .refclk(refclk),
105 | .pllreset(reset),
106 | .lock(lock),
107 | .pllpd(1'b0),
108 | .refclk_rst(1'b0),
109 | .wakeup(1'b0),
110 | .psclk(1'b0),
111 | .psdown(1'b0),
112 | .psstep(1'b0),
113 | .psclksel(3'b000),
114 | .psdone(open),
115 | .cps_step(2'b00),
116 | .drp_clk(1'b0),
117 | .drp_rstn(1'b1),
118 | .drp_sel(1'b0),
119 | .drp_rd(1'b0),
120 | .drp_wr(1'b0),
121 | .drp_addr(8'b00000000),
122 | .drp_wdata(8'b00000000),
123 | .drp_err(open),
124 | .drp_rdy(open),
125 | .drp_rdata({open, open, open, open, open, open, open, open}),
126 | .fbclk(clk0_out),
127 | .clkc({open, open, open, open, clk3_out, clk2_out, clk1_out, clk0_buf}),
128 | .clkcb({open, open, open, open, open, open, open, open}),
129 | .clkc_en({8'b00001111}),
130 | .clkc_rst(2'b00),
131 | .ext_freq_mod_clk(1'b0),
132 | .ext_freq_mod_en(1'b0),
133 | .ext_freq_mod_val(17'b00000000000000000),
134 | .ssc_en(1'b0)
135 | );
136 |
137 | endmodule
138 |
139 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/hdmi_pll.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2023 Anlogic Inc.
3 | -- All Right Reserved.
4 | --------------------------------------------------------------
5 | -- Log : This file is generated by Anlogic IP Generator.
6 | -- File : C:/HIT/personal_learn/FPGA_compete/prj/cascade/second_card_rotate/user_source/ip_source/hdmi_pll.vhd
7 | -- Date : 2024 11 17
8 | -- TD version : 5.6.88061
9 | --------------------------------------------------------------
10 |
11 | -------------------------------------------------------------------------------
12 | -- Input frequency: 75.000000MHz
13 | -- Clock multiplication factor: 1
14 | -- Clock division factor: 1
15 | -- Clock information:
16 | -- Clock name | Frequency | Phase shift
17 | -- C0 | 75.000000 MHZ | 0.0000 DEG
18 | -- C1 | 187.500000MHZ | 0.0000 DEG
19 | -- C2 | 375.000000MHZ | 90.0000 DEG
20 | -- C3 | 75.000000 MHZ | 0.0000 DEG
21 | -------------------------------------------------------------------------------
22 |
23 | LIBRARY ieee;
24 | USE ieee.std_logic_1164.ALL;
25 | USE ieee.numeric_std.ALL;
26 | USE ieee.std_logic_unsigned.ALL;
27 | USE ieee.std_logic_arith.ALL;
28 | LIBRARY ph1_macro;
29 | USE ph1_macro.PH1_COMPONENTS.ALL;
30 |
31 | ENTITY hdmi_pll IS
32 | PORT (
33 | refclk : IN STD_LOGIC;
34 | reset : IN STD_LOGIC;
35 | lock : OUT STD_LOGIC;
36 | clk0_out : OUT STD_LOGIC;
37 | clk1_out : OUT STD_LOGIC;
38 | clk2_out : OUT STD_LOGIC;
39 | clk3_out : OUT STD_LOGIC
40 | );
41 | END hdmi_pll;
42 |
43 | ARCHITECTURE rtl OF hdmi_pll IS
44 | SIGNAL clk0_buf : STD_LOGIC;
45 | SIGNAL fbk_wire : STD_LOGIC;
46 | SIGNAL clkc_en_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
47 | SIGNAL clkc_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
48 | SIGNAL clkcb_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
49 | BEGIN
50 | bufg_feedback : PH1_LOGIC_BUFG
51 | PORT MAP (
52 | i => clk0_buf,
53 | o => fbk_wire
54 | );
55 |
56 | pll_inst : PH1_PHY_PLL
57 | GENERIC MAP (
58 | DYN_PHASE_PATH_SEL => "DISABLE",
59 | DYN_FPHASE_EN => "DISABLE",
60 | MPHASE_ENABLE => "ENABLE",
61 | FIN => "75.000000",
62 | FEEDBK_MODE => "NORMAL",
63 | FBKCLK => "CLKC0_EXT",
64 | PLL_FEED_TYPE => "EXTERNAL",
65 | PLL_USR_RST => "ENABLE",
66 | GMC_GAIN => 2,
67 | ICP_CUR => 12,
68 | LPF_CAP => 2,
69 | LPF_RES => 2,
70 | REFCLK_DIV => 1,
71 | FBCLK_DIV => 1,
72 | CLKC0_ENABLE => "ENABLE",
73 | CLKC0_DIV => 15,
74 | CLKC0_CPHASE => 14,
75 | CLKC0_FPHASE => 0,
76 | CLKC0_FPHASE_RSTSEL => 0,
77 | CLKC0_DUTY_INT => 8,
78 | CLKC0_DUTY50 => "ENABLE",
79 | CLKC1_ENABLE => "ENABLE",
80 | CLKC1_DIV => 6,
81 | CLKC1_CPHASE => 5,
82 | CLKC1_FPHASE => 0,
83 | CLKC1_FPHASE_RSTSEL => 0,
84 | CLKC1_DUTY_INT => 3,
85 | CLKC1_DUTY50 => "ENABLE",
86 | CLKC2_ENABLE => "ENABLE",
87 | CLKC2_DIV => 3,
88 | CLKC2_CPHASE => 2,
89 | CLKC2_FPHASE => 6,
90 | CLKC2_FPHASE_RSTSEL => 1,
91 | CLKC2_DUTY_INT => 2,
92 | CLKC2_DUTY50 => "ENABLE",
93 | CLKC3_ENABLE => "ENABLE",
94 | CLKC3_DIV => 15,
95 | CLKC3_CPHASE => 14,
96 | CLKC3_FPHASE => 0,
97 | CLKC3_FPHASE_RSTSEL => 0,
98 | CLKC3_DUTY_INT => 8,
99 | CLKC3_DUTY50 => "ENABLE",
100 | INTPI => 1,
101 | HIGH_SPEED_EN => "DISABLE",
102 | SSC_ENABLE => "DISABLE",
103 | SSC_MODE => "CENTER",
104 | SSC_AMP => 0.0000,
105 | SSC_FREQ_DIV => 0,
106 | SSC_RNGE => 0,
107 | FRAC_ENABLE => "DISABLE",
108 | DITHER_ENABLE => "DISABLE",
109 | SDM_FRAC => 0
110 | )
111 | PORT MAP (
112 | refclk => refclk,
113 | pllreset => reset,
114 | lock => lock,
115 | pllpd => '0',
116 | refclk_rst => '0',
117 | wakeup => '0',
118 | psclk => '0',
119 | psdown => '0',
120 | psstep => '0',
121 | psclksel => b"000",
122 | cps_step => b"00",
123 | drp_clk => '0',
124 | drp_rstn => '1',
125 | drp_sel => '0',
126 | drp_rd => '0',
127 | drp_wr => '0',
128 | drp_addr => b"00000000",
129 | drp_wdata => b"00000000",
130 | fbclk => fbk_wire,
131 | clkc => clkc_wire,
132 | clkcb => clkcb_wire,
133 | clkc_en => clkc_en_wire,
134 | clkc_rst => b"00",
135 | ext_freq_mod_clk => '0',
136 | ext_freq_mod_en => '0',
137 | ext_freq_mod_val => b"00000000000000000",
138 | ssc_en => '0'
139 | );
140 |
141 | clk0_out <= fbk_wire;
142 | clkc_en_wire <= b"00001111";
143 | clk3_out <= clkc_wire(3);
144 | clk2_out <= clkc_wire(2);
145 | clk1_out <= clkc_wire(1);
146 | clk0_buf <= clkc_wire(0);
147 |
148 | END rtl;
149 |
150 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/.m_params_ila.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/.m_params_ila.txt
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/.ports_ila.txt:
--------------------------------------------------------------------------------
1 | probe0; 1
2 | probe1; 1
3 | probe2; 1
4 | probe3; 1
5 | probe4; 1
6 | probe5; 1
7 | probe6; 0
8 | probe7; 0
9 | probe8; 0
10 | probe9; 0
11 | probe10; 0
12 | probe11; 0
13 | probe12; 0
14 | probe13; 0
15 | probe14; 0
16 | probe15; 0
17 | probe16; 0
18 | probe17; 0
19 | probe18; 0
20 | probe19; 0
21 | probe20; 0
22 | probe21; 0
23 | probe22; 0
24 | probe23; 0
25 | probe24; 0
26 | probe25; 0
27 | probe26; 0
28 | probe27; 0
29 | probe28; 0
30 | probe29; 0
31 | probe30; 0
32 | probe31; 0
33 | probe32; 0
34 | probe33; 0
35 | probe34; 0
36 | probe35; 0
37 | probe36; 0
38 | probe37; 0
39 | probe38; 0
40 | probe39; 0
41 | probe40; 0
42 | probe41; 0
43 | probe42; 0
44 | probe43; 0
45 | probe44; 0
46 | probe45; 0
47 | probe46; 0
48 | probe47; 0
49 | probe48; 0
50 | probe49; 0
51 | probe50; 0
52 | probe51; 0
53 | probe52; 0
54 | probe53; 0
55 | probe54; 0
56 | probe55; 0
57 | probe56; 0
58 | probe57; 0
59 | probe58; 0
60 | probe59; 0
61 | probe60; 0
62 | probe61; 0
63 | probe62; 0
64 | probe63; 0
65 | clk; 1
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/ChipWatcher_e89d8dc9dd72.sv:
--------------------------------------------------------------------------------
1 |
2 | module ChipWatcher_e89d8dc9dd72 (
3 | input [9:0] probe0,
4 | input [0:0] probe1,
5 | input [14:0] probe2,
6 | input [9:0] probe3,
7 | input [0:0] probe4,
8 | input [14:0] probe5,
9 | input clk
10 | );
11 | localparam CWC_BUS_NUM = 6;
12 | localparam CWC_BUS_DIN_NUM = 52;
13 | localparam INPUT_PIPE_NUM = 0;
14 | localparam OUTPUT_PIPE_NUM = 0;
15 | localparam RAM_LEN = 52;
16 | localparam RAM_DATA_DEPTH = 4096;
17 |
18 |
19 | localparam integer CWC_BUS_WIDTH[0:CWC_BUS_NUM-1] = {15,1,10,15,1,10};
20 | localparam integer CWC_BUS_DIN_POS[0:CWC_BUS_NUM-1] = {0,15,16,26,41,42};
21 | localparam integer CWC_BUS_CTRL_POS[0:CWC_BUS_NUM-1] = {0,34,40,64,98,104};
22 |
23 | parameter STAT_REG_LEN = 24;
24 | parameter BUS_CTRL_NUM = CWC_BUS_NUM*4 + CWC_BUS_DIN_NUM*2 + 36;
25 |
26 | wire cwc_rst;
27 | wire [BUS_CTRL_NUM-1:0] cwc_control;
28 | wire [STAT_REG_LEN-1:0] cwc_status;
29 |
30 | top_cwc_hub #(
31 | .CWC_BUS_NUM(CWC_BUS_NUM),
32 | .CWC_BUS_DIN_NUM(CWC_BUS_DIN_NUM),
33 | .CWC_BUS_WIDTH(CWC_BUS_WIDTH),
34 | .CWC_BUS_DIN_POS(CWC_BUS_DIN_POS),
35 | .CWC_BUS_CTRL_POS(CWC_BUS_CTRL_POS),
36 | .RAM_DATA_DEPTH(RAM_DATA_DEPTH),
37 | .RAM_LEN(RAM_LEN),
38 | .INPUT_PIPE_NUM(INPUT_PIPE_NUM),
39 | .OUTPUT_PIPE_NUM(OUTPUT_PIPE_NUM)
40 | )
41 |
42 | wrapper_cwc_top(
43 | .cwc_trig_clk(clk),
44 | .cwc_control(cwc_control),
45 | .cwc_status(cwc_status),
46 | .cwc_rst(cwc_rst),
47 | .cwc_bus_din({probe0,probe1,probe2,probe3,probe4,probe5}),
48 | .ram_data_din({probe0,probe1,probe2,probe3,probe4,probe5})
49 | );
50 |
51 | AL_LOGIC_DEBUGHUB #(
52 | .CTRL_LEN(BUS_CTRL_NUM),
53 | .STAT_LEN(STAT_REG_LEN)
54 | ) wrapper_debughub(
55 | .clk(clk),
56 | .control(cwc_control),
57 | .status(cwc_status),
58 | .rst(cwc_rst)
59 | );
60 |
61 | endmodule
62 |
63 |
64 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/DesignConfiguration.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | anlogic.com
4 | customized
5 | designConfig_ila
6 | 1.0
7 |
8 | ChipWatcher_e89d8dc9dd72_Inst
9 |
10 |
11 |
12 | Chip Watcher
13 | 1.0
14 |
15 |
16 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/ila/ila.sv:
--------------------------------------------------------------------------------
1 | module ila
2 | (
3 | input [9:0] probe0,
4 | input [0:0] probe1,
5 | input [14:0] probe2,
6 | input [9:0] probe3,
7 | input [0:0] probe4,
8 | input [14:0] probe5,
9 | input clk
10 | );
11 |
12 | ChipWatcher_e89d8dc9dd72 ChipWatcher_e89d8dc9dd72_Inst
13 | (
14 | .probe0(probe0),
15 | .probe1(probe1),
16 | .probe2(probe2),
17 | .probe3(probe3),
18 | .probe4(probe4),
19 | .probe5(probe5),
20 | .clk(clk)
21 | );
22 | endmodule
23 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/pll.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PLL
5 | PH1A90SBG484
6 | true
7 |
8 |
9 | Any
10 | 25.0000000000000000MHz
11 | Normal
12 | CLKC0
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 | DISABLE
17 | DISABLE
18 | DISABLE
19 | ENABLE
20 | ENABLE
21 |
22 |
23 | Medium
24 |
25 |
26 | frequncy_setting
27 | 3
28 | 1
29 |
30 |
31 | 0
32 | 15
33 | 75.0000000000000000MHz
34 | 0.0000000000000000deg
35 | 0.5
36 | false
37 | false
38 | BUFG
39 |
40 |
41 | 1
42 | 3
43 | 375.0000000000000000MHz
44 | 0.0000000000000000deg
45 | 0.5
46 | false
47 | false
48 | NONE
49 |
50 |
51 |
52 |
53 | pll.vhd
54 | pll.v
55 |
56 |
57 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/pll.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2024 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.v
8 | ** Date : 2024 12 07
9 | ** TD version : 6.0.117864
10 | \************************************************************/
11 |
12 | ///////////////////////////////////////////////////////////////////////////////
13 | // Input frequency: 25.000000MHz
14 | // Clock multiplication factor: 3
15 | // Clock division factor: 1
16 | // Clock information:
17 | // Clock name | Frequency | Phase shift
18 | // C0 | 75.000000 MHZ | 0.0000 DEG
19 | // C1 | 375.000000MHZ | 0.0000 DEG
20 | ///////////////////////////////////////////////////////////////////////////////
21 | `timescale 1 ns / 100 fs
22 |
23 | module pll (
24 | refclk,
25 | reset,
26 | lock,
27 | clk0_out,
28 | clk1_out
29 | );
30 |
31 | input refclk;
32 | input reset;
33 | output lock;
34 | output clk0_out;
35 | output clk1_out;
36 |
37 | wire clk0_buf;
38 |
39 | PH1_LOGIC_BUFG bufg_feedback (
40 | .i(clk0_buf),
41 | .o(clk0_out)
42 | );
43 |
44 | PH1_PHY_PLL #(
45 | .DYN_PHASE_PATH_SEL("DISABLE"),
46 | .DYN_FPHASE_EN("DISABLE"),
47 | .MPHASE_ENABLE("DISABLE"),
48 | .FIN("25.000000"),
49 | .FEEDBK_MODE("NORMAL"),
50 | .FBKCLK("CLKC0_EXT"),
51 | .PLL_FEED_TYPE("EXTERNAL"),
52 | .PLL_USR_RST("ENABLE"),
53 | .GMC_GAIN(1),
54 | .ICP_CUR(11),
55 | .LPF_CAP(2),
56 | .LPF_RES(3),
57 | .REFCLK_DIV(1),
58 | .FBCLK_DIV(3),
59 | .CLKC0_ENABLE("ENABLE"),
60 | .CLKC0_DIV(15),
61 | .CLKC0_CPHASE(14),
62 | .CLKC0_FPHASE(0),
63 | .CLKC0_FPHASE_RSTSEL(0),
64 | .CLKC0_DUTY_INT(8),
65 | .CLKC0_DUTY50("ENABLE"),
66 | .CLKC1_ENABLE("ENABLE"),
67 | .CLKC1_DIV(3),
68 | .CLKC1_CPHASE(2),
69 | .CLKC1_FPHASE(0),
70 | .CLKC1_FPHASE_RSTSEL(0),
71 | .CLKC1_DUTY_INT(2),
72 | .CLKC1_DUTY50("ENABLE"),
73 | .INTPI(1),
74 | .HIGH_SPEED_EN("DISABLE"),
75 | .SSC_ENABLE("DISABLE"),
76 | .SSC_MODE("CENTER"),
77 | .SSC_AMP(0.0000),
78 | .SSC_FREQ_DIV(0),
79 | .SSC_RNGE(0),
80 | .FRAC_ENABLE("DISABLE"),
81 | .DITHER_ENABLE("DISABLE"),
82 | .SDM_FRAC(0)
83 | ) pll_inst (
84 | .refclk(refclk),
85 | .pllreset(reset),
86 | .lock(lock),
87 | .pllpd(1'b0),
88 | .refclk_rst(1'b0),
89 | .wakeup(1'b0),
90 | .psclk(1'b0),
91 | .psdown(1'b0),
92 | .psstep(1'b0),
93 | .psclksel(3'b000),
94 | .psdone(pll_open0),
95 | .cps_step(2'b00),
96 | .drp_clk(1'b0),
97 | .drp_rstn(1'b1),
98 | .drp_sel(1'b0),
99 | .drp_rd(1'b0),
100 | .drp_wr(1'b0),
101 | .drp_addr(8'b00000000),
102 | .drp_wdata(8'b00000000),
103 | .drp_err(pll_open1),
104 | .drp_rdy(pll_open2),
105 | .drp_rdata({pll_open10, pll_open9, pll_open8, pll_open7, pll_open6, pll_open5, pll_open4, pll_open3}),
106 | .fbclk(clk0_out),
107 | .clkc({pll_open23, pll_open21, pll_open19, pll_open17, pll_open15, pll_open13, clk1_out, clk0_buf}),
108 | .clkcb({pll_open24, pll_open22, pll_open20, pll_open18, pll_open16, pll_open14, pll_open12, pll_open11}),
109 | .clkc_en({8'b00000011}),
110 | .clkc_rst(2'b00),
111 | .ext_freq_mod_clk(1'b0),
112 | .ext_freq_mod_en(1'b0),
113 | .ext_freq_mod_val(17'b00000000000000000),
114 | .ssc_en(1'b0)
115 | );
116 |
117 | endmodule
118 |
119 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/al_ip/pll.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2024 Anlogic Inc. -- All Right Reserved.
3 | --------------------------------------------------------------
4 | -- Log : This file is generated by Anlogic IP Generator.
5 | -- File : C:/HIT/personal_learn/open_source/01_four_channel_viideo_splicer/td_project/al_ip/pll.vhd
6 | -- Date : 2024 12 07
7 | -- TD version : 6.0.117864
8 | --------------------------------------------------------------
9 |
10 | -------------------------------------------------------------------------------
11 | -- Input frequency: 25.000000MHz
12 | -- Clock multiplication factor: 3
13 | -- Clock division factor: 1
14 | -- Clock information:
15 | -- Clock name | Frequency | Phase shift
16 | -- C0 | 75.000000 MHZ | 0.0000 DEG
17 | -- C1 | 375.000000MHZ | 0.0000 DEG
18 | -------------------------------------------------------------------------------
19 |
20 | LIBRARY ieee;
21 | USE ieee.std_logic_1164.ALL;
22 | USE ieee.numeric_std.ALL;
23 | USE ieee.std_logic_unsigned.ALL;
24 | USE ieee.std_logic_arith.ALL;
25 | LIBRARY ph1_macro;
26 | USE ph1_macro.PH1_COMPONENTS.ALL;
27 |
28 | ENTITY pll IS
29 | PORT (
30 | refclk : IN STD_LOGIC;
31 | reset : IN STD_LOGIC;
32 | lock : OUT STD_LOGIC;
33 | clk0_out : OUT STD_LOGIC;
34 | clk1_out : OUT STD_LOGIC
35 | );
36 | END pll;
37 |
38 | ARCHITECTURE rtl OF pll IS
39 | SIGNAL clk0_buf : STD_LOGIC;
40 | SIGNAL fbk_wire : STD_LOGIC;
41 | SIGNAL clkc_en_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
42 | SIGNAL clkc_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
43 | SIGNAL clkcb_wire : STD_LOGIC_VECTOR (7 DOWNTO 0);
44 | BEGIN
45 | bufg_feedback : PH1_LOGIC_BUFG
46 | PORT MAP (
47 | i => clk0_buf,
48 | o => fbk_wire
49 | );
50 |
51 | pll_inst : PH1_PHY_PLL
52 | GENERIC MAP (
53 | DYN_PHASE_PATH_SEL => "DISABLE",
54 | DYN_FPHASE_EN => "DISABLE",
55 | MPHASE_ENABLE => "DISABLE",
56 | FIN => "25.000000",
57 | FEEDBK_MODE => "NORMAL",
58 | FBKCLK => "CLKC0_EXT",
59 | PLL_FEED_TYPE => "EXTERNAL",
60 | PLL_USR_RST => "ENABLE",
61 | GMC_GAIN => 1,
62 | ICP_CUR => 11,
63 | LPF_CAP => 2,
64 | LPF_RES => 3,
65 | REFCLK_DIV => 1,
66 | FBCLK_DIV => 3,
67 | CLKC0_ENABLE => "ENABLE",
68 | CLKC0_DIV => 15,
69 | CLKC0_CPHASE => 14,
70 | CLKC0_FPHASE => 0,
71 | CLKC0_FPHASE_RSTSEL => 0,
72 | CLKC0_DUTY_INT => 8,
73 | CLKC0_DUTY50 => "ENABLE",
74 | CLKC1_ENABLE => "ENABLE",
75 | CLKC1_DIV => 3,
76 | CLKC1_CPHASE => 2,
77 | CLKC1_FPHASE => 0,
78 | CLKC1_FPHASE_RSTSEL => 0,
79 | CLKC1_DUTY_INT => 2,
80 | CLKC1_DUTY50 => "ENABLE",
81 | INTPI => 1,
82 | HIGH_SPEED_EN => "DISABLE",
83 | SSC_ENABLE => "DISABLE",
84 | SSC_MODE => "CENTER",
85 | SSC_AMP => 0.0000,
86 | SSC_FREQ_DIV => 0,
87 | SSC_RNGE => 0,
88 | FRAC_ENABLE => "DISABLE",
89 | DITHER_ENABLE => "DISABLE",
90 | SDM_FRAC => 0
91 | )
92 | PORT MAP (
93 | refclk => refclk,
94 | pllreset => reset,
95 | lock => lock,
96 | pllpd => '0',
97 | refclk_rst => '0',
98 | wakeup => '0',
99 | psclk => '0',
100 | psdown => '0',
101 | psstep => '0',
102 | psclksel => b"000",
103 | cps_step => b"00",
104 | drp_clk => '0',
105 | drp_rstn => '1',
106 | drp_sel => '0',
107 | drp_rd => '0',
108 | drp_wr => '0',
109 | drp_addr => b"00000000",
110 | drp_wdata => b"00000000",
111 | fbclk => fbk_wire,
112 | clkc => clkc_wire,
113 | clkcb => clkcb_wire,
114 | clkc_en => clkc_en_wire,
115 | clkc_rst => b"00",
116 | ext_freq_mod_clk => '0',
117 | ext_freq_mod_en => '0',
118 | ext_freq_mod_val => b"00000000000000000",
119 | ssc_en => '0'
120 | );
121 |
122 | clk0_out <= fbk_wire;
123 | clkc_en_wire <= b"00000011";
124 | clk1_out <= clkc_wire(1);
125 | clk0_buf <= clkc_wire(0);
126 |
127 | END rtl;
128 |
129 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/fpga_prj_Runs/best_result/fpga_prj.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/td_project/fpga_prj_Runs/best_result/fpga_prj.bit
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/fpga_prj_Runs/best_result/fpga_prj_compress.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/td_project/fpga_prj_Runs/best_result/fpga_prj_compress.bit
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/td_project/fpga_prj_Runs/best_result/readMe.txt:
--------------------------------------------------------------------------------
1 | The implemented result of phy_1 is saved as best result.
2 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/constraints_source/ap106_ddr_pin.adc:
--------------------------------------------------------------------------------
1 | set_ippin_assignment { ddr_dq[0] } {LOCATION = L1; IOSTANDARD = SSTL15; }
2 | set_ippin_assignment { ddr_dq[1] } {LOCATION = M3; IOSTANDARD = SSTL15; }
3 | set_ippin_assignment { ddr_dq[2] } {LOCATION = K1; IOSTANDARD = SSTL15; }
4 | set_ippin_assignment { ddr_dq[3] } {LOCATION = N2; IOSTANDARD = SSTL15; }
5 | set_ippin_assignment { ddr_dq[4] } {LOCATION = K2; IOSTANDARD = SSTL15; }
6 | set_ippin_assignment { ddr_dq[5] } {LOCATION = N3; IOSTANDARD = SSTL15; }
7 | set_ippin_assignment { ddr_dq[6] } {LOCATION = K3; IOSTANDARD = SSTL15; }
8 | set_ippin_assignment { ddr_dq[7] } {LOCATION = L3; IOSTANDARD = SSTL15; }
9 | set_ippin_assignment { ddr_dq[8] } {LOCATION = R2; IOSTANDARD = SSTL15; }
10 | set_ippin_assignment { ddr_dq[9] } {LOCATION = P1; IOSTANDARD = SSTL15; }
11 | set_ippin_assignment { ddr_dq[10] } {LOCATION = U1; IOSTANDARD = SSTL15; }
12 | set_ippin_assignment { ddr_dq[11] } {LOCATION = R3; IOSTANDARD = SSTL15; }
13 | set_ippin_assignment { ddr_dq[12] } {LOCATION = T1; IOSTANDARD = SSTL15; }
14 | set_ippin_assignment { ddr_dq[13] } {LOCATION = P2; IOSTANDARD = SSTL15; }
15 | set_ippin_assignment { ddr_dq[14] } {LOCATION = R4; IOSTANDARD = SSTL15; }
16 | set_ippin_assignment { ddr_dq[15] } {LOCATION = R1; IOSTANDARD = SSTL15; }
17 | set_ippin_assignment { ddr_dq[16] } {LOCATION = U3; IOSTANDARD = SSTL15; }
18 | set_ippin_assignment { ddr_dq[17] } {LOCATION = W2; IOSTANDARD = SSTL15; }
19 | set_ippin_assignment { ddr_dq[18] } {LOCATION = T4; IOSTANDARD = SSTL15; }
20 | set_ippin_assignment { ddr_dq[19] } {LOCATION = W4; IOSTANDARD = SSTL15; }
21 | set_ippin_assignment { ddr_dq[20] } {LOCATION = V4; IOSTANDARD = SSTL15; }
22 | set_ippin_assignment { ddr_dq[21] } {LOCATION = U5; IOSTANDARD = SSTL15; }
23 | set_ippin_assignment { ddr_dq[22] } {LOCATION = V3; IOSTANDARD = SSTL15; }
24 | set_ippin_assignment { ddr_dq[23] } {LOCATION = T5; IOSTANDARD = SSTL15; }
25 | set_ippin_assignment { ddr_dq[24] } {LOCATION = AA3; IOSTANDARD = SSTL15; }
26 | set_ippin_assignment { ddr_dq[25] } {LOCATION = W1; IOSTANDARD = SSTL15; }
27 | set_ippin_assignment { ddr_dq[26] } {LOCATION = AB3; IOSTANDARD = SSTL15; }
28 | set_ippin_assignment { ddr_dq[27] } {LOCATION = AB2; IOSTANDARD = SSTL15; }
29 | set_ippin_assignment { ddr_dq[28] } {LOCATION = W5; IOSTANDARD = SSTL15; }
30 | set_ippin_assignment { ddr_dq[29] } {LOCATION = AB1; IOSTANDARD = SSTL15; }
31 | set_ippin_assignment { ddr_dq[30] } {LOCATION = AA1; IOSTANDARD = SSTL15; }
32 | set_ippin_assignment { ddr_dq[31] } {LOCATION = Y1; IOSTANDARD = SSTL15; }
33 | set_ippin_assignment { ddr_dqs_n[0] } {LOCATION = M1; IOSTANDARD = DIFF_SSTL15; }
34 | set_ippin_assignment { ddr_dqs_p[0] } {LOCATION = M2; IOSTANDARD = DIFF_SSTL15; }
35 | set_ippin_assignment { ddr_dqs_n[1] } {LOCATION = N4; IOSTANDARD = DIFF_SSTL15; }
36 | set_ippin_assignment { ddr_dqs_p[1] } {LOCATION = M5; IOSTANDARD = DIFF_SSTL15; }
37 | set_ippin_assignment { ddr_dqs_n[2] } {LOCATION = V2; IOSTANDARD = DIFF_SSTL15; }
38 | set_ippin_assignment { ddr_dqs_p[2] } {LOCATION = U2; IOSTANDARD = DIFF_SSTL15; }
39 | set_ippin_assignment { ddr_dqs_n[3] } {LOCATION = Y2; IOSTANDARD = DIFF_SSTL15; }
40 | set_ippin_assignment { ddr_dqs_p[3] } {LOCATION = Y3; IOSTANDARD = DIFF_SSTL15; }
41 | set_ippin_assignment { ddr_dm[0] } {LOCATION = L5; IOSTANDARD = SSTL15; }
42 | set_ippin_assignment { ddr_dm[1] } {LOCATION = P4; IOSTANDARD = SSTL15; }
43 | set_ippin_assignment { ddr_dm[2] } {LOCATION = N5; IOSTANDARD = SSTL15; }
44 | set_ippin_assignment { ddr_dm[3] } {LOCATION = AA4; IOSTANDARD = SSTL15; }
45 | set_ippin_assignment { ddr_ck_n[0] } {LOCATION = Y9; IOSTANDARD = DIFF_SSTL15; }
46 | set_ippin_assignment { ddr_ck_p[0] } {LOCATION = W9; IOSTANDARD = DIFF_SSTL15; }
47 | set_ippin_assignment { ddr_ras_n } {LOCATION = R7; IOSTANDARD = SSTL15; }
48 | set_ippin_assignment { ddr_cas_n } {LOCATION = AB6; IOSTANDARD = SSTL15; }
49 | set_ippin_assignment { ddr_we_n } {LOCATION = U8; IOSTANDARD = SSTL15; }
50 | set_ippin_assignment { ddr_reset_n } {LOCATION = U6; IOSTANDARD = SSTL15; }
51 | set_ippin_assignment { ddr_cke[0] } {LOCATION = W11; IOSTANDARD = SSTL15; }
52 | set_ippin_assignment { ddr_cs_n[0] } {LOCATION = AA5; IOSTANDARD = SSTL15; }
53 | set_ippin_assignment { ddr_odt[0] } {LOCATION = AA6; IOSTANDARD = SSTL15; }
54 | set_ippin_assignment { ddr_addr[0] } {LOCATION = AB7; IOSTANDARD = SSTL15; }
55 | set_ippin_assignment { ddr_addr[1] } {LOCATION = V9; IOSTANDARD = SSTL15; }
56 | set_ippin_assignment { ddr_addr[2] } {LOCATION = V8; IOSTANDARD = SSTL15; }
57 | set_ippin_assignment { ddr_addr[3] } {LOCATION = W6; IOSTANDARD = SSTL15; }
58 | set_ippin_assignment { ddr_addr[4] } {LOCATION = AA11; IOSTANDARD = SSTL15; }
59 | set_ippin_assignment { ddr_addr[5] } {LOCATION = U7; IOSTANDARD = SSTL15; }
60 | set_ippin_assignment { ddr_addr[6] } {LOCATION = Y11; IOSTANDARD = SSTL15; }
61 | set_ippin_assignment { ddr_addr[7] } {LOCATION = AA8; IOSTANDARD = SSTL15; }
62 | set_ippin_assignment { ddr_addr[8] } {LOCATION = U12; IOSTANDARD = SSTL15; }
63 | set_ippin_assignment { ddr_addr[9] } {LOCATION = AB8; IOSTANDARD = SSTL15; }
64 | set_ippin_assignment { ddr_addr[10] } {LOCATION = AB10; IOSTANDARD = SSTL15; }
65 | set_ippin_assignment { ddr_addr[11] } {LOCATION = AA10; IOSTANDARD = SSTL15; }
66 | set_ippin_assignment { ddr_addr[12] } {LOCATION = V10; IOSTANDARD = SSTL15; }
67 | set_ippin_assignment { ddr_addr[13] } {LOCATION = U10; IOSTANDARD = SSTL15; }
68 | set_ippin_assignment { ddr_ba[0] } {LOCATION = Y6; IOSTANDARD = SSTL15; }
69 | set_ippin_assignment { ddr_ba[1] } {LOCATION = AB11; IOSTANDARD = SSTL15; }
70 | set_ippin_assignment { ddr_ba[2] } {LOCATION = T8; IOSTANDARD = SSTL15; }
71 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/constraints_source/pin.adc:
--------------------------------------------------------------------------------
1 | set_pin_assignment { I_rst_n } { LOCATION = K4; IOSTANDARD = LVCMOS15; PULLTYPE = PULLUP; }
2 | set_pin_assignment { I_sys_clk } { LOCATION = N18; IOSTANDARD = LVCMOS33; PULLTYPE = PULLUP; }
3 |
4 | set_pin_assignment { O_uart_txd } { LOCATION = R22 ; IOSTANDARD = LVCMOS33;}
5 | set_pin_assignment { I_uart_rxd } { LOCATION = M16 ; IOSTANDARD = LVCMOS33; }
6 |
7 | set_pin_assignment { O_hdmi_tx_p[0] } { LOCATION = V13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
8 | set_pin_assignment { O_hdmi_tx_p[1] } { LOCATION = Y12; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
9 | set_pin_assignment { O_hdmi_tx_p[2] } { LOCATION = T13; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
10 | set_pin_assignment { O_hdmi_clk_p } { LOCATION = V17; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
11 |
12 | set_pin_assignment { I_hdmi_rx_ch0_p } { LOCATION = U22; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
13 | set_pin_assignment { I_hdmi_rx_ch1_p } { LOCATION = T20; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
14 | set_pin_assignment { I_hdmi_rx_ch2_p } { LOCATION = U21; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
15 | set_pin_assignment { I_hdmi_rx_clk_p } { LOCATION = V20; IOSTANDARD = LVDS25; PULLTYPE = NONE; }
16 | set_pin_assignment { I_hdmi_rx_ddc_scl } { LOCATION = T19; IOSTANDARD = LVCMOS25; PULLTYPE = PULLUP; }
17 | set_pin_assignment { IO_hdmi_rx_ddc_sda } { LOCATION = U20; IOSTANDARD = LVCMOS25; DRIVESTRENGTH = 8; PULLTYPE = PULLUP; }
18 | set_pin_assignment { O_hdmi_rx_hpd } { LOCATION = W19; IOSTANDARD = LVCMOS25; DRIVESTRENGTH = 8; PULLTYPE = PULLUP; }
19 | set_pin_assignment { O_hdmi_tx_ddc_scl } { LOCATION = W14; IOSTANDARD = LVCMOS25; DRIVESTRENGTH = 8; PULLTYPE = PULLUP; }
20 | set_pin_assignment { IO_hdmi_tx_ddc_sda } { LOCATION = W15; IOSTANDARD = LVCMOS25; DRIVESTRENGTH = 8; PULLTYPE = PULLUP; }
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/constraints_source/timing.sdc:
--------------------------------------------------------------------------------
1 | create_clock -name {sys_clk_25m} -period 40.000 -waveform {0.000 20.000} [get_ports {I_sys_clk}]
2 | create_clock -name {hdmi_rx_ck_lane_p} -period 13.468 -waveform {0.000 6.734} [get_ports {I_hdmi_rx_clk_p}]
3 |
4 | derive_pll_clocks
5 | set_clock_groups -asynchronous -group [get_clocks {sys_clk_25m}] -group [get_clocks {u_pll/pll_inst.clkc[0]}] -group [get_clocks {u_pll/pll_inst.clkc[1]}] -group [get_clocks {hdmi_rx_ck_lane_p}] -group [get_clocks {u_hdmi_pll/pll_inst.clkc[3]}] -group [get_clocks {u_hdmi_pll/pll_inst.clkc[2]}]
6 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/down_samping/down_samping_2x2.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:33:13
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:33:33
6 | */
7 |
8 |
9 | module down_samping_2x2#(
10 | parameter [13:0] H_SIZE = 1920,
11 | parameter [13:0] V_SIZE = 1080
12 | )
13 | (
14 | input wire I_clk,
15 | input wire I_rst_n,
16 |
17 | input wire I_rgb_vs,
18 | input wire I_rgb_de,
19 | input wire [31:0] I_rgb_data,
20 |
21 | output reg O_rgb_vs,
22 | output reg O_rgb_de,
23 | output reg [31:0] O_rgb_data
24 |
25 | );
26 |
27 | reg [11:0] col_count, row_count;
28 |
29 |
30 | wire vs_up_edge;
31 |
32 | assign vs_up_edge = I_rgb_vs &(~O_rgb_vs) ;
33 |
34 | always @(posedge I_clk or negedge I_rst_n) begin
35 | if (!I_rst_n) begin
36 | col_count <= 0;
37 | end else if (vs_up_edge) begin
38 | col_count <= 0;
39 | end else if (I_rgb_de) begin
40 | if (col_count == (H_SIZE- 1)) begin
41 | col_count <= 0;
42 | end else begin
43 | col_count <= col_count + 1;
44 | end
45 | end else begin
46 | col_count<=col_count;
47 | end
48 | end
49 |
50 | always @(posedge I_clk or negedge I_rst_n) begin
51 | if (!I_rst_n) begin
52 | row_count <= 0;
53 | end else if (vs_up_edge) begin
54 | row_count <= 0;
55 | end else if (I_rgb_de) begin
56 | if (row_count == (V_SIZE - 1) && col_count == (H_SIZE - 1)) begin
57 | row_count <= 0;
58 | end else if (col_count == (H_SIZE- 1)) begin
59 | row_count <= row_count + 1;
60 | end
61 | end else begin
62 | row_count<=row_count;
63 | end
64 | end
65 |
66 |
67 | reg sample_select;
68 | // wire sample_select;
69 |
70 | // assign sample_select = (col_count % 2 == 0) && (row_count % 2 == 0);
71 |
72 | always @(*) begin
73 | if(!I_rst_n) begin
74 | sample_select<=1'b0;
75 | end else begin
76 | sample_select <= (col_count % 2 == 0) && (row_count % 2 == 0);
77 | end
78 | end
79 |
80 | always @(posedge I_clk or negedge I_rst_n) begin
81 | if (!I_rst_n) begin
82 | O_rgb_vs <= 0;
83 | end else begin
84 | O_rgb_vs<=I_rgb_vs;
85 | end
86 | end
87 |
88 | always @(posedge I_clk or negedge I_rst_n) begin
89 | if (!I_rst_n) begin
90 | O_rgb_de <= 0;
91 | end else if(I_rgb_de) begin
92 | O_rgb_de<=sample_select;
93 | end else begin
94 | O_rgb_de<=0;
95 | end
96 | end
97 |
98 | always @(posedge I_clk or negedge I_rst_n) begin
99 | if (!I_rst_n) begin
100 | O_rgb_data <= 'd0;
101 | end else if(sample_select) begin
102 | O_rgb_data<=I_rgb_data;
103 | end
104 | end
105 |
106 |
107 |
108 |
109 |
110 | endmodule //video_samping
111 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/hdmi_in/edid_1280720.mif:
--------------------------------------------------------------------------------
1 |
2 | WIDTH=8;
3 | DEPTH=256;
4 |
5 | ADDRESS_RADIX=DEC;
6 | DATA_RADIX=HEX;
7 |
8 | CONTENT BEGIN
9 |
10 | 0 : 00 ;
11 | 1 : FF ;
12 | 2 : FF ;
13 | 3 : FF ;
14 | 4 : FF ;
15 | 5 : FF ;
16 | 6 : FF ;
17 | 7 : 00 ;
18 | 8 : 36 ;
19 | 9 : 74 ;
20 | 10 : 30 ;
21 | 11 : 00 ;
22 | 12 : 01 ;
23 | 13 : 00 ;
24 | 14 : 00 ;
25 | 15 : 00 ;
26 | 16 : 18 ;
27 | 17 : 0F ;
28 | 18 : 01 ;
29 | 19 : 03 ;
30 | 20 : 80 ;
31 | 21 : 73 ;
32 | 22 : 41 ;
33 | 23 : 78 ;
34 | 24 : 0A ;
35 | 25 : CF ;
36 | 26 : 74 ;
37 | 27 : A3 ;
38 | 28 : 57 ;
39 | 29 : 4C ;
40 | 30 : B0 ;
41 | 31 : 23 ;
42 | 32 : 09 ;
43 | 33 : 48 ;
44 | 34 : 4C ;
45 | 35 : 00 ;
46 | 36 : 00 ;
47 | 37 : 00 ;
48 | 38 : 01 ;
49 | 39 : 01 ;
50 | 40 : 01 ;
51 | 41 : FF ;
52 | 42 : 01 ;
53 | 43 : FF ;
54 | 44 : FF ;
55 | 45 : 01 ;
56 | 46 : 01 ;
57 | 47 : 01 ;
58 | 48 : 01 ;
59 | 49 : 01 ;
60 | 50 : 01 ;
61 | 51 : 01 ;
62 | 52 : 01 ;
63 | 53 : 20 ;
64 | 54 : 01 ;
65 | 55 : 1D ;
66 | 56 : 00 ;
67 | 57 : 72 ;
68 | 58 : 51 ;
69 | 59 : D0 ;
70 | 60 : 1E ;
71 | 61 : 20 ;
72 | 62 : 6E ;
73 | 63 : 28 ;
74 | 64 : 55 ;
75 | 65 : 00 ;
76 | 66 : C4 ;
77 | 67 : 8E ;
78 | 68 : 21 ;
79 | 69 : 00 ;
80 | 70 : 00 ;
81 | 71 : 1E ;
82 | 72 : 01 ;
83 | 73 : 1D ;
84 | 74 : 80 ;
85 | 75 : 18 ;
86 | 76 : 71 ;
87 | 77 : 1C ;
88 | 78 : 16 ;
89 | 79 : 20 ;
90 | 80 : 58 ;
91 | 81 : 2C ;
92 | 82 : 25 ;
93 | 83 : 00 ;
94 | 84 : C4 ;
95 | 85 : 8E ;
96 | 86 : 21 ;
97 | 87 : 00 ;
98 | 88 : 00 ;
99 | 89 : 9E ;
100 | 90 : 00 ;
101 | 91 : 00 ;
102 | 92 : 00 ;
103 | 93 : FC ;
104 | 94 : 00 ;
105 | 95 : 4D ;
106 | 96 : 53 ;
107 | 97 : 74 ;
108 | 98 : 61 ;
109 | 99 : 72 ;
110 | 100 : 20 ;
111 | 101 : 44 ;
112 | 102 : 65 ;
113 | 103 : 6D ;
114 | 104 : 6F ;
115 | 105 : 0A ;
116 | 106 : 20 ;
117 | 107 : 20 ;
118 | 108 : 00 ;
119 | 109 : 00 ;
120 | 110 : 00 ;
121 | 111 : FC ;
122 | 112 : 00 ;
123 | 113 : 3B ;
124 | 114 : 3C ;
125 | 115 : 1F ;
126 | 116 : 2D ;
127 | 117 : 08 ;
128 | 118 : 00 ;
129 | 119 : 0A ;
130 | 120 : 20 ;
131 | 121 : 20 ;
132 | 122 : 20 ;
133 | 123 : 20 ;
134 | 124 : 20 ;
135 | 125 : 20 ;
136 | 126 : 00 ;
137 | 127 : 27 ;
138 | 128 : 00 ;
139 | 129 : 00 ;
140 | 130 : 00 ;
141 | 131 : 00 ;
142 | 132 : 00 ;
143 | 133 : 00 ;
144 | 134 : 00 ;
145 | 135 : 00 ;
146 | 136 : 00 ;
147 | 137 : 00 ;
148 | 138 : 00 ;
149 | 139 : 00 ;
150 | 140 : 00 ;
151 | 141 : 00 ;
152 | 142 : 00 ;
153 | 143 : 00 ;
154 | 144 : 00 ;
155 | 145 : 00 ;
156 | 146 : 00 ;
157 | 147 : 00 ;
158 | 148 : 00 ;
159 | 149 : 00 ;
160 | 150 : 00 ;
161 | 151 : 00 ;
162 | 152 : 00 ;
163 | 153 : 00 ;
164 | 154 : 00 ;
165 | 155 : 00 ;
166 | 156 : 00 ;
167 | 157 : 00 ;
168 | 158 : 00 ;
169 | 159 : 00 ;
170 | 160 : 00 ;
171 | 161 : 00 ;
172 | 162 : 00 ;
173 | 163 : 00 ;
174 | 164 : 00 ;
175 | 165 : 00 ;
176 | 166 : 00 ;
177 | 167 : 00 ;
178 | 168 : 00 ;
179 | 169 : 00 ;
180 | 170 : 00 ;
181 | 171 : 00 ;
182 | 172 : 00 ;
183 | 173 : 00 ;
184 | 174 : 00 ;
185 | 175 : 00 ;
186 | 176 : 00 ;
187 | 177 : 00 ;
188 | 178 : 00 ;
189 | 179 : 00 ;
190 | 180 : 00 ;
191 | 181 : 00 ;
192 | 182 : 00 ;
193 | 183 : 00 ;
194 | 184 : 00 ;
195 | 185 : 00 ;
196 | 186 : 00 ;
197 | 187 : 00 ;
198 | 188 : 00 ;
199 | 189 : 00 ;
200 | 190 : 00 ;
201 | 191 : 00 ;
202 | 192 : 00 ;
203 | 193 : 00 ;
204 | 194 : 00 ;
205 | 195 : 00 ;
206 | 196 : 00 ;
207 | 197 : 00 ;
208 | 198 : 00 ;
209 | 199 : 00 ;
210 | 200 : 00 ;
211 | 201 : 00 ;
212 | 202 : 00 ;
213 | 203 : 00 ;
214 | 204 : 00 ;
215 | 205 : 00 ;
216 | 206 : 00 ;
217 | 207 : 00 ;
218 | 208 : 00 ;
219 | 209 : 00 ;
220 | 210 : 00 ;
221 | 211 : 00 ;
222 | 212 : 00 ;
223 | 213 : 00 ;
224 | 214 : 00 ;
225 | 215 : 00 ;
226 | 216 : 00 ;
227 | 217 : 00 ;
228 | 218 : 00 ;
229 | 219 : 00 ;
230 | 220 : 00 ;
231 | 221 : 00 ;
232 | 222 : 00 ;
233 | 223 : 00 ;
234 | 224 : 00 ;
235 | 225 : 00 ;
236 | 226 : 00 ;
237 | 227 : 00 ;
238 | 228 : 00 ;
239 | 229 : 00 ;
240 | 230 : 00 ;
241 | 231 : 00 ;
242 | 232 : 00 ;
243 | 232 : 00 ;
244 | 233 : 00 ;
245 | 234 : 00 ;
246 | 235 : 00 ;
247 | 236 : 00 ;
248 | 237 : 00 ;
249 | 238 : 00 ;
250 | 239 : 00 ;
251 | 240 : 00 ;
252 | 241 : 00 ;
253 | 242 : 00 ;
254 | 243 : 00 ;
255 | 244 : 00 ;
256 | 245 : 00 ;
257 | 246 : 00 ;
258 | 247 : 00 ;
259 | 248 : 00 ;
260 | 249 : 00 ;
261 | 250 : 00 ;
262 | 251 : 00 ;
263 | 252 : 00 ;
264 | 253 : 00 ;
265 | 254 : 00 ;
266 | 255 : 00 ;
267 |
268 | END;
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/hdmi_in/hdmi_rx_phy_wrapper.v:
--------------------------------------------------------------------------------
1 |
2 |
3 | module hdmi_rx_phy_wrapper#(
4 | parameter DEVICE = "PH1A" //"EF2","EF3","EF4","SF1","EG","PH1A","PH1P","DR1"
5 | )(
6 | input wire I_parallel_clk,
7 | input wire I_parallel_2p5x_clk,
8 | input wire I_parallel_5x_clk,
9 | input wire I_rst,
10 |
11 | input wire I_hdmi_rx_ch0_p,
12 | input wire I_hdmi_rx_ch1_p,
13 | input wire I_hdmi_rx_ch2_p,
14 |
15 | output wire[9:0] O_ch0_raw_data,
16 | output wire[9:0] O_ch1_raw_data,
17 | output wire[9:0] O_ch2_raw_data
18 | );
19 |
20 | lane_lvds_1_10 #(
21 | .DEVICE ( DEVICE )
22 | )u0_lane_lvds_1_10(
23 | .I_parallel_clk ( I_parallel_clk ),
24 | .I_parallel_2p5x_clk ( I_parallel_2p5x_clk ),
25 | .I_parallel_5x_clk ( I_parallel_5x_clk ),
26 |
27 | .I_rst ( I_rst ),
28 |
29 | .I_lvds_serial_in ( I_hdmi_rx_ch0_p ),
30 |
31 | .O_data ( O_ch0_raw_data )
32 | );
33 |
34 |
35 | lane_lvds_1_10 #(
36 | .DEVICE ( DEVICE )
37 | )u1_lane_lvds_1_10(
38 | .I_parallel_clk ( I_parallel_clk ),
39 | .I_parallel_2p5x_clk ( I_parallel_2p5x_clk ),
40 | .I_parallel_5x_clk ( I_parallel_5x_clk ),
41 |
42 | .I_rst ( I_rst ),
43 |
44 | .I_lvds_serial_in ( I_hdmi_rx_ch1_p ),
45 |
46 | .O_data ( O_ch1_raw_data )
47 | );
48 |
49 | lane_lvds_1_10 #(
50 | .DEVICE ( DEVICE )
51 | )u2_lane_lvds_1_10(
52 | .I_parallel_clk ( I_parallel_clk ),
53 | .I_parallel_2p5x_clk ( I_parallel_2p5x_clk ),
54 | .I_parallel_5x_clk ( I_parallel_5x_clk ),
55 |
56 | .I_rst ( I_rst ),
57 |
58 | .I_lvds_serial_in ( I_hdmi_rx_ch2_p ),
59 |
60 | .O_data ( O_ch2_raw_data )
61 | );
62 | endmodule
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/ph1a_hdmi_tx_lvds/hdmi_tx.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdma/uiFDMA.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdma/uiFDMA.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdma/uifdma_axi_ddr.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdma/uifdma_axi_ddr.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/fs_cap.v:
--------------------------------------------------------------------------------
1 | `timescale 1ns / 1ps
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop: https://milianke.taobao.com
9 | *Create Date: 2022/09/25
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 3.1
20 | *Signal description
21 | *1) _i input
22 | *2) _o output
23 | *3) _n activ low
24 | *4) _dg debug signal
25 | *5) _r delay or register
26 | *6) _s state mechine
27 | *********************************************************************/
28 |
29 |
30 | module fs_cap#(
31 | parameter integer VIDEO_ENABLE = 1
32 | )
33 | (
34 | input I_clk,
35 | input I_rstn,
36 | input I_vs,
37 | output reg O_fs_cap
38 | );
39 |
40 | //----CH0_CNT_FS�źŵ�ƽ���� ʵ�ʾ��Dz���VS�ź�----------------
41 | reg[4:0]CNT_FS = 6'b0;
42 | reg[4:0]CNT_FS_n = 6'b0;
43 | reg FS = 1'b0;
44 | (* ASYNC_REG = "TRUE" *) reg vs_i_r1;
45 | (* ASYNC_REG = "TRUE" *) reg vs_i_r2;
46 | (* ASYNC_REG = "TRUE" *) reg vs_i_r3;
47 | (* ASYNC_REG = "TRUE" *) reg vs_i_r4;
48 | //----ͬ�����ε�·��֮ǰ����û�����ε�·�������Dzɼ�vs����-----
49 | always@(posedge I_clk) begin
50 | vs_i_r1 <= I_vs;
51 | vs_i_r2 <= vs_i_r1;
52 | vs_i_r3 <= vs_i_r2;
53 | vs_i_r4 <= vs_i_r3;
54 | end
55 |
56 | always@(posedge I_clk) begin
57 | if(!I_rstn)begin
58 | O_fs_cap <= 1'd0;
59 | end
60 | else if(VIDEO_ENABLE == 1)begin
61 | if({vs_i_r4,vs_i_r3} == 2'b01)begin
62 | O_fs_cap <= 1'b1;
63 | end
64 | else begin
65 | O_fs_cap <= 1'b0;
66 | end
67 | end
68 | else begin
69 | O_fs_cap <= vs_i_r4;
70 | end
71 | end
72 |
73 | endmodule
74 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/ram_rd_buf/ram_rd_buf.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SYNC
5 | SET
6 | ASYNC
7 | SYNC
8 | SET
9 | ASYNC
10 | ASYNC
11 | DISABLE
12 | DISABLE
13 | DISABLE
14 | DISABLE
15 | DISABLE
16 |
17 |
18 | NONE
19 |
20 |
21 | PH1A90SBG484
22 | PH1_LOGIC_ERAM
23 | true
24 | ram_rd_buf
25 |
26 |
27 | none
28 | NO
29 | NO
30 |
31 |
32 | 20K
33 |
34 |
35 | PDPW
36 |
37 |
38 | 1024
39 | disable
40 | enable
41 | NORMAL
42 | None
43 | 16
44 |
45 |
46 | 1024
47 | disable
48 | NORMAL
49 | None
50 | 16
51 |
52 |
53 | ram_rd_buf.vhd
54 | ram_rd_buf.v
55 |
56 |
57 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/ram_rd_buf/ram_rd_buf.v:
--------------------------------------------------------------------------------
1 | /************************************************************\
2 | ** Copyright (c) 2012-2024 Anlogic Inc.
3 | ** All Right Reserved.\
4 | \************************************************************/
5 | /************************************************************\
6 | ** Log : This file is generated by Anlogic IP Generator.
7 | ** File : C:/HIT/personal_learn/open_source/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/ram_rd_buf/ram_rd_buf.v
8 | ** Date : 2025 01 15
9 | ** TD version : 6.0.117864
10 | \************************************************************/
11 |
12 | `timescale 1ns / 1ps
13 |
14 | module ram_rd_buf (
15 | dia, addra, clka, wea,
16 | dob, addrb, clkb
17 | );
18 |
19 |
20 | parameter DATA_WIDTH_A = 16;
21 | parameter ADDR_WIDTH_A = 10;
22 | parameter DATA_DEPTH_A = 1024;
23 | parameter DATA_WIDTH_B = 16;
24 | parameter ADDR_WIDTH_B = 10;
25 | parameter DATA_DEPTH_B = 1024;
26 | parameter REGMODE_A = "NOREG";
27 | parameter REGMODE_B = "NOREG";
28 | parameter WRITEMODE_A = "NORMAL";
29 | parameter WRITEMODE_B = "NORMAL";
30 | parameter RESETMODE_A = "ASYNC";
31 | parameter RESETMODE_B = "ASYNC";
32 |
33 | output [DATA_WIDTH_B-1:0] dob;
34 |
35 |
36 | input [DATA_WIDTH_A-1:0] dia;
37 | input [ADDR_WIDTH_A-1:0] addra;
38 | input [ADDR_WIDTH_B-1:0] addrb;
39 | input wea;
40 | input clka;
41 | input clkb;
42 |
43 |
44 |
45 | PH1_LOGIC_ERAM #( .DATA_WIDTH_A(DATA_WIDTH_A),
46 | .DATA_WIDTH_B(DATA_WIDTH_B),
47 | .ADDR_WIDTH_A(ADDR_WIDTH_A),
48 | .ADDR_WIDTH_B(ADDR_WIDTH_B),
49 | .DATA_DEPTH_A(DATA_DEPTH_A),
50 | .DATA_DEPTH_B(DATA_DEPTH_B),
51 | .MODE("PDPW"),
52 | .REGMODE_A(REGMODE_A),
53 | .REGMODE_B(REGMODE_B),
54 | .WRITEMODE_A(WRITEMODE_A),
55 | .WRITEMODE_B(WRITEMODE_B),
56 | .IMPLEMENT("20K"),
57 | .ECC_ENCODE("DISABLE"),
58 | .ECC_DECODE("DISABLE"),
59 | .CLKMODE("ASYNC"),
60 | .SSROVERCE("DISABLE"),
61 | .OREGSET_A("SET"),
62 | .OREGSET_B("SET"),
63 | .RESETMODE_A(RESETMODE_A),
64 | .RESETMODE_B(RESETMODE_B),
65 | .ASYNC_RESET_RELEASE_A("SYNC"),
66 | .ASYNC_RESET_RELEASE_B("SYNC"),
67 | .INIT_FILE("NONE"),
68 | .FILL_ALL("NONE"))
69 | inst(
70 | .dia(dia),
71 | .dib({16{1'b0}}),
72 | .addra(addra),
73 | .addrb(addrb),
74 | .cea(1'b1),
75 | .ceb(1'b1),
76 | .ocea(1'b0),
77 | .oceb(1'b0),
78 | .clka(clka),
79 | .clkb(clkb),
80 | .wea(wea),
81 | .web(1'b0),
82 | .bea(1'b0),
83 | .beb(1'b0),
84 | .rsta(1'b0),
85 | .rstb(1'b0),
86 | .ecc_sbiterr(),
87 | .ecc_dbiterr(),
88 | .ecc_sbiterrinj('d0),
89 | .ecc_dbiterrinj('d0),
90 | .doa(),
91 | .dob(dob));
92 |
93 |
94 | endmodule
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/ram_rd_buf/ram_rd_buf.vhd:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------------
2 | -- Copyright (c) 2012-2024 Anlogic Inc. -- All Right Reserved.
3 | --------------------------------------------------------------
4 | -- Log : This file is generated by Anlogic IP Generator.
5 | -- File : C:/HIT/personal_learn/open_source/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/ram_rd_buf/ram_rd_buf.vhd
6 | -- Date : 2025 01 15
7 | -- TD version : 6.0.117864
8 | --------------------------------------------------------------
9 |
10 | LIBRARY ieee;
11 | USE work.ALL;
12 | USE ieee.std_logic_1164.all;
13 | LIBRARY ph1_macro;
14 | USE ph1_macro.PH1_COMPONENTS.all;
15 |
16 | ENTITY ram_rd_buf IS
17 | PORT (
18 | dob : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
19 |
20 | dia : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
21 | addra : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
22 | wea : IN STD_LOGIC;
23 | clka : IN STD_LOGIC;
24 | addrb : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
25 | clkb : IN STD_LOGIC
26 | );
27 | END ram_rd_buf;
28 |
29 | ARCHITECTURE struct OF ram_rd_buf IS
30 |
31 | BEGIN
32 | inst : PH1_LOGIC_ERAM
33 | GENERIC MAP (
34 | DATA_WIDTH_A => 16,
35 | DATA_WIDTH_B => 16,
36 | ADDR_WIDTH_A => 10,
37 | ADDR_WIDTH_B => 10,
38 | DATA_DEPTH_A => 1024,
39 | DATA_DEPTH_B => 1024,
40 | MODE => "PDPW",
41 | REGMODE_A => "NOREG",
42 | REGMODE_B => "NOREG",
43 | WRITEMODE_A => "NORMAL",
44 | WRITEMODE_B => "NORMAL",
45 | IMPLEMENT => "20K",
46 | CLKMODE => "ASYNC",
47 | ECC_ENCODE => "DISABLE",
48 | ECC_DECODE => "DISABLE",
49 | SSROVERCE => "DISABLE",
50 | OREGSET_A => "SET",
51 | OREGSET_B => "SET",
52 | RESETMODE_A => "ASYNC",
53 | RESETMODE_B => "ASYNC",
54 | ASYNC_RESET_RELEASE_A => "SYNC",
55 | ASYNC_RESET_RELEASE_B => "SYNC",
56 | INIT_FILE => "NONE",
57 | FILL_ALL => "NONE"
58 | )
59 | PORT MAP (
60 | dia => dia,
61 | dib => (others=>'0'),
62 | addra => addra,
63 | addrb => addrb,
64 | cea => '1',
65 | ceb => '1',
66 | clka => clka,
67 | clkb => clkb,
68 | wea => wea,
69 | web => '0',
70 | bea => (others=>'0'),
71 | beb => (others=>'0'),
72 | ocea => '0',
73 | oceb => '0',
74 | rsta => '0',
75 | rstb => '0',
76 | ecc_sbiterr => OPEN,
77 | ecc_dbiterr => OPEN,
78 | ecc_sbiterrinj => OPEN,
79 | ecc_dbiterrinj => OPEN,
80 | doa => OPEN,
81 | dob => dob
82 | );
83 |
84 | END struct;
85 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 253
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 2048
11 | 32
12 | Enable
13 | 256
14 | 256
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | rfifo
22 |
23 |
24 | rfifo.v
25 | rfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/rfifo/rfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/uidbuf.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/uidbuf.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/uidbuf_only_r_rotate_180.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/uidbuf_only_r_rotate_180.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.ipc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2
5 | 2045
6 | ASYNC
7 | EMB20K(Area Opt)
8 | Disable
9 | ERAM
10 | 256
11 | 256
12 | Enable
13 | 2048
14 | 32
15 |
16 |
17 | PH1A90SBG484
18 | PH1_Soft_FIFO
19 | 1.1
20 | false
21 | wfifo
22 |
23 |
24 | wfifo.v
25 | wfifo.tcl
26 |
27 |
28 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uifdmadbuf/wfifo/wfifo.tcl:
--------------------------------------------------------------------------------
1 | set clkw [get_clocks -nowarn -of [get_ports {clkw}]]
2 | set clkr [get_clocks -nowarn -of [get_ports {clkr}]]
3 |
4 | set wr_clk_period [get_property -nowarn -max PERIOD $clkw]
5 | set rd_clk_period [get_property -nowarn -max PERIOD $clkr]
6 |
7 | set dly_sly_slack 0.3
8 |
9 | if { $clkw =="" } {
10 | set wr_clk_period 1000
11 | }
12 |
13 | if { $clkr =="" } {
14 | set rd_clk_period 1001
15 | }
16 |
17 | set_max_delay -from [get_regs {rd_to_wr_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {rd_to_wr_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
18 | set_max_delay -from [get_regs {wr_to_rd_cross_inst/primary_addr_gray_reg[*]}] -to [get_regs {wr_to_rd_cross_inst/sync_r1[*]}] [expr min($wr_clk_period,$rd_clk_period) - $dly_sly_slack] -datapath_only
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/uisetvbuf/uisetvbuf.v:
--------------------------------------------------------------------------------
1 |
2 | /*******************************MILIANKE*******************************
3 | *Company : MiLianKe Electronic Technology Co., Ltd.
4 | *WebSite:https://www.milianke.com
5 | *TechWeb:https://www.uisrc.com
6 | *tmall-shop:https://milianke.tmall.com
7 | *jd-shop:https://milianke.jd.com
8 | *taobao-shop1: https://milianke.taobao.com
9 | *Create Date: 2023/03/23
10 | *Module Name:
11 | *File Name:
12 | *Description:
13 | *The reference demo provided by Milianke is only used for learning.
14 | *We cannot ensure that the demo itself is free of bugs, so users
15 | *should be responsible for the technical problems and consequences
16 | *caused by the use of their own products.
17 | *Copyright: Copyright (c) MiLianKe
18 | *All rights reserved.
19 | *Revision: 1.1
20 | *Signal description
21 | *1) I_ input
22 | *2) O_ output
23 | *3) IO_ input output
24 | *3) S_ system internal signal
25 | *3) _n activ low
26 | *4) _dg debug signal
27 | *5) _r delay or register
28 | *6) _s state mechine
29 | *********************************************************************/
30 | `timescale 1ns / 1ps
31 |
32 | module uisetvbuf#(
33 | parameter integer BUF_DELAY = 1,
34 | parameter integer BUF_LENTH = 3
35 | )
36 | (
37 |
38 | input [7 :0] I_bufn,
39 | output [7 :0] O_bufn
40 | );
41 |
42 |
43 |
44 | assign O_bufn = I_bufn < BUF_DELAY? (BUF_LENTH - BUF_DELAY + I_bufn) : (I_bufn - BUF_DELAY) ;
45 |
46 |
47 | endmodule
48 |
49 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/vtc/uivtc_video_rotate_180.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BIT-stream-lab/Multifunctional-video-processing-platform/b01bcea79822adce747f9ced7f50d7e213b2ad94/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/vtc/uivtc_video_rotate_180.v
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/width_conversion/rd_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:20
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:20
6 | */
7 |
8 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
9 | module rd_width_convert(
10 | input wire [15:0] I_rd_data,
11 |
12 | output wire [31:0] O_rd_data
13 | );
14 |
15 |
16 | assign O_rd_data ={8'd0,I_rd_data[15:11], 3'd0, I_rd_data[10:5], 2'd0,I_rd_data[4:0], 3'd0} ;
17 |
18 |
19 |
20 | endmodule
21 |
22 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/04_video_rotate_180/user_source/hdl_source/width_conversion/wr_width_convert.v:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: bit_stream
3 | * @Date: 2024-12-07 16:30:27
4 | * @Last Modified by: bit_stream
5 | * @Last Modified time: 2024-12-07 16:30:27
6 | */
7 |
8 |
9 | //此模块的作用是把RGB88格式的数据转换为两个RGB565格式的数据
10 | module wr_width_convert(
11 | input wire [31:0] I_wr_data,
12 |
13 | output wire [15:0] O_wr_data
14 | );
15 |
16 | assign O_wr_data = {I_wr_data[23:19],I_wr_data[15:10],I_wr_data[7:3]};
17 |
18 | endmodule
19 |
20 |
--------------------------------------------------------------------------------
/03_任意角度视频旋转/README.md:
--------------------------------------------------------------------------------
1 | 任意角度视频旋转分为三个部分:180度视频实时旋转,90/270度视频实时旋转,任意角度视频实时旋转。
2 |
3 | 180度视频实时旋转工程文件见04_video_rotate_180文件夹
4 |
5 |
6 |
7 | 移植注意事项
8 |
9 | 1、 在本工程中,为了减少ERAM资源的使用,我们将图像像素点在DDR3中的存储和读取格式设置为RGB565格式,其中每个像素点占用16bit,并将DDR3的数据位宽设置为16bit。由于DDR3的突发传输长度固定为8,每次突发传输8次16bit数据,即总共传输128bit。因此,在进行DDR3存取时,FIFO的读写位宽可以设置为16bit和128bit。与此不同,若将图像像素点的存储格式设置为RGB888格式,每个像素点将占用24bit,并将DDR3的数据位宽设置为32bit。在这种情况下,进行存取时,FIFO的读写位宽将为32bit和256bit,这样会导致ERAM资源消耗的加倍。
10 |
11 | 2、本工程把四路视频源拼接模块输入的视频分辨率为1280×720
12 |
13 |
14 | 关于180度视频实时旋转方案实现讲解,博客地址如下:[FPGA实现视频180度实时旋转](https://blog.csdn.net/weixin_53015183/article/details/145122071?spm=1001.2014.3001.5502)
15 |
16 | 关于90/270度视频旋转方案实现讲解,博客地址如下:[FPGA实现视频90/270度旋转](https://blog.csdn.net/weixin_53015183/article/details/145321324?spm=1001.2014.3001.5502)
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Multifunctional-video-processing-platform
2 | 该作品为2024年FPGA创新设计大赛(上海安路科技赛道)国一作品 (希望大家给点点右上角的 star 呀)
3 | ### (持续更新中...)
4 |
5 | 初赛演示视频:[2024年FPGA创新设计竞赛国一作品,该视频为安路科技赛道初赛视频]( https://www.bilibili.com/video/BV1K8zdYuEAu/?share_source=copy_web&vd_source=d38841530cd28bd68603ca38364bd8a1)
6 |
7 | 该作品由三张板卡级联组成,板卡一和板卡二之间使用HDMI级联,板卡一和板卡三之间使用SFP级联
8 | 板卡一实现了五路数据源的输入(双目摄像头、SD卡、HDMI IN、以太网),3路视频源的输出(HDMI OUT0、HDMI OUT1,SFP)
9 | 板卡二实现了1路视频源的输入(HDMI IN),2路视频源的输出(HDMI OUT、以太网 )
10 | 板卡三实现了3路视频源的输入(SFP、HDMI IN、MIPI摄像头),1路视频源的输出(HDMI OUT)
11 |
12 | 整个系统实现了任意角度视频旋转(三种实现方案)、任意比例视频缩放、任意分辨率JPG图片解码等24种图像处理算法,以及SD卡SDIO模式读取等模块。
13 |
14 | 由于整个系统的功能较多、数据通路较为复杂,我会把每一个比较重要的功能都独立的对应一个工程文件,并且会在博客中给出每个重要的功能的设计思路。
15 | 博客地址:[2024年FPGA大赛(上海安路科技赛道)国一作品分享](https://blog.csdn.net/weixin_53015183/category_12849637.html?spm=1001.2014.3001.5482)
16 |
17 | 更新顺序如下:
18 | 1、四分屏+分屏时视频移动方案实现 (已更新)
19 | 2、分屏/全屏切换实现 (已更新)
20 | 3、视频任意角度旋转方案实现 (已更新180度旋转、90/270旋转)
21 |
22 | 4、视频任意比例缩放方案实现
23 | 5、任意分辨率JPG图片解码实现
24 | 6、以太网传输字符显示实现
25 | 7、SD卡SDIO模式读取实现
26 | .........(未完待续)
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------