Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC ADC 100M 14b 4cha
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
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
FMC ADC 100M 14b 4cha
Commits
4f7b5076
Commit
4f7b5076
authored
Jan 17, 2020
by
Dimitris Lampridis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[svec] post-Convention cleanup
parent
ee86f701
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
106 additions
and
392 deletions
+106
-392
svec_ref_fmc_adc_100Ms_mmap.cheby
hdl/cheby/svec_ref_fmc_adc_100Ms_mmap.cheby
+1
-1
svec_ref_fmc_adc_100Ms_mmap.vhd
hdl/cheby/svec_ref_fmc_adc_100Ms_mmap.vhd
+3
-3
svec
hdl/ip_cores/svec
+1
-1
svec_ref_fmc_adc_100Ms_mmap.v
hdl/testbench/include/svec_ref_fmc_adc_100Ms_mmap.v
+7
-7
.gitignore
hdl/testbench/svec_ref_design/.gitignore
+1
-0
Manifest.py
hdl/testbench/svec_ref_design/Manifest.py
+12
-9
main.sv
hdl/testbench/svec_ref_design/main.sv
+69
-40
svec_carrier_csr.cheby
hdl/top/svec_ref_design/svec_carrier_csr.cheby
+0
-121
svec_carrier_csr.vhd
hdl/top/svec_ref_design/svec_carrier_csr.vhd
+0
-198
svec_ref_fmc_adc_100Ms.vhd
hdl/top/svec_ref_design/svec_ref_fmc_adc_100Ms.vhd
+1
-1
svec_ref_fmc_adc_100Ms_mmap.h
software/include/hw/svec_ref_fmc_adc_100Ms_mmap.h
+11
-11
No files found.
hdl/cheby/svec_ref_fmc_adc_100Ms_mmap.cheby
View file @
4f7b5076
memory-map:
name: s
p
ec_ref_fmc_adc_100m_mmap
name: s
v
ec_ref_fmc_adc_100m_mmap
bus: wb-32-be
description: SPEC FMC-ADC-100M memory map
size: 0x8000
...
...
hdl/cheby/svec_ref_fmc_adc_100Ms_mmap.vhd
View file @
4f7b5076
...
...
@@ -6,7 +6,7 @@ use ieee.std_logic_1164.all;
use
ieee
.
numeric_std
.
all
;
use
work
.
wishbone_pkg
.
all
;
entity
s
p
ec_ref_fmc_adc_100m_mmap
is
entity
s
v
ec_ref_fmc_adc_100m_mmap
is
port
(
rst_n_i
:
in
std_logic
;
clk_i
:
in
std_logic
;
...
...
@@ -25,9 +25,9 @@ entity spec_ref_fmc_adc_100m_mmap is
fmc2_adc_mezzanine_i
:
in
t_wishbone_master_in
;
fmc2_adc_mezzanine_o
:
out
t_wishbone_master_out
);
end
s
p
ec_ref_fmc_adc_100m_mmap
;
end
s
v
ec_ref_fmc_adc_100m_mmap
;
architecture
syn
of
s
p
ec_ref_fmc_adc_100m_mmap
is
architecture
syn
of
s
v
ec_ref_fmc_adc_100m_mmap
is
signal
rd_int
:
std_logic
;
signal
wr_int
:
std_logic
;
signal
rd_ack_int
:
std_logic
;
...
...
svec
@
ce6b58a3
Subproject commit
8aa8d699f30c3ed1d02e3aa96c00492fdb0e2051
Subproject commit
ce6b58a38c12da91494dafc2a77cce6f16c0762f
hdl/testbench/include/svec_ref_fmc_adc_100Ms_mmap.v
View file @
4f7b5076
`define
S
P
EC_REF_FMC_ADC_100M_MMAP_SIZE
32768
`define
ADDR_S
P
EC_REF_FMC_ADC_100M_MMAP_METADATA
'
h2000
`define
S
P
EC_REF_FMC_ADC_100M_MMAP_METADATA_SIZE 64
`define
ADDR_S
P
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE
'
h4000
`define
S
P
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE_SIZE 8192
`define
ADDR_S
P
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE
'
h6000
`define
S
P
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE_SIZE 8192
`define
S
V
EC_REF_FMC_ADC_100M_MMAP_SIZE
32768
`define
ADDR_S
V
EC_REF_FMC_ADC_100M_MMAP_METADATA
'
h2000
`define
S
V
EC_REF_FMC_ADC_100M_MMAP_METADATA_SIZE 64
`define
ADDR_S
V
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE
'
h4000
`define
S
V
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE_SIZE 8192
`define
ADDR_S
V
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE
'
h6000
`define
S
V
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE_SIZE 8192
hdl/testbench/svec_ref_design/.gitignore
View file @
4f7b5076
...
...
@@ -4,3 +4,4 @@ transcript
vsim.wlf
NullFile
modelsim.ini
buildinfo_pkg.vhd
hdl/testbench/svec_ref_design/Manifest.py
View file @
4f7b5076
board
=
"svec"
sim_tool
=
"modelsim"
top_module
=
"main"
sim_top
=
"main"
action
=
"simulation"
target
=
"xilinx"
syn_device
=
"xc6slx150t"
vcom_opt
=
"-93 -mixedsvvh"
fetchto
=
"../../ip_cores"
# Allow the user to override fetchto using:
# hdlmake -p "fetchto='xxx'"
if
locals
()
.
get
(
'fetchto'
,
None
)
is
None
:
fetchto
=
"../../ip_cores"
include_dirs
=
[
"../include"
,
...
...
@@ -19,19 +22,19 @@ include_dirs = [
files
=
[
"main.sv"
,
"
synthesis_descriptor
.vhd"
,
"
buildinfo_pkg
.vhd"
,
]
modules
=
{
"local"
:
[
"../../top/svec_ref_design"
,
],
"git"
:
[
"git://ohwr.org/hdl-core-lib/general-cores.git"
,
"git://ohwr.org/hdl-core-lib/wr-cores.git"
,
"git://ohwr.org/hdl-core-lib/ddr3-sp6-core.git"
,
"git://ohwr.org/hdl-core-lib/vme64x-core.git"
,
],
}
# Do not fail during hdlmake fetch
try
:
exec
(
open
(
fetchto
+
"/general-cores/tools/gen_buildinfo.py"
)
.
read
())
except
:
pass
ctrls
=
[
"bank4_64b_32b"
,
"bank5_64b_32b"
]
hdl/testbench/svec_ref_design/main.sv
View file @
4f7b5076
...
...
@@ -5,9 +5,8 @@
`include
"fmc_adc_100Ms_csr.v"
`define
VME_OFFSET
'
h80000000
`define
ADC_OFFSET
'
h
2
000
`define
ADC_OFFSET
'
h
4
000
`define
SDB_ADDR
`
VME_OFFSET
+
0
`define
CSR_BASE
`
VME_OFFSET
+
`
ADC_OFFSET
+
'
h1000
`define
OWC_BASE
`
VME_OFFSET
+
`
ADC_OFFSET
+
'
h1700
`define
TAG_BASE
`
VME_OFFSET
+
`
ADC_OFFSET
+
'
h1900
...
...
@@ -62,8 +61,7 @@ module main;
svec_ref_fmc_adc_100Ms
#(
.
g_SIMULATION
(
1
)
,
.
g_CALIB_SOFT_IP
(
"FALSE"
)
.
g_SIMULATION
(
1
)
)
DUT
(
...
...
@@ -83,7 +81,7 @@ module main;
.
adc_outb_p_i
(
adc_dat_even
)
,
.
adc_outb_n_i
(
~
adc_dat_even
)
,
.
vme_as_n_i
(
VME_AS_n
)
,
.
vme_
rst_n_i
(
VME_RST_n
)
,
.
vme_
sysreset_n_i
(
VME_RST_n
)
,
.
vme_write_n_i
(
VME_WRITE_n
)
,
.
vme_am_i
(
VME_AM
)
,
.
vme_ds_n_i
(
VME_DS_n
)
,
...
...
@@ -105,27 +103,50 @@ module main;
.
vme_data_oe_n_o
(
VME_DATA_OE_N
)
,
.
vme_addr_dir_o
(
VME_ADDR_DIR
)
,
.
vme_addr_oe_n_o
(
VME_ADDR_OE_N
)
,
.
ddr_reset_n_o
(
ddr_reset_n
)
,
.
ddr_ck_p_o
(
ddr_ck_p
)
,
.
ddr_ck_n_o
(
ddr_ck_n
)
,
.
ddr_cke_o
(
ddr_cke
)
,
.
ddr_ras_n_o
(
ddr_ras_n
)
,
.
ddr_cas_n_o
(
ddr_cas_n
)
,
.
ddr_we_n_o
(
ddr_we_n
)
,
.
ddr_udm_o
(
ddr_dm
[
1
])
,
.
ddr_ldm_o
(
ddr_dm
[
0
])
,
.
ddr_ba_o
(
ddr_ba
)
,
.
ddr_a_o
(
ddr_a
)
,
.
ddr_dq_b
(
ddr_dq
)
,
.
ddr_udqs_p_b
(
ddr_dqs_p
[
1
])
,
.
ddr_udqs_n_b
(
ddr_dqs_n
[
1
])
,
.
ddr_ldqs_p_b
(
ddr_dqs_p
[
0
])
,
.
ddr_ldqs_n_b
(
ddr_dqs_n
[
0
])
,
.
ddr_odt_o
(
ddr_odt
)
,
.
ddr_rzq_b
(
ddr_rzq
)
.
ddr4_reset_n_o
(
ddr_reset_n
[
0
])
,
.
ddr4_ck_p_o
(
ddr_ck_p
[
0
])
,
.
ddr4_ck_n_o
(
ddr_ck_n
[
0
])
,
.
ddr4_cke_o
(
ddr_cke
[
0
])
,
.
ddr4_ras_n_o
(
ddr_ras_n
[
0
])
,
.
ddr4_cas_n_o
(
ddr_cas_n
[
0
])
,
.
ddr4_we_n_o
(
ddr_we_n
[
0
])
,
.
ddr4_udm_o
(
ddr_dm
[
1
][
0
])
,
.
ddr4_ldm_o
(
ddr_dm
[
0
][
0
])
,
.
ddr4_ba_o
(
ddr_ba
[
2
:
0
])
,
.
ddr4_a_o
(
ddr_a
[
13
:
0
])
,
.
ddr4_dq_b
(
ddr_dq
[
15
:
0
])
,
.
ddr4_udqs_p_b
(
ddr_dqs_p
[
1
][
0
])
,
.
ddr4_udqs_n_b
(
ddr_dqs_n
[
1
][
0
])
,
.
ddr4_ldqs_p_b
(
ddr_dqs_p
[
0
][
0
])
,
.
ddr4_ldqs_n_b
(
ddr_dqs_n
[
0
][
0
])
,
.
ddr4_odt_o
(
ddr_odt
[
0
])
,
.
ddr4_rzq_b
(
ddr_rzq
[
0
])
,
.
ddr5_reset_n_o
(
ddr_reset_n
[
1
])
,
.
ddr5_ck_p_o
(
ddr_ck_p
[
1
])
,
.
ddr5_ck_n_o
(
ddr_ck_n
[
1
])
,
.
ddr5_cke_o
(
ddr_cke
[
1
])
,
.
ddr5_ras_n_o
(
ddr_ras_n
[
1
])
,
.
ddr5_cas_n_o
(
ddr_cas_n
[
1
])
,
.
ddr5_we_n_o
(
ddr_we_n
[
1
])
,
.
ddr5_udm_o
(
ddr_dm
[
1
][
1
])
,
.
ddr5_ldm_o
(
ddr_dm
[
0
][
1
])
,
.
ddr5_ba_o
(
ddr_ba
[
5
:
3
])
,
.
ddr5_a_o
(
ddr_a
[
27
:
14
])
,
.
ddr5_dq_b
(
ddr_dq
[
31
:
16
])
,
.
ddr5_udqs_p_b
(
ddr_dqs_p
[
1
][
1
])
,
.
ddr5_udqs_n_b
(
ddr_dqs_n
[
1
][
1
])
,
.
ddr5_ldqs_p_b
(
ddr_dqs_p
[
0
][
1
])
,
.
ddr5_ldqs_n_b
(
ddr_dqs_n
[
0
][
1
])
,
.
ddr5_odt_o
(
ddr_odt
[
1
])
,
.
ddr5_rzq_b
(
ddr_rzq
[
1
])
)
;
ddr3
ddr3
#
(
.
DEBUG
(
0
)
,
.
check_strict_timing
(
0
)
,
.
check_strict_mrbits
(
0
)
)
cmp_ddr0
(
.
rst_n
(
ddr_reset_n
[
0
])
,
...
...
@@ -142,10 +163,16 @@ module main;
.
dq
(
ddr_dq
[
15
:
0
])
,
.
dqs
(
{
ddr_dqs_p
[
1
][
0
]
,
ddr_dqs_p
[
0
][
0
]
}
)
,
.
dqs_n
(
{
ddr_dqs_n
[
1
][
0
]
,
ddr_dqs_n
[
0
][
0
]
}
)
,
.
odt
(
ddr_odt
[
0
])
.
odt
(
ddr_odt
[
0
])
,
.
tdqs_n
()
)
;
ddr3
ddr3
#
(
.
DEBUG
(
0
)
,
.
check_strict_timing
(
0
)
,
.
check_strict_mrbits
(
0
)
)
cmp_ddr1
(
.
rst_n
(
ddr_reset_n
[
1
])
,
...
...
@@ -162,7 +189,8 @@ module main;
.
dq
(
ddr_dq
[
31
:
16
])
,
.
dqs
(
{
ddr_dqs_p
[
1
][
1
]
,
ddr_dqs_p
[
0
][
1
]
}
)
,
.
dqs_n
(
{
ddr_dqs_n
[
1
][
1
]
,
ddr_dqs_n
[
0
][
1
]
}
)
,
.
odt
(
ddr_odt
[
1
])
.
odt
(
ddr_odt
[
1
])
,
.
tdqs_n
()
)
;
int
adc_div
=
0
;
...
...
@@ -233,6 +261,7 @@ module main;
acc
.
set_default_modifiers
(
A32
|
D32
|
SINGLE
)
;
endtask
// init_vme64x_core
task
adc_status_print
(
input
uint64_t
val
)
;
string
msg
;
msg
=
$
sformatf
(
"<%t> ADC STATUS: FSM_STATE=%0d, PLL_LOCKED=%0d, PLL_SYNCED=%0d, CFG_OK=%0d"
,
...
...
@@ -262,18 +291,6 @@ module main;
#
1u
s
;
expected
=
'h5344422d
;
acc
.
read
(
`SDB_ADDR
,
val
)
;
if
(
val
!=
expected
)
$
fatal
(
1
,
"Unable to detect SDB header at offset 0x%8x (got 0x%8x, expected 0x%8x)."
,
`SDB_ADDR
,
val
,
expected
)
;
expected
=
'h5344422d
;
acc
.
read
(
`ADC_OFFSET
+
`SDB_ADDR
,
val
)
;
if
(
val
!=
expected
)
$
fatal
(
1
,
"Unable to detect SDB header at offset 0x%8x (got 0x%8x, expected 0x%8x)."
,
`ADC_OFFSET
+
`SDB_ADDR
,
val
,
expected
)
;
expected
=
'h19
;
acc
.
read
(
`CSR_BASE
+
`ADDR_FMC_ADC_100MS_CSR_STA
,
val
)
;
if
(
val
!=
expected
)
...
...
@@ -383,7 +400,7 @@ module main;
// set time trigger
acc
.
write
(
`TAG_BASE
+
'h0c
,
'h00000032
)
;
// timetag core seconds high
acc
.
write
(
`TAG_BASE
+
'h10
,
'h00005a34
)
;
// timetag core seconds low
acc
.
write
(
`TAG_BASE
+
'h14
,
'h00001
0
00
)
;
// timetag core ticks
acc
.
write
(
`TAG_BASE
+
'h14
,
'h00001
1
00
)
;
// timetag core ticks
acc
.
write
(
`CSR_BASE
+
`ADDR_FMC_ADC_100MS_CSR_PRE_SAMPLES
,
'h00000010
)
;
acc
.
write
(
`CSR_BASE
+
`ADDR_FMC_ADC_100MS_CSR_POST_SAMPLES
,
'h00000080
)
;
...
...
@@ -432,5 +449,17 @@ module main;
end
initial
begin
// Silence Xilinx unisim DSP48A1 warnings about invalid OPMODE
force
DUT
.
inst_svec_base
.
gen_wr
.
cmp_xwrc_board_svec
.
cmp_board_common
.
cmp_xwr_core
.
WRPC
.
LM32_CORE
.
gen_profile_medium_icache
.
U_Wrapped_LM32
.
cpu
.
multiplier
.
D1
.
OPMODE_dly
=
0
;
force
DUT
.
inst_svec_base
.
gen_wr
.
cmp_xwrc_board_svec
.
cmp_board_common
.
cmp_xwr_core
.
WRPC
.
LM32_CORE
.
gen_profile_medium_icache
.
U_Wrapped_LM32
.
cpu
.
multiplier
.
D2
.
OPMODE_dly
=
0
;
force
DUT
.
inst_svec_base
.
gen_wr
.
cmp_xwrc_board_svec
.
cmp_board_common
.
cmp_xwr_core
.
WRPC
.
LM32_CORE
.
gen_profile_medium_icache
.
U_Wrapped_LM32
.
cpu
.
multiplier
.
D3
.
OPMODE_dly
=
0
;
end
// initial begin
endmodule
// main
hdl/top/svec_ref_design/svec_carrier_csr.cheby
deleted
100644 → 0
View file @
ee86f701
memory-map:
bus: wb-32-be
name: svec_carrier_csr
description: SVEC carrier control and status registers
comment: |
Wishbone slave for control and status registers related to the SVEC FMC carrier
x-hdl:
busgroup: True
iogroup: carrier_csr
children:
- reg:
name: carrier
address: 0x00000000
width: 32
access: ro
description: Carrier type and PCB version
children:
- field:
name: pcb_rev
range: 4-0
description: PCB revision
comment: |
Binary coded PCB layout revision.
- field:
name: reserved
range: 15-5
description: Reserved register
comment: |
Ignore on read, write with 0's.
- field:
name: type
range: 31-16
description: Carrier type
comment: |
Carrier type identifier
1 = SPEC
2 = SVEC
3 = VFC
4 = SPEXI
- reg:
name: stat
address: 0x00000004
width: 32
access: ro
description: Status
children:
- field:
name: fmc0_pres
range: 0
description: FMC 1 presence
comment: |
0: FMC slot 1 is populated
1: FMC slot 1 is not populated.
- field:
name: fmc1_pres
range: 1
description: FMC 2 presence
comment: |
0: FMC slot 2 is populated
1: FMC slot 2 is not populated.
- field:
name: sys_pll_lck
range: 2
description: System clock PLL status
comment: |
0: not locked
1: locked.
- field:
name: ddr0_cal_done
range: 3
description: DDR3 bank 4 calibration status
comment: |
0: not done
1: done.
- field:
name: ddr1_cal_done
range: 4
description: DDR3 bank 5 calibration status
comment: |
0: not done
1: done.
- reg:
name: ctrl
address: 0x00000008
width: 32
access: rw
description: Control
children:
- field:
name: fp_leds_man
range: 15-0
description: Front panel LED manual control
comment: |
Height front panel LED, two bits per LED.
00 = OFF
01 = Green
10 = Red
11 = Orange
- reg:
name: rst
address: 0x0000000c
width: 32
access: wo
description: Reset Register
comment: |
Controls software reset of the mezzanines including the ddr interface and the time-tagging core.
children:
- field:
name: fmc0
range: 0
description: State of the FMC 1 reset line
comment: |
write 0: Normal FMC operation
write 1: FMC is held in reset
- field:
name: fmc1
range: 1
description: State of the FMC 2 reset line
comment: |
write 0: Normal FMC operation
write 1: FMC is held in reset
hdl/top/svec_ref_design/svec_carrier_csr.vhd
deleted
100644 → 0
View file @
ee86f701
-- Do not edit; this file was generated by Cheby using these options:
-- -i svec_carrier_csr.cheby --gen-hdl=svec_carrier_csr.vhd
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
wishbone_pkg
.
all
;
package
svec_carrier_csr_pkg
is
type
t_carrier_csr_master_out
is
record
ctrl_fp_leds_man
:
std_logic_vector
(
15
downto
0
);
rst_fmc0
:
std_logic
;
rst_fmc1
:
std_logic
;
end
record
t_carrier_csr_master_out
;
subtype
t_carrier_csr_slave_in
is
t_carrier_csr_master_out
;
type
t_carrier_csr_slave_out
is
record
carrier_pcb_rev
:
std_logic_vector
(
4
downto
0
);
carrier_reserved
:
std_logic_vector
(
10
downto
0
);
carrier_type
:
std_logic_vector
(
15
downto
0
);
stat_fmc0_pres
:
std_logic
;
stat_fmc1_pres
:
std_logic
;
stat_sys_pll_lck
:
std_logic
;
stat_ddr0_cal_done
:
std_logic
;
stat_ddr1_cal_done
:
std_logic
;
end
record
t_carrier_csr_slave_out
;
subtype
t_carrier_csr_master_in
is
t_carrier_csr_slave_out
;
end
svec_carrier_csr_pkg
;
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
wishbone_pkg
.
all
;
use
work
.
svec_carrier_csr_pkg
.
all
;
entity
svec_carrier_csr
is
port
(
rst_n_i
:
in
std_logic
;
clk_i
:
in
std_logic
;
wb_i
:
in
t_wishbone_slave_in
;
wb_o
:
out
t_wishbone_slave_out
;
-- Wires and registers
carrier_csr_i
:
in
t_carrier_csr_master_in
;
carrier_csr_o
:
out
t_carrier_csr_master_out
);
end
svec_carrier_csr
;
architecture
syn
of
svec_carrier_csr
is
signal
rd_int
:
std_logic
;
signal
wr_int
:
std_logic
;
signal
rd_ack_int
:
std_logic
;
signal
wr_ack_int
:
std_logic
;
signal
wb_en
:
std_logic
;
signal
ack_int
:
std_logic
;
signal
wb_rip
:
std_logic
;
signal
wb_wip
:
std_logic
;
signal
ctrl_fp_leds_man_reg
:
std_logic_vector
(
15
downto
0
);
signal
rst_fmc0_reg
:
std_logic
;
signal
rst_fmc1_reg
:
std_logic
;
signal
reg_rdat_int
:
std_logic_vector
(
31
downto
0
);
signal
rd_ack1_int
:
std_logic
;
begin
-- WB decode signals
wb_en
<=
wb_i
.
cyc
and
wb_i
.
stb
;
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
wb_rip
<=
'0'
;
else
wb_rip
<=
(
wb_rip
or
(
wb_en
and
not
wb_i
.
we
))
and
not
rd_ack_int
;
end
if
;
end
if
;
end
process
;
rd_int
<=
(
wb_en
and
not
wb_i
.
we
)
and
not
wb_rip
;
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
wb_wip
<=
'0'
;
else
wb_wip
<=
(
wb_wip
or
(
wb_en
and
wb_i
.
we
))
and
not
wr_ack_int
;
end
if
;
end
if
;
end
process
;
wr_int
<=
(
wb_en
and
wb_i
.
we
)
and
not
wb_wip
;
ack_int
<=
rd_ack_int
or
wr_ack_int
;
wb_o
.
ack
<=
ack_int
;
wb_o
.
stall
<=
not
ack_int
and
wb_en
;
wb_o
.
rty
<=
'0'
;
wb_o
.
err
<=
'0'
;
-- Assign outputs
carrier_csr_o
.
ctrl_fp_leds_man
<=
ctrl_fp_leds_man_reg
;
carrier_csr_o
.
rst_fmc0
<=
rst_fmc0_reg
;
carrier_csr_o
.
rst_fmc1
<=
rst_fmc1_reg
;
-- Process for write requests.
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
wr_ack_int
<=
'0'
;
ctrl_fp_leds_man_reg
<=
"0000000000000000"
;
rst_fmc0_reg
<=
'0'
;
rst_fmc1_reg
<=
'0'
;
else
wr_ack_int
<=
'0'
;
case
wb_i
.
adr
(
3
downto
2
)
is
when
"00"
=>
-- Register carrier
when
"01"
=>
-- Register stat
when
"10"
=>
-- Register ctrl
if
wr_int
=
'1'
then
ctrl_fp_leds_man_reg
<=
wb_i
.
dat
(
15
downto
0
);
end
if
;
wr_ack_int
<=
wr_int
;
when
"11"
=>
-- Register rst
if
wr_int
=
'1'
then
rst_fmc0_reg
<=
wb_i
.
dat
(
0
);
rst_fmc1_reg
<=
wb_i
.
dat
(
1
);
end
if
;
wr_ack_int
<=
wr_int
;
when
others
=>
wr_ack_int
<=
wr_int
;
end
case
;
end
if
;
end
if
;
end
process
;
-- Process for registers read.
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
rd_ack1_int
<=
'0'
;
else
reg_rdat_int
<=
(
others
=>
'0'
);
case
wb_i
.
adr
(
3
downto
2
)
is
when
"00"
=>
-- carrier
reg_rdat_int
(
4
downto
0
)
<=
carrier_csr_i
.
carrier_pcb_rev
;
reg_rdat_int
(
15
downto
5
)
<=
carrier_csr_i
.
carrier_reserved
;
reg_rdat_int
(
31
downto
16
)
<=
carrier_csr_i
.
carrier_type
;
rd_ack1_int
<=
rd_int
;
when
"01"
=>
-- stat
reg_rdat_int
(
0
)
<=
carrier_csr_i
.
stat_fmc0_pres
;
reg_rdat_int
(
1
)
<=
carrier_csr_i
.
stat_fmc1_pres
;
reg_rdat_int
(
2
)
<=
carrier_csr_i
.
stat_sys_pll_lck
;
reg_rdat_int
(
3
)
<=
carrier_csr_i
.
stat_ddr0_cal_done
;
reg_rdat_int
(
4
)
<=
carrier_csr_i
.
stat_ddr1_cal_done
;
rd_ack1_int
<=
rd_int
;
when
"10"
=>
-- ctrl
reg_rdat_int
(
15
downto
0
)
<=
ctrl_fp_leds_man_reg
;
rd_ack1_int
<=
rd_int
;
when
"11"
=>
-- rst
rd_ack1_int
<=
rd_int
;
when
others
=>
reg_rdat_int
<=
(
others
=>
'X'
);
rd_ack1_int
<=
rd_int
;
end
case
;
end
if
;
end
if
;
end
process
;
-- Process for read requests.
process
(
wb_i
.
adr
,
reg_rdat_int
,
rd_ack1_int
,
rd_int
)
begin
-- By default ack read requests
wb_o
.
dat
<=
(
others
=>
'0'
);
case
wb_i
.
adr
(
3
downto
2
)
is
when
"00"
=>
-- carrier
wb_o
.
dat
<=
reg_rdat_int
;
rd_ack_int
<=
rd_ack1_int
;
when
"01"
=>
-- stat
wb_o
.
dat
<=
reg_rdat_int
;
rd_ack_int
<=
rd_ack1_int
;
when
"10"
=>
-- ctrl
wb_o
.
dat
<=
reg_rdat_int
;
rd_ack_int
<=
rd_ack1_int
;
when
"11"
=>
-- rst
wb_o
.
dat
<=
reg_rdat_int
;
rd_ack_int
<=
rd_ack1_int
;
when
others
=>
rd_ack_int
<=
rd_int
;
end
case
;
end
process
;
end
syn
;
hdl/top/svec_ref_design/svec_ref_fmc_adc_100Ms.vhd
View file @
4f7b5076
...
...
@@ -465,7 +465,7 @@ begin -- architecture arch
------------------------------------------------------------------------------
-- Primary wishbone crossbar
------------------------------------------------------------------------------
cmp_crossbar
:
entity
work
.
s
p
ec_ref_fmc_adc_100m_mmap
cmp_crossbar
:
entity
work
.
s
v
ec_ref_fmc_adc_100m_mmap
port
map
(
rst_n_i
=>
rst_sys_62m5_n
,
clk_i
=>
clk_sys_62m5
,
...
...
software/include/hw/svec_ref_fmc_adc_100Ms_mmap.h
View file @
4f7b5076
#ifndef __CHEBY__S
P
EC_REF_FMC_ADC_100M_MMAP__H__
#define __CHEBY__S
P
EC_REF_FMC_ADC_100M_MMAP__H__
#ifndef __CHEBY__S
V
EC_REF_FMC_ADC_100M_MMAP__H__
#define __CHEBY__S
V
EC_REF_FMC_ADC_100M_MMAP__H__
#include "fmc_adc_mezzanine_mmap.h"
#define S
P
EC_REF_FMC_ADC_100M_MMAP_SIZE 32768
#define S
V
EC_REF_FMC_ADC_100M_MMAP_SIZE 32768
/* a ROM containing the application metadata */
#define S
P
EC_REF_FMC_ADC_100M_MMAP_METADATA 0x2000UL
#define S
P
EC_REF_FMC_ADC_100M_MMAP_METADATA_SIZE 64
#define S
V
EC_REF_FMC_ADC_100M_MMAP_METADATA 0x2000UL
#define S
V
EC_REF_FMC_ADC_100M_MMAP_METADATA_SIZE 64
/* FMC ADC Mezzanine slot 1 */
#define S
P
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE 0x4000UL
#define S
P
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE_SIZE 8192
#define S
V
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE 0x4000UL
#define S
V
EC_REF_FMC_ADC_100M_MMAP_FMC1_ADC_MEZZANINE_SIZE 8192
/* FMC ADC Mezzanine slot 2 */
#define S
P
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE 0x6000UL
#define S
P
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE_SIZE 8192
#define S
V
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE 0x6000UL
#define S
V
EC_REF_FMC_ADC_100M_MMAP_FMC2_ADC_MEZZANINE_SIZE 8192
struct
s
p
ec_ref_fmc_adc_100m_mmap
{
struct
s
v
ec_ref_fmc_adc_100m_mmap
{
/* padding to: 2048 words */
uint32_t
__padding_0
[
2048
];
...
...
@@ -33,4 +33,4 @@ struct spec_ref_fmc_adc_100m_mmap {
struct
fmc_adc_mezzanine_mmap
fmc2_adc_mezzanine
;
};
#endif
/* __CHEBY__S
P
EC_REF_FMC_ADC_100M_MMAP__H__ */
#endif
/* __CHEBY__S
V
EC_REF_FMC_ADC_100M_MMAP__H__ */
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