Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connect SPI for headers #100

Merged
merged 7 commits into from
May 27, 2024
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 0 additions & 32 deletions data/pins_cw305.xdc

This file was deleted.

24 changes: 0 additions & 24 deletions data/pins_cw312a35.xdc

This file was deleted.

72 changes: 55 additions & 17 deletions data/pins_sonata.xdc
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ set_property -dict { PACKAGE_PIN N1 IOSTANDARD LVCMOS33 } [get_ports {cheriErr[
set_property -dict { PACKAGE_PIN M3 IOSTANDARD LVCMOS33 } [get_ports {cheriErr[7]}];
set_property -dict { PACKAGE_PIN M2 IOSTANDARD LVCMOS33 } [get_ports {cheriErr[8]}];

# USRUSB interface
## USRUSB interface
set_property -dict { PACKAGE_PIN G1 IOSTANDARD LVCMOS18 } [get_ports {usrusb_spd}];
set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS18 } [get_ports {usrusb_v_p}];
set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS18 } [get_ports {usrusb_v_n}];
Expand All @@ -84,7 +84,7 @@ set_property -dict { PACKAGE_PIN J3 IOSTANDARD LVCMOS18 } [get_ports {usrusb_oe
set_property -dict { PACKAGE_PIN K2 IOSTANDARD LVCMOS18 } [get_ports {usrusb_sus}];
set_property -dict { PACKAGE_PIN K1 IOSTANDARD LVCMOS18 } [get_ports {usrusb_vbusdetect}];

# PMOD0
## PMOD0
# set_property -dict { PACKAGE_PIN H14 IOSTANDARD LVCMOS33 } [get_ports {pmod0_1}];
# set_property -dict { PACKAGE_PIN F16 IOSTANDARD LVCMOS33 } [get_ports {pmod0_2}];
# set_property -dict { PACKAGE_PIN F15 IOSTANDARD LVCMOS33 } [get_ports {pmod0_3}];
Expand All @@ -94,7 +94,7 @@ set_property -dict { PACKAGE_PIN K1 IOSTANDARD LVCMOS18 } [get_ports {usrusb_vb
# set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports {pmod0_7}];
# set_property -dict { PACKAGE_PIN K13 IOSTANDARD LVCMOS33 } [get_ports {pmod0_8}];

# PMOD1
## PMOD1
# set_property -dict { PACKAGE_PIN B18 IOSTANDARD LVCMOS33 } [get_ports {pmod1_1}];
# set_property -dict { PACKAGE_PIN E16 IOSTANDARD LVCMOS33 } [get_ports {pmod1_2}];
# set_property -dict { PACKAGE_PIN A18 IOSTANDARD LVCMOS33 } [get_ports {pmod1_3}];
Expand Down Expand Up @@ -129,43 +129,81 @@ set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports ser0_rx];
set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports ser1_tx];
set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports ser1_rx];

# QWIIC and Arduino Shield
## QWIIC and Arduino Shield
set_property -dict { PACKAGE_PIN U7 IOSTANDARD LVCMOS33 } [get_ports sda0];
set_property -dict { PACKAGE_PIN V9 IOSTANDARD LVCMOS33 } [get_ports scl0];

# QWIIC
## QWIIC
set_property -dict { PACKAGE_PIN V7 IOSTANDARD LVCMOS33 } [get_ports sda1];
set_property -dict { PACKAGE_PIN U9 IOSTANDARD LVCMOS33 } [get_ports scl1];

# mikroBUS Click
## mikroBUS Click
set_property -dict { PACKAGE_PIN V1 IOSTANDARD LVCMOS33 } [get_ports mb5]; # SDA
set_property -dict { PACKAGE_PIN U2 IOSTANDARD LVCMOS33 } [get_ports mb6]; # SCL
# Enable pull-ups because this I2C bus will often be undriven externally.
set_property PULLUP true [get_ports mb5]
set_property PULLUP true [get_ports mb6]

# R-Pi Header

# GPIO/I2C bus
## R-Pi Header

## GPIO/SPI1 bus
set_property -dict { PACKAGE_PIN V11 IOSTANDARD LVCMOS33 } [get_ports rph_g21_sclk];
set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports rph_g20_copi];
set_property -dict { PACKAGE_PIN V14 IOSTANDARD LVCMOS33 } [get_ports rph_g19_cipo];
## SPI1 CE0
set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports rph_g18];
## SPI1 CE1
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports rph_g17];
set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports rph_g16_ce2];

## GPIO/SPI0 bus
set_property -dict { PACKAGE_PIN P17 IOSTANDARD LVCMOS33 } [get_ports rph_g11_sclk];
set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports rph_g10_copi];
set_property -dict { PACKAGE_PIN V17 IOSTANDARD LVCMOS33 } [get_ports rph_g9_cipo];
set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports rph_g8_ce0];
## In schematic v0.8 and below, this pin is called rpg_g8_ce1.
set_property -dict { PACKAGE_PIN R11 IOSTANDARD LVCMOS33 } [get_ports rph_g7_ce1];

