Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Simple PCIe FMC carrier SPEC
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
50
Issues
50
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Simple PCIe FMC carrier SPEC
Commits
53ddb278
Commit
53ddb278
authored
Jul 10, 2019
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
template_wr: add ddr3 support.
parent
25a56b99
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
481 additions
and
100 deletions
+481
-100
Manifest.py
hdl/golden_wr/syn/Manifest.py
+6
-4
spec_golden_wr.ucf
hdl/golden_wr/top/spec_golden_wr.ucf
+118
-0
spec_golden_wr.vhd
hdl/golden_wr/top/spec_golden_wr.vhd
+61
-3
spec_template_wr.vhd
hdl/template_wr/spec_template_wr.vhd
+296
-93
No files found.
hdl/golden_wr/syn/Manifest.py
View file @
53ddb278
...
...
@@ -12,11 +12,13 @@ syn_top = "spec_golden_wr"
syn_properties
=
[
[
"-generics"
,
"dpram=
\"
3
\"
"
]]
board
=
"spec"
ctrls
=
[
"bank3_64b_32b"
]
modules
=
{
"local"
:
"../top"
,
"git"
:
[
"git://ohwr.org/hdl-core-lib/wr-cores.git::proposed_master"
,
"git://ohwr.org/hdl-core-lib/general-cores.git::proposed_master"
,
"git://ohwr.org/hdl-core-lib/etherbone-core.git::proposed_master"
,
"git://ohwr.org/hdl-core-lib/gn4124-core.git::proposed_master"
]
"git"
:
[
"https://ohwr.org/project/wr-cores.git::proposed_master"
,
"https://ohwr.org/project/general-cores.git::proposed_master"
,
"https://ohwr.org/project/etherbone-core.git::proposed_master"
,
"https://ohwr.org/project/gn4124-core.git::proposed_master"
,
"https://ohwr.org/project/ddr3-sp6-core.git::proposed_master"
]
}
hdl/golden_wr/top/spec_golden_wr.ucf
View file @
53ddb278
...
...
@@ -138,6 +138,83 @@ NET "gn_gpio[1]" IOSTANDARD = "LVCMOS25";
NET "gn_gpio[0]" LOC = AB19;
NET "gn_gpio[0]" IOSTANDARD = "LVCMOS25";
## DDR-3
NET "ddr_rzq_b" LOC = K7;
NET "ddr_we_n_o" LOC = H2;
NET "ddr_udqs_p_b" LOC = V2;
NET "ddr_udqs_n_b" LOC = V1;
NET "ddr_udm_o" LOC = P3;
NET "ddr_reset_n_o" LOC = E3;
NET "ddr_ras_n_o" LOC = M5;
NET "ddr_odt_o" LOC = L6;
NET "ddr_ldqs_p_b" LOC = N3;
NET "ddr_ldqs_n_b" LOC = N1;
NET "ddr_ldm_o" LOC = N4;
NET "ddr_cke_o" LOC = F2;
NET "ddr_ck_p_o" LOC = K4;
NET "ddr_ck_n_o" LOC = K3;
NET "ddr_cas_n_o" LOC = M4;
NET "ddr_dq_b[15]" LOC = Y1;
NET "ddr_dq_b[14]" LOC = Y2;
NET "ddr_dq_b[13]" LOC = W1;
NET "ddr_dq_b[12]" LOC = W3;
NET "ddr_dq_b[11]" LOC = U1;
NET "ddr_dq_b[10]" LOC = U3;
NET "ddr_dq_b[9]" LOC = T1;
NET "ddr_dq_b[8]" LOC = T2;
NET "ddr_dq_b[7]" LOC = M1;
NET "ddr_dq_b[6]" LOC = M2;
NET "ddr_dq_b[5]" LOC = L1;
NET "ddr_dq_b[4]" LOC = L3;
NET "ddr_dq_b[3]" LOC = P1;
NET "ddr_dq_b[2]" LOC = P2;
NET "ddr_dq_b[1]" LOC = R1;
NET "ddr_dq_b[0]" LOC = R3;
NET "ddr_ba_o[2]" LOC = H1;
NET "ddr_ba_o[1]" LOC = J1;
NET "ddr_ba_o[0]" LOC = J3;
NET "ddr_a_o[13]" LOC = J6;
NET "ddr_a_o[12]" LOC = F1;
NET "ddr_a_o[11]" LOC = E1;
NET "ddr_a_o[10]" LOC = J4;
NET "ddr_a_o[9]" LOC = G1;
NET "ddr_a_o[8]" LOC = G3;
NET "ddr_a_o[7]" LOC = K6;
NET "ddr_a_o[6]" LOC = L4;
NET "ddr_a_o[5]" LOC = M3;
NET "ddr_a_o[4]" LOC = H3;
NET "ddr_a_o[3]" LOC = M6;
NET "ddr_a_o[2]" LOC = K5;
NET "ddr_a_o[1]" LOC = K1;
NET "ddr_a_o[0]" LOC = K2;
# DDR IO standards and terminations
NET "ddr_udqs_p_b" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_udqs_n_b" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_ldqs_p_b" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_ldqs_n_b" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_ck_p_o" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_ck_n_o" IOSTANDARD = "DIFF_SSTL15_II";
NET "ddr_rzq_b" IOSTANDARD = "SSTL15_II";
NET "ddr_we_n_o" IOSTANDARD = "SSTL15_II";
NET "ddr_udm_o" IOSTANDARD = "SSTL15_II";
NET "ddr_reset_n_o" IOSTANDARD = "SSTL15_II";
NET "ddr_ras_n_o" IOSTANDARD = "SSTL15_II";
NET "ddr_odt_o" IOSTANDARD = "SSTL15_II";
NET "ddr_ldm_o" IOSTANDARD = "SSTL15_II";
NET "ddr_cke_o" IOSTANDARD = "SSTL15_II";
NET "ddr_cas_n_o" IOSTANDARD = "SSTL15_II";
NET "ddr_dq_b[*]" IOSTANDARD = "SSTL15_II";
NET "ddr_ba_o[*]" IOSTANDARD = "SSTL15_II";
NET "ddr_a_o[*]" IOSTANDARD = "SSTL15_II";
NET "ddr_dq_b[*]" IN_TERM = NONE;
NET "ddr_ldqs_p_b" IN_TERM = NONE;
NET "ddr_ldqs_n_b" IN_TERM = NONE;
NET "ddr_udqs_p_b" IN_TERM = NONE;
NET "ddr_udqs_n_b" IN_TERM = NONE;
###########################################################################
## SPI interface to DACs
###########################################################################
...
...
@@ -212,6 +289,26 @@ NET "led_link_o" IOSTANDARD = "LVCMOS25";
NET "button1_i" LOC = C22;
NET "button1_i" IOSTANDARD = "LVCMOS18";
#----------------------------------------
# PCB revision
#----------------------------------------
NET "pcbrev_i[0]" LOC = P5;
NET "pcbrev_i[1]" LOC = P4;
NET "pcbrev_i[2]" LOC = AA2;
NET "pcbrev_i[3]" LOC = AA1;
NET "pcbrev_i[*]" IOSTANDARD = "LVCMOS15";
#----------------------------------------
# FMC slot management
#----------------------------------------
NET "fmc0_prsnt_m2c_n_i" LOC = AB14;
NET "fmc0_scl_b" LOC = F7;
NET "fmc0_sda_b" LOC = F8;
NET "fmc0_prsnt_m2c_n_i" IOSTANDARD = "LVCMOS25";
NET "fmc0_scl_b" IOSTANDARD = "LVCMOS25";
NET "fmc0_sda_b" IOSTANDARD = "LVCMOS25";
# GN4124
NET "gn_p2l_clk_p" TNM_NET = "gn_p2l_clkp_grp";
...
...
@@ -252,3 +349,24 @@ TIMESPEC TS_ = FROM "skew_limit" TO "FFS" 1 ns DATAPATHONLY;
# Force PPS output to always be placed as IOB register
# INST "inst_template/cmp_xwrc_board_spec/cmp_board_common/cmp_xwr_core/WRPC/PPS_GEN/WRAPPED_PPSGEN/pps_out_o" IOB = FORCE;
#----------------------------------------
# Xilinx MCB tweaks
#----------------------------------------
# These are suggested by the Xilinx-generated MCB.
# More info in the UCF file found in the "user_design/par" of the generated core.
NET "inst_template/cmp_ddr_ctrl_bank?/*/c?_pll_lock" TIG;
NET "inst_template/cmp_ddr_ctrl_bank?/*/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG;
NET "inst_template/cmp_ddr_ctrl_bank?/*/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG;
#NET "inst_template/cmp_ddr_ctrl_bank?/*/mcb_soft_calibration_inst/SELFREFRESH_MCB_REQ" TIG;
# Ignore async reset inputs to reset synchronisers
NET "*/gc_reset_async_in" TIG;
# Ignore async reset to DDR controller
NET "inst_template/ddr_rst" TPTHRU = ddr_rst;
TIMESPEC TS_ddr_rst_tig = FROM FFS THRU ddr_rst TIG;
NET "inst_template/cmp_ddr_ctrl_bank3/*/memc3_infrastructure_inst/mcb_drp_clk_bufg_in" TNM_NET = ddr_clk;
NET "inst_template/cmp_ddr_ctrl_bank3/*/memc3_mcb_raw_wrapper_inst/ioi_drp_clk" TNM_NET = ddr_clk;
hdl/golden_wr/top/spec_golden_wr.vhd
View file @
53ddb278
...
...
@@ -128,6 +128,10 @@ entity spec_golden_wr is
---------------------------------------------------------------------------
-- Miscellanous SPEC pins
---------------------------------------------------------------------------
-- PCB version
pcbrev_i
:
in
std_logic_vector
(
3
downto
0
);
-- Red LED next to the SFP: blinking indicates that packets are being
-- transferred.
led_act_o
:
out
std_logic
;
...
...
@@ -172,11 +176,33 @@ entity spec_golden_wr is
sfp_rate_select_o
:
out
std_logic
;
sfp_tx_fault_i
:
in
std_logic
;
sfp_tx_disable_o
:
out
std_logic
;
sfp_los_i
:
in
std_logic
sfp_los_i
:
in
std_logic
;
-- DDR3
ddr_a_o
:
out
std_logic_vector
(
13
downto
0
);
ddr_ba_o
:
out
std_logic_vector
(
2
downto
0
);
ddr_cas_n_o
:
out
std_logic
;
ddr_ck_n_o
:
out
std_logic
;
ddr_ck_p_o
:
out
std_logic
;
ddr_cke_o
:
out
std_logic
;
ddr_dq_b
:
inout
std_logic_vector
(
15
downto
0
);
ddr_ldm_o
:
out
std_logic
;
ddr_ldqs_n_b
:
inout
std_logic
;
ddr_ldqs_p_b
:
inout
std_logic
;
ddr_odt_o
:
out
std_logic
;
ddr_ras_n_o
:
out
std_logic
;
ddr_reset_n_o
:
out
std_logic
;
ddr_rzq_b
:
inout
std_logic
;
ddr_udm_o
:
out
std_logic
;
ddr_udqs_n_b
:
inout
std_logic
;
ddr_udqs_p_b
:
inout
std_logic
;
ddr_we_n_o
:
out
std_logic
);
end
entity
spec_golden_wr
;
architecture
top
of
spec_golden_wr
is
signal
clk_sys_62m5
:
std_logic
;
signal
rst_sys_62m5_n
:
std_logic
;
begin
inst_template
:
entity
work
.
spec_template_wr
generic
map
(
...
...
@@ -219,6 +245,7 @@ begin
spi_ncs_o
=>
spi_ncs_o
,
spi_mosi_o
=>
spi_mosi_o
,
spi_miso_i
=>
spi_miso_i
,
pcbrev_i
=>
pcbrev_i
,
led_act_o
=>
led_act_o
,
led_link_o
=>
led_link_o
,
button1_i
=>
button1_i
,
...
...
@@ -241,6 +268,37 @@ begin
sfp_rate_select_o
=>
sfp_rate_select_o
,
sfp_tx_fault_i
=>
sfp_tx_fault_i
,
sfp_tx_disable_o
=>
sfp_tx_disable_o
,
sfp_los_i
=>
sfp_los_i
);
sfp_los_i
=>
sfp_los_i
,
ddr_a_o
=>
ddr_a_o
,
ddr_ba_o
=>
ddr_ba_o
,
ddr_cas_n_o
=>
ddr_cas_n_o
,
ddr_ck_n_o
=>
ddr_ck_n_o
,
ddr_ck_p_o
=>
ddr_ck_p_o
,
ddr_cke_o
=>
ddr_cke_o
,
ddr_dq_b
=>
ddr_dq_b
,
ddr_ldm_o
=>
ddr_ldm_o
,
ddr_ldqs_n_b
=>
ddr_ldqs_n_b
,
ddr_ldqs_p_b
=>
ddr_ldqs_p_b
,
ddr_odt_o
=>
ddr_odt_o
,
ddr_ras_n_o
=>
ddr_ras_n_o
,
ddr_reset_n_o
=>
ddr_reset_n_o
,
ddr_rzq_b
=>
ddr_rzq_b
,
ddr_udm_o
=>
ddr_udm_o
,
ddr_udqs_n_b
=>
ddr_udqs_n_b
,
ddr_udqs_p_b
=>
ddr_udqs_p_b
,
ddr_we_n_o
=>
ddr_we_n_o
,
ddr_dma_clk_i
=>
clk_sys_62m5
,
ddr_dma_rst_n_i
=>
rst_sys_62m5_n
,
ddr_dma_wb_i
.
cyc
=>
'0'
,
ddr_dma_wb_i
.
stb
=>
'0'
,
ddr_dma_wb_i
.
adr
=>
x"0000_0000"
,
ddr_dma_wb_i
.
sel
=>
x"00"
,
ddr_dma_wb_i
.
we
=>
'0'
,
ddr_dma_wb_i
.
dat
=>
x"0000_0000_0000_0000"
,
ddr_dma_wb_o
=>
open
,
clk_sys_62m5_o
=>
clk_sys_62m5
,
rst_sys_62m5_n_o
=>
rst_sys_62m5_n
);
end
architecture
top
;
hdl/template_wr/spec_template_wr.vhd
View file @
53ddb278
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment