Skip to content
Pepijn de Vos edited this page Nov 17, 2024 · 5 revisions

The PLL (Phase-Locked Loop) primitive in Arora FPGA products provides seven clock outputs, each supporting independent adjustment of clock frequency, phase, and duty cycle based on a given reference input clock. This allows for precise control over the timing signals within the design.

This device is not yet supported in Apicula

Ports

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

Parameters

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

Verilog Instantiation

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)
);
Clone this wiki locally