fpga: x400: zbx: Add support for XO3 CPLD variant.
The main changes included are: - Variant-dependent pin-out instantiation. - Update clocking scheme in top level file to include XO3 PLL - Add ability to shift outgoing data for the GPIO communication interface with the X410 FPGA. - Include project files required to build the XO3 variant of the ZBX CPLD. - Add build flow for Lattice Diamond designs. - Add ability to build XO3 variant of ZBX CPLD. Original-commit: 2c7813acb21383f302353a1b6cf57f0946fa0b6b
This commit is contained in:
committed by
Wade Fife
parent
27aae37722
commit
a6fc53b4e6
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DiamondModule name="pll" module="pll" VendorName="Lattice Semiconductor Corporation" generator="IPexpress" date="2022 03 03 14:15:50.923" version="5.8" type="Module" synthesis="synplify" source_format="Verilog HDL">
|
||||
<Package>
|
||||
<File name="pll.lpc" type="lpc" modified="2022 03 03 14:15:48.492"/>
|
||||
<File name="pll.v" type="top_level_verilog" modified="2022 03 03 14:15:48.597"/>
|
||||
<File name="pll_tmpl.v" type="template_verilog" modified="2022 03 03 14:15:48.597"/>
|
||||
</Package>
|
||||
</DiamondModule>
|
||||
@@ -0,0 +1,87 @@
|
||||
[Device]
|
||||
Family=machxo3lf
|
||||
PartType=LCMXO3LF-9400C
|
||||
PartName=LCMXO3LF-9400C-6BG256I
|
||||
SpeedGrade=6
|
||||
Package=CABGA256
|
||||
OperatingCondition=IND
|
||||
Status=S
|
||||
|
||||
[IP]
|
||||
VendorName=Lattice Semiconductor Corporation
|
||||
CoreType=LPM
|
||||
CoreStatus=Demo
|
||||
CoreName=PLL
|
||||
CoreRevision=5.8
|
||||
ModuleName=pll
|
||||
SourceFormat=Verilog HDL
|
||||
ParameterFileVersion=1.0
|
||||
Date=03/03/2022
|
||||
Time=14:15:48
|
||||
|
||||
[Parameters]
|
||||
Verilog=1
|
||||
VHDL=0
|
||||
EDIF=1
|
||||
Destination=Synplicity
|
||||
Expression=None
|
||||
Order=None
|
||||
IO=0
|
||||
mode=Frequency
|
||||
CLKI=64
|
||||
CLKI_DIV=1
|
||||
BW=6.139
|
||||
VCO=512.000
|
||||
fb_mode=CLKOP
|
||||
CLKFB_DIV=1
|
||||
FRACN_ENABLE=0
|
||||
FRACN_DIV=0
|
||||
DynamicPhase=STATIC
|
||||
ClkEnable=1
|
||||
Standby=0
|
||||
Enable_sel=0
|
||||
PLLRst=0
|
||||
PLLMRst=0
|
||||
ClkOS2Rst=0
|
||||
ClkOS3Rst=0
|
||||
LockSig=1
|
||||
LockStk=0
|
||||
WBProt=0
|
||||
OPBypass=0
|
||||
OPUseDiv=0
|
||||
CLKOP_DIV=8
|
||||
FREQ_PIN_CLKOP=64
|
||||
OP_Tol=0.0
|
||||
CLKOP_AFREQ=64.000000
|
||||
CLKOP_PHASEADJ=0
|
||||
CLKOP_TRIM_POL=Rising
|
||||
CLKOP_TRIM_DELAY=0
|
||||
EnCLKOS=1
|
||||
OSBypass=0
|
||||
OSUseDiv=0
|
||||
CLKOS_DIV=8
|
||||
FREQ_PIN_CLKOS=64
|
||||
OS_Tol=0.0
|
||||
CLKOS_AFREQ=64.000000
|
||||
CLKOS_PHASEADJ=225
|
||||
CLKOS_TRIM_POL=Rising
|
||||
CLKOS_TRIM_DELAY=0
|
||||
EnCLKOS2=0
|
||||
OS2Bypass=0
|
||||
OS2UseDiv=0
|
||||
CLKOS2_DIV=1
|
||||
FREQ_PIN_CLKOS2=64
|
||||
OS2_Tol=0.0
|
||||
CLKOS2_AFREQ=64.000000
|
||||
CLKOS2_PHASEADJ=225
|
||||
EnCLKOS3=0
|
||||
OS3Bypass=0
|
||||
OS3UseDiv=0
|
||||
CLKOS3_DIV=1
|
||||
FREQ_PIN_CLKOS3=100
|
||||
OS3_Tol=0.0
|
||||
CLKOS3_AFREQ=
|
||||
CLKOS3_PHASEADJ=0
|
||||
|
||||
[Command]
|
||||
cmd_line= -w -n pll -lang verilog -synth synplify -arch xo3c00f -type pll -fin 64 -fclkop 64 -fclkop_tol 0.0 -fclkos 64 -fclkos_tol 0.0 -trimp 0 -phasep 0 -trimp_r -trims 0 -phases 225 -trims_r -phase_cntl STATIC -enable_ports -fb_mode 1 -lock
|
||||
@@ -0,0 +1,100 @@
|
||||
/* Verilog netlist generated by SCUBA Diamond (64-bit) 3.12.0.240.2 */
|
||||
/* Module Version: 5.7 */
|
||||
/* C:\lscc\diamond\3.12\ispfpga\bin\nt64\scuba.exe -w -n pll -lang verilog -synth synplify -arch xo3c00f -type pll -fin 64 -fclkop 64 -fclkop_tol 0.0 -fclkos 64 -fclkos_tol 0.0 -trimp 0 -phasep 0 -trimp_r -trims 0 -phases 225 -trims_r -phase_cntl STATIC -enable_ports -fb_mode 1 -lock */
|
||||
/* Thu Mar 03 14:15:48 2022 */
|
||||
|
||||
|
||||
`timescale 1 ns / 1 ps
|
||||
module pll (CLKI, ENCLKOP, ENCLKOS, CLKOP, CLKOS, LOCK)/* synthesis NGD_DRC_MASK=1 */;
|
||||
input wire CLKI;
|
||||
input wire ENCLKOP;
|
||||
input wire ENCLKOS;
|
||||
output wire CLKOP;
|
||||
output wire CLKOS;
|
||||
output wire LOCK;
|
||||
|
||||
wire CLKOS_t;
|
||||
wire CLKOP_t;
|
||||
wire scuba_vlo;
|
||||
|
||||
VLO scuba_vlo_inst (.Z(scuba_vlo));
|
||||
|
||||
defparam PLLInst_0.DDRST_ENA = "DISABLED" ;
|
||||
defparam PLLInst_0.DCRST_ENA = "DISABLED" ;
|
||||
defparam PLLInst_0.MRST_ENA = "DISABLED" ;
|
||||
defparam PLLInst_0.PLLRST_ENA = "DISABLED" ;
|
||||
defparam PLLInst_0.INTFB_WAKE = "DISABLED" ;
|
||||
defparam PLLInst_0.STDBY_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.DPHASE_SOURCE = "DISABLED" ;
|
||||
defparam PLLInst_0.PLL_USE_WB = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOS3_FPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOS3_CPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOS2_FPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOS2_CPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOS_FPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOS_CPHASE = 12 ;
|
||||
defparam PLLInst_0.CLKOP_FPHASE = 0 ;
|
||||
defparam PLLInst_0.CLKOP_CPHASE = 7 ;
|
||||
defparam PLLInst_0.PLL_LOCK_MODE = 0 ;
|
||||
defparam PLLInst_0.CLKOS_TRIM_DELAY = 0 ;
|
||||
defparam PLLInst_0.CLKOS_TRIM_POL = "RISING" ;
|
||||
defparam PLLInst_0.CLKOP_TRIM_DELAY = 0 ;
|
||||
defparam PLLInst_0.CLKOP_TRIM_POL = "RISING" ;
|
||||
defparam PLLInst_0.FRACN_DIV = 0 ;
|
||||
defparam PLLInst_0.FRACN_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.OUTDIVIDER_MUXD2 = "DIVD" ;
|
||||
defparam PLLInst_0.PREDIVIDER_MUXD1 = 0 ;
|
||||
defparam PLLInst_0.VCO_BYPASS_D0 = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOS3_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.OUTDIVIDER_MUXC2 = "DIVC" ;
|
||||
defparam PLLInst_0.PREDIVIDER_MUXC1 = 0 ;
|
||||
defparam PLLInst_0.VCO_BYPASS_C0 = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOS2_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.OUTDIVIDER_MUXB2 = "DIVB" ;
|
||||
defparam PLLInst_0.PREDIVIDER_MUXB1 = 0 ;
|
||||
defparam PLLInst_0.VCO_BYPASS_B0 = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOS_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.OUTDIVIDER_MUXA2 = "DIVA" ;
|
||||
defparam PLLInst_0.PREDIVIDER_MUXA1 = 0 ;
|
||||
defparam PLLInst_0.VCO_BYPASS_A0 = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOP_ENABLE = "DISABLED" ;
|
||||
defparam PLLInst_0.CLKOS3_DIV = 1 ;
|
||||
defparam PLLInst_0.CLKOS2_DIV = 1 ;
|
||||
defparam PLLInst_0.CLKOS_DIV = 8 ;
|
||||
defparam PLLInst_0.CLKOP_DIV = 8 ;
|
||||
defparam PLLInst_0.CLKFB_DIV = 1 ;
|
||||
defparam PLLInst_0.CLKI_DIV = 1 ;
|
||||
defparam PLLInst_0.FEEDBK_PATH = "CLKOP" ;
|
||||
EHXPLLJ PLLInst_0 (.CLKI(CLKI), .CLKFB(CLKOP_t), .PHASESEL1(scuba_vlo),
|
||||
.PHASESEL0(scuba_vlo), .PHASEDIR(scuba_vlo), .PHASESTEP(scuba_vlo),
|
||||
.LOADREG(scuba_vlo), .STDBY(scuba_vlo), .PLLWAKESYNC(scuba_vlo),
|
||||
.RST(scuba_vlo), .RESETM(scuba_vlo), .RESETC(scuba_vlo), .RESETD(scuba_vlo),
|
||||
.ENCLKOP(ENCLKOP), .ENCLKOS(ENCLKOS), .ENCLKOS2(scuba_vlo), .ENCLKOS3(scuba_vlo),
|
||||
.PLLCLK(scuba_vlo), .PLLRST(scuba_vlo), .PLLSTB(scuba_vlo), .PLLWE(scuba_vlo),
|
||||
.PLLADDR4(scuba_vlo), .PLLADDR3(scuba_vlo), .PLLADDR2(scuba_vlo),
|
||||
.PLLADDR1(scuba_vlo), .PLLADDR0(scuba_vlo), .PLLDATI7(scuba_vlo),
|
||||
.PLLDATI6(scuba_vlo), .PLLDATI5(scuba_vlo), .PLLDATI4(scuba_vlo),
|
||||
.PLLDATI3(scuba_vlo), .PLLDATI2(scuba_vlo), .PLLDATI1(scuba_vlo),
|
||||
.PLLDATI0(scuba_vlo), .CLKOP(CLKOP_t), .CLKOS(CLKOS_t), .CLKOS2(),
|
||||
.CLKOS3(), .LOCK(LOCK), .INTLOCK(), .REFCLK(), .CLKINTFB(), .DPHSRC(),
|
||||
.PLLACK(), .PLLDATO7(), .PLLDATO6(), .PLLDATO5(), .PLLDATO4(), .PLLDATO3(),
|
||||
.PLLDATO2(), .PLLDATO1(), .PLLDATO0())
|
||||
/* synthesis FREQUENCY_PIN_CLKOS="64.000000" */
|
||||
/* synthesis FREQUENCY_PIN_CLKOP="64.000000" */
|
||||
/* synthesis FREQUENCY_PIN_CLKI="64.000000" */
|
||||
/* synthesis ICP_CURRENT="9" */
|
||||
/* synthesis LPF_RESISTOR="72" */;
|
||||
|
||||
assign CLKOS = CLKOS_t;
|
||||
assign CLKOP = CLKOP_t;
|
||||
|
||||
|
||||
// exemplar begin
|
||||
// exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKOS 64.000000
|
||||
// exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKOP 64.000000
|
||||
// exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKI 64.000000
|
||||
// exemplar attribute PLLInst_0 ICP_CURRENT 9
|
||||
// exemplar attribute PLLInst_0 LPF_RESISTOR 72
|
||||
// exemplar end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,7 @@
|
||||
/* Verilog module instantiation template generated by SCUBA Diamond (64-bit) 3.12.0.240.2 */
|
||||
/* Module Version: 5.7 */
|
||||
/* Thu Mar 03 14:15:48 2022 */
|
||||
|
||||
/* parameterized module instance */
|
||||
pll __ (.CLKI( ), .ENCLKOP( ), .ENCLKOS( ), .CLKOP( ), .CLKOS( ),
|
||||
.LOCK( ));
|
||||
Reference in New Issue
Block a user