mirror of
https://github.com/olofk/serv.git
synced 2026-01-11 23:42:50 +00:00
Add ulx3s 85k servant target
This commit is contained in:
parent
b2004f741a
commit
a4eb6c01fe
14
data/ulx3s.lpf
Normal file
14
data/ulx3s.lpf
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
LOCATE COMP "clk" SITE "G2";
|
||||||
|
IOBUF PORT "clk" PULLMODE=NONE IO_TYPE=LVCMOS33;
|
||||||
|
FREQUENCY PORT "clk" 25.000 MHZ;
|
||||||
|
LOCATE COMP "q" SITE "B2";
|
||||||
|
IOBUF PORT "q" PULLMODE=NONE IO_TYPE=LVCMOS33 DRIVE=4;
|
||||||
|
|
||||||
|
LOCATE COMP "btn0" SITE "D6"; # BTN_PWRn (inverted logic)
|
||||||
|
IOBUF PORT "btn0" PULLMODE=UP IO_TYPE=LVCMOS33;
|
||||||
|
|
||||||
|
LOCATE COMP "wifi_gpio0" SITE "L2";
|
||||||
|
IOBUF PORT "wifi_gpio0" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4;
|
||||||
|
|
||||||
|
LOCATE COMP "uart_txd" SITE "L4"; # FPGA transmits to ftdi
|
||||||
|
IOBUF PORT "uart_txd" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4;
|
||||||
19
servant.core
19
servant.core
@ -57,6 +57,13 @@ filesets:
|
|||||||
- servant/servix.v : {file_type : verilogSource}
|
- servant/servix.v : {file_type : verilogSource}
|
||||||
- data/arty_a7_35t.xdc : {file_type : xdc}
|
- data/arty_a7_35t.xdc : {file_type : xdc}
|
||||||
|
|
||||||
|
ulx3s:
|
||||||
|
files:
|
||||||
|
- data/ulx3s.lpf : {file_type : LPF}
|
||||||
|
- servant/ecppll.v : {file_type : verilogSource}
|
||||||
|
- servant/servant_ecp5_clock_gen.v : {file_type : verilogSource}
|
||||||
|
- servant/servant_ecp5.v : {file_type : verilogSource}
|
||||||
|
|
||||||
zcu106:
|
zcu106:
|
||||||
files:
|
files:
|
||||||
- servant/servus_clock_gen.v : {file_type : verilogSource}
|
- servant/servus_clock_gen.v : {file_type : verilogSource}
|
||||||
@ -134,6 +141,18 @@ targets:
|
|||||||
- memsize
|
- memsize
|
||||||
toplevel : servant_tb
|
toplevel : servant_tb
|
||||||
|
|
||||||
|
ulx3s_85:
|
||||||
|
default_tool: diamond
|
||||||
|
description : ULX3S 85k version
|
||||||
|
filesets : [mem_files, soc, ulx3s]
|
||||||
|
parameters : [memfile, memsize]
|
||||||
|
tools:
|
||||||
|
diamond:
|
||||||
|
part : LFE5U-85F-6BG381C
|
||||||
|
trellis:
|
||||||
|
nextpnr_options : [--package, CABGA381, --85k]
|
||||||
|
toplevel: servant_ecp5
|
||||||
|
|
||||||
verilator_tb:
|
verilator_tb:
|
||||||
default_tool: verilator
|
default_tool: verilator
|
||||||
filesets : [soc, servant_tb]
|
filesets : [soc, servant_tb]
|
||||||
|
|||||||
38
servant/ecppll.v
Normal file
38
servant/ecppll.v
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
module pll(input clki,
|
||||||
|
output locked,
|
||||||
|
output clko
|
||||||
|
);
|
||||||
|
wire clkfb;
|
||||||
|
wire clkos;
|
||||||
|
wire clkop;
|
||||||
|
(* ICP_CURRENT="12" *) (* LPF_RESISTOR="8" *) (* MFG_ENABLE_FILTEROPAMP="1" *) (* MFG_GMCREF_SEL="2" *)
|
||||||
|
EHXPLLL #(
|
||||||
|
.PLLRST_ENA("DISABLED"),
|
||||||
|
.INTFB_WAKE("DISABLED"),
|
||||||
|
.STDBY_ENABLE("DISABLED"),
|
||||||
|
.DPHASE_SOURCE("DISABLED"),
|
||||||
|
.CLKOP_FPHASE(0),
|
||||||
|
.CLKOP_CPHASE(18),
|
||||||
|
.OUTDIVIDER_MUXA("DIVA"),
|
||||||
|
.CLKOP_ENABLE("ENABLED"),
|
||||||
|
.CLKOP_DIV(38),
|
||||||
|
.CLKFB_DIV(5),
|
||||||
|
.CLKI_DIV(8),
|
||||||
|
.FEEDBK_PATH("INT_OP")
|
||||||
|
) pll_i (
|
||||||
|
.CLKI(clki),
|
||||||
|
.CLKFB(clkfb),
|
||||||
|
.CLKINTFB(clkfb),
|
||||||
|
.CLKOP(clkop),
|
||||||
|
.RST(1'b0),
|
||||||
|
.STDBY(1'b0),
|
||||||
|
.PHASESEL0(1'b0),
|
||||||
|
.PHASESEL1(1'b0),
|
||||||
|
.PHASEDIR(1'b0),
|
||||||
|
.PHASESTEP(1'b0),
|
||||||
|
.PLLWAKESYNC(1'b0),
|
||||||
|
.ENCLKOP(1'b0),
|
||||||
|
.LOCK(locked)
|
||||||
|
);
|
||||||
|
assign clko = clkop;
|
||||||
|
endmodule
|
||||||
33
servant/servant_ecp5.v
Normal file
33
servant/servant_ecp5.v
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
`default_nettype none
|
||||||
|
module servant_ecp5
|
||||||
|
(
|
||||||
|
input wire clk,
|
||||||
|
input wire btn0,
|
||||||
|
output wire wifi_gpio0,
|
||||||
|
output wire uart_txd,
|
||||||
|
output wire q);
|
||||||
|
|
||||||
|
parameter memfile = "zephyr_hello.hex";
|
||||||
|
parameter memsize = 8192;
|
||||||
|
|
||||||
|
wire wb_clk;
|
||||||
|
wire wb_rst;
|
||||||
|
|
||||||
|
assign wifi_gpio0 = btn0;
|
||||||
|
assign uart_txd = q;
|
||||||
|
|
||||||
|
servant_ecp5_clock_gen clock_gen
|
||||||
|
(.i_clk (clk),
|
||||||
|
.i_rst (!btn0),
|
||||||
|
.o_clk (wb_clk),
|
||||||
|
.o_rst (wb_rst));
|
||||||
|
|
||||||
|
servant
|
||||||
|
#(.memfile (memfile),
|
||||||
|
.memsize (memsize))
|
||||||
|
servant
|
||||||
|
(.wb_clk (wb_clk),
|
||||||
|
.wb_rst (wb_rst),
|
||||||
|
.q (q));
|
||||||
|
|
||||||
|
endmodule
|
||||||
25
servant/servant_ecp5_clock_gen.v
Normal file
25
servant/servant_ecp5_clock_gen.v
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
`default_nettype none
|
||||||
|
module servant_ecp5_clock_gen
|
||||||
|
(
|
||||||
|
input i_clk,
|
||||||
|
input i_rst,
|
||||||
|
output o_clk,
|
||||||
|
output o_rst);
|
||||||
|
|
||||||
|
wire locked;
|
||||||
|
|
||||||
|
reg [1:0] rst_reg;
|
||||||
|
always @(posedge o_clk)
|
||||||
|
if (i_rst)
|
||||||
|
rst_reg <= 2'b11;
|
||||||
|
else
|
||||||
|
rst_reg <= {!locked, rst_reg[1]};
|
||||||
|
|
||||||
|
assign o_rst = rst_reg[0];
|
||||||
|
|
||||||
|
pll pll
|
||||||
|
(.clki (i_clk),
|
||||||
|
.clko (o_clk),
|
||||||
|
.locked (locked));
|
||||||
|
|
||||||
|
endmodule
|
||||||
Loading…
x
Reference in New Issue
Block a user