Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
DIOT WIC 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
DIOT WIC Gateware
Commits
1e965514
Commit
1e965514
authored
Feb 10, 2020
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
diot_urv_top: first working demo (leds).
parent
467b5c82
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
374 additions
and
41 deletions
+374
-41
fip_urv.vhd
hdl/rtl/urv_wic/fip_urv.vhd
+33
-30
Manifest.py
hdl/syn/diot_urv_demo/Manifest.py
+2
-0
diot_wic_demo.pdc
hdl/syn/diot_urv_demo/diot_wic_demo.pdc
+300
-0
diot_wic_demo.sdc
hdl/syn/diot_urv_demo/diot_wic_demo.sdc
+25
-0
diot_urv_top.vhd
hdl/top/diot_urv_demo/diot_urv_top.vhd
+9
-6
Makefile
sw/fip_urv/Makefile
+3
-3
fip_urv.c
sw/fip_urv/fip_urv.c
+1
-1
tobin.py
sw/fip_urv/tobin.py
+1
-1
No files found.
hdl/rtl/urv_wic/fip_urv.vhd
View file @
1e965514
...
...
@@ -28,12 +28,14 @@ use ieee.std_logic_1164.all;
use
ieee
.
numeric_std
.
all
;
use
work
.
genram_pkg
.
all
;
use
work
.
memory_loader_pkg
.
all
;
use
work
.
wishbone_pkg
.
all
;
use
work
.
urv_pkg
.
all
;
entity
fip_urv
is
generic
(
g_IRAM_LOG_SIZE
:
natural
:
=
14
;
g_IRAM_LOG_SIZE
:
natural
:
=
12
;
g_DRAM_LOG_SIZE
:
natural
:
=
12
;
g_IRAM_INIT
:
string
);
port
(
clk_sys_i
:
in
std_logic
;
...
...
@@ -89,7 +91,6 @@ architecture arch of fip_urv is
signal
dm_data_write
:
std_logic
;
signal
dwb_out
:
t_wishbone_master_out
;
signal
bus_timeout_cnt
:
unsigned
(
7
downto
0
);
begin
dwb_o
<=
dwb_out
;
...
...
@@ -126,36 +127,41 @@ begin
dm_data_write
<=
not
dm_is_wishbone
and
dm_store
;
U_iram
:
generic_dpram
generic
map
(
g_DATA_WIDTH
=>
32
,
g_SIZE
=>
2
**
(
g_IRAM_LOG_SIZE
-
2
),
g_WITH_BYTE_ENABLE
=>
TRUE
,
g_ADDR_CONFLICT_RESOLUTION
=>
"dont_care"
,
g_INIT_FILE
=>
g_IRAM_INIT
,
g_FAIL_IF_FILE_NOT_FOUND
=>
FALSE
,
g_DUAL_CLOCK
=>
FALSE
)
port
map
(
rst_n_i
=>
rst_n_i
,
clka_i
=>
clk_sys_i
,
bwea_i
=>
"1111"
,
wea_i
=>
'0'
,
aa_i
=>
im_addr
(
g_IRAM_LOG_SIZE
-
1
downto
2
),
da_i
=>
x"0000_0000"
,
qa_o
=>
im_data
,
clkb_i
=>
clk_sys_i
,
bweb_i
=>
dm_data_select
,
web_i
=>
dm_data_write
,
ab_i
=>
dm_addr
(
g_IRAM_LOG_SIZE
-
1
downto
2
),
db_i
=>
dm_data_s
,
qb_o
=>
dm_mem_rdata
);
p_rom
:
process
(
clk_sys_i
)
is
constant
IRAM_WSIZE
:
natural
:
=
2
**
(
g_IRAM_LOG_SIZE
-
2
);
constant
mem
:
t_ram32_type
(
0
to
IRAM_WSIZE
-
1
)
:
=
f_load_mem32_from_file
(
g_IRAM_INIT
,
IRAM_WSIZE
,
True
);
begin
if
rising_edge
(
clk_sys_i
)
then
im_data
<=
mem
(
to_integer
(
unsigned
(
im_addr
(
g_IRAM_LOG_SIZE
-
1
downto
2
))));
end
if
;
end
process
;
-- 1st MByte of the mem is the IRAM
dm_is_wishbone
<=
'1'
when
dm_addr
(
31
downto
20
)
/=
x"000"
else
'0'
;
dm_data_write
<=
not
dm_is_wishbone
and
dm_store
;
dm_data_l
<=
dm_wb_rdata
when
dm_select_wb
=
'1'
else
dm_mem_rdata
;
p_ram
:
process
(
clk_sys_i
)
is
variable
mem
:
t_ram32_type
(
2
**
(
g_DRAM_LOG_SIZE
-
2
)
-
1
downto
0
);
variable
addr
:
natural
range
mem
'range
;
begin
if
rising_edge
(
clk_sys_i
)
then
addr
:
=
to_integer
(
unsigned
(
dm_addr
(
g_DRAM_LOG_SIZE
-
1
downto
2
)));
dm_mem_rdata
<=
mem
(
addr
);
if
dm_data_write
=
'1'
then
for
i
in
0
to
3
loop
if
dm_data_select
(
i
)
=
'1'
then
mem
(
addr
)(
8
*
i
+
7
downto
8
*
i
)
:
=
dm_data_s
(
8
*
i
+
7
downto
8
*
i
);
end
if
;
end
loop
;
end
if
;
end
if
;
end
process
;
-- Wishbone bus arbitration / internal RAM access
p_wishbone_master
:
process
(
clk_sys_i
)
begin
...
...
@@ -202,7 +208,6 @@ begin
dm_load_done
<=
'0'
;
dm_store_done
<=
'0'
;
dm_cycle_in_progress
<=
'1'
;
bus_timeout_cnt
<=
(
others
=>
'0'
);
else
dm_store_done
<=
'0'
;
dm_load_done
<=
'0'
;
...
...
@@ -215,9 +220,7 @@ begin
dwb_out
.
stb
<=
'0'
;
end
if
;
bus_timeout_cnt
<=
bus_timeout_cnt
+
1
;
if
dwb_i
.
ack
=
'1'
or
bus_timeout_cnt
=
100
then
if
dwb_i
.
ack
=
'1'
then
if
dm_wb_write
=
'0'
then
dm_wb_rdata
<=
f_x_to_zero
(
dwb_i
.
dat
);
dm_select_wb
<=
'1'
;
...
...
hdl/syn/diot_urv_demo/Manifest.py
View file @
1e965514
...
...
@@ -11,4 +11,6 @@ syn_project = "diot_urv_demo"
top_module
=
"diot_urv_top"
syn_tool
=
"libero"
files
=
[
'diot_wic_demo.pdc'
,
'diot_wic_demo.sdc'
]
modules
=
{
"local"
:
[
"../../top/diot_urv_demo"
]
}
hdl/syn/diot_urv_demo/diot_wic_demo.pdc
0 → 100644
View file @
1e965514
##==== E-links banks (P2v5) ====##
set_iobank Bank0 -vcci 2.50 -fixed yes
set_iobank Bank5 -vcci 2.50 -fixed yes
set_iobank Bank6 -vcci 2.50 -fixed yes
set_iobank Bank7 -vcci 2.50 -fixed yes
set_io {por_n_b} -pinname T28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
## I/Os assignments
set_io {clk_25m_i} -pinname R1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {button_i} -pinname B3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {ack_i} -pinname K4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {adr_o[0]} -pinname F3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[1]} -pinname G3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[2]} -pinname J4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[3]} -pinname J3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[4]} -pinname H10 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[5]} -pinname H9 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[6]} -pinname L4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[7]} -pinname L3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[8]} -pinname N1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {adr_o[9]} -pinname P1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {cyc_o} -pinname H11 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_i[0]} -pinname F9 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[1]} -pinname F8 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[2]} -pinname N4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[3]} -pinname P4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[4]} -pinname N5 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[5]} -pinname P5 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[6]} -pinname N2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_i[7]} -pinname P2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {dat_o[0]} -pinname M3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[1]} -pinname M4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[2]} -pinname D9 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[3]} -pinname C9 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[4]} -pinname K8 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[5]} -pinname K7 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[6]} -pinname G10 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {dat_o[7]} -pinname F10 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {nostat_o} -pinname L5 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {p3_lgth_o[0]} -pinname H3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {p3_lgth_o[1]} -pinname J11 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {p3_lgth_o[2]} -pinname K3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {rst_o} -pinname M5 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {rstin_o} -pinname N3 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {stb_o} -pinname L9 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {var1_acc_o} -pinname L2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {var1_rdy_i} -pinname L1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {var2_acc_o} -pinname F4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {var2_rdy_i} -pinname G4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {var3_acc_o} -pinname K2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {var3_rdy_i} -pinname K1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE -schmitt_trigger OFF -in_delay OFF
set_io {wclk_o} -pinname N8 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {we_o} -pinname H4 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[0]} -pinname AG1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[1]} -pinname AB6 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[2]} -pinname AD2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[3]} -pinname AA7 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[4]} -pinname AF2 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {leds_o[5]} -pinname AE1 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
### Backplane I/O assignments
#set_io {diag_scl_b} -pinname J15 -fixed YES -iostd LVCMOS25
#set_io {diag_sda_b} -pinname E14 -fixed YES -iostd LVCMOS25
set_io {s1_p_b[0]} -pinname A27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[0]} -pinname B26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[1]} -pinname F20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[1]} -pinname E20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[2]} -pinname G21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[2]} -pinname G20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[3]} -pinname A21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[3]} -pinname A20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[4]} -pinname C23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[4]} -pinname C22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[5]} -pinname D20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[5]} -pinname D19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[6]} -pinname AE27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[6]} -pinname AE26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[7]} -pinname AB25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[7]} -pinname AC25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[8]} -pinname W23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[8]} -pinname Y23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[9]} -pinname AC27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[9]} -pinname AD27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[10]} -pinname E27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[10]} -pinname D26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[11]} -pinname E19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[11]} -pinname F19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[12]} -pinname P27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[12]} -pinname P28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[13]} -pinname J27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[13]} -pinname J28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[14]} -pinname AE22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[14]} -pinname AF22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_p_b[15]} -pinname AC21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_n_b[15]} -pinname AC20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[0]} -pinname AH18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[0]} -pinname AG18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[1]} -pinname L25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[1]} -pinname L26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[2]} -pinname U24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[2]} -pinname U25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[3]} -pinname AF19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[3]} -pinname AF18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[4]} -pinname R24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[4]} -pinname T24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[5]} -pinname E18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[5]} -pinname F18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[6]} -pinname N29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[6]} -pinname N30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[7]} -pinname AA26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[7]} -pinname AA25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[8]} -pinname W29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[8]} -pinname Y29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[9]} -pinname L27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[9]} -pinname M27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[10]} -pinname Y30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[10]} -pinname AA30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[11]} -pinname U29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[11]} -pinname V29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[12]} -pinname N28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[12]} -pinname N27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_p_b[13]} -pinname L28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_n_b[13]} -pinname M28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_p_b[14]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[14]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_p_b[15]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[15]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[0]} -pinname U22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[0]} -pinname V22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[1]} -pinname K24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[1]} -pinname K23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[2]} -pinname H27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[2]} -pinname H28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[3]} -pinname AE17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[3]} -pinname AE18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[4]} -pinname U23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[4]} -pinname V23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[5]} -pinname E21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[5]} -pinname F21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[6]} -pinname M30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[6]} -pinname L30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[7]} -pinname F28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[7]} -pinname G28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[8]} -pinname AK21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[8]} -pinname AK20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[9]} -pinname AJ19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[9]} -pinname AH19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[10]} -pinname H18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[10]} -pinname H17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[11]} -pinname AJ17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[11]} -pinname AJ16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[12]} -pinname G19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[12]} -pinname G18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_p_b[13]} -pinname J18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s3_n_b[13]} -pinname J17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s4_p_b[0]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
# Dummy pin
set_io {s4_n_b[0]} -pinname Y26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s4_p_b[1]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
# Dummpy pin
set_io {s4_n_b[1]} -pinname W25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s4_p_b[2]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
# Dummy pin
set_io {s4_n_b[2]} -pinname W26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[3]} -pinname AE30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[3]} -pinname AG30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s4_p_b[4]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
# Dummy pin
set_io {s4_n_b[4]} -pinname P26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s4_p_b[5]} -pinname -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
# Dummy pin
set_io {s4_n_b[5]} -pinname N25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[6]} -pinname W22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[6]} -pinname Y22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[7]} -pinname J25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[7]} -pinname J26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[8]} -pinname AJ23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[8]} -pinname AJ22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[9]} -pinname K25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[9]} -pinname K26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[10]} -pinname G17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[10]} -pinname G16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[11]} -pinname AG23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[11]} -pinname AG22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[12]} -pinname AH24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[12]} -pinname AH23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_p_b[13]} -pinname AG26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_n_b[13]} -pinname AF25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[0]} -pinname C29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[0]} -pinname D28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[1]} -pinname L24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[1]} -pinname L23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[2]} -pinname U27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[2]} -pinname V27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[3]} -pinname C18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[3]} -pinname B18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[4]} -pinname J20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[4]} -pinname J19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[5]} -pinname AA27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[5]} -pinname AB27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[6]} -pinname B23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[6]} -pinname B22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[7]} -pinname B19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[7]} -pinname C19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[8]} -pinname E23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[8]} -pinname E22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[9]} -pinname C21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[9]} -pinname C20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[10]} -pinname AB29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[10]} -pinname AC29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[11]} -pinname W27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[11]} -pinname Y27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[12]} -pinname A23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[12]} -pinname A22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_p_b[13]} -pinname AB28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_n_b[13]} -pinname AC28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[0]} -pinname U28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[0]} -pinname V28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[1]} -pinname U26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[1]} -pinname V26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[2]} -pinname AJ21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[2]} -pinname AJ20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[3]} -pinname A19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[3]} -pinname A18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[4]} -pinname H25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[4]} -pinname H26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[5]} -pinname J16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[5]} -pinname H16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[6]} -pinname AD21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[6]} -pinname AE21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[7]} -pinname AK23 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[7]} -pinname AK22 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[8]} -pinname F17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[8]} -pinname F16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[9]} -pinname AG25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[9]} -pinname AH25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[10]} -pinname AD19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[10]} -pinname AD18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[11]} -pinname AF21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[11]} -pinname AF20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[12]} -pinname B20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[12]} -pinname B21 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[13]} -pinname E17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[13]} -pinname E16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[14]} -pinname AB19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[14]} -pinname AB18 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_p_b[15]} -pinname AE19 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_n_b[15]} -pinname AE20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
## I/Os not used by WIC
#set_io {s1_p_b[16]} -pinname B17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[16]} -pinname A17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[17]} -pinname AA20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[17]} -pinname AB20 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[18]} -pinname P29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[18]} -pinname P30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[19]} -pinname AB26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[19]} -pinname AC26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[20]} -pinname V24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[20]} -pinname W24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[21]} -pinname T26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[21]} -pinname R27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[22]} -pinname Y25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[22]} -pinname Y24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[23]} -pinname AA29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[23]} -pinname AA28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[24]} -pinname M24 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[24]} -pinname M25 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_p_b[25]} -pinname AB30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s1_n_b[25]} -pinname AC30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s1_en_i} -pinname K27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#
#set_io {s2_p_b[18]} -pinname H29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[18]} -pinname H30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_p_b[19]} -pinname T30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[19]} -pinname U30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_p_b[20]} -pinname W28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[20]} -pinname Y28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_p_b[21]} -pinname V30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s2_n_b[21]} -pinname W30 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s2_en_i} -pinname F27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#
set_io {s3_en_i} -pinname L29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s4_en_i} -pinname AD29 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s5_en_i} -pinname AD28 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#
#set_io {s7_p_b[16]} -pinname AK27 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s7_n_b[16]} -pinname AJ26 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s7_p_b[17]} -pinname D17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
#set_io {s7_n_b[17]} -pinname D16 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
set_io {s7_en_i} -pinname C17 -fixed YES -iostd LVCMOS25 -register NO -res_pull NONE
hdl/syn/diot_urv_demo/diot_wic_demo.sdc
0 → 100644
View file @
1e965514
# Top Level Design Parameters
# Clocks
create_clock -name {diot_wic_top|clk_25m_i} -period 40.000000 -waveform {0.000000 20.000000} clk_25m_i
# False Paths Between Clocks
# False Path Constraints
# Maximum Delay Constraints
# Multicycle Constraints
# Virtual Clocks
# Output Load Constraints
# Driving Cell Constraints
# Wire Loads
# set_wire_load_mode top
# Other Constraints
hdl/top/diot_urv_demo/diot_urv_top.vhd
View file @
1e965514
...
...
@@ -73,8 +73,8 @@ entity diot_urv_top is
s1_p_b
:
inout
std_logic_vector
(
15
downto
0
);
s1_n_b
:
inout
std_logic_vector
(
15
downto
0
);
s1_en_i
:
in
std_logic
;
s2_p_b
:
inout
std_logic_vector
(
21
downto
0
);
s2_n_b
:
inout
std_logic_vector
(
21
downto
0
);
s2_p_b
:
inout
std_logic_vector
(
13
downto
0
);
s2_n_b
:
inout
std_logic_vector
(
13
downto
0
);
s2_en_i
:
in
std_logic
;
s3_p_b
:
inout
std_logic_vector
(
13
downto
0
);
s3_n_b
:
inout
std_logic_vector
(
13
downto
0
);
...
...
@@ -162,7 +162,7 @@ begin
begin
if
rising_edge
(
clk_25m_i
)
then
if
(
por_n_d
(
1
)
=
'0'
or
button_i
=
'1'
)
then
rst_cnt
<=
(
others
=>
'1'
);
rst_cnt
<=
x"0004"
;
--
(others=>'1');
elsif
rst_cnt
/=
(
15
downto
0
=>
'0'
)
then
rst_cnt
<=
rst_cnt
-
1
;
end
if
;
...
...
@@ -191,7 +191,7 @@ begin
inst_fip_urv
:
entity
work
.
fip_urv
generic
map
(
g_iram_init
=>
""
g_iram_init
=>
"
../../../sw/fip_urv/fip_urv.ram
"
)
port
map
(
clk_sys_i
=>
clk_25m_i
,
...
...
@@ -280,7 +280,7 @@ begin
slots_in
(
4
)
.
loops
(
13
downto
0
)
<=
s5_p_b
(
13
downto
0
);
slots_in
(
5
)
.
loops
<=
s7_p_b
(
15
downto
0
);
s1_n_b
(
15
downto
0
)
<=
slots_out
(
0
)
.
relays
;
s2_n_b
(
1
5
downto
0
)
<=
slots_out
(
1
)
.
relays
;
s2_n_b
(
1
3
downto
0
)
<=
slots_out
(
1
)
.
relays
(
13
downto
0
)
;
s3_n_b
(
13
downto
0
)
<=
slots_out
(
2
)
.
relays
(
13
downto
0
);
s4_n_b
(
13
downto
6
)
<=
slots_out
(
3
)
.
relays
(
8
downto
1
);
s4_n_b
(
3
)
<=
slots_out
(
3
)
.
relays
(
0
);
...
...
@@ -294,7 +294,10 @@ begin
slots_in
(
4
)
.
loops
(
15
downto
14
)
<=
(
others
=>
'0'
);
end
block
;
GEN_LEDS_O
:
for
I
in
0
to
5
generate
-- Leds: assign to '0' to switch on the led, 'Z' to switch off.
leds_o
(
0
)
<=
'0'
when
rst_n
=
'0'
or
leds
(
0
)
=
'1'
else
'1'
;
GEN_LEDS_O
:
for
I
in
1
to
5
generate
leds_o
(
I
)
<=
'0'
when
leds
(
I
)
=
'1'
else
'Z'
;
end
generate
;
...
...
sw/fip_urv/Makefile
View file @
1e965514
...
...
@@ -13,7 +13,7 @@ CFLAGS = -mabi=ilp32 -march=rv32im -O
OBJS
=
crt0.o
$(OUTPUT)
.o
LDS
=
ram.ld
all
:
$(OUTPUT).
hex
all
:
$(OUTPUT).
ram
fip_urv_regs.h
:
../../hdl/rtl/urv_wic/fip_urv_regs.cheby
cheby
--gen-c
=
$@
-i
$<
...
...
@@ -21,7 +21,7 @@ fip_urv_regs.h: ../../hdl/rtl/urv_wic/fip_urv_regs.cheby
%.bin
:
%.elf
${
OBJCOPY
}
-O
binary
$<
$@
%.
hex
:
%.bin
%.
ram
:
%.bin
./tobin.py
$<
>
$@
$(OUTPUT).elf
:
$(LDS) $(OBJS)
...
...
@@ -29,7 +29,7 @@ $(OUTPUT).elf: $(LDS) $(OBJS)
$(SIZE)
$@
clean
:
rm
-f
$(OUTPUT)
.elf
$(OUTPUT)
.bin
$(OUTPUT)
.
hex
$(OBJS)
rm
-f
$(OUTPUT)
.elf
$(OUTPUT)
.bin
$(OUTPUT)
.
ram
$(OBJS)
%.o
:
%.S
${
XCC
}
-c
$(CFLAGS)
$<
-o
$@
...
...
sw/fip_urv/fip_urv.c
View file @
1e965514
...
...
@@ -17,7 +17,7 @@ main (void)
{
/* Check for FIP message. */
regs
->
leds
=
leds
;
leds
=
((
leds
<<
1
)
&
0x3f
)
|
((
leds
>>
6
)
&
1
);
leds
=
((
leds
<<
1
)
&
0x3f
)
|
((
leds
>>
5
)
&
1
);
for
(
j
=
0
;
j
<
1000000
;
j
++
)
asm
volatile
(
"nop"
);
}
...
...
sw/fip_urv/tobin.py
View file @
1e965514
...
...
@@ -12,7 +12,7 @@ def main():
sys
.
exit
(
"length of {} is not a multiple of 4"
.
format
(
filename
))
for
i
in
range
(
0
,
len
(
b
),
4
):
v
,
=
struct
.
unpack
(
'<I'
,
b
[
i
:
i
+
4
])
print
(
'{:0
8x
}'
.
format
(
v
))
print
(
'{:0
32b
}'
.
format
(
v
))
if
__name__
==
'__main__'
:
main
()
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