## GPIO/I2C bus
set_property -dict { PACKAGE_PIN L13 IOSTANDARD LVCMOS33 } [get_ports rph_g2_sda];
# rev 0.3+
## rev 0.3+
set_property -dict { PACKAGE_PIN M16 IOSTANDARD LVCMOS33 } [get_ports rph_g3_scl];
# rev <= 0.2
## rev <= 0.2
# set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports rph_g3_scl];

# for the rev <= 0.2 boards
# enable the internal pull-up resistors, if there are no external resistors on the PCB.
## for the rev <= 0.2 boards
## enable the internal pull-up resistors, if there are no external resistors on the PCB.
# set_property PULLUP true [get_ports rph_g2_sda]
# set_property PULLUP true [get_ports rph_g3_scl]
# rev 0.5+ have on-board pull ups
## rev 0.5+ have on-board pull ups

# ID_SC/SD - I2C bus for HAT ID EEPROM; pull-ups are on the HAT itself
## ID_SC/SD - I2C bus for HAT ID EEPROM; pull-ups are on the HAT itself
set_property -dict { PACKAGE_PIN T15 IOSTANDARD LVCMOS33 } [get_ports rph_g1]; # ID_SC
set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports rph_g0]; # ID_SD
# Enable pull-ups because this I2C bus will often be undriven externally.
## Enable pull-ups because this I2C bus will often be undriven externally.
set_property PULLUP true [get_ports rph_g1]
set_property PULLUP true [get_ports rph_g0]

## Arduino Shield SPI
## COPI
set_property -dict { PACKAGE_PIN M13 IOSTANDARD LVCMOS33 } [get_ports ah_tmpio17];
## SCLK
set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports ah_tmpio15];
## CIPO
set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports ah_tmpio14];
## Chip select
set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports ah_tmpio10];

## mikro BUS SPI
## COPI
set_property -dict { PACKAGE_PIN T3 IOSTANDARD LVCMOS33 } [get_ports mb4];
## CIPO
set_property -dict { PACKAGE_PIN U1 IOSTANDARD LVCMOS33 } [get_ports mb3];
## SCLK
set_property -dict { PACKAGE_PIN T1 IOSTANDARD LVCMOS33 } [get_ports mb2];
## Chip select
set_property -dict { PACKAGE_PIN R1 IOSTANDARD LVCMOS33 } [get_ports mb1];

## RGB LED
set_property -dict { PACKAGE_PIN D9 IOSTANDARD LVCMOS33 } [get_ports rgbled0]

Expand All @@ -181,7 +219,7 @@ set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports appspi_d2]
set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports appspi_d3];
set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports appspi_cs];

# Ethernet MAC
## Ethernet MAC
set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS18 } [get_ports ethmac_rst];
set_property -dict { PACKAGE_PIN D5 IOSTANDARD LVCMOS18 } [get_ports ethmac_copi];
set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS18 } [get_ports ethmac_sclk];
Expand Down
44 changes: 44 additions & 0 deletions data/xbar_main.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,46 @@
size_byte: "0x00001000",
}],
},
{ name: "spi_rp0", // Serial peripheral interface for R-Pi header
type: "device",
clock: "clk_sys_i",
reset: "rst_sys_ni",
xbar: false,
addr_range: [{
base_addr: "0x80303000",
size_byte: "0x00001000",
}],
},
{ name: "spi_rp1", // Serial peripheral interface for R-Pi header
type: "device",
clock: "clk_sys_i",
reset: "rst_sys_ni",
xbar: false,
addr_range: [{
base_addr: "0x80304000",
size_byte: "0x00001000",
}],
},
{ name: "spi_ard", // Serial peripheral interface for Arduino shield
type: "device",
clock: "clk_sys_i",
reset: "rst_sys_ni",
xbar: false,
addr_range: [{
base_addr: "0x80305000",
size_byte: "0x00001000",
}],
},
{ name: "spi_mkr", // Serial peripheral interface for mikro BUS
type: "device",
clock: "clk_sys_i",
reset: "rst_sys_ni",
xbar: false,
addr_range: [{
base_addr: "0x80306000",
size_byte: "0x00001000",
}],
},
{ name: "usbdev", // USB device
type: "device",
clock: "clk_usb_i",
Expand Down Expand Up @@ -185,6 +225,10 @@
"spi_flash",
"spi_lcd",
"spi_eth",
"spi_rp0",
"spi_rp1",
"spi_ard",
"spi_mkr",
"usbdev",
"rv_plic",
],
Expand Down
16 changes: 16 additions & 0 deletions dv/verilator/top_verilator.sv
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,22 @@ module top_verilator (input logic clk_i, rst_ni);
.spi_eth_sck_o ( ),
.spi_eth_irq_ni(1'b1),

.spi_rp0_rx_i (0),
.spi_rp0_tx_o ( ),
.spi_rp0_sck_o( ),

.spi_rp1_rx_i (0),
.spi_rp1_tx_o ( ),
.spi_rp1_sck_o( ),

.spi_ard_rx_i (0),
.spi_ard_tx_o ( ),
.spi_ard_sck_o( ),

.spi_mkr_rx_i (0),
.spi_mkr_tx_o ( ),
.spi_mkr_sck_o( ),

.cheri_en_i (EnableCHERI),
// CHERI output
.cheri_err_o(),
Expand Down
18 changes: 15 additions & 3 deletions rtl/bus/tl_main_pkg.sv

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading