Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
S
Synopsys 28nm SLM Integration
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SoCLabs
Synopsys 28nm SLM Integration
Compare revisions
5ece300bcb4e7dd8cd0c4cc141e7faa8f42e3e23 to e88b3d4335b8416b5d78322f45e099ac9a12a1d0
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
soclabs/synopsys_28nm_slm_integration
Select target project
No results found
e88b3d4335b8416b5d78322f45e099ac9a12a1d0
Select Git revision
Branches
main
Swap
Target
soclabs/synopsys_28nm_slm_integration
Select target project
soclabs/synopsys_28nm_slm_integration
1 result
5ece300bcb4e7dd8cd0c4cc141e7faa8f42e3e23
Select Git revision
Branches
main
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source (2)
Add pwron and reset software control
· 877d4bde
Daniel Newbrook
authored
6 months ago
877d4bde
add autoreset of gear shift and enable counters
· e88b3d43
Daniel Newbrook
authored
6 months ago
e88b3d43
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
IP_wrappers/PLL_integration_layer.v
+22
-14
22 additions, 14 deletions
IP_wrappers/PLL_integration_layer.v
with
22 additions
and
14 deletions
IP_wrappers/PLL_integration_layer.v
View file @
e88b3d43
...
...
@@ -58,6 +58,8 @@ reg [5:0] p_reg;
reg
[
5
:
0
]
r_reg
;
reg
[
4
:
0
]
prediv_reg
;
reg
pwron_reg
;
reg
pll_rst
;
reg
pll_lock_reg
;
reg
[
4
:
0
]
PLL_test_addr
;
...
...
@@ -102,19 +104,21 @@ always @(posedge ref_clk or negedge resetn) begin
if
(
~
resetn
)
begin
gear_shift_counter
=
16'h0000
;
enable_counter
=
16'h0000
;
end
else
begin
if
((
gear_shift_reg
==
1'b1
))
begin
if
((
gear_shift_reg
==
1'b1
)
&&
(
pll_rst
==
1'b1
))
begin
gear_shift_counter
=
gear_shift_counter
+
1
;
if
(
gear_shift_counter
>
16'h3E88
)
begin
gear_shift_counter
=
16'h0000
;
end
end
else
begin
if
((
enp_reg
==
1'b0
)
||
(
enr_reg
==
1'b0
))
begin
end
else
if
(((
enp_reg
==
1'b0
)
||
(
enr_reg
==
1'b0
))
&&
(
pll_rst
==
1'b1
))
begin
enable_counter
=
enable_counter
+
1
;
if
(
enable_counter
>
16'h2718
)
begin
enable_counter
=
16'h0000
;
end
end
end
else
begin
gear_shift_counter
=
16'd0
;
enable_counter
=
16'd0
;
end
end
end
...
...
@@ -124,11 +128,13 @@ always @(*) begin
bypass_reg
=
1'b0
;
enp_reg
=
1'b0
;
enr_reg
=
1'b0
;
gear_shift_reg
=
1'b
1
;
gear_shift_reg
=
1'b
0
;
pll_lock_reg
=
1'b0
;
pwron_reg
=
1'b0
;
pll_rst
=
1'b0
;
// Default startup of PLL
// F_vco = 100*20/1 = 1.6 GHz
// F_vco = F_ref * fbdiv/prediv
// F_clkoutp = 400 MHz
// F_clkoutr = 800 MHz
divvcop_reg
=
DEFAULT_DIVVCOP
;
// Divvco = 1
...
...
@@ -190,15 +196,17 @@ always @(*) begin
enp_reg
=
PWDATA
[
4
];
enr_reg
=
PWDATA
[
5
];
gear_shift_reg
=
PWDATA
[
7
];
end
else
begin
PSLVERR_reg
=
1'b1
;
end
if
(
PSTRB
[
1
]
==
1'b1
)
begin
pwron_reg
=
PWDATA
[
8
];
pll_rst
=
PWDATA
[
9
];
end
end
10'h001
:
begin
PSLVERR_reg
=
1'b1
;
PSLVERR_reg
=
1'b1
;
end
10'h002
:
begin
PSLVERR_reg
=
1'b1
;
PSLVERR_reg
=
1'b1
;
end
10'h003
:
begin
if
(
PSTRB
[
0
]
==
1'b1
)
...
...
@@ -222,7 +230,7 @@ always @(*) begin
end
APB_READ:
begin
case
(
PADDR
)
10'h000
:
PRDATA_reg
=
{{
2
4
{
1'b0
}}
,
gear_shift_reg
,
1'b0
,
enr_reg
,
enp_reg
,
{
3
{
1'b0
}}
,
bypass_reg
}
;
10'h000
:
PRDATA_reg
=
{{
2
2
{
1'b0
}}
,
pll_rst
,
pwron_reg
,
gear_shift_reg
,
1'b0
,
enr_reg
,
enp_reg
,
{
3
{
1'b0
}}
,
bypass_reg
}
;
10'h001
:
PRDATA_reg
=
{{
20
{
1'b0
}}
,
gear_shift_counter
}
;
10'h002
:
PRDATA_reg
=
{{
20
{
1'b0
}}
,
enable_counter
}
;
10'h003
:
PRDATA_reg
=
{{
4
{
1'b0
}}
,
divvcop_reg
,
{
2
{
1'b0
}}
,
p_reg
,
{
4
{
1'b0
}}
,
divvcor_reg
,
{
2
{
1'b0
}}
,
r_reg
}
;
...
...
@@ -326,9 +334,9 @@ dwc_z19606ts_ns u_snps_PLL(
.
gear_shift
(
gear_shift_reg
),
// Locking control, set high for faster PLL locking at cost of phase margin and jitter
.
p
(
p_reg
),
// Post divider division factor P (1-64)
.
prediv
(
prediv_reg
),
// input frequency division factor (1-32)
.
pwron
(
1'b1
),
// Power on control
.
pwron
(
pwron_reg
),
// Power on control
.
r
(
r_reg
),
// Post divider division factor R (1-64)
.
rst
(
~
resetn
),
// Reset signal (set high for 4us whenever PWRON goes high)
.
rst
(
~
pll_rst
),
// Reset signal (set high for 4us whenever PWRON goes high)
.
vregp
(),
// Output voltage regulator for P clock
.
vregr
(),
// Output voltage regulator for R clock
...
...
@@ -337,7 +345,7 @@ dwc_z19606ts_ns u_snps_PLL(
// Test Signals
.
test_data_i
(
PLL_data_i
),
//Data bus input control registers (7:0)
.
test_rd_en
(
PLL_test_rd_en
),
// Control register read enable
.
test_rst
(
~
resetn
),
// Control register reset signal
.
test_rst
(
~
pll_rst
),
// Control register reset signal
.
test_sel
(
PLL_test_addr
),
// Select lines for control register (4:0)
.
test_wr_en
(
PLL_test_wr_en
),
// Control register write enable
.
test_data_o
(
PLL_data_o
),
//Data bus output control registers (7:0)
...
...
This diff is collapsed.
Click to expand it.