newStep.v
This commit is contained in:
55
RTL/PLL/femtopll.v
Normal file
55
RTL/PLL/femtopll.v
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* The PLL, that generates the internal clock (high freq) from the
|
||||
* external one (lower freq).
|
||||
* Trying to make something that is portable between different boards
|
||||
* For now, ICEStick, ULX3S, ECP5 evaluation boards, FOMU supported.
|
||||
* WIP: IceFeather
|
||||
*/
|
||||
|
||||
`ifdef BENCH_OR_LINT
|
||||
`define PASSTHROUGH_PLL
|
||||
`endif
|
||||
|
||||
/*
|
||||
`ifdef TANGNANO9K
|
||||
`define PASSTHROUGH_PLL
|
||||
`endif
|
||||
*/
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
`ifdef PASSTHROUGH_PLL
|
||||
module femtoPLL #(
|
||||
parameter freq = 60
|
||||
) (
|
||||
input pclk,
|
||||
output clk
|
||||
);
|
||||
assign clk = pclk;
|
||||
endmodule
|
||||
`else
|
||||
`ifdef ICE_STICK
|
||||
`include "pll_icestick.v"
|
||||
`elsif ICE_BREAKER
|
||||
`include "pll_icebreaker.v"
|
||||
`elsif ICE_FEATHER
|
||||
`include "pll_icefeather.v"
|
||||
`elsif ICE_SUGAR
|
||||
`include "pll_icesugar.v"
|
||||
`elsif ULX3S
|
||||
`include "pll_ulx3s.v"
|
||||
`elsif ECP5_EVN
|
||||
`include "pll_ecp5_evn.v"
|
||||
`elsif FOMU
|
||||
`include "pll_fomu.v"
|
||||
`elsif ARTY
|
||||
`include "pll_arty.v"
|
||||
`elsif CMODA7
|
||||
`include "pll_cmod_a7.v"
|
||||
`elsif TANGNANO9K
|
||||
`include "pll_tangnano9k.v"
|
||||
`elsif PRIMER20K
|
||||
`include "pll_tangprimer20k.v"
|
||||
`endif
|
||||
`endif
|
||||
|
||||
35
RTL/PLL/frequencies.txt
Normal file
35
RTL/PLL/frequencies.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
16
|
||||
20
|
||||
24
|
||||
25
|
||||
30
|
||||
35
|
||||
40
|
||||
45
|
||||
48
|
||||
50
|
||||
55
|
||||
60
|
||||
65
|
||||
66
|
||||
70
|
||||
75
|
||||
80
|
||||
85
|
||||
90
|
||||
95
|
||||
100
|
||||
105
|
||||
110
|
||||
115
|
||||
120
|
||||
125
|
||||
130
|
||||
135
|
||||
140
|
||||
150
|
||||
160
|
||||
170
|
||||
180
|
||||
190
|
||||
200
|
||||
166
RTL/PLL/gen_pll.sh
Executable file
166
RTL/PLL/gen_pll.sh
Executable file
@@ -0,0 +1,166 @@
|
||||
#!/bin/sh
|
||||
# Automatically generates a PLL parameterized by output freq
|
||||
# (instead of cryptic parameters)
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Usage: $0 FPGA_KIND INPUTFREQ" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FPGA_KIND=$1
|
||||
INPUTFREQ=$2
|
||||
|
||||
echo "/* "
|
||||
echo " * Do not edit this file, it was generated by gen_pll.sh"
|
||||
echo " * "
|
||||
echo " * FPGA kind : $1"
|
||||
echo " * Input frequency: $2 MHz"
|
||||
echo " */"
|
||||
|
||||
case $FPGA_KIND in
|
||||
"ICE40")
|
||||
cat << EOF
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_CORE pll (
|
||||
.REFERENCECLK(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
EOF
|
||||
for OUTPUTFREQ in `cat frequencies.txt`
|
||||
do
|
||||
echo " $OUTPUTFREQ: begin"
|
||||
icepll -i $INPUTFREQ -o $OUTPUTFREQ \
|
||||
| egrep "DIVR|DIVF|DIVQ|FILTER_RANGE" \
|
||||
| sed -e 's|[:()]||g' \
|
||||
| awk '{printf(" defparam pll.%s = %s;\n",$1,$3);}'
|
||||
echo " end"
|
||||
done
|
||||
cat <<EOF
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
EOF
|
||||
;;
|
||||
"ECP5")
|
||||
cat << EOF
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
(* ICP_CURRENT="12" *) (* LPF_RESISTOR="8" *) (* MFG_ENABLE_FILTEROPAMP="1" *) (* MFG_GMCREF_SEL="2" *)
|
||||
EHXPLLL pll_i (
|
||||
.RST(1'b0),
|
||||
.STDBY(1'b0),
|
||||
.CLKI(pclk),
|
||||
.CLKOP(clk),
|
||||
.CLKFB(clk),
|
||||
.CLKINTFB(),
|
||||
.PHASESEL0(1'b0),
|
||||
.PHASESEL1(1'b0),
|
||||
.PHASEDIR(1'b1),
|
||||
.PHASESTEP(1'b1),
|
||||
.PHASELOADREG(1'b1),
|
||||
.PLLWAKESYNC(1'b0),
|
||||
.ENCLKOP(1'b0)
|
||||
);
|
||||
defparam pll_i.PLLRST_ENA = "DISABLED";
|
||||
defparam pll_i.INTFB_WAKE = "DISABLED";
|
||||
defparam pll_i.STDBY_ENABLE = "DISABLED";
|
||||
defparam pll_i.DPHASE_SOURCE = "DISABLED";
|
||||
defparam pll_i.OUTDIVIDER_MUXA = "DIVA";
|
||||
defparam pll_i.OUTDIVIDER_MUXB = "DIVB";
|
||||
defparam pll_i.OUTDIVIDER_MUXC = "DIVC";
|
||||
defparam pll_i.OUTDIVIDER_MUXD = "DIVD";
|
||||
defparam pll_i.CLKOP_ENABLE = "ENABLED";
|
||||
defparam pll_i.CLKOP_FPHASE = 0;
|
||||
defparam pll_i.FEEDBK_PATH = "CLKOP";
|
||||
generate
|
||||
case(freq)
|
||||
EOF
|
||||
for OUTPUTFREQ in `cat frequencies.txt`
|
||||
do
|
||||
echo " $OUTPUTFREQ: begin"
|
||||
ecppll -i $INPUTFREQ -o $OUTPUTFREQ -f tmp.v > tmp.txt
|
||||
cat tmp.v \
|
||||
| egrep "CLKI_DIV|CLKOP_DIV|CLKOP_CPHASE|CLKFB_DIV" \
|
||||
| sed -e 's|[),.]| |g' -e 's|(|=|g' \
|
||||
| awk '{printf(" defparam pll_i.%s;\n",$1);}'
|
||||
rm -f tmp.v tmp.txt
|
||||
echo " end"
|
||||
done
|
||||
cat <<EOF
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
endmodule
|
||||
EOF
|
||||
;;
|
||||
"GOWIN")
|
||||
cat << EOF
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
rPLL pll_i(
|
||||
.CLKOUTP(),
|
||||
.CLKOUTD(),
|
||||
.CLKOUTD3(),
|
||||
.RESET(1'b0),
|
||||
.RESET_P(1'b0),
|
||||
.CLKFB(1'b0),
|
||||
.FBDSEL(6'b0),
|
||||
.IDSEL(6'b0),
|
||||
.ODSEL(6'b0),
|
||||
.PSDA(4'b0),
|
||||
.DUTYDA(4'b0),
|
||||
.FDLY(4'b0),
|
||||
.CLKIN(pclk),
|
||||
.CLKOUT(clk)
|
||||
);
|
||||
defparam pll_i.FCLKIN="$INPUTFREQ";
|
||||
generate
|
||||
case(freq)
|
||||
EOF
|
||||
for OUTPUTFREQ in `cat frequencies.txt`
|
||||
do
|
||||
echo " $OUTPUTFREQ: begin"
|
||||
gowin_pll -i $INPUTFREQ -o $OUTPUTFREQ -f tmp.v > tmp.txt
|
||||
cat tmp.v \
|
||||
| egrep "IDIV_SEL|FBDIV_SEL|ODIV_SEL" \
|
||||
| sed -e 's|[),.]| |g' -e 's|(|=|g' \
|
||||
| awk '{printf(" defparam pll_i.%s;\n",$1);}'
|
||||
rm -f tmp.v tmp.txt
|
||||
echo " end"
|
||||
done
|
||||
cat <<EOF
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
endmodule
|
||||
EOF
|
||||
;;
|
||||
*)
|
||||
echo FPGA_KIND needs to be one of ICE40,ECP5,GOWIN
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
21
RTL/PLL/gen_plls.sh
Executable file
21
RTL/PLL/gen_plls.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
|
||||
echo Generating PLL for FOMU
|
||||
./gen_pll.sh ICE40 48 > pll_fomu.v
|
||||
|
||||
echo Generating PLL for IceFeather
|
||||
./gen_pll.sh ICE40 12 > pll_icefeather.v
|
||||
|
||||
echo Generating PLL for IceStick
|
||||
./gen_pll.sh ICE40 12 > pll_icestick.v
|
||||
|
||||
echo Generating PLL for IceSugar
|
||||
./gen_pll.sh ICE40 12 > pll_icesugar.v
|
||||
|
||||
echo Generating PLL for ULX3S
|
||||
./gen_pll.sh ECP5 25 > pll_ulx3s.v
|
||||
|
||||
echo Generating PLL for ECP5 evaluation board
|
||||
./gen_pll.sh ECP5 12 > pll_ecp5_evn.v
|
||||
|
||||
echo Generating PLL for tangnano9k
|
||||
./gen_pll.sh GOWIN 27 > pll_tangnano9k.v
|
||||
39
RTL/PLL/pll_arty.v
Normal file
39
RTL/PLL/pll_arty.v
Normal file
@@ -0,0 +1,39 @@
|
||||
module femtoPLL #(
|
||||
parameter freq = 50
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
|
||||
wire clk_feedback;
|
||||
wire clk_internal;
|
||||
|
||||
// .CLKFBOUT_MULT(8)
|
||||
// .CLKOUT0_DIVIDE(8*100/freq)
|
||||
|
||||
PLLE2_ADV #(
|
||||
.BANDWIDTH("OPTIMIZED"), // OPTIMIZED, HIGH, LOW
|
||||
.CLKFBOUT_MULT(freq/5), // Multiply value for all CLKOUT (2-64)
|
||||
.CLKFBOUT_PHASE("0.0"), // Phase offset in degrees of CLKFB, (-360-360)
|
||||
.CLKIN1_PERIOD("10.0"), // Input clock period in ns to ps resolution
|
||||
.CLKOUT0_DIVIDE(20),
|
||||
.CLKOUT0_DUTY_CYCLE("0.5"),
|
||||
.CLKOUT0_PHASE("0.0"),
|
||||
.DIVCLK_DIVIDE(1), // Master division value , (1-56)
|
||||
.REF_JITTER1("0.0"), // Reference input jitter in UI (0.000-0.999)
|
||||
.STARTUP_WAIT("FALSE") // Delayu DONE until PLL Locks, ("TRUE"/"FALSE")
|
||||
) genclock(
|
||||
.CLKOUT0(clk_internal),
|
||||
.CLKFBOUT(clk_feedback), // 1-bit output, feedback clock
|
||||
.CLKIN1(pclk),
|
||||
.PWRDWN(1'b0),
|
||||
.RST(1'b0),
|
||||
.CLKFBIN(clk_feedback) // 1-bit input, feedback clock
|
||||
);
|
||||
|
||||
BUFG bufg(
|
||||
.I(clk_internal),
|
||||
.O(clk)
|
||||
);
|
||||
|
||||
endmodule
|
||||
39
RTL/PLL/pll_cmod_a7.v
Normal file
39
RTL/PLL/pll_cmod_a7.v
Normal file
@@ -0,0 +1,39 @@
|
||||
module femtoPLL #(
|
||||
parameter freq = 50
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
|
||||
wire clk_feedback;
|
||||
wire clk_internal;
|
||||
|
||||
// .CLKFBOUT_MULT(8)
|
||||
// .CLKOUT0_DIVIDE(8*100/freq)
|
||||
|
||||
PLLE2_ADV #(
|
||||
.BANDWIDTH("OPTIMIZED"), // OPTIMIZED, HIGH, LOW
|
||||
.CLKFBOUT_MULT(freq/5), // Multiply value for all CLKOUT (2-64)
|
||||
.CLKFBOUT_PHASE("0.0"), // Phase offset in degrees of CLKFB, (-360-360)
|
||||
.CLKIN1_PERIOD("10.0"), // Input clock period in ns to ps resolution
|
||||
.CLKOUT0_DIVIDE(20),
|
||||
.CLKOUT0_DUTY_CYCLE("0.5"),
|
||||
.CLKOUT0_PHASE("0.0"),
|
||||
.DIVCLK_DIVIDE(1), // Master division value , (1-56)
|
||||
.REF_JITTER1("0.0"), // Reference input jitter in UI (0.000-0.999)
|
||||
.STARTUP_WAIT("FALSE") // Delayu DONE until PLL Locks, ("TRUE"/"FALSE")
|
||||
) genclock(
|
||||
.CLKOUT0(clk_internal),
|
||||
.CLKFBOUT(clk_feedback), // 1-bit output, feedback clock
|
||||
.CLKIN1(pclk),
|
||||
.PWRDWN(1'b0),
|
||||
.RST(1'b0),
|
||||
.CLKFBIN(clk_feedback) // 1-bit input, feedback clock
|
||||
);
|
||||
|
||||
BUFG bufg(
|
||||
.I(clk_internal),
|
||||
.O(clk)
|
||||
);
|
||||
|
||||
endmodule
|
||||
256
RTL/PLL/pll_ecp5_evn.v
Normal file
256
RTL/PLL/pll_ecp5_evn.v
Normal file
@@ -0,0 +1,256 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ECP5
|
||||
* Input frequency: 12 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
(* ICP_CURRENT="12" *) (* LPF_RESISTOR="8" *) (* MFG_ENABLE_FILTEROPAMP="1" *) (* MFG_GMCREF_SEL="2" *)
|
||||
EHXPLLL pll_i (
|
||||
.RST(1'b0),
|
||||
.STDBY(1'b0),
|
||||
.CLKI(pclk),
|
||||
.CLKOP(clk),
|
||||
.CLKFB(clk),
|
||||
.CLKINTFB(),
|
||||
.PHASESEL0(1'b0),
|
||||
.PHASESEL1(1'b0),
|
||||
.PHASEDIR(1'b1),
|
||||
.PHASESTEP(1'b1),
|
||||
.PHASELOADREG(1'b1),
|
||||
.PLLWAKESYNC(1'b0),
|
||||
.ENCLKOP(1'b0)
|
||||
);
|
||||
defparam pll_i.PLLRST_ENA = "DISABLED";
|
||||
defparam pll_i.INTFB_WAKE = "DISABLED";
|
||||
defparam pll_i.STDBY_ENABLE = "DISABLED";
|
||||
defparam pll_i.DPHASE_SOURCE = "DISABLED";
|
||||
defparam pll_i.OUTDIVIDER_MUXA = "DIVA";
|
||||
defparam pll_i.OUTDIVIDER_MUXB = "DIVB";
|
||||
defparam pll_i.OUTDIVIDER_MUXC = "DIVC";
|
||||
defparam pll_i.OUTDIVIDER_MUXD = "DIVD";
|
||||
defparam pll_i.CLKOP_ENABLE = "ENABLED";
|
||||
defparam pll_i.CLKOP_FPHASE = 0;
|
||||
defparam pll_i.FEEDBK_PATH = "CLKOP";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=37;
|
||||
defparam pll_i.CLKOP_CPHASE=18;
|
||||
defparam pll_i.CLKFB_DIV=4;
|
||||
end
|
||||
20: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=30;
|
||||
defparam pll_i.CLKOP_CPHASE=15;
|
||||
defparam pll_i.CLKFB_DIV=5;
|
||||
end
|
||||
24: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=25;
|
||||
defparam pll_i.CLKOP_CPHASE=12;
|
||||
defparam pll_i.CLKFB_DIV=2;
|
||||
end
|
||||
25: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=25;
|
||||
defparam pll_i.CLKOP_CPHASE=12;
|
||||
defparam pll_i.CLKFB_DIV=2;
|
||||
end
|
||||
30: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=20;
|
||||
defparam pll_i.CLKOP_CPHASE=9;
|
||||
defparam pll_i.CLKFB_DIV=5;
|
||||
end
|
||||
35: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=17;
|
||||
defparam pll_i.CLKOP_CPHASE=8;
|
||||
defparam pll_i.CLKFB_DIV=3;
|
||||
end
|
||||
40: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=15;
|
||||
defparam pll_i.CLKOP_CPHASE=7;
|
||||
defparam pll_i.CLKFB_DIV=10;
|
||||
end
|
||||
45: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=14;
|
||||
defparam pll_i.CLKOP_CPHASE=6;
|
||||
defparam pll_i.CLKFB_DIV=11;
|
||||
end
|
||||
48: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=12;
|
||||
defparam pll_i.CLKOP_CPHASE=5;
|
||||
defparam pll_i.CLKFB_DIV=4;
|
||||
end
|
||||
50: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=12;
|
||||
defparam pll_i.CLKOP_CPHASE=5;
|
||||
defparam pll_i.CLKFB_DIV=4;
|
||||
end
|
||||
55: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=11;
|
||||
defparam pll_i.CLKOP_CPHASE=5;
|
||||
defparam pll_i.CLKFB_DIV=9;
|
||||
end
|
||||
60: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=10;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=5;
|
||||
end
|
||||
65: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=11;
|
||||
end
|
||||
66: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=11;
|
||||
end
|
||||
70: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=17;
|
||||
end
|
||||
75: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=8;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=19;
|
||||
end
|
||||
80: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=20;
|
||||
end
|
||||
85: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=7;
|
||||
end
|
||||
90: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=15;
|
||||
end
|
||||
95: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=8;
|
||||
end
|
||||
100: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=25;
|
||||
end
|
||||
105: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=26;
|
||||
end
|
||||
110: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=28;
|
||||
end
|
||||
115: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=29;
|
||||
end
|
||||
120: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=10;
|
||||
end
|
||||
125: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=31;
|
||||
end
|
||||
130: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=32;
|
||||
end
|
||||
135: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=34;
|
||||
end
|
||||
140: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=35;
|
||||
end
|
||||
150: begin
|
||||
defparam pll_i.CLKI_DIV=2;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=25;
|
||||
end
|
||||
160: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=40;
|
||||
end
|
||||
170: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=14;
|
||||
end
|
||||
180: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=15;
|
||||
end
|
||||
190: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=16;
|
||||
end
|
||||
200: begin
|
||||
defparam pll_i.CLKI_DIV=3;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=50;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
endmodule
|
||||
238
RTL/PLL/pll_fomu.v
Normal file
238
RTL/PLL/pll_fomu.v
Normal file
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ICE40
|
||||
* Input frequency: 48 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_CORE pll (
|
||||
.REFERENCECLK(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b110;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
20: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
24: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0001111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
25: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
30: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0010011;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
35: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100010;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
40: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
45: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0001110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
48: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0001111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
50: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
55: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
60: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0010011;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
65: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b1000000;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
66: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0010101;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
70: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
75: begin
|
||||
defparam pll.DIVR = 4'b0001;
|
||||
defparam pll.DIVF = 7'b0011000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b010;
|
||||
end
|
||||
80: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100111;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
85: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
90: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0001110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
95: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
100: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
105: begin
|
||||
defparam pll.DIVR = 4'b0001;
|
||||
defparam pll.DIVF = 7'b0100010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b010;
|
||||
end
|
||||
110: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
115: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b1001100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
120: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0010011;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
125: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b1010010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
130: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b1000000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
135: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b0101100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
140: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100010;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
150: begin
|
||||
defparam pll.DIVR = 4'b0001;
|
||||
defparam pll.DIVF = 7'b0011000;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b010;
|
||||
end
|
||||
160: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0100111;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
170: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
180: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0001110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b100;
|
||||
end
|
||||
190: begin
|
||||
defparam pll.DIVR = 4'b0011;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
200: begin
|
||||
defparam pll.DIVR = 4'b0010;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
202
RTL/PLL/pll_icebreaker.v
Normal file
202
RTL/PLL/pll_icebreaker.v
Normal file
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ICE40
|
||||
* Input frequency: 12 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_PAD pll (
|
||||
.PACKAGEPIN(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010100;
|
||||
defparam pll.DIVQ = 3'b110;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
20: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
24: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
25: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
30: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
35: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
40: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
45: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
48: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
50: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
55: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
60: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
65: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
66: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
70: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
75: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
80: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
85: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
90: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
95: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
100: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
105: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000101;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
110: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
115: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
120: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
125: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
130: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
135: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
140: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
238
RTL/PLL/pll_icefeather.v
Normal file
238
RTL/PLL/pll_icefeather.v
Normal file
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ICE40
|
||||
* Input frequency: 12 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_CORE pll (
|
||||
.REFERENCECLK(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010100;
|
||||
defparam pll.DIVQ = 3'b110;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
20: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
24: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
25: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
30: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
35: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
40: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
45: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
48: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
50: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
55: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
60: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
65: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
66: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
70: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
75: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
80: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
85: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
90: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
95: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
100: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
105: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000101;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
110: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
115: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
120: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
125: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
130: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
135: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
140: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
150: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
160: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
170: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
180: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
190: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
200: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
238
RTL/PLL/pll_icestick.v
Normal file
238
RTL/PLL/pll_icestick.v
Normal file
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ICE40
|
||||
* Input frequency: 12 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_CORE pll (
|
||||
.REFERENCECLK(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010100;
|
||||
defparam pll.DIVQ = 3'b110;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
20: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
24: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
25: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
30: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
35: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
40: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
45: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
48: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
50: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
55: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
60: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
65: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
66: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
70: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
75: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
80: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
85: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
90: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
95: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
100: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
105: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000101;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
110: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
115: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
120: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
125: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
130: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
135: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
140: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
150: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
160: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
170: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
180: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
190: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
200: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
238
RTL/PLL/pll_icesugar.v
Normal file
238
RTL/PLL/pll_icesugar.v
Normal file
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ICE40
|
||||
* Input frequency: 12 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
SB_PLL40_CORE pll (
|
||||
.REFERENCECLK(pclk),
|
||||
.PLLOUTCORE(clk),
|
||||
.RESETB(1'b1),
|
||||
.BYPASS(1'b0)
|
||||
);
|
||||
defparam pll.FEEDBACK_PATH="SIMPLE";
|
||||
defparam pll.PLLOUT_SELECT="GENCLK";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010100;
|
||||
defparam pll.DIVQ = 3'b110;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
20: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
24: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
25: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
30: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b101;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
35: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
40: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
45: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
48: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
50: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
55: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
60: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
65: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
66: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010111;
|
||||
defparam pll.DIVQ = 3'b100;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
70: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
75: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
80: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
85: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
90: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
95: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
100: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
105: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000101;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
110: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001000;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
115: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001100;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
120: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1001111;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
125: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010010;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
130: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1010110;
|
||||
defparam pll.DIVQ = 3'b011;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
135: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
140: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0101110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
150: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110001;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
160: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0110100;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
170: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111000;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
180: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111011;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
190: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b0111110;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
200: begin
|
||||
defparam pll.DIVR = 4'b0000;
|
||||
defparam pll.DIVF = 7'b1000010;
|
||||
defparam pll.DIVQ = 3'b010;
|
||||
defparam pll.FILTER_RANGE = 3'b001;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
211
RTL/PLL/pll_tangnano9k.v
Normal file
211
RTL/PLL/pll_tangnano9k.v
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : GOWIN
|
||||
* Input frequency: 27 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
rPLL pll_i(
|
||||
.CLKOUTP(),
|
||||
.CLKOUTD(),
|
||||
.CLKOUTD3(),
|
||||
.RESET(1'b0),
|
||||
.RESET_P(1'b0),
|
||||
.CLKFB(1'b0),
|
||||
.FBDSEL(6'b0),
|
||||
.IDSEL(6'b0),
|
||||
.ODSEL(6'b0),
|
||||
.PSDA(4'b0),
|
||||
.DUTYDA(4'b0),
|
||||
.FDLY(4'b0),
|
||||
.CLKIN(pclk),
|
||||
.CLKOUT(clk)
|
||||
);
|
||||
defparam pll_i.FCLKIN="27";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=2;
|
||||
defparam pll_i.ODIV_SEL=32;
|
||||
end
|
||||
20: begin
|
||||
defparam pll_i.IDIV_SEL=3;
|
||||
defparam pll_i.FBDIV_SEL=2;
|
||||
defparam pll_i.ODIV_SEL=32;
|
||||
end
|
||||
24: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=7;
|
||||
defparam pll_i.ODIV_SEL=32;
|
||||
end
|
||||
25: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=7;
|
||||
defparam pll_i.ODIV_SEL=32;
|
||||
end
|
||||
30: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=9;
|
||||
defparam pll_i.ODIV_SEL=16;
|
||||
end
|
||||
35: begin
|
||||
defparam pll_i.IDIV_SEL=6;
|
||||
defparam pll_i.FBDIV_SEL=8;
|
||||
defparam pll_i.ODIV_SEL=16;
|
||||
end
|
||||
40: begin
|
||||
defparam pll_i.IDIV_SEL=1;
|
||||
defparam pll_i.FBDIV_SEL=2;
|
||||
defparam pll_i.ODIV_SEL=16;
|
||||
end
|
||||
45: begin
|
||||
defparam pll_i.IDIV_SEL=2;
|
||||
defparam pll_i.FBDIV_SEL=4;
|
||||
defparam pll_i.ODIV_SEL=16;
|
||||
end
|
||||
48: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=15;
|
||||
defparam pll_i.ODIV_SEL=16;
|
||||
end
|
||||
50: begin
|
||||
defparam pll_i.IDIV_SEL=6;
|
||||
defparam pll_i.FBDIV_SEL=12;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
55: begin
|
||||
defparam pll_i.IDIV_SEL=0;
|
||||
defparam pll_i.FBDIV_SEL=1;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
60: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=19;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
65: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=11;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
66: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=21;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
70: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=12;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
75: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=24;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
80: begin
|
||||
defparam pll_i.IDIV_SEL=0;
|
||||
defparam pll_i.FBDIV_SEL=2;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
85: begin
|
||||
defparam pll_i.IDIV_SEL=6;
|
||||
defparam pll_i.FBDIV_SEL=21;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
90: begin
|
||||
defparam pll_i.IDIV_SEL=2;
|
||||
defparam pll_i.FBDIV_SEL=9;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
95: begin
|
||||
defparam pll_i.IDIV_SEL=1;
|
||||
defparam pll_i.FBDIV_SEL=6;
|
||||
defparam pll_i.ODIV_SEL=8;
|
||||
end
|
||||
100: begin
|
||||
defparam pll_i.IDIV_SEL=6;
|
||||
defparam pll_i.FBDIV_SEL=25;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
105: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=34;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
110: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=36;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
115: begin
|
||||
defparam pll_i.IDIV_SEL=3;
|
||||
defparam pll_i.FBDIV_SEL=16;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
120: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=39;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
125: begin
|
||||
defparam pll_i.IDIV_SEL=7;
|
||||
defparam pll_i.FBDIV_SEL=36;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
130: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=23;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
135: begin
|
||||
defparam pll_i.IDIV_SEL=0;
|
||||
defparam pll_i.FBDIV_SEL=4;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
140: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=25;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
150: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=49;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
160: begin
|
||||
defparam pll_i.IDIV_SEL=8;
|
||||
defparam pll_i.FBDIV_SEL=52;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
170: begin
|
||||
defparam pll_i.IDIV_SEL=6;
|
||||
defparam pll_i.FBDIV_SEL=43;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
180: begin
|
||||
defparam pll_i.IDIV_SEL=2;
|
||||
defparam pll_i.FBDIV_SEL=19;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
190: begin
|
||||
defparam pll_i.IDIV_SEL=0;
|
||||
defparam pll_i.FBDIV_SEL=6;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
200: begin
|
||||
defparam pll_i.IDIV_SEL=4;
|
||||
defparam pll_i.FBDIV_SEL=36;
|
||||
defparam pll_i.ODIV_SEL=4;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
endmodule
|
||||
33
RTL/PLL/pll_tangprimer20k.v
Normal file
33
RTL/PLL/pll_tangprimer20k.v
Normal file
@@ -0,0 +1,33 @@
|
||||
module femtoPLL #(
|
||||
parameter freq = 54 // Default to 54 MHz
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
// Tang Primer 20K (GW2A-18) PLL Configuration
|
||||
// Input: 27 MHz
|
||||
// Output: 54 MHz
|
||||
|
||||
rPLL #(
|
||||
.FCLKIN("27"),
|
||||
.DEVICE("GW2A-18"),
|
||||
.IDIV_SEL(0), // Input Divider = 1
|
||||
.FBDIV_SEL(15), // Feedback Divider = 16 (VCO = 27*1*16 = 432 MHz)
|
||||
.ODIV_SEL(8) // Output Divider = 8 (Out = 432/8 = 54 MHz)
|
||||
) pll_i (
|
||||
.CLKOUTP(),
|
||||
.CLKOUTD(),
|
||||
.CLKOUTD3(),
|
||||
.RESET(1'b0),
|
||||
.RESET_P(1'b0),
|
||||
.CLKFB(1'b0),
|
||||
.FBDSEL(6'b0),
|
||||
.IDSEL(6'b0),
|
||||
.ODSEL(6'b0),
|
||||
.PSDA(4'b0),
|
||||
.DUTYDA(4'b0),
|
||||
.FDLY(4'b0),
|
||||
.CLKIN(pclk),
|
||||
.CLKOUT(clk)
|
||||
);
|
||||
endmodule
|
||||
256
RTL/PLL/pll_ulx3s.v
Normal file
256
RTL/PLL/pll_ulx3s.v
Normal file
@@ -0,0 +1,256 @@
|
||||
/*
|
||||
* Do not edit this file, it was generated by gen_pll.sh
|
||||
*
|
||||
* FPGA kind : ECP5
|
||||
* Input frequency: 25 MHz
|
||||
*/
|
||||
|
||||
module femtoPLL #(
|
||||
parameter freq = 40
|
||||
) (
|
||||
input wire pclk,
|
||||
output wire clk
|
||||
);
|
||||
(* ICP_CURRENT="12" *) (* LPF_RESISTOR="8" *) (* MFG_ENABLE_FILTEROPAMP="1" *) (* MFG_GMCREF_SEL="2" *)
|
||||
EHXPLLL pll_i (
|
||||
.RST(1'b0),
|
||||
.STDBY(1'b0),
|
||||
.CLKI(pclk),
|
||||
.CLKOP(clk),
|
||||
.CLKFB(clk),
|
||||
.CLKINTFB(),
|
||||
.PHASESEL0(1'b0),
|
||||
.PHASESEL1(1'b0),
|
||||
.PHASEDIR(1'b1),
|
||||
.PHASESTEP(1'b1),
|
||||
.PHASELOADREG(1'b1),
|
||||
.PLLWAKESYNC(1'b0),
|
||||
.ENCLKOP(1'b0)
|
||||
);
|
||||
defparam pll_i.PLLRST_ENA = "DISABLED";
|
||||
defparam pll_i.INTFB_WAKE = "DISABLED";
|
||||
defparam pll_i.STDBY_ENABLE = "DISABLED";
|
||||
defparam pll_i.DPHASE_SOURCE = "DISABLED";
|
||||
defparam pll_i.OUTDIVIDER_MUXA = "DIVA";
|
||||
defparam pll_i.OUTDIVIDER_MUXB = "DIVB";
|
||||
defparam pll_i.OUTDIVIDER_MUXC = "DIVC";
|
||||
defparam pll_i.OUTDIVIDER_MUXD = "DIVD";
|
||||
defparam pll_i.CLKOP_ENABLE = "ENABLED";
|
||||
defparam pll_i.CLKOP_FPHASE = 0;
|
||||
defparam pll_i.FEEDBK_PATH = "CLKOP";
|
||||
generate
|
||||
case(freq)
|
||||
16: begin
|
||||
defparam pll_i.CLKI_DIV=8;
|
||||
defparam pll_i.CLKOP_DIV=38;
|
||||
defparam pll_i.CLKOP_CPHASE=18;
|
||||
defparam pll_i.CLKFB_DIV=5;
|
||||
end
|
||||
20: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=30;
|
||||
defparam pll_i.CLKOP_CPHASE=15;
|
||||
defparam pll_i.CLKFB_DIV=4;
|
||||
end
|
||||
24: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=24;
|
||||
defparam pll_i.CLKOP_CPHASE=11;
|
||||
defparam pll_i.CLKFB_DIV=1;
|
||||
end
|
||||
25: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=24;
|
||||
defparam pll_i.CLKOP_CPHASE=11;
|
||||
defparam pll_i.CLKFB_DIV=1;
|
||||
end
|
||||
30: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=20;
|
||||
defparam pll_i.CLKOP_CPHASE=9;
|
||||
defparam pll_i.CLKFB_DIV=6;
|
||||
end
|
||||
35: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=17;
|
||||
defparam pll_i.CLKOP_CPHASE=8;
|
||||
defparam pll_i.CLKFB_DIV=7;
|
||||
end
|
||||
40: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=15;
|
||||
defparam pll_i.CLKOP_CPHASE=7;
|
||||
defparam pll_i.CLKFB_DIV=8;
|
||||
end
|
||||
45: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=13;
|
||||
defparam pll_i.CLKOP_CPHASE=6;
|
||||
defparam pll_i.CLKFB_DIV=9;
|
||||
end
|
||||
48: begin
|
||||
defparam pll_i.CLKI_DIV=8;
|
||||
defparam pll_i.CLKOP_DIV=13;
|
||||
defparam pll_i.CLKOP_CPHASE=6;
|
||||
defparam pll_i.CLKFB_DIV=15;
|
||||
end
|
||||
50: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=12;
|
||||
defparam pll_i.CLKOP_CPHASE=5;
|
||||
defparam pll_i.CLKFB_DIV=2;
|
||||
end
|
||||
55: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=11;
|
||||
defparam pll_i.CLKOP_CPHASE=5;
|
||||
defparam pll_i.CLKFB_DIV=11;
|
||||
end
|
||||
60: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=10;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=12;
|
||||
end
|
||||
65: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=13;
|
||||
end
|
||||
66: begin
|
||||
defparam pll_i.CLKI_DIV=8;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=21;
|
||||
end
|
||||
70: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=9;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=14;
|
||||
end
|
||||
75: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=8;
|
||||
defparam pll_i.CLKOP_CPHASE=4;
|
||||
defparam pll_i.CLKFB_DIV=3;
|
||||
end
|
||||
80: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=16;
|
||||
end
|
||||
85: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=17;
|
||||
end
|
||||
90: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=7;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=18;
|
||||
end
|
||||
95: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=3;
|
||||
defparam pll_i.CLKFB_DIV=19;
|
||||
end
|
||||
100: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=4;
|
||||
end
|
||||
105: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=6;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=21;
|
||||
end
|
||||
110: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=22;
|
||||
end
|
||||
115: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=23;
|
||||
end
|
||||
120: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=24;
|
||||
end
|
||||
125: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=5;
|
||||
end
|
||||
130: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=5;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=26;
|
||||
end
|
||||
135: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=27;
|
||||
end
|
||||
140: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=28;
|
||||
end
|
||||
150: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=6;
|
||||
end
|
||||
160: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=2;
|
||||
defparam pll_i.CLKFB_DIV=32;
|
||||
end
|
||||
170: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=4;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=34;
|
||||
end
|
||||
180: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=36;
|
||||
end
|
||||
190: begin
|
||||
defparam pll_i.CLKI_DIV=5;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=38;
|
||||
end
|
||||
200: begin
|
||||
defparam pll_i.CLKI_DIV=1;
|
||||
defparam pll_i.CLKOP_DIV=3;
|
||||
defparam pll_i.CLKOP_CPHASE=1;
|
||||
defparam pll_i.CLKFB_DIV=8;
|
||||
end
|
||||
default: UNKNOWN_FREQUENCY unknown_frequency();
|
||||
endcase
|
||||
endgenerate
|
||||
endmodule
|
||||
Reference in New Issue
Block a user