diff --git a/app/package.json b/app/package.json index e8b1be385..d47962025 100644 --- a/app/package.json +++ b/app/package.json @@ -21,6 +21,7 @@ "min": "0.3.0rc1", "max": "0.4.0", "extras": [ + "blackiceprog", "tinyfpgab" ], "external": "" diff --git a/app/resources/boards/blackice/info.json b/app/resources/boards/blackice/info.json new file mode 100644 index 000000000..9fe925ce8 --- /dev/null +++ b/app/resources/boards/blackice/info.json @@ -0,0 +1,10 @@ +{ + "label": "BlackIce", + "datasheet": "https://mystorm.uk/", + "interface": "Serial", + "FPGAResources": { + "pios": 107, + "plbs": 960, + "brams": 32 + } +} diff --git a/app/resources/boards/blackice/pinout.json b/app/resources/boards/blackice/pinout.json new file mode 100644 index 000000000..f1c0a1f73 --- /dev/null +++ b/app/resources/boards/blackice/pinout.json @@ -0,0 +1 @@ +[{"type": "input", "name": "CLK", "value": "129"}, {"type": "output", "name": "LED1", "value": "71"}, {"type": "output", "name": "LED2", "value": "67"}, {"type": "output", "name": "LED3", "value": "68"}, {"type": "output", "name": "LED4", "value": "70"}, {"type": "input", "name": "B1", "value": "63"}, {"type": "input", "name": "B2", "value": "64"}, {"type": "inout", "name": "RESET", "value": "128"}, {"type": "inout", "name": "D16", "value": "41"}, {"type": "inout", "name": "D17", "value": "39"}, {"type": "inout", "name": "D18", "value": "38"}, {"type": "inout", "name": "D19", "value": "37"}, {"type": "inout", "name": "P10", "value": "94"}, {"type": "inout", "name": "P11", "value": "91"}, {"type": "inout", "name": "P12", "value": "88"}, {"type": "inout", "name": "P13", "value": "85"}, {"type": "inout", "name": "P20", "value": "95"}, {"type": "inout", "name": "P21", "value": "93"}, {"type": "inout", "name": "P22", "value": "90"}, {"type": "inout", "name": "P23", "value": "87"}, {"type": "inout", "name": "P30", "value": "105"}, {"type": "inout", "name": "P31", "value": "102"}, {"type": "inout", "name": "P32", "value": "99"}, {"type": "inout", "name": "P33", "value": "97"}, {"type": "inout", "name": "P40", "value": "104"}, {"type": "inout", "name": "P41", "value": "101"}, {"type": "inout", "name": "P42", "value": "98"}, {"type": "inout", "name": "P43", "value": "96"}, {"type": "inout", "name": "P50", "value": "143"}, {"type": "inout", "name": "P51", "value": "114"}, {"type": "inout", "name": "P52", "value": "112"}, {"type": "inout", "name": "P53", "value": "107"}, {"type": "inout", "name": "P60", "value": "144"}, {"type": "inout", "name": "P61", "value": "113"}, {"type": "inout", "name": "P62", "value": "110"}, {"type": "inout", "name": "P63", "value": "106"}, {"type": "inout", "name": "P70", "value": "10"}, {"type": "inout", "name": "P71", "value": "9"}, {"type": "inout", "name": "P72", "value": "2"}, {"type": "inout", "name": "P73", "value": "1"}, {"type": "inout", "name": "P80", "value": "8"}, {"type": "inout", "name": "P81", "value": "7"}, {"type": "inout", "name": "P82", "value": "4"}, {"type": "inout", "name": "P83", "value": "3"}, {"type": "inout", "name": "P90", "value": "20"}, {"type": "inout", "name": "P91", "value": "19"}, {"type": "inout", "name": "P92", "value": "16"}, {"type": "inout", "name": "P93", "value": "15"}, {"type": "inout", "name": "P100", "value": "18"}, {"type": "inout", "name": "P101", "value": "17"}, {"type": "inout", "name": "P102", "value": "12"}, {"type": "inout", "name": "P103", "value": "11"}, {"type": "inout", "name": "P110", "value": "34"}, {"type": "inout", "name": "P111", "value": "33"}, {"type": "inout", "name": "P112", "value": "22"}, {"type": "inout", "name": "P113", "value": "21"}, {"type": "inout", "name": "P120", "value": "32"}, {"type": "inout", "name": "P121", "value": "31"}, {"type": "inout", "name": "P122", "value": "26"}, {"type": "inout", "name": "P123", "value": "25"}, {"type": "inout", "name": "P130", "value": "37"}, {"type": "inout", "name": "P131", "value": "38"}, {"type": "inout", "name": "P132", "value": "39"}, {"type": "inout", "name": "P133", "value": "41"}, {"type": "inout", "name": "P140", "value": "71"}, {"type": "inout", "name": "P141", "value": "67"}, {"type": "inout", "name": "P142", "value": "68"}, {"type": "inout", "name": "P143", "value": "70"}, {"type": "inout", "name": "RAMOE", "value": "29"}, {"type": "inout", "name": "RAMWE", "value": "120"}, {"type": "inout", "name": "RAMCS", "value": "23"}, {"type": "inout", "name": "RAMUB", "value": "28"}, {"type": "inout", "name": "RAMLB", "value": "24"}, {"type": "inout", "name": "ADR0", "value": "137"}, {"type": "inout", "name": "ADR1", "value": "138"}, {"type": "inout", "name": "ADR2", "value": "139"}, {"type": "inout", "name": "ADR3", "value": "141"}, {"type": "inout", "name": "ADR4", "value": "142"}, {"type": "inout", "name": "ADR5", "value": "42"}, {"type": "inout", "name": "ADR6", "value": "43"}, {"type": "inout", "name": "ADR7", "value": "44"}, {"type": "inout", "name": "ADR8", "value": "73"}, {"type": "inout", "name": "ADR9", "value": "74"}, {"type": "inout", "name": "ADR10", "value": "75"}, {"type": "inout", "name": "ADR11", "value": "76"}, {"type": "inout", "name": "ADR12", "value": "115"}, {"type": "inout", "name": "ADR13", "value": "116"}, {"type": "inout", "name": "ADR14", "value": "117"}, {"type": "inout", "name": "ADR15", "value": "118"}, {"type": "inout", "name": "ADR16", "value": "119"}, {"type": "inout", "name": "ADR17", "value": "78"}, {"type": "inout", "name": "DAT0", "value": "136"}, {"type": "inout", "name": "DAT1", "value": "135"}, {"type": "inout", "name": "DAT2", "value": "134"}, {"type": "inout", "name": "DAT3", "value": "130"}, {"type": "inout", "name": "DAT4", "value": "125"}, {"type": "inout", "name": "DAT5", "value": "124"}, {"type": "inout", "name": "DAT6", "value": "122"}, {"type": "inout", "name": "DAT7", "value": "121"}, {"type": "inout", "name": "DAT8", "value": "62"}, {"type": "inout", "name": "DAT9", "value": "61"}, {"type": "inout", "name": "DAT10", "value": "60"}, {"type": "inout", "name": "DAT11", "value": "56"}, {"type": "inout", "name": "DAT12", "value": "55"}, {"type": "inout", "name": "DAT13", "value": "48"}, {"type": "inout", "name": "DAT14", "value": "47"}, {"type": "inout", "name": "DAT15", "value": "45"}, {"type": "inout", "name": "DONE", "value": "52"}, {"type": "inout", "name": "DBG1", "value": "49"}, {"type": "output", "name": "SS", "value": "71"}, {"type": "input", "name": "MISO", "value": "67"}, {"type": "output", "name": "MOSI", "value": "68"}, {"type": "output", "name": "SCK", "value": "70"}] \ No newline at end of file diff --git a/app/resources/boards/blackice/pinout.pcf b/app/resources/boards/blackice/pinout.pcf new file mode 100644 index 000000000..a5c4874cd --- /dev/null +++ b/app/resources/boards/blackice/pinout.pcf @@ -0,0 +1,460 @@ +# ----------------------------------------------------------------------------- +#- BlackIce constraint file (.pcf) +#- By Jesus Arroyo Torrens +#- January - 2018 +#- GPL license +# ----------------------------------------------------------------------------- + + +# ------------ System clock --------------------------------------------------- +set_io --warn-no-port CLK 129 # input + + +# ------------ LEDs map ------------------------------------------------------- +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | #### _|__ +# | LED1...LED4 | | +# | | | +# | |____| +# | _|__ +# | | | +# | | | +# | |____| +# |_ _|__ +# |_| | | +# |_ | | +# |_| |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# +# -- LED1: Blue +# -- LED2: Green +# -- LED3: Yellow +# -- LED4: Red + +set_io --warn-no-port LED1 71 # output +set_io --warn-no-port LED2 67 # output +set_io --warn-no-port LED3 68 # output +set_io --warn-no-port LED4 70 # output + +# LED1 = SS = P140 +# LED2 = MISO = P141 +# LED3 = MOSI = P142 +# LED4 = SCK = P143 + + +# ------------ Buttons map ---------------------------------------------------- +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | [] [] [] _|__ +# | B2 B1 RESET | | +# | | | +# | |____| +# | _|__ +# | | | +# | | | +# | |____| +# |_ _|__ +# |_| | | +# |_ | | +# |_| |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# + +set_io --warn-no-port B1 63 # input +set_io --warn-no-port B2 64 # input +# set_io --warn-no-port RESET 128 ? # input + + +# ------------ Digital connectors --------------------------------------------- +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | _|__ +# | Digital3 | | +# | ************ | | +# | |____| +# | _|__ +# | | | +# | | | +# | |____| +# |_ _|__ +# |_| | | +# |_ Digital1 Digital2 | | +# |_| ******** ********** |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# + +# -------------| Digital1 |---------------------------------------------------- +# +# Connected to the STM32 +# +# --------------------------------------- +# | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | +# --------------------------------------- + +# -------------| Digital2 |---------------------------------------------------- +# +# Connected to the STM32 +# +# ------------------------------------------------- +# | D8 | D9 | D10 | D11 | D12 | D13 | - | - | - | - | +# ------------------------------------------------- + +# -------------| Digital3 |---------------------------------------------------- +# +# Connected to the STM32 +# +# ------------------------------------------------------- +# | - | - | - | - | - | - | - | - | D19 | D18 | D17 | D16 | +# ------------------------------------------------------- + +set_io --warn-no-port D16 41 +set_io --warn-no-port D17 39 +set_io --warn-no-port D18 38 +set_io --warn-no-port D19 37 + +# D16 = P133 +# D17 = P132 +# D18 = P131 +# D19 = P130 + +# ------------ Analog connectors ---------------------------------------------- +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | _|__ +# | Analog | | +# | ****** | | +# | |____| +# | _|__ +# | | | +# | | | +# | |____| +# |_ _|__ +# |_| | | +# |_ | | +# |_| |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# + +# -------------| Analog |------------------------------------------------------ +# +# Connected to the STM32 +# +# ----------------------------- +# | A0 | A1 | A2 | A3 | A4 | A5 | +# ----------------------------- + + +# ------------ PMOD connectors ------------------------------------------------ +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | P14 P13 _|__ +# | | | +# | | | P11/12 +# | |____| +# | _|__ +# | | | +# | | | P9/10 +# | |____| +# |_ _|__ +# |_| | | +# |_ | | P7/8 +# |_| |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# P1/2 P3/4 P5/6 + +# -------------| P1 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P13 | P12 | P11 | P10 | << ^ +# ----------------------------------- +# | 3V3 | GND | P23 | P22 | P21 | P20 | +# ----------------------------------- + +set_io --warn-no-port P10 94 +set_io --warn-no-port P11 91 +set_io --warn-no-port P12 88 +set_io --warn-no-port P13 85 + +# P11 = CH340 RST = RESET (128) + +# -------------| P2 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P13 | P12 | P11 | P10 | ^ +# ----------------------------------- +# | 3V3 | GND | P23 | P22 | P21 | P20 | << +# ----------------------------------- + +set_io --warn-no-port P20 95 +set_io --warn-no-port P21 93 +set_io --warn-no-port P22 90 +set_io --warn-no-port P23 87 + +# -------------| P3 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P33 | P32 | P31 | P30 | << ^ +# ----------------------------------- +# | 3V3 | GND | P43 | P42 | P41 | P40 | +# ----------------------------------- + +set_io --warn-no-port P30 105 +set_io --warn-no-port P31 102 +set_io --warn-no-port P32 99 +set_io --warn-no-port P33 97 + +# -------------| P4 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P33 | P32 | P31 | P30 | ^ +# ----------------------------------- +# | 3V3 | GND | P43 | P42 | P41 | P40 | << +# ----------------------------------- + +set_io --warn-no-port P40 104 +set_io --warn-no-port P41 101 +set_io --warn-no-port P42 98 +set_io --warn-no-port P43 96 + +# -------------| P5 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P53 | P52 | P51 | P50 | << ^ +# ----------------------------------- +# | 3V3 | GND | P63 | P62 | P61 | P60 | +# ----------------------------------- + +set_io --warn-no-port P50 143 +set_io --warn-no-port P51 114 +set_io --warn-no-port P52 112 +set_io --warn-no-port P53 107 + +# -------------| P6 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P53 | P52 | P51 | P50 | ^ +# ----------------------------------- +# | 3V3 | GND | P63 | P62 | P61 | P60 | << +# ----------------------------------- + +set_io --warn-no-port P60 144 +set_io --warn-no-port P61 113 +set_io --warn-no-port P62 110 +set_io --warn-no-port P63 106 + +# -------------| P7 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P73 | P72 | P71 | P70 | << ^ +# ----------------------------------- +# | 3V3 | GND | P83 | P82 | P81 | P80 | +# ----------------------------------- + +set_io --warn-no-port P70 10 +set_io --warn-no-port P71 9 +set_io --warn-no-port P72 2 +set_io --warn-no-port P73 1 + +# -------------| P8 |---------------------------------------------------------- +# +# ----------------------------------- TOP +# | 3V3 | GND | P73 | P72 | P71 | P70 | ^ +# ----------------------------------- +# | 3V3 | GND | P83 | P82 | P81 | P80 | << +# ----------------------------------- + +set_io --warn-no-port P80 8 +set_io --warn-no-port P81 7 +set_io --warn-no-port P82 4 +set_io --warn-no-port P83 3 + +# -------------| P9 |---------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P93 | P92 | P91 | P90 | << ^ +# --------------------------------------- +# | 3V3 | GND | P103 | P102 | P101 | P100 | +# --------------------------------------- + +set_io --warn-no-port P90 20 +set_io --warn-no-port P91 19 +set_io --warn-no-port P92 16 +set_io --warn-no-port P93 15 + +# -------------| P10 |--------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P93 | P92 | P91 | P90 | ^ +# --------------------------------------- +# | 3V3 | GND | P103 | P102 | P101 | P100 | << +# --------------------------------------- + +set_io --warn-no-port P100 18 +set_io --warn-no-port P101 17 +set_io --warn-no-port P102 12 +set_io --warn-no-port P103 11 + +# -------------| P11 |--------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P113 | P112 | P111 | P110 | << ^ +# --------------------------------------- +# | 3V3 | GND | P123 | P122 | P121 | P120 | +# --------------------------------------- + +set_io --warn-no-port P110 34 +set_io --warn-no-port P111 33 +set_io --warn-no-port P112 22 +set_io --warn-no-port P113 21 + +# -------------| P12 |--------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P113 | P112 | P111 | P110 | ^ +# --------------------------------------- +# | 3V3 | GND | P123 | P122 | P121 | P120 | << +# --------------------------------------- + +set_io --warn-no-port P120 32 +set_io --warn-no-port P121 31 +set_io --warn-no-port P122 26 +set_io --warn-no-port P123 25 + +# -------------| P13 |--------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P133 | P132 | P131 | P130 | ^ +# --------------------------------------- + +set_io --warn-no-port P130 37 +set_io --warn-no-port P131 38 +set_io --warn-no-port P132 39 +set_io --warn-no-port P133 41 + +# P130 = D19 +# P131 = D18 +# P132 = D17 +# P133 = D16 + +# -------------| P14 |--------------------------------------------------------- +# +# --------------------------------------- TOP +# | 3V3 | GND | P143 | P142 | P141 | P140 | ^ +# --------------------------------------- + +set_io --warn-no-port P140 71 +set_io --warn-no-port P141 67 +set_io --warn-no-port P142 68 +set_io --warn-no-port P143 70 + +# P140 = LED1 = SS +# P141 = LED2 = MISO +# P142 = LED3 = MOSI +# P143 = LED4 = SCK + + +# ------------ SRAM ----------------------------------------------------------- +# + +set_io --warn-no-port RAMOE 29 +set_io --warn-no-port RAMWE 120 +set_io --warn-no-port RAMCS 23 +set_io --warn-no-port RAMUB 28 +set_io --warn-no-port RAMLB 24 + +# -------------| ADR |--------------------------------------------------------- +set_io --warn-no-port ADR0 137 +set_io --warn-no-port ADR1 138 +set_io --warn-no-port ADR2 139 +set_io --warn-no-port ADR3 141 +set_io --warn-no-port ADR4 142 +set_io --warn-no-port ADR5 42 +set_io --warn-no-port ADR6 43 +set_io --warn-no-port ADR7 44 +set_io --warn-no-port ADR8 73 +set_io --warn-no-port ADR9 74 +set_io --warn-no-port ADR10 75 +set_io --warn-no-port ADR11 76 +set_io --warn-no-port ADR12 115 +set_io --warn-no-port ADR13 116 +set_io --warn-no-port ADR14 117 +set_io --warn-no-port ADR15 118 +set_io --warn-no-port ADR16 119 +set_io --warn-no-port ADR17 78 + +# -------------| DAT |--------------------------------------------------------- +set_io --warn-no-port DAT0 136 +set_io --warn-no-port DAT1 135 +set_io --warn-no-port DAT2 134 +set_io --warn-no-port DAT3 130 +set_io --warn-no-port DAT4 125 +set_io --warn-no-port DAT5 124 +set_io --warn-no-port DAT6 122 +set_io --warn-no-port DAT7 121 +set_io --warn-no-port DAT8 62 +set_io --warn-no-port DAT9 61 +set_io --warn-no-port DAT10 60 +set_io --warn-no-port DAT11 56 +set_io --warn-no-port DAT12 55 +set_io --warn-no-port DAT13 48 +set_io --warn-no-port DAT14 47 +set_io --warn-no-port DAT15 45 + + +# ------------ Debug ---------------------------------------------------------- +# + +set_io --warn-no-port DONE 52 +set_io --warn-no-port DBG1 49 + + +# ------------ FTDI ----------------------------------------------------------- +# + +set_io --warn-no-port SS 71 # output +set_io --warn-no-port MISO 67 # input +set_io --warn-no-port MOSI 68 # output +set_io --warn-no-port SCK 70 # output + +# SS = P140 = LED1 +# MISO = P141 = LED2 +# MOSI = P142 = LED3 +# SCK = P143 = LED4 + + +# ------------ COMS connectors --------------------------------------------- +# ______ ______ +# ___| |______________| |___ +# | |______| |______| | +# | _|__ +# | ** | | +# | ** | | +# | ** |____| +# | ** _|__ +# | ** | | +# | ** | | +# | ** |____| +# |_ _|__ +# |_| | | +# |_ | | +# |_| |____| +# | ______ ______ ______ | +# |___| |___| |___| |___| +# |______| |______| |______| +# diff --git a/app/resources/boards/blackice/rules.json b/app/resources/boards/blackice/rules.json new file mode 100644 index 000000000..f11dd79a2 --- /dev/null +++ b/app/resources/boards/blackice/rules.json @@ -0,0 +1,8 @@ +{ + "input" : [ + { + "port" : "clk", + "pin": "129" + } + ] +} diff --git a/app/resources/boards/icestick/pinout.pcf b/app/resources/boards/icestick/pinout.pcf index 0dd3f17eb..aced25f30 100644 --- a/app/resources/boards/icestick/pinout.pcf +++ b/app/resources/boards/icestick/pinout.pcf @@ -27,11 +27,11 @@ set_io --warn-no-port D4 96 # output set_io --warn-no-port D5 95 # output # ------------ IrDA ----------------------------------------------------------- -set_io --warn-no-port IrDA_TX 105 # output -set_io --warn-no-port IrDA_RX 106 # input +set_io --warn-no-port IR_TX 105 # output +set_io --warn-no-port IR_RX 106 # input #-- IrDA_SD = 0, enable IrDA -set_io --warn-no-port IrDA_SD 107 # output +set_io --warn-no-port IR_SD 107 # output # ------------ PMOD connector ------------------------------------------------- #