servant: add AC701 board support

This commit is contained in:
Franck Jullien 2020-09-30 15:24:12 +02:00 committed by Olof Kindgren
parent ed9b774eba
commit 7192fb23e0
3 changed files with 87 additions and 0 deletions

11
data/ac701.xdc Normal file
View file

@ -0,0 +1,11 @@
## Clock signal
set_property IOSTANDARD DIFF_SSTL15 [get_ports sys_clk_p]
set_property PACKAGE_PIN P3 [get_ports sys_clk_n]
set_property PACKAGE_PIN R3 [get_ports sys_clk_p]
set_property IOSTANDARD DIFF_SSTL15 [get_ports sys_clk_n]
create_clock -period 5.000 -name clk_p [get_nets sys_clk_p]
## UART TX
set_property PACKAGE_PIN U19 [get_ports q]
set_property IOSTANDARD LVCMOS18 [get_ports q]

View file

@ -72,6 +72,12 @@ filesets:
- servant/servix.v : {file_type : verilogSource}
- data/arty_a7_35t.xdc : {file_type : xdc}
ac701:
files:
- servant/servix.v : {file_type : verilogSource}
- servant/servant_ac701.v : {file_type : verilogSource}
- data/ac701.xdc : {file_type : xdc}
orangecrab:
files:
- data/orangecrab_r02.lpf : {file_type : LPF}
@ -197,6 +203,14 @@ targets:
vivado: {part : xc7a35ticsg324-1L}
toplevel : servix
ac701:
default_tool: vivado
filesets : [mem_files, soc, ac701]
parameters : [memfile, memsize, frequency=32]
tools:
vivado: {part : xc7a200t-fbg676-2}
toplevel : servant_ac701
orangecrab_r0.2:
default_tool: trellis
description : OrangeCrab R0.2

62
servant/servant_ac701.v Normal file
View file

@ -0,0 +1,62 @@
`default_nettype none
module servant_ac701
(
input wire sys_clk_p,
input wire sys_clk_n,
input wire btn,
output wire q);
parameter frequency = 16;
parameter memfile = "zephyr_hello.hex";
parameter memsize = 8192;
parameter PLL = "NONE";
wire wb_clk;
reg wb_rst;
wire clk;
wire clkfb;
wire locked;
reg locked_r;
IBUFDS ibufds
(
.I (sys_clk_p),
.IB (sys_clk_n),
.O (clk)
);
PLLE2_BASE
#(.BANDWIDTH("OPTIMIZED"),
.CLKFBOUT_MULT(8),
.CLKIN1_PERIOD(5.0), //200MHz
.CLKOUT0_DIVIDE((frequency == 32) ? 50 : 100),
.DIVCLK_DIVIDE(1),
.STARTUP_WAIT("FALSE"))
PLLE2_BASE_inst
(.CLKOUT0(wb_clk),
.CLKOUT1(),
.CLKOUT2(),
.CLKOUT3(),
.CLKOUT4(),
.CLKOUT5(),
.CLKFBOUT(clkfb),
.LOCKED(locked),
.CLKIN1(clk),
.PWRDWN(1'b0),
.RST(1'b0),
.CLKFBIN(clkfb));
always @(posedge wb_clk) begin
locked_r <= locked;
wb_rst <= !locked_r;
end
servant
#(.memfile (memfile),
.memsize (memsize))
servant
(.wb_clk (wb_clk),
.wb_rst (wb_rst),
.q (q));
endmodule