├── .gitignore ├── LICENSE ├── Nexys4 ├── Nexys4DDR_Master.xdc └── nexys4ddr_rm.pdf ├── README.md ├── Screenshot ├── install_options_default.jpg ├── install_options_minimal.jpg ├── select_edition.jpg ├── step01.png ├── step02.png ├── step03.png ├── step04.png ├── step05.png ├── step06.png ├── step07.png └── windows_version.jpg ├── install-guide.md ├── instruction └── experiment-instruction.v1.rar ├── lecture └── Verilog编码规范.pdf └── manual └── a-verilog-hdl-primer.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Screenshot/Thumbs.db 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Ryan Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Nexys4/Nexys4DDR_Master.xdc: -------------------------------------------------------------------------------- 1 | ## This file is a general .xdc for the Nexys4 DDR Rev. C 2 | ## To use it in a project: 3 | ## - uncomment the lines corresponding to used pins 4 | ## - rename the used ports (in each line, after get_ports) according to the top level signal names in the project 5 | 6 | ## Clock signal 7 | #set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { CLK100MHZ }]; #IO_L12P_T1_MRCC_35 Sch=clk100mhz 8 | #create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK100MHZ}]; 9 | 10 | 11 | ##Switches 12 | 13 | #set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { SW[0] }]; #IO_L24N_T3_RS0_15 Sch=sw[0] 14 | #set_property -dict { PACKAGE_PIN L16 IOSTANDARD LVCMOS33 } [get_ports { SW[1] }]; #IO_L3N_T0_DQS_EMCCLK_14 Sch=sw[1] 15 | #set_property -dict { PACKAGE_PIN M13 IOSTANDARD LVCMOS33 } [get_ports { SW[2] }]; #IO_L6N_T0_D08_VREF_14 Sch=sw[2] 16 | #set_property -dict { PACKAGE_PIN R15 IOSTANDARD LVCMOS33 } [get_ports { SW[3] }]; #IO_L13N_T2_MRCC_14 Sch=sw[3] 17 | #set_property -dict { PACKAGE_PIN R17 IOSTANDARD LVCMOS33 } [get_ports { SW[4] }]; #IO_L12N_T1_MRCC_14 Sch=sw[4] 18 | #set_property -dict { PACKAGE_PIN T18 IOSTANDARD LVCMOS33 } [get_ports { SW[5] }]; #IO_L7N_T1_D10_14 Sch=sw[5] 19 | #set_property -dict { PACKAGE_PIN U18 IOSTANDARD LVCMOS33 } [get_ports { SW[6] }]; #IO_L17N_T2_A13_D29_14 Sch=sw[6] 20 | #set_property -dict { PACKAGE_PIN R13 IOSTANDARD LVCMOS33 } [get_ports { SW[7] }]; #IO_L5N_T0_D07_14 Sch=sw[7] 21 | #set_property -dict { PACKAGE_PIN T8 IOSTANDARD LVCMOS18 } [get_ports { SW[8] }]; #IO_L24N_T3_34 Sch=sw[8] 22 | #set_property -dict { PACKAGE_PIN U8 IOSTANDARD LVCMOS18 } [get_ports { SW[9] }]; #IO_25_34 Sch=sw[9] 23 | #set_property -dict { PACKAGE_PIN R16 IOSTANDARD LVCMOS33 } [get_ports { SW[10] }]; #IO_L15P_T2_DQS_RDWR_B_14 Sch=sw[10] 24 | #set_property -dict { PACKAGE_PIN T13 IOSTANDARD LVCMOS33 } [get_ports { SW[11] }]; #IO_L23P_T3_A03_D19_14 Sch=sw[11] 25 | #set_property -dict { PACKAGE_PIN H6 IOSTANDARD LVCMOS33 } [get_ports { SW[12] }]; #IO_L24P_T3_35 Sch=sw[12] 26 | #set_property -dict { PACKAGE_PIN U12 IOSTANDARD LVCMOS33 } [get_ports { SW[13] }]; #IO_L20P_T3_A08_D24_14 Sch=sw[13] 27 | #set_property -dict { PACKAGE_PIN U11 IOSTANDARD LVCMOS33 } [get_ports { SW[14] }]; #IO_L19N_T3_A09_D25_VREF_14 Sch=sw[14] 28 | #set_property -dict { PACKAGE_PIN V10 IOSTANDARD LVCMOS33 } [get_ports { SW[15] }]; #IO_L21P_T3_DQS_14 Sch=sw[15] 29 | 30 | 31 | ## LEDs 32 | 33 | #set_property -dict { PACKAGE_PIN H17 IOSTANDARD LVCMOS33 } [get_ports { LED[0] }]; #IO_L18P_T2_A24_15 Sch=led[0] 34 | #set_property -dict { PACKAGE_PIN K15 IOSTANDARD LVCMOS33 } [get_ports { LED[1] }]; #IO_L24P_T3_RS1_15 Sch=led[1] 35 | #set_property -dict { PACKAGE_PIN J13 IOSTANDARD LVCMOS33 } [get_ports { LED[2] }]; #IO_L17N_T2_A25_15 Sch=led[2] 36 | #set_property -dict { PACKAGE_PIN N14 IOSTANDARD LVCMOS33 } [get_ports { LED[3] }]; #IO_L8P_T1_D11_14 Sch=led[3] 37 | #set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports { LED[4] }]; #IO_L7P_T1_D09_14 Sch=led[4] 38 | #set_property -dict { PACKAGE_PIN V17 IOSTANDARD LVCMOS33 } [get_ports { LED[5] }]; #IO_L18N_T2_A11_D27_14 Sch=led[5] 39 | #set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports { LED[6] }]; #IO_L17P_T2_A14_D30_14 Sch=led[6] 40 | #set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports { LED[7] }]; #IO_L18P_T2_A12_D28_14 Sch=led[7] 41 | #set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { LED[8] }]; #IO_L16N_T2_A15_D31_14 Sch=led[8] 42 | #set_property -dict { PACKAGE_PIN T15 IOSTANDARD LVCMOS33 } [get_ports { LED[9] }]; #IO_L14N_T2_SRCC_14 Sch=led[9] 43 | #set_property -dict { PACKAGE_PIN U14 IOSTANDARD LVCMOS33 } [get_ports { LED[10] }]; #IO_L22P_T3_A05_D21_14 Sch=led[10] 44 | #set_property -dict { PACKAGE_PIN T16 IOSTANDARD LVCMOS33 } [get_ports { LED[11] }]; #IO_L15N_T2_DQS_DOUT_CSO_B_14 Sch=led[11] 45 | #set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { LED[12] }]; #IO_L16P_T2_CSI_B_14 Sch=led[12] 46 | #set_property -dict { PACKAGE_PIN V14 IOSTANDARD LVCMOS33 } [get_ports { LED[13] }]; #IO_L22N_T3_A04_D20_14 Sch=led[13] 47 | #set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { LED[14] }]; #IO_L20N_T3_A07_D23_14 Sch=led[14] 48 | #set_property -dict { PACKAGE_PIN V11 IOSTANDARD LVCMOS33 } [get_ports { LED[15] }]; #IO_L21N_T3_DQS_A06_D22_14 Sch=led[15] 49 | 50 | #set_property -dict { PACKAGE_PIN R12 IOSTANDARD LVCMOS33 } [get_ports { LED16_B }]; #IO_L5P_T0_D06_14 Sch=led16_b 51 | #set_property -dict { PACKAGE_PIN M16 IOSTANDARD LVCMOS33 } [get_ports { LED16_G }]; #IO_L10P_T1_D14_14 Sch=led16_g 52 | #set_property -dict { PACKAGE_PIN N15 IOSTANDARD LVCMOS33 } [get_ports { LED16_R }]; #IO_L11P_T1_SRCC_14 Sch=led16_r 53 | #set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { LED17_B }]; #IO_L15N_T2_DQS_ADV_B_15 Sch=led17_b 54 | #set_property -dict { PACKAGE_PIN R11 IOSTANDARD LVCMOS33 } [get_ports { LED17_G }]; #IO_0_14 Sch=led17_g 55 | #set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { LED17_R }]; #IO_L11N_T1_SRCC_14 Sch=led17_r 56 | 57 | 58 | ##7 segment display 59 | 60 | #set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { CA }]; #IO_L24N_T3_A00_D16_14 Sch=ca 61 | #set_property -dict { PACKAGE_PIN R10 IOSTANDARD LVCMOS33 } [get_ports { CB }]; #IO_25_14 Sch=cb 62 | #set_property -dict { PACKAGE_PIN K16 IOSTANDARD LVCMOS33 } [get_ports { CC }]; #IO_25_15 Sch=cc 63 | #set_property -dict { PACKAGE_PIN K13 IOSTANDARD LVCMOS33 } [get_ports { CD }]; #IO_L17P_T2_A26_15 Sch=cd 64 | #set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports { CE }]; #IO_L13P_T2_MRCC_14 Sch=ce 65 | #set_property -dict { PACKAGE_PIN T11 IOSTANDARD LVCMOS33 } [get_ports { CF }]; #IO_L19P_T3_A10_D26_14 Sch=cf 66 | #set_property -dict { PACKAGE_PIN L18 IOSTANDARD LVCMOS33 } [get_ports { CG }]; #IO_L4P_T0_D04_14 Sch=cg 67 | 68 | #set_property -dict { PACKAGE_PIN H15 IOSTANDARD LVCMOS33 } [get_ports { DP }]; #IO_L19N_T3_A21_VREF_15 Sch=dp 69 | 70 | #set_property -dict { PACKAGE_PIN J17 IOSTANDARD LVCMOS33 } [get_ports { AN[0] }]; #IO_L23P_T3_FOE_B_15 Sch=an[0] 71 | #set_property -dict { PACKAGE_PIN J18 IOSTANDARD LVCMOS33 } [get_ports { AN[1] }]; #IO_L23N_T3_FWE_B_15 Sch=an[1] 72 | #set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports { AN[2] }]; #IO_L24P_T3_A01_D17_14 Sch=an[2] 73 | #set_property -dict { PACKAGE_PIN J14 IOSTANDARD LVCMOS33 } [get_ports { AN[3] }]; #IO_L19P_T3_A22_15 Sch=an[3] 74 | #set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { AN[4] }]; #IO_L8N_T1_D12_14 Sch=an[4] 75 | #set_property -dict { PACKAGE_PIN T14 IOSTANDARD LVCMOS33 } [get_ports { AN[5] }]; #IO_L14P_T2_SRCC_14 Sch=an[5] 76 | #set_property -dict { PACKAGE_PIN K2 IOSTANDARD LVCMOS33 } [get_ports { AN[6] }]; #IO_L23P_T3_35 Sch=an[6] 77 | #set_property -dict { PACKAGE_PIN U13 IOSTANDARD LVCMOS33 } [get_ports { AN[7] }]; #IO_L23N_T3_A02_D18_14 Sch=an[7] 78 | 79 | 80 | ##Buttons 81 | 82 | #set_property -dict { PACKAGE_PIN C12 IOSTANDARD LVCMOS33 } [get_ports { CPU_RESETN }]; #IO_L3P_T0_DQS_AD1P_15 Sch=cpu_resetn 83 | 84 | #set_property -dict { PACKAGE_PIN N17 IOSTANDARD LVCMOS33 } [get_ports { BTNC }]; #IO_L9P_T1_DQS_14 Sch=btnc 85 | #set_property -dict { PACKAGE_PIN M18 IOSTANDARD LVCMOS33 } [get_ports { BTNU }]; #IO_L4N_T0_D05_14 Sch=btnu 86 | #set_property -dict { PACKAGE_PIN P17 IOSTANDARD LVCMOS33 } [get_ports { BTNL }]; #IO_L12P_T1_MRCC_14 Sch=btnl 87 | #set_property -dict { PACKAGE_PIN M17 IOSTANDARD LVCMOS33 } [get_ports { BTNR }]; #IO_L10N_T1_D15_14 Sch=btnr 88 | #set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports { BTND }]; #IO_L9N_T1_DQS_D13_14 Sch=btnd 89 | 90 | 91 | ##Pmod Headers 92 | 93 | 94 | ##Pmod Header JA 95 | 96 | #set_property -dict { PACKAGE_PIN C17 IOSTANDARD LVCMOS33 } [get_ports { JA[1] }]; #IO_L20N_T3_A19_15 Sch=ja[1] 97 | #set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { JA[2] }]; #IO_L21N_T3_DQS_A18_15 Sch=ja[2] 98 | #set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports { JA[3] }]; #IO_L21P_T3_DQS_15 Sch=ja[3] 99 | #set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { JA[4] }]; #IO_L18N_T2_A23_15 Sch=ja[4] 100 | #set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports { JA[7] }]; #IO_L16N_T2_A27_15 Sch=ja[7] 101 | #set_property -dict { PACKAGE_PIN E17 IOSTANDARD LVCMOS33 } [get_ports { JA[8] }]; #IO_L16P_T2_A28_15 Sch=ja[8] 102 | #set_property -dict { PACKAGE_PIN F18 IOSTANDARD LVCMOS33 } [get_ports { JA[9] }]; #IO_L22N_T3_A16_15 Sch=ja[9] 103 | #set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports { JA[10] }]; #IO_L22P_T3_A17_15 Sch=ja[10] 104 | 105 | 106 | ##Pmod Header JB 107 | 108 | #set_property -dict { PACKAGE_PIN D14 IOSTANDARD LVCMOS33 } [get_ports { JB[1] }]; #IO_L1P_T0_AD0P_15 Sch=jb[1] 109 | #set_property -dict { PACKAGE_PIN F16 IOSTANDARD LVCMOS33 } [get_ports { JB[2] }]; #IO_L14N_T2_SRCC_15 Sch=jb[2] 110 | #set_property -dict { PACKAGE_PIN G16 IOSTANDARD LVCMOS33 } [get_ports { JB[3] }]; #IO_L13N_T2_MRCC_15 Sch=jb[3] 111 | #set_property -dict { PACKAGE_PIN H14 IOSTANDARD LVCMOS33 } [get_ports { JB[4] }]; #IO_L15P_T2_DQS_15 Sch=jb[4] 112 | #set_property -dict { PACKAGE_PIN E16 IOSTANDARD LVCMOS33 } [get_ports { JB[7] }]; #IO_L11N_T1_SRCC_15 Sch=jb[7] 113 | #set_property -dict { PACKAGE_PIN F13 IOSTANDARD LVCMOS33 } [get_ports { JB[8] }]; #IO_L5P_T0_AD9P_15 Sch=jb[8] 114 | #set_property -dict { PACKAGE_PIN G13 IOSTANDARD LVCMOS33 } [get_ports { JB[9] }]; #IO_0_15 Sch=jb[9] 115 | #set_property -dict { PACKAGE_PIN H16 IOSTANDARD LVCMOS33 } [get_ports { JB[10] }]; #IO_L13P_T2_MRCC_15 Sch=jb[10] 116 | 117 | 118 | ##Pmod Header JC 119 | 120 | #set_property -dict { PACKAGE_PIN K1 IOSTANDARD LVCMOS33 } [get_ports { JC[1] }]; #IO_L23N_T3_35 Sch=jc[1] 121 | #set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS33 } [get_ports { JC[2] }]; #IO_L19N_T3_VREF_35 Sch=jc[2] 122 | #set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS33 } [get_ports { JC[3] }]; #IO_L22N_T3_35 Sch=jc[3] 123 | #set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS33 } [get_ports { JC[4] }]; #IO_L19P_T3_35 Sch=jc[4] 124 | #set_property -dict { PACKAGE_PIN E7 IOSTANDARD LVCMOS33 } [get_ports { JC[7] }]; #IO_L6P_T0_35 Sch=jc[7] 125 | #set_property -dict { PACKAGE_PIN J3 IOSTANDARD LVCMOS33 } [get_ports { JC[8] }]; #IO_L22P_T3_35 Sch=jc[8] 126 | #set_property -dict { PACKAGE_PIN J4 IOSTANDARD LVCMOS33 } [get_ports { JC[9] }]; #IO_L21P_T3_DQS_35 Sch=jc[9] 127 | #set_property -dict { PACKAGE_PIN E6 IOSTANDARD LVCMOS33 } [get_ports { JC[10] }]; #IO_L5P_T0_AD13P_35 Sch=jc[10] 128 | 129 | 130 | ##Pmod Header JD 131 | 132 | #set_property -dict { PACKAGE_PIN H4 IOSTANDARD LVCMOS33 } [get_ports { JD[1] }]; #IO_L21N_T3_DQS_35 Sch=jd[1] 133 | #set_property -dict { PACKAGE_PIN H1 IOSTANDARD LVCMOS33 } [get_ports { JD[2] }]; #IO_L17P_T2_35 Sch=jd[2] 134 | #set_property -dict { PACKAGE_PIN G1 IOSTANDARD LVCMOS33 } [get_ports { JD[3] }]; #IO_L17N_T2_35 Sch=jd[3] 135 | #set_property -dict { PACKAGE_PIN G3 IOSTANDARD LVCMOS33 } [get_ports { JD[4] }]; #IO_L20N_T3_35 Sch=jd[4] 136 | #set_property -dict { PACKAGE_PIN H2 IOSTANDARD LVCMOS33 } [get_ports { JD[7] }]; #IO_L15P_T2_DQS_35 Sch=jd[7] 137 | #set_property -dict { PACKAGE_PIN G4 IOSTANDARD LVCMOS33 } [get_ports { JD[8] }]; #IO_L20P_T3_35 Sch=jd[8] 138 | #set_property -dict { PACKAGE_PIN G2 IOSTANDARD LVCMOS33 } [get_ports { JD[9] }]; #IO_L15N_T2_DQS_35 Sch=jd[9] 139 | #set_property -dict { PACKAGE_PIN F3 IOSTANDARD LVCMOS33 } [get_ports { JD[10] }]; #IO_L13N_T2_MRCC_35 Sch=jd[10] 140 | 141 | 142 | ##Pmod Header JXADC 143 | 144 | #set_property -dict { PACKAGE_PIN A14 IOSTANDARD LVDS } [get_ports { XA_N[1] }]; #IO_L9N_T1_DQS_AD3N_15 Sch=xa_n[1] 145 | #set_property -dict { PACKAGE_PIN A13 IOSTANDARD LVDS } [get_ports { XA_P[1] }]; #IO_L9P_T1_DQS_AD3P_15 Sch=xa_p[1] 146 | #set_property -dict { PACKAGE_PIN A16 IOSTANDARD LVDS } [get_ports { XA_N[2] }]; #IO_L8N_T1_AD10N_15 Sch=xa_n[2] 147 | #set_property -dict { PACKAGE_PIN A15 IOSTANDARD LVDS } [get_ports { XA_P[2] }]; #IO_L8P_T1_AD10P_15 Sch=xa_p[2] 148 | #set_property -dict { PACKAGE_PIN B17 IOSTANDARD LVDS } [get_ports { XA_N[3] }]; #IO_L7N_T1_AD2N_15 Sch=xa_n[3] 149 | #set_property -dict { PACKAGE_PIN B16 IOSTANDARD LVDS } [get_ports { XA_P[3] }]; #IO_L7P_T1_AD2P_15 Sch=xa_p[3] 150 | #set_property -dict { PACKAGE_PIN A18 IOSTANDARD LVDS } [get_ports { XA_N[4] }]; #IO_L10N_T1_AD11N_15 Sch=xa_n[4] 151 | #set_property -dict { PACKAGE_PIN B18 IOSTANDARD LVDS } [get_ports { XA_P[4] }]; #IO_L10P_T1_AD11P_15 Sch=xa_p[4] 152 | 153 | 154 | ##VGA Connector 155 | 156 | #set_property -dict { PACKAGE_PIN A3 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[0] }]; #IO_L8N_T1_AD14N_35 Sch=vga_r[0] 157 | #set_property -dict { PACKAGE_PIN B4 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[1] }]; #IO_L7N_T1_AD6N_35 Sch=vga_r[1] 158 | #set_property -dict { PACKAGE_PIN C5 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[2] }]; #IO_L1N_T0_AD4N_35 Sch=vga_r[2] 159 | #set_property -dict { PACKAGE_PIN A4 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[3] }]; #IO_L8P_T1_AD14P_35 Sch=vga_r[3] 160 | 161 | #set_property -dict { PACKAGE_PIN C6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[0] }]; #IO_L1P_T0_AD4P_35 Sch=vga_g[0] 162 | #set_property -dict { PACKAGE_PIN A5 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[1] }]; #IO_L3N_T0_DQS_AD5N_35 Sch=vga_g[1] 163 | #set_property -dict { PACKAGE_PIN B6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[2] }]; #IO_L2N_T0_AD12N_35 Sch=vga_g[2] 164 | #set_property -dict { PACKAGE_PIN A6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[3] }]; #IO_L3P_T0_DQS_AD5P_35 Sch=vga_g[3] 165 | 166 | #set_property -dict { PACKAGE_PIN B7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[0] }]; #IO_L2P_T0_AD12P_35 Sch=vga_b[0] 167 | #set_property -dict { PACKAGE_PIN C7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[1] }]; #IO_L4N_T0_35 Sch=vga_b[1] 168 | #set_property -dict { PACKAGE_PIN D7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[2] }]; #IO_L6N_T0_VREF_35 Sch=vga_b[2] 169 | #set_property -dict { PACKAGE_PIN D8 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[3] }]; #IO_L4P_T0_35 Sch=vga_b[3] 170 | 171 | #set_property -dict { PACKAGE_PIN B11 IOSTANDARD LVCMOS33 } [get_ports { VGA_HS }]; #IO_L4P_T0_15 Sch=vga_hs 172 | #set_property -dict { PACKAGE_PIN B12 IOSTANDARD LVCMOS33 } [get_ports { VGA_VS }]; #IO_L3N_T0_DQS_AD1N_15 Sch=vga_vs 173 | 174 | 175 | ##Micro SD Connector 176 | 177 | #set_property -dict { PACKAGE_PIN E2 IOSTANDARD LVCMOS33 } [get_ports { SD_RESET }]; #IO_L14P_T2_SRCC_35 Sch=sd_reset 178 | #set_property -dict { PACKAGE_PIN A1 IOSTANDARD LVCMOS33 } [get_ports { SD_CD }]; #IO_L9N_T1_DQS_AD7N_35 Sch=sd_cd 179 | #set_property -dict { PACKAGE_PIN B1 IOSTANDARD LVCMOS33 } [get_ports { SD_SCK }]; #IO_L9P_T1_DQS_AD7P_35 Sch=sd_sck 180 | #set_property -dict { PACKAGE_PIN C1 IOSTANDARD LVCMOS33 } [get_ports { SD_CMD }]; #IO_L16N_T2_35 Sch=sd_cmd 181 | #set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[0] }]; #IO_L16P_T2_35 Sch=sd_dat[0] 182 | #set_property -dict { PACKAGE_PIN E1 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[1] }]; #IO_L18N_T2_35 Sch=sd_dat[1] 183 | #set_property -dict { PACKAGE_PIN F1 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[2] }]; #IO_L18P_T2_35 Sch=sd_dat[2] 184 | #set_property -dict { PACKAGE_PIN D2 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[3] }]; #IO_L14N_T2_SRCC_35 Sch=sd_dat[3] 185 | 186 | 187 | ##Accelerometer 188 | 189 | #set_property -dict { PACKAGE_PIN E15 IOSTANDARD LVCMOS33 } [get_ports { ACL_MISO }]; #IO_L11P_T1_SRCC_15 Sch=acl_miso 190 | #set_property -dict { PACKAGE_PIN F14 IOSTANDARD LVCMOS33 } [get_ports { ACL_MOSI }]; #IO_L5N_T0_AD9N_15 Sch=acl_mosi 191 | #set_property -dict { PACKAGE_PIN F15 IOSTANDARD LVCMOS33 } [get_ports { ACL_SCLK }]; #IO_L14P_T2_SRCC_15 Sch=acl_sclk 192 | #set_property -dict { PACKAGE_PIN D15 IOSTANDARD LVCMOS33 } [get_ports { ACL_CSN }]; #IO_L12P_T1_MRCC_15 Sch=acl_csn 193 | #set_property -dict { PACKAGE_PIN B13 IOSTANDARD LVCMOS33 } [get_ports { ACL_INT[1] }]; #IO_L2P_T0_AD8P_15 Sch=acl_int[1] 194 | #set_property -dict { PACKAGE_PIN C16 IOSTANDARD LVCMOS33 } [get_ports { ACL_INT[2] }]; #IO_L20P_T3_A20_15 Sch=acl_int[2] 195 | 196 | 197 | ##Temperature Sensor 198 | 199 | #set_property -dict { PACKAGE_PIN C14 IOSTANDARD LVCMOS33 } [get_ports { TMP_SCL }]; #IO_L1N_T0_AD0N_15 Sch=tmp_scl 200 | #set_property -dict { PACKAGE_PIN C15 IOSTANDARD LVCMOS33 } [get_ports { TMP_SDA }]; #IO_L12N_T1_MRCC_15 Sch=tmp_sda 201 | #set_property -dict { PACKAGE_PIN D13 IOSTANDARD LVCMOS33 } [get_ports { TMP_INT }]; #IO_L6N_T0_VREF_15 Sch=tmp_int 202 | #set_property -dict { PACKAGE_PIN B14 IOSTANDARD LVCMOS33 } [get_ports { TMP_CT }]; #IO_L2N_T0_AD8N_15 Sch=tmp_ct 203 | 204 | ##Omnidirectional Microphone 205 | 206 | #set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports { M_CLK }]; #IO_25_35 Sch=m_clk 207 | #set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports { M_DATA }]; #IO_L24N_T3_35 Sch=m_data 208 | #set_property -dict { PACKAGE_PIN F5 IOSTANDARD LVCMOS33 } [get_ports { M_LRSEL }]; #IO_0_35 Sch=m_lrsel 209 | 210 | 211 | ##PWM Audio Amplifier 212 | 213 | #set_property -dict { PACKAGE_PIN A11 IOSTANDARD LVCMOS33 } [get_ports { AUD_PWM }]; #IO_L4N_T0_15 Sch=aud_pwm 214 | #set_property -dict { PACKAGE_PIN D12 IOSTANDARD LVCMOS33 } [get_ports { AUD_SD }]; #IO_L6P_T0_15 Sch=aud_sd 215 | 216 | 217 | ##USB-RS232 Interface 218 | 219 | #set_property -dict { PACKAGE_PIN C4 IOSTANDARD LVCMOS33 } [get_ports { UART_TXD_IN }]; #IO_L7P_T1_AD6P_35 Sch=uart_txd_in 220 | #set_property -dict { PACKAGE_PIN D4 IOSTANDARD LVCMOS33 } [get_ports { UART_RXD_OUT }]; #IO_L11N_T1_SRCC_35 Sch=uart_rxd_out 221 | #set_property -dict { PACKAGE_PIN D3 IOSTANDARD LVCMOS33 } [get_ports { UART_CTS }]; #IO_L12N_T1_MRCC_35 Sch=uart_cts 222 | #set_property -dict { PACKAGE_PIN E5 IOSTANDARD LVCMOS33 } [get_ports { UART_RTS }]; #IO_L5N_T0_AD13N_35 Sch=uart_rts 223 | 224 | ##USB HID (PS/2) 225 | 226 | #set_property -dict { PACKAGE_PIN F4 IOSTANDARD LVCMOS33 } [get_ports { PS2_CLK }]; #IO_L13P_T2_MRCC_35 Sch=ps2_clk 227 | #set_property -dict { PACKAGE_PIN B2 IOSTANDARD LVCMOS33 } [get_ports { PS2_DATA }]; #IO_L10N_T1_AD15N_35 Sch=ps2_data 228 | 229 | 230 | ##SMSC Ethernet PHY 231 | 232 | #set_property -dict { PACKAGE_PIN C9 IOSTANDARD LVCMOS33 } [get_ports { ETH_MDC }]; #IO_L11P_T1_SRCC_16 Sch=eth_mdc 233 | #set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports { ETH_MDIO }]; #IO_L14N_T2_SRCC_16 Sch=eth_mdio 234 | #set_property -dict { PACKAGE_PIN B3 IOSTANDARD LVCMOS33 } [get_ports { ETH_RSTN }]; #IO_L10P_T1_AD15P_35 Sch=eth_rstn 235 | #set_property -dict { PACKAGE_PIN D9 IOSTANDARD LVCMOS33 } [get_ports { ETH_CRSDV }]; #IO_L6N_T0_VREF_16 Sch=eth_crsdv 236 | #set_property -dict { PACKAGE_PIN C10 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXERR }]; #IO_L13N_T2_MRCC_16 Sch=eth_rxerr 237 | #set_property -dict { PACKAGE_PIN C11 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXD[0] }]; #IO_L13P_T2_MRCC_16 Sch=eth_rxd[0] 238 | #set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXD[1] }]; #IO_L19N_T3_VREF_16 Sch=eth_rxd[1] 239 | #set_property -dict { PACKAGE_PIN B9 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXEN }]; #IO_L11N_T1_SRCC_16 Sch=eth_txen 240 | #set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXD[0] }]; #IO_L14P_T2_SRCC_16 Sch=eth_txd[0] 241 | #set_property -dict { PACKAGE_PIN A8 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXD[1] }]; #IO_L12N_T1_MRCC_16 Sch=eth_txd[1] 242 | #set_property -dict { PACKAGE_PIN D5 IOSTANDARD LVCMOS33 } [get_ports { ETH_REFCLK }]; #IO_L11P_T1_SRCC_35 Sch=eth_refclk 243 | #set_property -dict { PACKAGE_PIN B8 IOSTANDARD LVCMOS33 } [get_ports { ETH_INTN }]; #IO_L12P_T1_MRCC_16 Sch=eth_intn 244 | 245 | 246 | ##Quad SPI Flash 247 | 248 | #set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[0] }]; #IO_L1P_T0_D00_MOSI_14 Sch=qspi_dq[0] 249 | #set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[1] }]; #IO_L1N_T0_D01_DIN_14 Sch=qspi_dq[1] 250 | #set_property -dict { PACKAGE_PIN L14 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[2] }]; #IO_L2P_T0_D02_14 Sch=qspi_dq[2] 251 | #set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3] 252 | #set_property -dict { PACKAGE_PIN L13 IOSTANDARD LVCMOS33 } [get_ports { QSPI_CSN }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_csn 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | -------------------------------------------------------------------------------- /Nexys4/nexys4ddr_rm.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Nexys4/nexys4ddr_rm.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 华中科技大学计算机学院 Verilog 语言课程 2 | 3 | 这个项目是为华中科技大学计算机学院的 “Verilog 语言” 课程准备的,涵盖了课程须知、实验指南、以及所需要的其它材料。 4 | 5 | ## 目录 6 | 7 | - [课程目标](#课程目标) 8 | - [教材、参考书籍](#教材参考书籍) 9 | - [课件及实验指导书](#课件及实验指导书) 10 | - [实验须知](#实验须知) 11 | + [硬件环境](#硬件环境) 12 | + [软件环境](#软件环境) 13 | + [License](#License) 14 | + [安装Vivado](#安装Vivado) 15 | - [Q&A](#QA) 16 | + [Q:连不上实验板怎么办?](#Q连不上实验板怎么办) 17 | + [Q:安装完毕后,仿真(Simulation)、综合(Synthesis)、实现(Implementation)等功能不能正常运行怎么办?](#Q:安装完毕后,仿真(Simulation)、综合(Synthesis)、实现(Implementation)等功能不能正常运行怎么办?) 18 | 19 | 20 | 21 | ## 课程目标 22 | 23 | - 通过课程的学习,掌握 Verilog HDL 硬件描述语言的语法知识和程序结构 24 | - 掌握应用 Xilinx Vivado 进行 Verilog 程序设计和开发的基本流程和方法 25 | - 建立 Verilog 硬件设计的基本概念,会使用 Verilog 语言描述、设计简单的数字电路 26 | 27 | 28 | 29 | ## 教材、参考书籍 30 | 31 | - 教材:Verilog HDL 入门,第3版([PDF下载](./manual/a-verilog-hdl-primer.pdf)),(美)巴斯克著,夏宇闻、甘伟译,北京航空航天大学出版社,2008. 32 | - 参考书:EDA 技术实用教程 — Verilog 版(第五版),潘松、黄继业,科学出版社,2010. 33 | 34 | 35 | 36 | ## 课件及实验指导书 37 | 38 | 完整课件及实验指导书请在“超星学习通 - Verilog 语言”课程中下载。 39 | 40 | 41 | 42 | ## 教学安排 43 | 44 | | 课次 | 授课类别 | 教学内容 | 课时 | 45 | |:----:|:-------:|---------|------| 46 | | 1 | 理论讲授/实验 | - Verilog HDL 语言简介
- Verilog HDL 语言基础
- Vivado 的使用及设计流程(实验) | 4 学时 | 47 | | 2 | 理论讲授/实验 | - Vivado 的使用及设计流程(实验)
- Verilog HDL 程序设计方法
- 简单组合电路/时序电路设计(实验) | 4 学时 | 48 | | 3 | 实验 | - 简单组合电路/时序电路设计(实验) | 4 学时 | 49 | | 4 | 实验 | - 简单组合电路/时序电路设计(实验) | 4 学时 | 50 | | 5 | 理论讲授/实验 | - 简单数字电路设计
- 数据通路/有限状态机设计(实验) | 4 学时 | 51 | | 6 | 实验 | - 数据通路/有限状态机设计(实验) | 4 学时 | 52 | | 7 | 实验 | - 数据通路/有限状态机设计(实验) | 4 学时 | 53 | | 8 | 实验 | - 数据通路/有限状态机设计(实验)
- educoder.net 实践教学平台练习(实验) | 4 学时 | 54 | 55 | 56 | 57 | ## 实验须知 58 | 59 | **注意:课堂实验时间较短,请大家事先预习,才能更好地在课堂上完成实验** 60 | 61 | ### 硬件环境 62 | 63 | - 实验需用到 DIGILENT 公司的 Nexys4 DDR FPGA Board,请同学自行到 8 楼实验室借用。 64 | - 实验板型号为 Nexy4 DDR,请大家注意领取的实验板型号(在盒子封面以及实验板的中心位置有标识)。 65 | - Nexy4 DDR 的约束文件及手册下载:[Nexys4 DDR 约束文件](./Nexys4/Nexys4DDR_Master.xdc)、[Nexys4 DDR 手册](./Nexys4/nexys4ddr_rm.pdf) 66 | 67 | ### 软件环境 68 | 69 | - 实验室软件环境为:Xilinx Vivado HLx Editions 2015.2(并非 Vivado 的最新版本)。 70 | - 若希望在自己的 PC 上安装 Vivado,可以在 Xilinx 网站下载安装该版本。 71 | - Vivado 只支持 Windows / Linux,并不支持 macOS,macOS 需安装虚拟机。 72 | - 最新版 Vivado 兼容本课程的所有实验,其使用界面与 2015.2 略有不同,适合有兴趣的同学自行摸索。 73 | - 各个版本的 Vivado 均可在“超星学习通 - 资料”中可以下载。 74 | - 也可以使用([Vivado 百度下载](https://pan.baidu.com/s/1ZoIvpsieQuQ3IRlmIStG9A),提取码: xdnn)来加速下载。 75 | 76 | ### License 77 | 78 | - Vivado 2015.2 需要 License 才能正常运行所有功能。 79 | - 用于实验室的 License 文件可以在“超星学习通 - 资料”中下载。 80 | - 安装完毕后,使用“Manage Xilinx License”应用程序中的“Load License - Copy License”功能来安装 License 文件。 81 | 82 | - 从 Vivado 2017.1 版本后,Xilinx 取消了 Webpack 版本的 License: 83 | - Webpack 版本无需 License 即可使用。 84 | - Webpack 版本在功能上没有缺失。 85 | - 相比 HLx 版本,Webpack 版支持的器件较少。 86 | - Webpack 版本包括本课程用到的 Xilinx Artix 7 系列 FPGA,完全满足课程学习的要求。 87 | 88 | ### 安装Vivado 89 | 90 | - 可以使用 Vivado 2020.2 版本,运行速度比较快。 91 | - 可以使用 Vivado 2018.2 版本,该版本的下载大小远远小于 Vivado 2020.2 版本。 92 | - 可以使用 Vivado 2015.2 版本,安装后需使用相应的 License 文件进行激活。 93 | 94 | - 安装过程请参考 [“简明安装指南”](./install-guide.md)。 95 | 96 | 97 | 98 | ## Q&A 99 | 100 | ### Q:连不上实验板怎么办? 101 | 102 | 连不上实验板有以下几种可能性: 103 | 104 | **1. Xilinx USB Cable Driver 挂死。** 105 | 106 | 原因:由于没有按照正确的顺序插拔、开关实验板,可能导致 Xilinx USB Cable Driver 挂死。 107 | 108 | 解决方案: 109 | 110 | - 关闭实验板电源,将实验板从 USB 口拔下。 111 | - 重新启动 PC。 112 | - 将实验板插上,打开实验板电源开关。 113 | - 如还不能正确连接,尝试换一个 USB 接口。 114 | 115 | **2. 没有正确安装 Xilinx USB Cable Driver。** 116 | 117 | 原因:在 Vivado 安装时,没有选中“安装 Xilinx USB Cable Driver”,或没有按照要求:在安装过程中拔下实验板。 118 | 119 | 解决方案: 120 | 121 | - 关闭实验板电源,将实验板从 USB 口拔下。 122 | - 重新启动 PC。 123 | - 单独安装 Xilinx USB Cable Driver,安装过程参考官方文档: 124 | - [“在不全面重新安装 Vivado 设计套件的情况下,是否能够(重新安装)安装 Xilinx USB/Digilent 线缆驱动器?(中文)”](https://china.xilinx.com/support/answers/59128.html) 125 | - 或 [ "Is it possible to (re)install the Xilinx USB/Digilent cable drivers without a full reinstall of Vivado Design Suite? (English)"](https://www.xilinx.com/support/answers/59128.html)。 126 | 127 | ### Q:安装完毕后,仿真(Simulation)、综合(Synthesis)、实现(Implementation)等功能不能正常运行怎么办? 128 | 129 | **1. 检查 Vivado 版本和 License** 130 | 131 | 如果安装的是 Webpack 版,是不需要 License 的;如果安装的是 Design Edition 或 System Edition,则需要 License。建议安装 Webpack 版本。 132 | 133 | **2. 防病毒软件可能会导致安装不正确** 134 | 135 | 360、腾讯电脑管家可能会阻止某些 .bat 文件的运行,阻止修改系统设置,从而导致 Vivado 安装不正确。建议:关闭防病毒软件后,重新安装 Vivado;在运行 Vivado 时,保持防病毒软件关闭。 136 | 137 | -------------------------------------------------------------------------------- /Screenshot/install_options_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/install_options_default.jpg -------------------------------------------------------------------------------- /Screenshot/install_options_minimal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/install_options_minimal.jpg -------------------------------------------------------------------------------- /Screenshot/select_edition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/select_edition.jpg -------------------------------------------------------------------------------- /Screenshot/step01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step01.png -------------------------------------------------------------------------------- /Screenshot/step02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step02.png -------------------------------------------------------------------------------- /Screenshot/step03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step03.png -------------------------------------------------------------------------------- /Screenshot/step04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step04.png -------------------------------------------------------------------------------- /Screenshot/step05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step05.png -------------------------------------------------------------------------------- /Screenshot/step06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step06.png -------------------------------------------------------------------------------- /Screenshot/step07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/step07.png -------------------------------------------------------------------------------- /Screenshot/windows_version.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/Screenshot/windows_version.jpg -------------------------------------------------------------------------------- /install-guide.md: -------------------------------------------------------------------------------- 1 | # Vivado HLx 2020.2 简明安装指南 2 | 3 | 本指南主要针对本课程所需的、基于 Windows 10 的 Vivado 开发环境安装。完整的安装指南请参考:[Xilinx 官方安装指南(中文版)](https://china.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/c_ug973-vivado-release-notes-install-license.pdf)。 4 | 5 | 6 | 7 | ## 操作系统 8 | 9 | **Xilinx 强烈建议大家检查操作系统的版本号!** 10 | 11 | 由于 Vivado 是一个专业软件,和 Office 等大众软件不同,Xilinx 公司并没有在所有的环境下测试软件的兼容性。很多运行问题,均是由于操作系统兼容性引起的。 12 | 13 | 例如:在进行仿真时,出现无法仿真,log 文件显示:“ERROR: [XSIM 43-3410] Failed to compile one of the generated C files.” 错误。[Xilinx 对该问题的官方解决方案](https://forums.xilinx.com/t5/Simulation-and-Verification/ERROR-XSIM-43-3410-Failed-to-compile-one-of-the-generated-C/td-p/713272)就指出:操作系统版本不正确,可能会导致该问题。 14 | 15 | Vivado HLx 2020.2 要求的操作系统版本如下: 16 | - Windows 10 Professional/Enterprise version 1809、1903、1909、2004: 64-bit 17 | 18 | Vivado 2020.2 需要 Windows 10 Professional 1809 x64 版本。非专业版,或子版本号低于 1809 的,可能会出现未知的问题。 19 | 20 | > 由于 Vivado 是专业的工程软件,不像一般软件进行了大量的兼容性测试,因此 Vivado 对安装环境要求比较高。如果安装完毕后运行发生闪退(且没有任何提示),多半是因为和某个软件发生冲突造成的,没有很好的解决方法。建议:在虚拟机中安装 Vivado,来解决闪退的错误。 21 | 22 | 23 | 24 | ### 检查 Windows 10 的版本号 25 | 26 | - 使用快捷键“Win+r”,打开命令窗口。 27 | - 输入“winver”命令,注意红色框内的版本信息。 28 | 29 | ![Windows 版本 —— 注意红色框内的版本信息](./Screenshot/windows_version.jpg) 30 | 31 | 32 | 33 | ## 防病毒软件 34 | 35 | **Xilinx 强烈建议关闭防病毒软件!** 36 | 37 | 由于防病毒软件有时会阻止某些 .bat 文件的运行,阻止修改系统设置,造成 Vivado 安装不完整,导致某些功能不能正常运行,因此**强烈建议:安装前,关闭防病毒软件!** 38 | 39 | 实测: 40 | 41 | - Windows 10 内置的防病毒程序 Defence 无须关闭。 42 | - 360、腾讯电脑管家等,建议关闭。 43 | - Xilinx Unified 2020.2 Installer - Welcome 以红字提示:请关闭防病毒软件。 44 | 45 | ![step01](Screenshot/step01.png) 46 | 47 | 48 | 49 | ## 内存需求 50 | 51 | Vivado 是一个非常消耗内存的应用程序,FPGA 器件规模越大、设计越复杂,需要的内存越大! 52 | 53 | 本课程用到的器件是:Artix-7 系列中的 XC7A100T。根据 [Xilinx 对 Vivado 内存配置的官方建议](https://www.xilinx.com/products/design-tools/vivado/memory.html):对该器件进行设计,所需的空闲内存最小为 2GB,峰值为 3GB。因此,建议在配置了 **8GB** 以上内存的 PC 上安装 Vivado,并保证空闲内存不少于 4GB。 54 | 55 | 56 | 57 | ## Product Select 58 | 59 | - **Xilinx Unified 2020.2** 包含了 Xilinx 的所有开发工具。我们的课程用到的是 **Vivado**。 60 | 61 | ![step02](Screenshot/step02.png) 62 | 63 | - **Xilinx Vivado 2018.2** 只包含 Vivado,没有这一步的选择。 64 | 65 | 66 | 67 | ## 选择 Vivado Edition 68 | 69 | Vivado HLx 共提供了多个不同的 Edition,供用户按照需求自行选择,各个版本的差异参见官方文档 —— [Vivado Design Suite - HLx 版本](https://china.xilinx.com/products/design-tools/vivado.html#buy)。 70 | 71 | 本课程的实验不涉及到复杂器件和高级功能,因此 **Vivado HL WebPACK** 版本就足够了,其优点是: 72 | 73 | - WebPACK 版本可以对 Artix-7 系列 FPGA 进行全流程的设计和仿真。 74 | - WebPACK 版本是 **free** 的,**无需任何 License**。 75 | - WebPACK 版本安装所需硬盘空间最小。 76 | - 本步骤 2020.2 与 2018.2 相同。 77 | 78 | ![step03](./Screenshot/step03.png) 79 | 80 | 81 | 82 | ## Vivado HL WebPACK 安装选项 83 | 84 | 如果希望节省硬盘空间和安装时间,可以使用如下的最小安装选项来完成本课程实验。 85 | 86 | - 2020.2 的选项表 87 | 88 | ![WebPACK 最小安装选项](./Screenshot/step04.png) 89 | 90 | - 2018.2 的选项表 91 | 92 | ![WebPACK 最小安装选项](./Screenshot/install_options_minimal.jpg) 93 | 94 | -------------------------------------------------------------------------------- /instruction/experiment-instruction.v1.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/instruction/experiment-instruction.v1.rar -------------------------------------------------------------------------------- /lecture/Verilog编码规范.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/lecture/Verilog编码规范.pdf -------------------------------------------------------------------------------- /manual/a-verilog-hdl-primer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hustrlee/HUST-Verilog-Course/547ea19d17cc43b3ebc7f2aaf6e163a8493a22db/manual/a-verilog-hdl-primer.pdf --------------------------------------------------------------------------------