User Tools

Site Tools


mb_matrix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mb_matrix [2014/06/14 22:49]
ilmenator [BOM] added BOB-to-STM32 adapter section
mb_matrix [2015/02/22 09:36] (current)
ilmenator [User Interface]
Line 1: Line 1:
 ====== MIDIbox Matrix - MIDI Matrix with 56 Inputs and 56 Outputs ====== ====== MIDIbox Matrix - MIDI Matrix with 56 Inputs and 56 Outputs ======
 This MIDIbox implements a 56-port MIDI matrix/​router using a core board and an FPGA-based add-on board together with a set of break-out boards and modules that allow for physically placing your MIDI ports where you actually need them. This MIDIbox implements a 56-port MIDI matrix/​router using a core board and an FPGA-based add-on board together with a set of break-out boards and modules that allow for physically placing your MIDI ports where you actually need them.
 +
  
 ===== Overview ===== ===== Overview =====
Line 71: Line 72:
 All resistors are placed on the backside of the PCB. All other components are sitting on the front! All resistors are placed on the backside of the PCB. All other components are sitting on the front!
  
-==== BOB-to-STM32 Adapter ==== +==== STM32F4-to-BOB Adapter ==== 
-It is also possible to use a BOB together ​directly with an STM32F4 core board. Especially if you need the MIDI ports at some physical distance from the core board you should use the BOB-to-STM32 adapter. It provides an adapter from the IDC connector J11E to the DSUB 9pin connector on the BOB, as well as a line driver and level shifter for the MIDI out signals coming from the core board.+It is also possible to use a BOB directly ​together ​with an STM32F4 core board. Especially if you need the MIDI ports at some physical distance from the core board you should use the BOB-to-STM32 adapter. It provides an adapter from the IDC connector J11E on the core board to the DSUB 9pin connector on the BOB, as well as a line driver and level shifter for the MIDI out signals coming from the core board.
  
 +{{:​home:​users:​ilmenator:​bob-to-stm32_adapter_top_view.jpg?​300|}} {{:​home:​users:​ilmenator:​bob-to-stm32_adapter_bottom_view.jpg?​300|}}
  
 ===== I/O Board ===== ===== I/O Board =====
Line 99: Line 101:
 | C5 | polarized capacitor | radial | 470µF | 1 | | RAD 470/16 |  ​ | C5 | polarized capacitor | radial | 470µF | 1 | | RAD 470/16 |  ​
 | C6 | polarized capacitor | axial  | 10µF | 1 | | AX 10/​35 | ​ | C6 | polarized capacitor | axial  | 10µF | 1 | | AX 10/​35 | ​
-| U1 | octal buffer / line driver / level shifter | SO20L | 74LVC541 | 1 | |  |  +| U1 | octal buffer / line driver / level shifter | SO20 | 74LVC541 | 1 | 595-SN74LVC541ADWR ​|  |  
-| U2 | octal buffer / line driver / level shifter | SO20L | 74HCT541 | 1 | |  |  +| U2 | octal buffer / line driver / level shifter | SO20 | 74HCT541 | 1 | 595-CD74HCT541M96 ​|  |  
-| U3, U4 | octal buffer / line driver | DIP-20 | 74HC244 | 2 | | 74HC 244 | +| U3, U4 | octal buffer / line driver | DIP-20 | 74HC244 | 2 | 595-SN74HC244N ​| 74HC 244 | 
 | U5 | voltage regulator | TO92 | TS2950 | 1 | | TS 2950 CT33 |  | U5 | voltage regulator | TO92 | TS2950 | 1 | | TS 2950 CT33 | 
 | P1 | IDC connector | 13x2 | IDC angled | 1 | | WSL 26W |  | P1 | IDC connector | 13x2 | IDC angled | 1 | | WSL 26W | 
-| P2, P3 | D-SUB 9pin female socket | DB9 | | 2 | | D-SUB BU 09US | +| P2, P3 | D-SUB 9pin female socket | DB9 | | 2 | 649-D09S33E4PA00LF ​| D-SUB BU 09US | 
 | U3, U4 | IC socket | DIL-20 | | 2 | | GS 20 | | U3, U4 | IC socket | DIL-20 | | 2 | | GS 20 |
 +| | male/female spacer | M3 | 20mm | 4 | | DA 20MM |
  
  
