humpback: copied connectors

pull/4/head
occheung 2020-08-07 16:32:44 +08:00
parent cd8c2e980d
commit f6ccae48f3
2 changed files with 73 additions and 111 deletions

View File

@ -62,10 +62,10 @@ class HumpbackPlatform(LatticeICE40Platform):
]
# Using the dict approach in (o)migen
# Note: Numbering is required in nMigen, so some probably meaningful strings/integers are inserted
# Note: Numbering is required in nMigen, so some probably not very meaningful strings/integers are inserted
connectors = [
# EEM0 Connection Interface
# EEM0 Connector
Connector("eem", 0, {
"d0_cc_n": "H1",
"d0_cc_p": "J3",
@ -85,7 +85,7 @@ class HumpbackPlatform(LatticeICE40Platform):
"d7_p" : "G3",
}),
# EEM1 Connection Interface
# EEM1 Connector
Connector("eem", 1, {
"d0_cc_n": "L3",
"d0_cc_p": "L6",
@ -105,7 +105,7 @@ class HumpbackPlatform(LatticeICE40Platform):
"d7_p": "K4",
}),
# EEM2 Connection Interface
# EEM2 Connector
Connector("eem", 2, {
"d0_cc_n": "G1",
"d0_cc_p": "J5",
@ -125,8 +125,8 @@ class HumpbackPlatform(LatticeICE40Platform):
"d7_p": "R1",
}),
# STM32 Connection Pins
Connector("stm32", "pin", {
# STM32 Nucleo/ Arduino Connector
Connector("stm32", "pins", {
"PA0": "A2",
"PA1": "P14",
"PA2": "B8",
@ -179,6 +179,73 @@ class HumpbackPlatform(LatticeICE40Platform):
"PG2": "K14",
"PG3": "K15",
}),
# Beaglebone Black Connector
Connector("bb", "pins", {
"CLKOUT": "R9",
"GPIO0_7": "R14",
"GPIO1_16": "A16",
"GPIO1_17": "R3",
"GPIO1_29": "D11",
"GPIO1_31": "D14",
"GPIO2_6": "D16",
"GPIO2_7": "C16",
"GPIO2_8": "E16",
"GPIO2_9": "D15",
"GPIO2_11": "F15",
"GPIO2_13": "F16",
"GPIO2_22": "C11",
"GPIO2_23": "C10",
"GPIO2_24": "E10",
"GPIO2_25": "D4",
"GPIO3_19": "P4",
"GPIO3_21": "R4",
"GPMC_A2": "T7",
"GPMC_A3": "T1",
"GPMC_A14": "F9",
"GPMC_A15": "B7",
"GPMC_AD0": "C12",
"GPMC_AD1": "E11",
"GPMC_AD2": "J12",
"GPMC_AD3": "J11",
"GPMC_AD4": "C13",
"GPMC_AD5": "C14",
"GPMC_AD6": "J14",
"GPMC_AD7": "J13",
"GPMC_AD8": "E13",
"GPMC_AD9": "G13",
"GPMC_AD10": "G14",
"GPMC_AD11": "G10",
"GPMC_AD12": "E14",
"GPMC_AD13": "H14",
"GPMC_AD14": "F14",
"GPMC_AD15": "F13",
"GPMC_ADVN": "H12",
"GPMC_BE0N": "G16",
"GPMC_CLK": "H11",
"GPMC_CSN1": "D13",
"GPMC_OEN": "H13",
"GPMC_WE1N": "G15",
}),
# ESP32 Connector
Connector("esp32", "pins", {
"IO2": "D9",
"IO4": "D7",
"IO22": "C7",
"IO34": "E9",
"IO35": "C9",
}),
# OrangePI Zero Connector
Connector("orange_pi", "pins", {
"PG06": "A15",
}),
]
# tool chain setup, using default ICE40 HX8K evaluation code

View File

@ -1,105 +0,0 @@
import pandas as pd
# Get dictionaries of:
# - Non-global GPIO to FPGA mapping
# - Global GPIO to FPGA mapping
# (Ordered)
def GPIOMapping():
# Standard extraction of data from excel file
data = pd.read_excel("nmigen/FPGA_pins.xlsx", skiprows = range(1,2))
df = pd.DataFrame(data, columns=["Designator", "Pin Name", "Net"])
stm32 = df[df.Net.str.startswith("STM32")]
# Change some GPIO mapping for Nucleo-H743ZI2
# Created a mapping from old pins to new pins
old_to_new_dict = {
# Old : New
"PC1" :"PB1" ,
"PC4" :"PC2" ,
"PC5" :"PF10" ,
"PA1" :"PB2" ,
"PA7" :"PE9" ,
"PA8" :"PF2" ,
"PA9" :"PF1" ,
"PA10" :"PF0" ,
"PB1" :"PF4" ,
"PC2" :"PF5" ,
"PA2" :"PF6" ,
"PB6" :"PG6" ,
"PE13" :"PG12" ,
"PF14" :"PE14" ,
"PE14" :"PE6" ,
}
# Extract data from stm32 dataframe to a dictionary
gpio_dict = {}
global_gpio_dict = {}
for index, row in stm32.iterrows():
# Replace old pins with new pins
# Note: There are 2 PE6 pins on Nucleo-H743ZI2
# This will remove 1 mapping of PE6, keys cannot be duplicated
key = row["Net"].split("_")[1]
if key in old_to_new_dict:
key = old_to_new_dict.pop(key)
dict_entry = {key: row["Designator"]}
# Insert mappings into dictionary
if "BIN" in row["Pin Name"]:
global_gpio_dict.update(dict_entry)
else:
gpio_dict.update(dict_entry)
return gpio_dict, global_gpio_dict
# Function to provide mapping EEM pins to differential pins
# Usage:
# Positive pin: <returned>[<eem_port_val>][<eem_port_ldvs_num>][0]
# Negative pin: <returned>[<eem_port_val>][<eem_port_ldvs_num>][1]
def diffMapping():
eem0 = [
# P+ve , N-ve
[ "J3" , "H1" ],
[ "F5" , "B1" ],
[ "C1" , "C2" ],
[ "F4" , "D2" ],
[ "G5" , "D1" ],
[ "G4" , "E3" ],
[ "H5" , "E2" ],
[ "G3" , "F3" ],
]
eem1 = [
# P+ve , N-ve
[ "L6" , "L3" ],
[ "H6" , "F1" ],
[ "H4" , "G2" ],
[ "J4" , "H2" ],
[ "J2" , "J1" ],
[ "K1" , "K3" ],
[ "L4" , "L1" ],
[ "K4" , "M1" ],
]
eem2 = [
# P+ve , N-ve
[ "J5" , "G1" ],
[ "K5" , "M2" ],
[ "L7" , "N2" ],
[ "M6" , "M3" ],
[ "L5" , "N3" ],
[ "P1" , "M4" ],
[ "P2" , "M5" ],
[ "R1" , "N4" ],
]
return [eem0, eem1, eem2]