-
Notifications
You must be signed in to change notification settings - Fork 79
PLL
Pepijn de Vos edited this page Nov 17, 2024
·
5 revisions
The PLL (Phase-Locked Loop) primitive supports independent adjustment of clock frequency, phase, and duty cycle based on a given reference input clock. It provides seven clock outputs, each of which can be configured separately to suit specific design requirements. The PLL structure diagram is as shown in Figure 5-1.
This device is not yet supported in Apicula
| Port | Size | Direction |
|---|---|---|
| CLKFB | 1 | input |
| CLKFBOUT | 1 | output |
| CLKIN | 1 | input |
| CLKOUT0 | 1 | output |
| CLKOUT1 | 1 | output |
| CLKOUT2 | 1 | output |
| CLKOUT3 | 1 | output |
| CLKOUT4 | 1 | output |
| CLKOUT5 | 1 | output |
| CLKOUT6 | 1 | output |
| DT0 | 4 | input |
| DT1 | 4 | input |
| DT2 | 4 | input |
| DT3 | 4 | input |
| ENCLK0 | 1 | input |
| ENCLK1 | 1 | input |
| ENCLK2 | 1 | input |
| ENCLK3 | 1 | input |
| ENCLK4 | 1 | input |
| ENCLK5 | 1 | input |
| ENCLK6 | 1 | input |
| FBDSEL | 6 | input |
| ICPSEL | 6 | input |
| IDSEL | 6 | input |
| LOCK | 1 | output |
| LPFCAP | 2 | input |
| LPFRES | 3 | input |
| MDSEL | 7 | input |
| MDSEL_FRAC | 3 | input |
| ODSEL0 | 7 | input |
| ODSEL0_FRAC | 3 | input |
| ODSEL1 | 7 | input |
| ODSEL2 | 7 | input |
| ODSEL3 | 7 | input |
| ODSEL4 | 7 | input |
| ODSEL5 | 7 | input |
| ODSEL6 | 7 | input |
| PLLPWD | 1 | input |
| PSDIR | 1 | input |
| PSPULSE | 1 | input |
| PSSEL | 3 | input |
| RESET | 1 | input |
| RESET_I | 1 | input |
| RESET_O | 1 | input |
| SSCMDSEL | 7 | input |
| SSCMDSEL_FRAC | 3 | input |
| SSCON | 1 | input |
| SSCPOL | 1 | input |
| Parameter | Default Value |
|---|---|
| CLK0_IN_SEL | 0 (0b0) |
| CLK0_OUT_SEL | 0 (0b0) |
| CLK1_IN_SEL | 0 (0b0) |
| CLK1_OUT_SEL | 0 (0b0) |
| CLK2_IN_SEL | 0 (0b0) |
| CLK2_OUT_SEL | 0 (0b0) |
| CLK3_IN_SEL | 0 (0b0) |
| CLK3_OUT_SEL | 0 (0b0) |
| CLK4_IN_SEL | 0 (0b00) |
| CLK4_OUT_SEL | 0 (0b0) |
| CLK5_IN_SEL | 0 (0b0) |
| CLK5_OUT_SEL | 0 (0b0) |
| CLK6_IN_SEL | 0 (0b0) |
| CLK6_OUT_SEL | 0 (0b0) |
| CLKFB_SEL | INTERNAL |
| CLKOUT0_DT_DIR | 1 (0b1) |
| CLKOUT0_DT_STEP | 0 (0b00000000000000000000000000000000) |
| CLKOUT0_EN | TRUE |
| CLKOUT0_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT0_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT1_DT_DIR | 1 (0b1) |
| CLKOUT1_DT_STEP | 0 (0b00000000000000000000000000000000) |
| CLKOUT1_EN | FALSE |
| CLKOUT1_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT1_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT2_DT_DIR | 1 (0b1) |
| CLKOUT2_DT_STEP | 0 (0b00000000000000000000000000000000) |
| CLKOUT2_EN | FALSE |
| CLKOUT2_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT2_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT3_DT_DIR | 1 (0b1) |
| CLKOUT3_DT_STEP | 0 (0b00000000000000000000000000000000) |
| CLKOUT3_EN | FALSE |
| CLKOUT3_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT3_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT4_EN | FALSE |
| CLKOUT4_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT4_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT5_EN | FALSE |
| CLKOUT5_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT5_PE_FINE | 0 (0b00000000000000000000000000000000) |
| CLKOUT6_EN | FALSE |
| CLKOUT6_PE_COARSE | 0 (0b00000000000000000000000000000000) |
| CLKOUT6_PE_FINE | 0 (0b00000000000000000000000000000000) |
| DE0_EN | FALSE |
| DE1_EN | FALSE |
| DE2_EN | FALSE |
| DE3_EN | FALSE |
| DE4_EN | FALSE |
| DE5_EN | FALSE |
| DE6_EN | FALSE |
| DYN_DPA_EN | FALSE |
| DYN_DT0_SEL | FALSE |
| DYN_DT1_SEL | FALSE |
| DYN_DT2_SEL | FALSE |
| DYN_DT3_SEL | FALSE |
| DYN_FBDIV_SEL | FALSE |
| DYN_ICP_SEL | FALSE |
| DYN_IDIV_SEL | FALSE |
| DYN_LPF_SEL | FALSE |
| DYN_MDIV_SEL | FALSE |
| DYN_ODIV0_SEL | FALSE |
| DYN_ODIV1_SEL | FALSE |
| DYN_ODIV2_SEL | FALSE |
| DYN_ODIV3_SEL | FALSE |
| DYN_ODIV4_SEL | FALSE |
| DYN_ODIV5_SEL | FALSE |
| DYN_ODIV6_SEL | FALSE |
| DYN_PE0_SEL | FALSE |
| DYN_PE1_SEL | FALSE |
| DYN_PE2_SEL | FALSE |
| DYN_PE3_SEL | FALSE |
| DYN_PE4_SEL | FALSE |
| DYN_PE5_SEL | FALSE |
| DYN_PE6_SEL | FALSE |
| FBDIV_SEL | 1 (0b00000000000000000000000000000001) |
| FCLKIN | 100.0 |
| ICP_SEL | xxxxxx |
| IDIV_SEL | 1 (0b00000000000000000000000000000001) |
| LPF_CAP | 0 (0b00) |
| LPF_RES | xxx |
| MDIV_FRAC_SEL | 0 (0b00000000000000000000000000000000) |
| MDIV_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV0_FRAC_SEL | 0 (0b00000000000000000000000000000000) |
| ODIV0_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV1_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV2_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV3_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV4_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV5_SEL | 8 (0b00000000000000000000000000001000) |
| ODIV6_SEL | 8 (0b00000000000000000000000000001000) |
| RESET_I_EN | FALSE |
| RESET_O_EN | FALSE |
| SSC_EN | FALSE |
PLL #(
.CLK0_IN_SEL(CLK0_IN_SEL),
.CLK0_OUT_SEL(CLK0_OUT_SEL),
.CLK1_IN_SEL(CLK1_IN_SEL),
.CLK1_OUT_SEL(CLK1_OUT_SEL),
.CLK2_IN_SEL(CLK2_IN_SEL),
.CLK2_OUT_SEL(CLK2_OUT_SEL),
.CLK3_IN_SEL(CLK3_IN_SEL),
.CLK3_OUT_SEL(CLK3_OUT_SEL),
.CLK4_IN_SEL(CLK4_IN_SEL),
.CLK4_OUT_SEL(CLK4_OUT_SEL),
.CLK5_IN_SEL(CLK5_IN_SEL),
.CLK5_OUT_SEL(CLK5_OUT_SEL),
.CLK6_IN_SEL(CLK6_IN_SEL),
.CLK6_OUT_SEL(CLK6_OUT_SEL),
.CLKFB_SEL(CLKFB_SEL),
.CLKOUT0_DT_DIR(CLKOUT0_DT_DIR),
.CLKOUT0_DT_STEP(CLKOUT0_DT_STEP),
.CLKOUT0_EN(CLKOUT0_EN),
.CLKOUT0_PE_COARSE(CLKOUT0_PE_COARSE),
.CLKOUT0_PE_FINE(CLKOUT0_PE_FINE),
.CLKOUT1_DT_DIR(CLKOUT1_DT_DIR),
.CLKOUT1_DT_STEP(CLKOUT1_DT_STEP),
.CLKOUT1_EN(CLKOUT1_EN),
.CLKOUT1_PE_COARSE(CLKOUT1_PE_COARSE),
.CLKOUT1_PE_FINE(CLKOUT1_PE_FINE),
.CLKOUT2_DT_DIR(CLKOUT2_DT_DIR),
.CLKOUT2_DT_STEP(CLKOUT2_DT_STEP),
.CLKOUT2_EN(CLKOUT2_EN),
.CLKOUT2_PE_COARSE(CLKOUT2_PE_COARSE),
.CLKOUT2_PE_FINE(CLKOUT2_PE_FINE),
.CLKOUT3_DT_DIR(CLKOUT3_DT_DIR),
.CLKOUT3_DT_STEP(CLKOUT3_DT_STEP),
.CLKOUT3_EN(CLKOUT3_EN),
.CLKOUT3_PE_COARSE(CLKOUT3_PE_COARSE),
.CLKOUT3_PE_FINE(CLKOUT3_PE_FINE),
.CLKOUT4_EN(CLKOUT4_EN),
.CLKOUT4_PE_COARSE(CLKOUT4_PE_COARSE),
.CLKOUT4_PE_FINE(CLKOUT4_PE_FINE),
.CLKOUT5_EN(CLKOUT5_EN),
.CLKOUT5_PE_COARSE(CLKOUT5_PE_COARSE),
.CLKOUT5_PE_FINE(CLKOUT5_PE_FINE),
.CLKOUT6_EN(CLKOUT6_EN),
.CLKOUT6_PE_COARSE(CLKOUT6_PE_COARSE),
.CLKOUT6_PE_FINE(CLKOUT6_PE_FINE),
.DE0_EN(DE0_EN),
.DE1_EN(DE1_EN),
.DE2_EN(DE2_EN),
.DE3_EN(DE3_EN),
.DE4_EN(DE4_EN),
.DE5_EN(DE5_EN),
.DE6_EN(DE6_EN),
.DYN_DPA_EN(DYN_DPA_EN),
.DYN_DT0_SEL(DYN_DT0_SEL),
.DYN_DT1_SEL(DYN_DT1_SEL),
.DYN_DT2_SEL(DYN_DT2_SEL),
.DYN_DT3_SEL(DYN_DT3_SEL),
.DYN_FBDIV_SEL(DYN_FBDIV_SEL),
.DYN_ICP_SEL(DYN_ICP_SEL),
.DYN_IDIV_SEL(DYN_IDIV_SEL),
.DYN_LPF_SEL(DYN_LPF_SEL),
.DYN_MDIV_SEL(DYN_MDIV_SEL),
.DYN_ODIV0_SEL(DYN_ODIV0_SEL),
.DYN_ODIV1_SEL(DYN_ODIV1_SEL),
.DYN_ODIV2_SEL(DYN_ODIV2_SEL),
.DYN_ODIV3_SEL(DYN_ODIV3_SEL),
.DYN_ODIV4_SEL(DYN_ODIV4_SEL),
.DYN_ODIV5_SEL(DYN_ODIV5_SEL),
.DYN_ODIV6_SEL(DYN_ODIV6_SEL),
.DYN_PE0_SEL(DYN_PE0_SEL),
.DYN_PE1_SEL(DYN_PE1_SEL),
.DYN_PE2_SEL(DYN_PE2_SEL),
.DYN_PE3_SEL(DYN_PE3_SEL),
.DYN_PE4_SEL(DYN_PE4_SEL),
.DYN_PE5_SEL(DYN_PE5_SEL),
.DYN_PE6_SEL(DYN_PE6_SEL),
.FBDIV_SEL(FBDIV_SEL),
.FCLKIN(FCLKIN),
.ICP_SEL(ICP_SEL),
.IDIV_SEL(IDIV_SEL),
.LPF_CAP(LPF_CAP),
.LPF_RES(LPF_RES),
.MDIV_FRAC_SEL(MDIV_FRAC_SEL),
.MDIV_SEL(MDIV_SEL),
.ODIV0_FRAC_SEL(ODIV0_FRAC_SEL),
.ODIV0_SEL(ODIV0_SEL),
.ODIV1_SEL(ODIV1_SEL),
.ODIV2_SEL(ODIV2_SEL),
.ODIV3_SEL(ODIV3_SEL),
.ODIV4_SEL(ODIV4_SEL),
.ODIV5_SEL(ODIV5_SEL),
.ODIV6_SEL(ODIV6_SEL),
.RESET_I_EN(RESET_I_EN),
.RESET_O_EN(RESET_O_EN),
.SSC_EN(SSC_EN)
) pll_inst (
.CLKFB(CLKFB),
.CLKFBOUT(CLKFBOUT),
.CLKIN(CLKIN),
.CLKOUT0(CLKOUT0),
.CLKOUT1(CLKOUT1),
.CLKOUT2(CLKOUT2),
.CLKOUT3(CLKOUT3),
.CLKOUT4(CLKOUT4),
.CLKOUT5(CLKOUT5),
.CLKOUT6(CLKOUT6),
.DT0(DT0),
.DT1(DT1),
.DT2(DT2),
.DT3(DT3),
.ENCLK0(ENCLK0),
.ENCLK1(ENCLK1),
.ENCLK2(ENCLK2),
.ENCLK3(ENCLK3),
.ENCLK4(ENCLK4),
.ENCLK5(ENCLK5),
.ENCLK6(ENCLK6),
.FBDSEL(FBDSEL),
.ICPSEL(ICPSEL),
.IDSEL(IDSEL),
.LOCK(LOCK),
.LPFCAP(LPFCAP),
.LPFRES(LPFRES),
.MDSEL(MDSEL),
.MDSEL_FRAC(MDSEL_FRAC),
.ODSEL0(ODSEL0),
.ODSEL0_FRAC(ODSEL0_FRAC),
.ODSEL1(ODSEL1),
.ODSEL2(ODSEL2),
.ODSEL3(ODSEL3),
.ODSEL4(ODSEL4),
.ODSEL5(ODSEL5),
.ODSEL6(ODSEL6),
.PLLPWD(PLLPWD),
.PSDIR(PSDIR),
.PSPULSE(PSPULSE),
.PSSEL(PSSEL),
.RESET(RESET),
.RESET_I(RESET_I),
.RESET_O(RESET_O),
.SSCMDSEL(SSCMDSEL),
.SSCMDSEL_FRAC(SSCMDSEL_FRAC),
.SSCON(SSCON),
.SSCPOL(SSCPOL)
);