Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Marc Solé Bonet
XOHW_GRLIB_AI_extension
Commits
0225011c
Commit
0225011c
authored
Mar 26, 2021
by
Marc
Browse files
Leon3 desing for the artic7 xilinx board
parent
50d74c08
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
grlib/designs/leon3-xilinx/Makefile
0 → 100644
View file @
0225011c
GRLIB
=
../..
TOP
=
leon3mp
TECHNOLOGY
=
Artix7
PART
=
XC7A100T
PACKAGE
=
csg324
SPEED
=
-2
DEVICE
=
$(PART)
-
$(PACKAGE)$(SPEED)
#UCF=$(TOP).ucf
#UCF_PLANAHEAD=$(UCF)
EFFORT
=
high
VHDLSYNFILES
=
config.vhd ahbrom.vhd leon3mp.vhd
VHDLSIMFILES
=
testbench.vhd
SIMTOP
=
testbench
CLEAN
=
soft-clean
TECHLIBS
=
unisim
# Libraries, directories and files in GRLIB that should not be compiled for this design
LIBSKIP
=
core1553bbc core1553brm core1553brt gr1553 corePCIF
\
tmtc openchip ihp usbhc spw
DIRSKIP
=
b1553 pci/pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can
\
usb grusbhc spacewire ascs slink hcan
\
leon4v0 l2cache pwm gr1553b iommu
FILESKIP
=
grcan.vhd
include
$(GRLIB)/bin/Makefile
include
$(GRLIB)/software/leon3/Makefile
################## project specific targets ##########################
grlib/designs/leon3-xilinx/ahbrom.vhd
0 → 100644
View file @
0225011c
----------------------------------------------------------------------------
-- This file is a part of the GRLIB VHDL IP LIBRARY
-- Copyright (C) 2010 Aeroflex Gaisler
----------------------------------------------------------------------------
-- Entity: ahbrom
-- File: ahbrom.vhd
-- Author: Jiri Gaisler - Gaisler Research
-- Description: AHB rom. 0/1-waitstate read
----------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
library
grlib
;
use
grlib
.
amba
.
all
;
use
grlib
.
stdlib
.
all
;
use
grlib
.
devices
.
all
;
entity
ahbrom
is
generic
(
hindex
:
integer
:
=
0
;
haddr
:
integer
:
=
0
;
hmask
:
integer
:
=
16
#
fff
#
;
pipe
:
integer
:
=
0
;
tech
:
integer
:
=
0
;
kbytes
:
integer
:
=
1
);
port
(
rst
:
in
std_ulogic
;
clk
:
in
std_ulogic
;
ahbsi
:
in
ahb_slv_in_type
;
ahbso
:
out
ahb_slv_out_type
);
end
;
architecture
rtl
of
ahbrom
is
constant
abits
:
integer
:
=
10
;
constant
bytes
:
integer
:
=
560
;
constant
hconfig
:
ahb_config_type
:
=
(
0
=>
ahb_device_reg
(
VENDOR_GAISLER
,
GAISLER_AHBROM
,
0
,
0
,
0
),
4
=>
ahb_membar
(
haddr
,
'1'
,
'1'
,
hmask
),
others
=>
zero32
);
signal
romdata
:
std_logic_vector
(
31
downto
0
);
signal
addr
:
std_logic_vector
(
abits
-1
downto
2
);
signal
hsel
,
hready
:
std_ulogic
;
begin
ahbso
.
hresp
<=
"00"
;
ahbso
.
hsplit
<=
(
others
=>
'0'
);
ahbso
.
hirq
<=
(
others
=>
'0'
);
ahbso
.
hconfig
<=
hconfig
;
ahbso
.
hindex
<=
hindex
;
reg
:
process
(
clk
)
begin
if
rising_edge
(
clk
)
then
addr
<=
ahbsi
.
haddr
(
abits
-1
downto
2
);
end
if
;
end
process
;
p0
:
if
pipe
=
0
generate
ahbso
.
hrdata
<=
ahbdrivedata
(
romdata
);
ahbso
.
hready
<=
'1'
;
end
generate
;
p1
:
if
pipe
=
1
generate
reg2
:
process
(
clk
)
begin
if
rising_edge
(
clk
)
then
hsel
<=
ahbsi
.
hsel
(
hindex
)
and
ahbsi
.
htrans
(
1
);
hready
<=
ahbsi
.
hready
;
ahbso
.
hready
<=
(
not
rst
)
or
(
hsel
and
hready
)
or
(
ahbsi
.
hsel
(
hindex
)
and
not
ahbsi
.
htrans
(
1
)
and
ahbsi
.
hready
);
ahbso
.
hrdata
<=
ahbdrivedata
(
romdata
);
end
if
;
end
process
;
end
generate
;
comb
:
process
(
addr
)
begin
case
conv_integer
(
addr
)
is
when
16
#
00000
#
=>
romdata
<=
X"81D82000"
;
when
16
#
00001
#
=>
romdata
<=
X"03000004"
;
when
16
#
00002
#
=>
romdata
<=
X"821060E0"
;
when
16
#
00003
#
=>
romdata
<=
X"81884000"
;
when
16
#
00004
#
=>
romdata
<=
X"81900000"
;
when
16
#
00005
#
=>
romdata
<=
X"81980000"
;
when
16
#
00006
#
=>
romdata
<=
X"81800000"
;
when
16
#
00007
#
=>
romdata
<=
X"A1800000"
;
when
16
#
00008
#
=>
romdata
<=
X"01000000"
;
when
16
#
00009
#
=>
romdata
<=
X"03002040"
;
when
16
#
0000
A
#
=>
romdata
<=
X"8210600F"
;
when
16
#
0000
B
#
=>
romdata
<=
X"C2A00040"
;
when
16
#
0000
C
#
=>
romdata
<=
X"84100000"
;
when
16
#
0000
D
#
=>
romdata
<=
X"01000000"
;
when
16
#
0000
E
#
=>
romdata
<=
X"01000000"
;
when
16
#
0000
F
#
=>
romdata
<=
X"01000000"
;
when
16
#
00010
#
=>
romdata
<=
X"01000000"
;
when
16
#
00011
#
=>
romdata
<=
X"01000000"
;
when
16
#
00012
#
=>
romdata
<=
X"80108002"
;
when
16
#
00013
#
=>
romdata
<=
X"01000000"
;
when
16
#
00014
#
=>
romdata
<=
X"01000000"
;
when
16
#
00015
#
=>
romdata
<=
X"01000000"
;
when
16
#
00016
#
=>
romdata
<=
X"01000000"
;
when
16
#
00017
#
=>
romdata
<=
X"01000000"
;
when
16
#
00018
#
=>
romdata
<=
X"87444000"
;
when
16
#
00019
#
=>
romdata
<=
X"8608E01F"
;
when
16
#
0001
A
#
=>
romdata
<=
X"88100000"
;
when
16
#
0001
B
#
=>
romdata
<=
X"8A100000"
;
when
16
#
0001
C
#
=>
romdata
<=
X"8C100000"
;
when
16
#
0001
D
#
=>
romdata
<=
X"8E100000"
;
when
16
#
0001
E
#
=>
romdata
<=
X"A0100000"
;
when
16
#
0001
F
#
=>
romdata
<=
X"A2100000"
;
when
16
#
00020
#
=>
romdata
<=
X"A4100000"
;
when
16
#
00021
#
=>
romdata
<=
X"A6100000"
;
when
16
#
00022
#
=>
romdata
<=
X"A8100000"
;
when
16
#
00023
#
=>
romdata
<=
X"AA100000"
;
when
16
#
00024
#
=>
romdata
<=
X"AC100000"
;
when
16
#
00025
#
=>
romdata
<=
X"AE100000"
;
when
16
#
00026
#
=>
romdata
<=
X"90100000"
;
when
16
#
00027
#
=>
romdata
<=
X"92100000"
;
when
16
#
00028
#
=>
romdata
<=
X"94100000"
;
when
16
#
00029
#
=>
romdata
<=
X"96100000"
;
when
16
#
0002
A
#
=>
romdata
<=
X"98100000"
;
when
16
#
0002
B
#
=>
romdata
<=
X"9A100000"
;
when
16
#
0002
C
#
=>
romdata
<=
X"9C100000"
;
when
16
#
0002
D
#
=>
romdata
<=
X"9E100000"
;
when
16
#
0002
E
#
=>
romdata
<=
X"86A0E001"
;
when
16
#
0002
F
#
=>
romdata
<=
X"16BFFFEF"
;
when
16
#
00030
#
=>
romdata
<=
X"81E00000"
;
when
16
#
00031
#
=>
romdata
<=
X"82102002"
;
when
16
#
00032
#
=>
romdata
<=
X"81904000"
;
when
16
#
00033
#
=>
romdata
<=
X"03000004"
;
when
16
#
00034
#
=>
romdata
<=
X"821060E0"
;
when
16
#
00035
#
=>
romdata
<=
X"81884000"
;
when
16
#
00036
#
=>
romdata
<=
X"01000000"
;
when
16
#
00037
#
=>
romdata
<=
X"01000000"
;
when
16
#
00038
#
=>
romdata
<=
X"01000000"
;
when
16
#
00039
#
=>
romdata
<=
X"83480000"
;
when
16
#
0003
A
#
=>
romdata
<=
X"8330600C"
;
when
16
#
0003
B
#
=>
romdata
<=
X"80886001"
;
when
16
#
0003
C
#
=>
romdata
<=
X"02800024"
;
when
16
#
0003
D
#
=>
romdata
<=
X"01000000"
;
when
16
#
0003
E
#
=>
romdata
<=
X"07000000"
;
when
16
#
0003
F
#
=>
romdata
<=
X"8610E178"
;
when
16
#
00040
#
=>
romdata
<=
X"C108C000"
;
when
16
#
00041
#
=>
romdata
<=
X"C118C000"
;
when
16
#
00042
#
=>
romdata
<=
X"C518C000"
;
when
16
#
00043
#
=>
romdata
<=
X"C918C000"
;
when
16
#
00044
#
=>
romdata
<=
X"CD18C000"
;
when
16
#
00045
#
=>
romdata
<=
X"D118C000"
;
when
16
#
00046
#
=>
romdata
<=
X"D518C000"
;
when
16
#
00047
#
=>
romdata
<=
X"D918C000"
;
when
16
#
00048
#
=>
romdata
<=
X"DD18C000"
;
when
16
#
00049
#
=>
romdata
<=
X"E118C000"
;
when
16
#
0004
A
#
=>
romdata
<=
X"E518C000"
;
when
16
#
0004
B
#
=>
romdata
<=
X"E918C000"
;
when
16
#
0004
C
#
=>
romdata
<=
X"ED18C000"
;
when
16
#
0004
D
#
=>
romdata
<=
X"F118C000"
;
when
16
#
0004
E
#
=>
romdata
<=
X"F518C000"
;
when
16
#
0004
F
#
=>
romdata
<=
X"F918C000"
;
when
16
#
00050
#
=>
romdata
<=
X"FD18C000"
;
when
16
#
00051
#
=>
romdata
<=
X"01000000"
;
when
16
#
00052
#
=>
romdata
<=
X"01000000"
;
when
16
#
00053
#
=>
romdata
<=
X"01000000"
;
when
16
#
00054
#
=>
romdata
<=
X"01000000"
;
when
16
#
00055
#
=>
romdata
<=
X"01000000"
;
when
16
#
00056
#
=>
romdata
<=
X"89A00842"
;
when
16
#
00057
#
=>
romdata
<=
X"01000000"
;
when
16
#
00058
#
=>
romdata
<=
X"01000000"
;
when
16
#
00059
#
=>
romdata
<=
X"01000000"
;
when
16
#
0005
A
#
=>
romdata
<=
X"01000000"
;
when
16
#
0005
B
#
=>
romdata
<=
X"10800005"
;
when
16
#
0005
C
#
=>
romdata
<=
X"01000000"
;
when
16
#
0005
D
#
=>
romdata
<=
X"01000000"
;
when
16
#
0005
E
#
=>
romdata
<=
X"00000000"
;
when
16
#
0005
F
#
=>
romdata
<=
X"00000000"
;
when
16
#
00060
#
=>
romdata
<=
X"87444000"
;
when
16
#
00061
#
=>
romdata
<=
X"8730E01C"
;
when
16
#
00062
#
=>
romdata
<=
X"8688E00F"
;
when
16
#
00063
#
=>
romdata
<=
X"12800016"
;
when
16
#
00064
#
=>
romdata
<=
X"03200000"
;
when
16
#
00065
#
=>
romdata
<=
X"05040E00"
;
when
16
#
00066
#
=>
romdata
<=
X"8410A133"
;
when
16
#
00067
#
=>
romdata
<=
X"C4204000"
;
when
16
#
00068
#
=>
romdata
<=
X"0539AE05"
;
when
16
#
00069
#
=>
romdata
<=
X"8410A25F"
;
when
16
#
0006
A
#
=>
romdata
<=
X"C4206004"
;
when
16
#
0006
B
#
=>
romdata
<=
X"050003FC"
;
when
16
#
0006
C
#
=>
romdata
<=
X"C4206008"
;
when
16
#
0006
D
#
=>
romdata
<=
X"82103860"
;
when
16
#
0006
E
#
=>
romdata
<=
X"C4004000"
;
when
16
#
0006
F
#
=>
romdata
<=
X"8530A00C"
;
when
16
#
00070
#
=>
romdata
<=
X"03000004"
;
when
16
#
00071
#
=>
romdata
<=
X"82106009"
;
when
16
#
00072
#
=>
romdata
<=
X"80A04002"
;
when
16
#
00073
#
=>
romdata
<=
X"12800006"
;
when
16
#
00074
#
=>
romdata
<=
X"033FFC00"
;
when
16
#
00075
#
=>
romdata
<=
X"82106100"
;
when
16
#
00076
#
=>
romdata
<=
X"05248820"
;
when
16
#
00077
#
=>
romdata
<=
X"8410A3CD"
;
when
16
#
00078
#
=>
romdata
<=
X"C4204000"
;
when
16
#
00079
#
=>
romdata
<=
X"05000080"
;
when
16
#
0007
A
#
=>
romdata
<=
X"82100000"
;
when
16
#
0007
B
#
=>
romdata
<=
X"80A0E000"
;
when
16
#
0007
C
#
=>
romdata
<=
X"02800005"
;
when
16
#
0007
D
#
=>
romdata
<=
X"01000000"
;
when
16
#
0007
E
#
=>
romdata
<=
X"82004002"
;
when
16
#
0007
F
#
=>
romdata
<=
X"10BFFFFC"
;
when
16
#
00080
#
=>
romdata
<=
X"8620E001"
;
when
16
#
00081
#
=>
romdata
<=
X"3D1003FF"
;
when
16
#
00082
#
=>
romdata
<=
X"BC17A3E0"
;
when
16
#
00083
#
=>
romdata
<=
X"BC278001"
;
when
16
#
00084
#
=>
romdata
<=
X"9C27A060"
;
when
16
#
00085
#
=>
romdata
<=
X"03100000"
;
when
16
#
00086
#
=>
romdata
<=
X"81C04000"
;
when
16
#
00087
#
=>
romdata
<=
X"01000000"
;
when
16
#
00088
#
=>
romdata
<=
X"00000000"
;
when
16
#
00089
#
=>
romdata
<=
X"00000000"
;
when
16
#
0008
A
#
=>
romdata
<=
X"00000000"
;
when
16
#
0008
B
#
=>
romdata
<=
X"00000000"
;
when
16
#
0008
C
#
=>
romdata
<=
X"00000000"
;
when
others
=>
romdata
<=
(
others
=>
'-'
);
end
case
;
end
process
;
-- pragma translate_off
bootmsg
:
report_version
generic
map
(
"ahbrom"
&
tost
(
hindex
)
&
": 32-bit AHB ROM Module, "
&
tost
(
bytes
/
4
)
&
" words, "
&
tost
(
abits
-2
)
&
" address bits"
);
-- pragma translate_on
end
;
grlib/designs/leon3-xilinx/config.vhd
0 → 100644
View file @
0225011c
-----------------------------------------------------------------------------
-- LEON3 Demonstration design test bench configuration
-- Copyright (C) 2009 Aeroflex Gaisler
------------------------------------------------------------------------------
library
techmap
;
use
techmap
.
gencomp
.
all
;
package
config
is
-- Technology and synthesis options
constant
CFG_FABTECH
:
integer
:
=
artix7
;
constant
CFG_MEMTECH
:
integer
:
=
artix7
;
constant
CFG_PADTECH
:
integer
:
=
artix7
;
constant
CFG_NOASYNC
:
integer
:
=
0
;
constant
CFG_SCAN
:
integer
:
=
0
;
-- Clock generator
constant
CFG_CLKTECH
:
integer
:
=
artix7
;
constant
CFG_CLKMUL
:
integer
:
=
(
1
);
constant
CFG_CLKDIV
:
integer
:
=
(
10
);
constant
CFG_OCLKDIV
:
integer
:
=
1
;
constant
CFG_OCLKBDIV
:
integer
:
=
0
;
constant
CFG_OCLKCDIV
:
integer
:
=
0
;
constant
CFG_PCIDLL
:
integer
:
=
0
;
constant
CFG_PCISYSCLK
:
integer
:
=
0
;
constant
CFG_CLK_NOFB
:
integer
:
=
0
;
-- LEON3 processor core
constant
CFG_LEON3
:
integer
:
=
1
;
constant
CFG_NCPU
:
integer
:
=
(
1
);
constant
CFG_NWIN
:
integer
:
=
(
8
);
constant
CFG_V8
:
integer
:
=
0
+
4
*
0
;
constant
CFG_MAC
:
integer
:
=
0
;
constant
CFG_BP
:
integer
:
=
0
;
constant
CFG_SVT
:
integer
:
=
0
;
constant
CFG_RSTADDR
:
integer
:
=
16
#
00000
#
;
constant
CFG_LDDEL
:
integer
:
=
(
1
);
constant
CFG_NOTAG
:
integer
:
=
0
;
constant
CFG_NWP
:
integer
:
=
(
0
);
constant
CFG_PWD
:
integer
:
=
0
*
2
;
constant
CFG_FPU
:
integer
:
=
0
+
16
*
0
+
32
*
0
;
constant
CFG_GRFPUSH
:
integer
:
=
0
;
constant
CFG_ICEN
:
integer
:
=
1
;
constant
CFG_ISETS
:
integer
:
=
1
;
constant
CFG_ISETSZ
:
integer
:
=
4
;
constant
CFG_ILINE
:
integer
:
=
8
;
constant
CFG_IREPL
:
integer
:
=
0
;
constant
CFG_ILOCK
:
integer
:
=
0
;
constant
CFG_ILRAMEN
:
integer
:
=
0
;
constant
CFG_ILRAMADDR
:
integer
:
=
16
#
8
E
#
;
constant
CFG_ILRAMSZ
:
integer
:
=
1
;
constant
CFG_DCEN
:
integer
:
=
1
;
constant
CFG_DSETS
:
integer
:
=
1
;
constant
CFG_DSETSZ
:
integer
:
=
4
;
constant
CFG_DLINE
:
integer
:
=
8
;
constant
CFG_DREPL
:
integer
:
=
0
;
constant
CFG_DLOCK
:
integer
:
=
0
;
constant
CFG_DSNOOP
:
integer
:
=
0
+
0
+
4
*
0
;
constant
CFG_DFIXED
:
integer
:
=
16
#
0
#
;
constant
CFG_DLRAMEN
:
integer
:
=
0
;
constant
CFG_DLRAMADDR
:
integer
:
=
16
#
8
F
#
;
constant
CFG_DLRAMSZ
:
integer
:
=
1
;
constant
CFG_MMUEN
:
integer
:
=
1
;
constant
CFG_ITLBNUM
:
integer
:
=
8
;
constant
CFG_DTLBNUM
:
integer
:
=
8
;
constant
CFG_TLB_TYPE
:
integer
:
=
0
+
1
*
2
;
constant
CFG_TLB_REP
:
integer
:
=
1
;
constant
CFG_MMU_PAGE
:
integer
:
=
0
;
constant
CFG_DSU
:
integer
:
=
0
;
constant
CFG_ITBSZ
:
integer
:
=
0
;
constant
CFG_ATBSZ
:
integer
:
=
0
;
constant
CFG_LEON3FT_EN
:
integer
:
=
0
;
constant
CFG_IUFT_EN
:
integer
:
=
0
;
constant
CFG_FPUFT_EN
:
integer
:
=
0
;
constant
CFG_RF_ERRINJ
:
integer
:
=
0
;
constant
CFG_CACHE_FT_EN
:
integer
:
=
0
;
constant
CFG_CACHE_ERRINJ
:
integer
:
=
0
;
constant
CFG_LEON3_NETLIST
:
integer
:
=
0
;
constant
CFG_DISAS
:
integer
:
=
0
+
0
;
constant
CFG_PCLOW
:
integer
:
=
2
;
-- AMBA settings
constant
CFG_DEFMST
:
integer
:
=
(
0
);
constant
CFG_RROBIN
:
integer
:
=
1
;
constant
CFG_SPLIT
:
integer
:
=
0
;
constant
CFG_FPNPEN
:
integer
:
=
0
;
constant
CFG_AHBIO
:
integer
:
=
16
#
FFF
#
;
constant
CFG_AHBDW
:
integer
:
=
128
;
constant
CFG_APBADDR
:
integer
:
=
16
#
800
#
;
constant
CFG_AHB_MON
:
integer
:
=
0
;
constant
CFG_AHB_MONERR
:
integer
:
=
0
;
constant
CFG_AHB_MONWAR
:
integer
:
=
0
;
constant
CFG_AHB_DTRACE
:
integer
:
=
0
;
-- DSU UART
constant
CFG_AHB_UART
:
integer
:
=
1
;
-- JTAG based DSU interface
constant
CFG_AHB_JTAG
:
integer
:
=
0
;
-- Ethernet DSU
constant
CFG_DSU_ETH
:
integer
:
=
0
+
0
+
0
;
constant
CFG_ETH_BUF
:
integer
:
=
1
;
constant
CFG_ETH_IPM
:
integer
:
=
16
#
C0A8
#
;
constant
CFG_ETH_IPL
:
integer
:
=
16
#
0033
#
;
constant
CFG_ETH_ENM
:
integer
:
=
16
#
020000
#
;
constant
CFG_ETH_ENL
:
integer
:
=
16
#
000009
#
;
-- PROM/SRAM controller
constant
CFG_SRCTRL
:
integer
:
=
0
;
constant
CFG_SRCTRL_PROMWS
:
integer
:
=
0
;
constant
CFG_SRCTRL_RAMWS
:
integer
:
=
0
;
constant
CFG_SRCTRL_IOWS
:
integer
:
=
0
;
constant
CFG_SRCTRL_RMW
:
integer
:
=
0
;
constant
CFG_SRCTRL_8BIT
:
integer
:
=
0
;
constant
CFG_SRCTRL_SRBANKS
:
integer
:
=
1
;
constant
CFG_SRCTRL_BANKSZ
:
integer
:
=
0
;
constant
CFG_SRCTRL_ROMASEL
:
integer
:
=
0
;
-- LEON2 memory controller
constant
CFG_MCTRL_LEON2
:
integer
:
=
1
;
constant
CFG_MCTRL_RAM8BIT
:
integer
:
=
0
;
constant
CFG_MCTRL_RAM16BIT
:
integer
:
=
0
;
constant
CFG_MCTRL_5CS
:
integer
:
=
0
;
constant
CFG_MCTRL_SDEN
:
integer
:
=
1
;
constant
CFG_MCTRL_SEPBUS
:
integer
:
=
0
;
constant
CFG_MCTRL_INVCLK
:
integer
:
=
0
;
constant
CFG_MCTRL_SD64
:
integer
:
=
0
;
constant
CFG_MCTRL_PAGE
:
integer
:
=
1
+
0
;
-- SDRAM controller
constant
CFG_SDCTRL
:
integer
:
=
0
;
constant
CFG_SDCTRL_INVCLK
:
integer
:
=
0
;
constant
CFG_SDCTRL_SD64
:
integer
:
=
0
;
constant
CFG_SDCTRL_PAGE
:
integer
:
=
0
+
0
;
-- AHB ROM
constant
CFG_AHBROMEN
:
integer
:
=
0
;
constant
CFG_AHBROPIP
:
integer
:
=
0
;
constant
CFG_AHBRODDR
:
integer
:
=
16
#
000
#
;
constant
CFG_ROMADDR
:
integer
:
=
16
#
000
#
;
constant
CFG_ROMMASK
:
integer
:
=
16
#
E00
#
+
16
#
000
#
;
-- AHB RAM
constant
CFG_AHBRAMEN
:
integer
:
=
0
;
constant
CFG_AHBRSZ
:
integer
:
=
1
;
constant
CFG_AHBRADDR
:
integer
:
=
16
#
A00
#
;
constant
CFG_AHBRPIPE
:
integer
:
=
0
;
-- Gaisler Ethernet core
constant
CFG_GRETH
:
integer
:
=
0
;
constant
CFG_GRETH1G
:
integer
:
=
0
;
constant
CFG_ETH_FIFO
:
integer
:
=
8
;
-- CAN 2.0 interface
constant
CFG_CAN
:
integer
:
=
0
;
constant
CFG_CANIO
:
integer
:
=
16
#
0
#
;
constant
CFG_CANIRQ
:
integer
:
=
0
;
constant
CFG_CANLOOP
:
integer
:
=
0
;
constant
CFG_CAN_SYNCRST
:
integer
:
=
0
;
constant
CFG_CANFT
:
integer
:
=
0
;
-- PCI interface
constant
CFG_PCI
:
integer
:
=
0
;
constant
CFG_PCIVID
:
integer
:
=
16
#
0
#
;
constant
CFG_PCIDID
:
integer
:
=
16
#
0
#
;
constant
CFG_PCIDEPTH
:
integer
:
=
8
;
constant
CFG_PCI_MTF
:
integer
:
=
1
;
-- PCI arbiter
constant
CFG_PCI_ARB
:
integer
:
=
0
;
constant
CFG_PCI_ARBAPB
:
integer
:
=
0
;
constant
CFG_PCI_ARB_NGNT
:
integer
:
=
4
;
-- PCI trace buffer
constant
CFG_PCITBUFEN
:
integer
:
=
0
;
constant
CFG_PCITBUF
:
integer
:
=
256
;
-- Spacewire interface
constant
CFG_SPW_EN
:
integer
:
=
0
;
constant
CFG_SPW_NUM
:
integer
:
=
1
;
constant
CFG_SPW_AHBFIFO
:
integer
:
=
4
;
constant
CFG_SPW_RXFIFO
:
integer
:
=
16
;
constant
CFG_SPW_RMAP
:
integer
:
=
0
;
constant
CFG_SPW_RMAPBUF
:
integer
:
=
4
;
constant
CFG_SPW_RMAPCRC
:
integer
:
=
0
;
constant
CFG_SPW_NETLIST
:
integer
:
=
0
;
constant
CFG_SPW_FT
:
integer
:
=
0
;
constant
CFG_SPW_GRSPW
:
integer
:
=
2
;
constant
CFG_SPW_RXUNAL
:
integer
:
=
0
;
constant
CFG_SPW_DMACHAN
:
integer
:
=
1
;
constant
CFG_SPW_PORTS
:
integer
:
=
1
;
constant
CFG_SPW_INPUT
:
integer
:
=
2
;
constant
CFG_SPW_OUTPUT
:
integer
:
=
0
;
constant
CFG_SPW_RTSAME
:
integer
:
=
0
;
-- UART 1
constant
CFG_UART1_ENABLE
:
integer
:
=
1
;
constant
CFG_UART1_FIFO
:
integer
:
=
4
;
-- UART 2
constant
CFG_UART2_ENABLE
:
integer
:
=
0
;
constant
CFG_UART2_FIFO
:
integer
:
=
1
;
-- LEON3 interrupt controller
constant
CFG_IRQ3_ENABLE
:
integer
:
=
1
;
constant
CFG_IRQ3_NSEC
:
integer
:
=
0
;
-- Modular timer
constant
CFG_GPT_ENABLE
:
integer
:
=
1
;
constant
CFG_GPT_NTIM
:
integer
:
=
(
2
);
constant
CFG_GPT_SW
:
integer
:
=
(
8
);
constant
CFG_GPT_TW
:
integer
:
=
(
32
);
constant
CFG_GPT_IRQ
:
integer
:
=
(
8
);
constant
CFG_GPT_SEPIRQ
:
integer
:
=
1
;
constant
CFG_GPT_WDOGEN
:
integer
:
=
1
;
constant
CFG_GPT_WDOG
:
integer
:
=
16
#
FFFF
#
;
-- GPIO port
constant
CFG_GRGPIO_ENABLE
:
integer
:
=
1
;
constant
CFG_GRGPIO_IMASK
:
integer
:
=
16
#
0000
#
;
constant
CFG_GRGPIO_WIDTH
:
integer
:
=
(
8
);
-- GRLIB debugging
constant
CFG_DUART
:
integer
:
=
0
;
end
;
grlib/designs/leon3-xilinx/leon3mp.ucf
0 → 100644
View file @
0225011c
This diff is collapsed.
Click to expand it.
grlib/designs/leon3-xilinx/leon3mp.vhd
0 → 100644
View file @
0225011c
------------------------------------------------------------------------------
-- LEON3 Demonstration design
-- Copyright (C) 2013 Aeroflex Gaisler
------------------------------------------------------------------------------
-- This file is a part of the GRLIB VHDL IP LIBRARY
-- Copyright (C) 2003 - 2008, Gaisler Research
-- Copyright (C) 2008 - 2014, Aeroflex Gaisler
-- Copyright (C) 2015 - 2020, Cobham Gaisler
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
library
grlib
;
use
grlib
.
amba
.
all
;
use
grlib
.
stdlib
.
all
;
use
grlib
.
devices
.
all
;
library
techmap
;
use
techmap
.
gencomp
.
all
;
use
techmap
.
allclkgen
.
all
;
library
gaisler
;
use
gaisler
.
memctrl
.
all
;
use
gaisler
.
leon3
.
all
;
use
gaisler
.
uart
.
all
;
use
gaisler
.
misc
.
all
;
use
gaisler
.
jtag
.
all
;
--pragma translate_off
use
gaisler
.
sim
.
all
;
--pragma translate_on
library
esa
;
use
esa
.
memoryctrl
.
all
;
use
work
.
config
.
all
;
entity
leon3mp
is
generic
(
fabtech
:
integer
:
=
CFG_FABTECH
;
memtech
:
integer
:
=
CFG_MEMTECH
;
padtech
:
integer
:
=
CFG_PADTECH
;
clktech
:
integer
:
=
CFG_CLKTECH
);
port
(
clk
:
in
std_ulogic
;
-- FPGA main clock input
-- Buttons & LEDs
btnCpuResetn
:
in
std_ulogic
;
-- Reset button
Led
:
out
std_logic_vector
(
15
downto
0
);
-- Onboard Cellular RAM
RamOE
:
out
std_ulogic
;
RamWE
:
out
std_ulogic
;
RamAdv
:
out
std_ulogic
;
RamCE
:
out
std_ulogic
;
RamClk
:
out
std_ulogic
;
RamCRE
:
out
std_ulogic
;
RamLB
:
out
std_ulogic
;
RamUB
:
out
std_ulogic
;
address
:
out
std_logic_vector
(
22
downto
0
);
data
:
inout
std_logic_vector
(
15
downto
0
);
-- USB-RS232 interface
RsRx
:
in
std_logic
;
RsTx
:
out
std_logic
);
end
;
architecture
rtl
of
leon3mp
is
signal
vcc
:
std_logic
;
signal
gnd
:
std_logic
;
-- Memory controler signals
signal
memi
:
memory_in_type
;
signal
memo
:
memory_out_type
;
signal
wpo
:
wprot_out_type
;
-- AMBA bus signals
signal
apbi
:
apb_slv_in_type
;
signal
apbo
:
apb_slv_out_vector
:
=
(
others
=>
apb_none
);
signal
ahbsi
:
ahb_slv_in_type
;
signal
ahbso
:
ahb_slv_out_vector
:
=
(
others
=>
ahbs_none
);
signal
ahbmi
:
ahb_mst_in_type
;