Line 113: Line 116:
 The basic idea is rather simple: for each MIDI out port, a MIDI in port is selected whose signals should be forwarded. This selection is communicated to a 56(64)-to-1 multiplexer via a single 6(8)-bit shift register in the DOUT chain. Indeed, as we have 56 MIDI out ports, the corresponding DOUT chain is 56 shift registers long. However, thanks to the fact that this is "​virtual"​ logic inside the FPGA, such long shift register chains do not present any signal integrity problems as witnessed in some other projects that use long SR chains. Any other DIN or DOUT shift registers you might want to use, e.g. for the user interface, must be located in the SR chain //before// this board. The basic idea is rather simple: for each MIDI out port, a MIDI in port is selected whose signals should be forwarded. This selection is communicated to a 56(64)-to-1 multiplexer via a single 6(8)-bit shift register in the DOUT chain. Indeed, as we have 56 MIDI out ports, the corresponding DOUT chain is 56 shift registers long. However, thanks to the fact that this is "​virtual"​ logic inside the FPGA, such long shift register chains do not present any signal integrity problems as witnessed in some other projects that use long SR chains. Any other DIN or DOUT shift registers you might want to use, e.g. for the user interface, must be located in the SR chain //before// this board.
  
-Additionally,​ you can also merge MIDI streams. The FPGA board holds two PIC16LF88 ​based 2-to-1 MIDI mergers in parallel. Their inputs are served from any of the 56 MIDI in ports, and their outputs are forwarded to the STM32 core board for further MIDI stream processing. These streams can then be fed back into the Matrix and routed to any of the 56 MIDI out ports.+Additionally,​ you can also merge MIDI streams. The FPGA board holds two PIC16(L)F88 ​based 2-to-1 MIDI mergers in parallel. Their inputs are served from any of the 56 MIDI in ports, and their outputs are forwarded to the STM32 core board for further MIDI stream processing. These streams can then be fed back into the Matrix and routed to any of the 56 MIDI out ports.
  
-{{:​home:​users:​ilmenator:​mmv1.1_01.jpg?​300 | A rendering of the FPGA board version 1.1 - the second iteration.}} On the left is a rendering of the FPGA board created with KiCAD. This is the second generation v1.1 FPGA board which has a pair of MIDI I/Os, and an AC power plug (which can also be used to feed DC power). The board can loop through the USB signals from the Micro USB plug found on the STM32F4 Discovery board to the outside world when the whole unit is mounted in an enclosure. The FPGA board connects to J8/J9 of the core board for DIN and DOUT chains, and to J11E for MIDI connectivity.+{{:​home:​users:​ilmenator:​mmv1.1_01.jpg?​300 | A rendering of the FPGA board version 1.1 - the second iteration.}} On the left is a rendering of the FPGA board created with KiCAD. This is the second generation v1.1 FPGA board which has a pair of MIDI I/Os, and an AC power plug (which can also be used to feed DC power). The board can loop through the USB signals from the Micro USB plug found on the STM32F4 Discovery ​(core) ​board to the outside world when the whole unit is mounted in an enclosure. The FPGA board connects to J8/J9 of the core board for DIN and DOUT chains, and to J11E for MIDI connectivity. The pair of MIDI I/O sockets on this board connects directly to MIDI I/O number 4 of the core board. In the future, it might be possible to remote control the MIDIbox Matrix via this MIDI port (yes, if my time allows...).
  
