Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
Beam Positoning Monitor - Gateware
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
Beam Positoning Monitor - Gateware
Commits
b9863df0
Commit
b9863df0
authored
Apr 16, 2013
by
Lucas Russo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
emb-sw/*: update fmc516 register fields
parent
a0afecef
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1016 additions
and
1010 deletions
+1016
-1010
dbe.vhd
embedded-sw/dbe.vhd
+982
-982
fmc516.c
embedded-sw/fmc/fmc516/fmc516.c
+34
-28
No files found.
embedded-sw/dbe.vhd
View file @
b9863df0
This source diff could not be displayed because it is too large. You can
view the blob
instead.
embedded-sw/fmc/fmc516/fmc516.c
View file @
b9863df0
...
...
@@ -94,24 +94,24 @@ void fmc516_sweep_delays(unsigned int id)
int
commit
=
1
;
int
i
,
j
;
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
0
,
FMC516_CH0_
CTL_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH0_CTL
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
1
,
FMC516_CH1_
CTL_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH1_CTL
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
2
,
FMC516_CH2_
CTL_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH2_CTL
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
3
,
FMC516_CH3_
CTL_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH3_CTL
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
0
,
FMC516_CH0_
FN_DLY_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH0_FN_DLY
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
1
,
FMC516_CH1_
FN_DLY_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH1_FN_DLY
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
2
,
FMC516_CH2_
FN_DLY_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH2_FN_DLY
));
dbg_print
(
"> ADC%d data delay: %d...
\n
"
,
3
,
FMC516_CH3_
FN_DLY_DATA_CHAIN_DLY_R
(
fmc516
[
id
]
->
CH3_FN_DLY
));
//for (i = 0; i < FMC516_NUM_ISLA216; ++i) {
//for (j = 0; j < 32; ++j) {
// dbg_print("> sweeping ADC%d clk delay values: %d...\n", 1, j);
// fmc516_adj_delay(id, FMC516_ISLA216_ADC1, -1, j, commit);
// delay(80000000);
// dbg_print("> ADC%d data delay: %d...\n", 0, FMC516_CH0_CTL_CLK_CHAIN_DLY_R(fmc516[id]->CH0_
CTL
));
// dbg_print("> ADC%d data delay: %d...\n", 0, FMC516_CH0_CTL_CLK_CHAIN_DLY_R(fmc516[id]->CH0_
FN_DLY
));
//}
//for (j = 0; j < 32; ++j) {
// dbg_print("> sweeping ADC%d clk delay values: %d...\n", 2, j);
// fmc516_adj_delay(id, FMC516_ISLA216_ADC2, -1, j, commit);
// delay(150000000);
// dbg_print("> ADC%d data delay: %d...\n", 2, FMC516_CH2_CTL_CLK_CHAIN_DLY_R(fmc516[id]->CH2_
CTL
));
// dbg_print("> ADC%d data delay: %d...\n", 2, FMC516_CH2_CTL_CLK_CHAIN_DLY_R(fmc516[id]->CH2_
FN_DLY
));
//}
//}
}
...
...
@@ -134,20 +134,20 @@ void fmc516_adj_delay(unsigned int id, int ch, int clk_dly, int data_dly, int co
// Find the correct ADC instance to operate on
switch
(
ch
)
{
case
FMC516_ISLA216_ADC0
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
FN_DLY
;
break
;
case
FMC516_ISLA216_ADC1
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH1_
CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH1_
FN_DLY
;
break
;
case
FMC516_ISLA216_ADC2
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH2_
CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH2_
FN_DLY
;
break
;
case
FMC516_ISLA216_ADC3
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH3_
CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH3_
FN_DLY
;
break
;
default:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
FN_DLY
;
}
// Read the register value once
...
...
@@ -157,15 +157,15 @@ void fmc516_adj_delay(unsigned int id, int ch, int clk_dly, int data_dly, int co
/* All Read/Write macros are the same for all channels. Use the first one */
if
(
clk_dly
!=
-
1
)
{
/* Clear clk delay bits and write the desired value*/
adc_ctl_reg
=
(
adc_ctl_reg
&
~
FMC516_CH0_
CTL
_CLK_CHAIN_DLY_MASK
)
|
FMC516_CH0_
CTL
_CLK_CHAIN_DLY_W
(
clk_dly
);
adc_ctl_reg
=
(
adc_ctl_reg
&
~
FMC516_CH0_
FN_DLY
_CLK_CHAIN_DLY_MASK
)
|
FMC516_CH0_
FN_DLY
_CLK_CHAIN_DLY_W
(
clk_dly
);
}
if
(
data_dly
!=
-
1
)
{
/* Clear clk delay bits and write the desired value*/
adc_ctl_reg
=
(
adc_ctl_reg
&
~
FMC516_CH0_
CTL
_DATA_CHAIN_DLY_MASK
)
|
FMC516_CH0_
CTL
_DATA_CHAIN_DLY_W
(
data_dly
);
adc_ctl_reg
=
(
adc_ctl_reg
&
~
FMC516_CH0_
FN_DLY
_DATA_CHAIN_DLY_MASK
)
|
FMC516_CH0_
FN_DLY
_DATA_CHAIN_DLY_W
(
data_dly
);
}
...
...
@@ -240,38 +240,44 @@ void fmc516_fe_rg_dly(unsigned int id, int ch, int fe_dly_d1, int fe_dly_d2,
switch
(
ch
)
{
case
FMC516_ISLA216_ADC0
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
DLY_CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
CS_DLY
;
break
;
case
FMC516_ISLA216_ADC1
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH1_
DLY_CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH1_
CS_DLY
;
break
;
case
FMC516_ISLA216_ADC2
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH2_
DLY_CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH2_
CS_DLY
;
break
;
case
FMC516_ISLA216_ADC3
:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH3_
DLY_CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH3_
CS_DLY
;
break
;
default:
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
DLY_CTL
;
fmc_ch_handler
=
(
uint32_t
*
)
&
fmc516
[
id
]
->
CH0_
CS_DLY
;
}
// Read register value once
dly_ctl_reg
=
*
fmc_ch_handler
;
if
(
fe_dly_d2
)
dly_ctl_reg
|=
(
dly_ctl_reg
&
~
FMC516_CH0_DLY_CTL
_FE_DLY_MASK
)
|
FMC516_CH0_
DLY_CTL
_FE_DLY_W
(
0x3
);
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY
_FE_DLY_MASK
)
|
FMC516_CH0_
CS_DLY
_FE_DLY_W
(
0x3
);
else
if
(
fe_dly_d1
)
dly_ctl_reg
|=
(
dly_ctl_reg
&
~
FMC516_CH0_DLY_CTL_FE_DLY_MASK
)
|
FMC516_CH0_DLY_CTL_FE_DLY_W
(
0x1
);
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY_FE_DLY_MASK
)
|
FMC516_CH0_CS_DLY_FE_DLY_W
(
0x1
);
else
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY_FE_DLY_MASK
)
|
FMC516_CH0_CS_DLY_FE_DLY_W
(
0x0
);
if
(
rg_dly_d2
)
dly_ctl_reg
|=
(
dly_ctl_reg
&
~
FMC516_CH0_DLY_CTL
_RG_DLY_MASK
)
|
FMC516_CH0_
DLY_CTL
_RG_DLY_W
(
0x3
);
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY
_RG_DLY_MASK
)
|
FMC516_CH0_
CS_DLY
_RG_DLY_W
(
0x3
);
else
if
(
rg_dly_d1
)
dly_ctl_reg
|=
(
dly_ctl_reg
&
~
FMC516_CH0_DLY_CTL_RG_DLY_MASK
)
|
FMC516_CH0_DLY_CTL_RG_DLY_W
(
0x1
);
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY_RG_DLY_MASK
)
|
FMC516_CH0_CS_DLY_RG_DLY_W
(
0x1
);
else
dly_ctl_reg
=
(
dly_ctl_reg
&
~
FMC516_CH0_CS_DLY_RG_DLY_MASK
)
|
FMC516_CH0_CS_DLY_RG_DLY_W
(
0x0
);
// Write register value once
*
fmc_ch_handler
=
dly_ctl_reg
;
...
...
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