-The FPGA board provides a range of power supply options. It can be fitted with a 5V and a 3.3V power section - the latter is obligatory if you want to use one or two PIC16LF88 MIDI mergers ​which run at 3.3V. Otherwiseit can be omitted, as the FPGA gets its 3.3V from its own 3.3V regulator. Also, you might have a stable 5V supply already, ​in which case you can also omit the 5V section. You can also supply the core board from the FPGA board via J8/J9 and J11E.+The FPGA board provides a range of power supply options. It can be fitted with a 5V and a 3.3V power section - the latter is obligatory if you want to use one or two PIC16LF88 MIDI mergers ​running ​at 3.3V. You can also feed them 5Vin which case the 3.3V power section ​can be omitted, as the FPGA gets its 3.3V from its own 3.3V regulator. Also, you might have a stable 5V supply already. Then, you can also omit the 5V section. You can also supply the core board from the FPGA board via J8/J9 and J11E.
  
 The actual FPGA sits piggyback underneath the PCB, on a separate daughter board. An Altera Cyclone II device is used (EP2C8) which has a sufficiently large number of I/O pins. The daughterboard is from [[http://​www.wvshare.com|Waveshare]],​ a Chinese manufacturer offering a wide range of development and evaluation boards. The actual FPGA sits piggyback underneath the PCB, on a separate daughter board. An Altera Cyclone II device is used (EP2C8) which has a sufficiently large number of I/O pins. The daughterboard is from [[http://​www.wvshare.com|Waveshare]],​ a Chinese manufacturer offering a wide range of development and evaluation boards.
Line 128: Line 131:
  
 ==== BOM ==== ==== BOM ====
-coming soon+^  
 +^ Reference ^ Description ^ Package ^ Value ^ Quantity ^ [[http://​www.mouser.com/​|Mouser]] ^ [[http://​www.reichelt.de/​|Reichelt]] ​ ^  
 +| C8 | electrolytic capacitor | RM5, D10mm | 470µF | 1           | | RAD FC 470/35 |  
 +| C9 | film capacitor | RM5 | 330nF | 1           | | MKS-2 330N |  
 +| C10, C14* | electrolytic capacitor | RM2,5 | 47µF | 2           | | RAD FC 47/25 | 
 +| C11, C15 | ceramic capacitor | RM2,5 | 100nF | 2           | | Z5U-2,5 100N | 
 +| C12, C13 | ceramic capacitor | SM1210 | 100nF | 2           | |  | 
 +| R1 | resistor | SM1206 | 1k | 1           | | SMD 1/4W 1,0K |  
 +| R2 | resistor | SM1206 | 4k7 | 1           | | SMD 1/4W 4,7K |  
 +| R3 - R5 | resistor | SM1206 | 220 | 3           | | SMD 1/4W 220 |  
 +| RR1, RR2 | resistor network | SIL6-5 | 10k | 2           | | SIL 6-5 10K |  
 +| U1, U2 | microcontroller | DIP-18 | PIC16F88 | 2 |  | PIC 16F88-I/P |  
 +|  | IC sockets | DIP-18 |  | 2 |  | GS 18 |  
 +| U3 | voltage regulator | TO-220 | 5V DC, 1A | 1 |  | TSR 1-2450 |  
 +| U4* | voltage regulator | TO-220 | 3,3V | 1 |  | LF 33 CV |  
 +| U5 | optocoupler | DIP-8 | 6N138 | 1 |  | 6N 138 |  
 +| P1, P2 | female header straight | 2mm | header 25x2 | 2 | | MPE 156-3-050 |  
 +| P3 | female header straight | 2mm | header 16x2 | 1 | | MPE 156-3-032 |  
 +| P4, P5 | IDC connector | 5x2 | IDC | 2 | | WSL 10 |  
 +| P6 | power connector |  | Cannon plug-type socket | 1 | | HEBW 21 |  
 +| P7* - P9 | power header | 2,54mm |  | 3 | | PSS 254/2G |  
 +| P10 - P16 | IDC connector | 13x2 | IDC | 7 | | WSL 26 |  
 +| P17, P18 | MIDI socket | DIN-5 |  | 2 | | MABP 5S |  
 +| P19 | SIL header | 3-pin |  | 1 | |  |  
 +| J1 | USB socket | type B |  | 1 | | USB BW |  
 +| J2 | USB socket | type A vertical |  | 1 | | USB AG |  
 +| JP1 - JP4 | SIL header | 2-pin |  | 4 | |  |  
 +| D1 | bridge rectifier | round | B40C1500 | 1 | | B40C1500RUND |  
 +| D2 | diode | DO35 | 1N4148 ​ | 1 | | 1N 4148 |  
 +| Q1 - Q5 | transistor | SOT-23 | BSS138 ​ | 5 | | BSS 138 SMD |  
 + 
 +* U4, P7, C14 can be left out if the mergers (U1, U2) are 5V powered. 
  
 ===== User Interface ===== ===== User Interface =====
-The user interface (UI) is based on the [[http://​ucapps.de/​midibox_ng_manual_scs.html|MIDIbox SCS]], two dedicated clickable encoders for in- and out-port selection, and an additional PANIC button. It fits in the frontpanel of a standard 2U rack case, offers a 2x24 display for feedback, and 5 buttons along with an encoder for navigating the menu system. ​So far, an alpha prototype version ​of the board has been tested successfully ​on veroboard+The layout of the user interface (UI) is based on the [[http://​ucapps.de/​midibox_ng_manual_scs.html|MIDIbox SCS]], two dedicated clickable encoders for in- and out-port selection, and an additional PANIC button. It fits in the frontpanel of a standard 2U rack case, offers a 2x24 display for feedback, and 5 buttons along with an encoder for navigating the menu system. ​  
 + 
 +{{:​home:​users:​ilmenator:​mm-ui_02.jpg?​300|}} {{:​home:​users:​ilmenator:​midibox_scs_4-24_v1.0_pcb_01.jpg?​290|}} 
 + 
 +A second generation PCB as pictured above has been ordered and tested to work. This PCB can also be used with other projects involving ​an SCS, e.g. the [[http://​ucapps.de/​midibox_ng.html|MIDIbox NG]]. Both, my favourite switches from [[16x4blm_pcb|Marquardt (6425 series)]], as well as the [[16x4blm_pcb|E-Switch TL1100 series]] (see e.g. MB SEQv4) can be used. 
 + 
 +==== Schematic ==== 
 +The v1.0 schematic ​of the MIDIbox Matrix UI/​SCS ​board can be downloaded {{:​home:​users:​ilmenator:​midibox_matrix_ui_scs_v1.0_schematics.pdf|here}}. 
 + 
 +==== Layout ==== 
 +As with any user interface board, form follows function here. Switches and encoders are mounted ​on the front, everything else sits on the back of the PCBThere are mounting holes and a cutout for a 2x24 character display right above the four "​soft"​ buttons. For the MIDIbox Matrix, SW7 (on the far right) is not used, but your project might need it. 
 + 
 +{{:​home:​users:​ilmenator:​midibox_scs_4-24_v1.0_pcb_02.jpg?​300|}} {{:​home:​users:​ilmenator:​midibox_scs_4-24_v1.0_pcb_03.jpg?​300|}} 
 + 
 +The total size of the PCB is 150mm x 80mm.  
 + 
 +==== BOM ==== 
 + 
 +^  
 +^ Reference ^ Description ^ Package ^ Value ^ Quantity ^ [[http://​www.mouser.com/​|Mouser]] ^ [[http://​www.reichelt.de/​|Reichelt]] ​ ^ [[http://​http://​www.soselectronic.de/​|soselectronic]] ^ 
 +| C1, C2 | capacitor | RM2,5 | 100nF | 2           | | Z5U-2.5 100N |  
 +| U1, U2 | shift register | DIP-16 | 74HC165 | 2 |  | 74HC 165 |  
 +| P1, P2 | IDC connector | 5x2 | IDC | 2 | | WSL 10 |  
 +| RR1, RR2 | resistor network | 10-9 | 10k |2|               |SIL 10-9 10K| 
 +|ENC1 - ENC3 |rotary encoder with switch| | |3|               ​|STEC12E08| 
 +|SW1 - SW7|tact switch|12mm|E-Switch|7|612-TL1100| | 
 +| |switch cap| |C&K Components|7|611-PEBK| | 
 +| SW1 - SW7 | push switch | Marquardt 6425.0101* | | 7 | 979-6425.0101 |TASTE 6425.0101 | [[http://​www.soselectronic.de/?​str=371&​artnum=1325&​name=marquardt-6425-0101|1325]] | 
 +| | key cap | Marquardt 826.000.011 | 16x16mm | 7 | |TASTE S 826 (red!)| [[http://​www.soselectronic.de/?​str=371&​artnum=1484&​name=marquardt-826-000-011|1489]] | 
 + 
 +* Button caps for the Marquardt'​s usually have to be ordered separately - these should be the 16x16mm types, not the 19x19mm!
  
-{{:​home:​users:​ilmenator:​mm-ui_02.jpg?600|}}+Note that you will obviously only need one type of switch! Not listed here are the encoder knobs, but any push-on knob for D-type shaft should work.
  
-A second generation PCB will be ordered soon. This PCB can also be used with other projects involving an SCS, e.g. the [[http://​ucapps.de/​midibox_ng.html|MIDIbox NG]]. 
  
  
mb_matrix.1402786146.txt.gz · Last modified: 2014/06/14 22:49 by ilmenator