Skip to content

Commit 866b2b5

Browse files
committed
Working on README.
Also bring in Common at 0.8.0.
1 parent 61e861a commit 866b2b5

3 files changed

Lines changed: 222 additions & 1 deletion

File tree

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "Neotron-Common-Hardware"]
2+
path = Neotron-Common-Hardware
3+
url = ../Neotron-Common-Hardware.git

Neotron-Common-Hardware

Submodule Neotron-Common-Hardware added at 674b6dc

README.md

Lines changed: 218 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,218 @@
1-
# Neotron-Pico
1+
# Neotron Pico
2+
3+
> A Neotron system powered by the Raspberry Pi Pico, in a micro-ATX form-factor.
4+
5+
The Neotron Pico is based around the idea of the [Neotron-32](https://github.com/neotron-compute/Neotron-32-Hardware), but using a low-cost Raspberry Pi Pico instead of a Texas Instuments Tiva-C Launchpad. It also stretches out to full micro-ATX size, and adds more expansion slots so that you can easily design and add your own peripherals.
6+
7+
## Design
8+
9+
The Raspberry Pi Pico is the core of the Neotron Pico. It uses PIO statemachines to generate 12-bit Super VGA video, and digital 16 bit 48 kHz stereo audio. It also has both I²C and SPI buses. SPI chipselects and IRQs are handled by an SPI-to-GPIO expander. This provides eight chip-selects and eight IRQs, to support up to eight expansion slots or peripherals. The eight chip-selects are gated with a tri-state bus transceiver, allowing the Pico to talk to either the I/O exander, or the selected expansion slot. The board has an SD fitted in the 'Slot 7' position, leaving Slot 0 through to Slot 6 available for expansion. Each expansion slot has I²C and SPI with unique chip-select and IRQ signals. A separate Board Mangement Controller also sits on the I²C bus handling PS/2 devices, and controlling power and reset. The BMC uses IRQ 7.
10+
11+
## Software
12+
13+
The Neotron Pico is designed to run the Neotron OS - a CP/M or MS-DOS alike OS written in Rust. But, being open-hardware, you can program your Neotron Pico to do pretty much anything.
14+
15+
## Components
16+
17+
### Processor
18+
19+
The main processor module is the Raspberry Pi Pico, which features:
20+
21+
* A Raspberry Pi Silicon RP2040 SoC
22+
* Dual-core Cortex-M0+ @ 133 MHz
23+
* 264 KiB internal SRAM
24+
* No internal Flash
25+
* USB 1.1
26+
* SPI, UART, I²C and _Programmable I/O_ peripherals
27+
* 26 GPIO pins
28+
* 2 MiB QSPI Flash
29+
* On-board LED
30+
* On-board 5V to 3.3V regulator
31+
* USB 2.0 Full-speed OTG micro-AB port
32+
* 4.00 USD / 3.60 GBP retail price
33+
34+
The limited I/O on the Pico (we are using half the available pins just for the video output) is supplemented using a Microchip MCP23S17 SPI to GPIO expander, an octal buffer. The buffer allows the Pico to send its SPI bus data to either the MCP23S17 (to set a specific Chip Select line), or the rest of the system. Without the buffer, it would be impossible to command the MCP23S17 to disable a chip-select line once it had been set, without the traffic also going to the selected expansion slot!
35+
36+
| Pin | Name | Signal | Function |
37+
| :--- | :--- | :------------- | :------------------------------------------------- |
38+
| xx | GPx | VGA_RED0 | Digital VGA signal, Red channel LSB |
39+
| xx | GPx | VGA_RED1 | Digital VGA signal, Red channel |
40+
| xx | GPx | VGA_RED2 | Digital VGA signal, Red channel |
41+
| xx | GPx | VGA_RED3 | Digital VGA signal, Red channel MSB |
42+
| xx | GPx | VGA_GREEN0 | Digital VGA signal, Green channel LSB |
43+
| xx | GPx | VGA_GREEN1 | Digital VGA signal, Green channel |
44+
| xx | GPx | VGA_GREEN2 | Digital VGA signal, Green channel |
45+
| xx | GPx | VGA_GREEN3 | Digital VGA signal, Green channel MSB |
46+
| xx | GPx | VGA_BLUE0 | Digital VGA signal, Blue channel LSB |
47+
| xx | GPx | VGA_BLUE1 | Digital VGA signal, Blue channel |
48+
| xx | GPx | VGA_BLUE2 | Digital VGA signal, Blue channel |
49+
| xx | GPx | VGA_BLUE3 | Digital VGA signal, Blue channel MSB |
50+
| xx | GPx | VGA_HSYNC | VGA Horizontal Sync (31.5 kHz) |
51+
| xx | GPx | VGA_VSYNC | VGA Vertical Sync (60 Hz) |
52+
| xx | GPx | I2C_SDA | I²C Data |
53+
| xx | GPx | I2C_SCL | I²C Clock |
54+
| xx | GPx | SPI_CLK | SPI Clock |
55+
| xx | GPx | SPI_CIPO | SPI Data In |
56+
| xx | GPx | SPI_COPI | SPI Data Out |
57+
| xx | GPx | SPI_CS_nIOCS | Low selects MCP23S17, High selects Expansion Slots |
58+
| xx | GPx | nIRQn | Interrupt Request Input from MCP23S17 |
59+
| xx | GPx | I2S_DAC_DATA | Digital Audio Output |
60+
| xx | GPx | I2S_ADC_DATA | Digital Audio Input |
61+
| xx | GPx | I2S_BIT_CLOCK | Digital Audio Bit Clock (1.536MHz) |
62+
| xx | GPx | I2S_LR_CLOCK | Digital Audio Sync (96kHz) |
63+
| xx | GPx | I2S_MAIN_CLOCK | Digital Audio Master Clock (12.288MHz) |
64+
65+
### Super VGA output
66+
67+
The Raspberry Pi Silicon RP2040 generates 12-bit VGA video at a range of standard resolutions (including 640x480 @ 60 Hz).
68+
69+
* 15-pin D-Sub VGA interface
70+
* 12-bit (4-4-4) RGB R2R DAC
71+
* 3peak TPF133A or Texas Instruments THS7316 RGB video buffer
72+
* 36 MHz bandwidth - 1024x768@60Hz maximum
73+
* 6dB gain
74+
* Drives 75 ohm standard VGA interface
75+
* SOIC-8 package (1.27mm pitch)
76+
* Texas Instruments TPD7S019 Sync/DDC level shifter and RGB EMC filter
77+
* SSOP-16 package (0.635mm pitch)
78+
79+
### Audio Codec
80+
81+
The audio subsystem offers 16-bit 48 kHz stereo audio in and out through a classic blue/green/pink triple 3.5mm TRS jack. Input and Output volume can be software controlled.
82+
83+
* Texas Instruments TLV320AIC23B
84+
* I²S + I²C interface
85+
* Amplified 32mW headphone output and line out
86+
* Microphone in and line in
87+
* TSSOP-28 package (0.635mm pitch)
88+
* Triple 3.5mm TRS jack (Kycon STX-4335-5BGP-S1)
89+
* Headphone Out (green)
90+
* Line In (blue)
91+
* Microphone In (pink)
92+
* AC'97 Pin Header for ATX cases with Audio Jacks
93+
* Headphone Out
94+
* Microphone In
95+
* Extra line-level output pin header (e.g. for additional RCA audio jacks - operates in addition to 3.5mm headphone jack output)
96+
* Internal line-level input pin header (e.g. for CD-ROM audio - disabled when 3.5mm line-in jack in-use)
97+
98+
### Board Management Controller
99+
100+
Power-on Reset sequencing, soft shutdown, voltage monitoring and PS/2 interfacing is handled by a separate STM32F0 SoC.
101+
102+
* ST Micro STM32F0 (STM32F031K6T6) microcontroller
103+
* 32-bit Arm Cortex-M0+ Core
104+
* 3.3V I/O (5V tolerant)
105+
* 32 KiB Flash
106+
* 4 KiB SRAM
107+
* LQFP-32 package (0.8mm pitch)
108+
* Controls two PS/2 ports
109+
* Monitors 5V and 3.3V rails
110+
* Controls system reset, soft-on and soft-off for main CPU
111+
* Can the main 5V regulator on and off
112+
* Runs from 3.3V stand-by regulator
113+
* I²C interface (with dedicated IRQ line) with main CPU
114+
115+
| Pin | Name | Signal | Function |
116+
| :--- | :--- | :------------ | :------------------------------------------------------ |
117+
| 14 | PB0 | - | Spare |
118+
| 15 | PB1 | - | Spare |
119+
| 26 | PB3 | - | Spare |
120+
| 27 | PB4 | PS2_CLK1 | Mouse Clock Input |
121+
| 28 | PB5 | PS2_DAT1 | Mouse Data Input |
122+
| 29 | PB6 | I2C_SCL | I²C Clock |
123+
| 30 | PB7 | I2C_SDA | I²C Data |
124+
| 2 | PF0 | - | Spare |
125+
| 3 | PF1 | - | Spare |
126+
| 6 | PA0 | MON_3V3 | 3.3V rail monitor Input (1.65V nominal) |
127+
| 7 | PA1 | MON_5V | 5.0V rail monitor Input (1.65V nominal) |
128+
| 8 | PA2 | UART_TX | UART Data Output |
129+
| 9 | PA3 | UART_RX | UART Data Input |
130+
| 10 | PA4 | /BUTTON_PWR | Power Button Input |
131+
| 11 | PA5 | STATUS_LED | Status LED Output |
132+
| 12 | PA6 | /BUTTON_RST | Reset Button Input |
133+
| 13 | PA7 | - | Spare |
134+
| 18 | PA8 | /IRQ | Interrupt Output |
135+
| 19 | PA9 | PS2_DAT0 | Keyboard Data Input |
136+
| 20 | PA10 | PS2_CLK0 | Keyboard Clock Input |
137+
| 21 | PA11 | /RESET | System Reset Output |
138+
| 22 | PA12 | DC_ON | PSU Enable Output |
139+
| 23 | PA13 | SWDIO | SWD Progamming Data Input |
140+
| 24 | PA14 | SWCLK_BOOT_TX | SWD Programming Clock Input OR Bootloader UART RX Input |
141+
| 25 | PA15 | BOOT_RX | Bootloader UART TX Output |
142+
143+
### PS/2 Keyboard and Mouse
144+
145+
* Kycon two-port stacked 6-pin DIN sockets (Kycon KMDGX-6S/6S-S4N)
146+
* Controlled via Board Management Controller
147+
148+
### Power Supply
149+
150+
* Unregulated 12V (8V to 28V) input fused with a PTC at 2A
151+
* 3A 5.0V main regulator (DC-DC switch-mode regulator module)
152+
* Morsun K7805-3AR3
153+
* 30mA 3.3V stand-by regulator (a micropower linear regulator)
154+
* 1A 3.3V regulator (a high-power 1117 type linear regulator)
155+
* Controlled by the Board Management Controller
156+
157+
## Expansion
158+
159+
The seven expansion sockets allow you to add on I²C or SPI based devices at a later date. Each provides a single chip-select and a single IRQ line - the motherboard design should ensure each socket gets a unique signal for each of these. Each expansion device should also contain a AT24C256 or similar EEPROM device. To allow these EEPROM devices to be scanned, each slot also contains three `EEPROM_ADDRESS` pins, tied to Vcc or GND in a unique combination. These should be connected through to the EEPROM address lines on your AT24C256, thus ensuring that each expansion card has its EEPROM at a unique address - 0x50 on Slot 0 through to a maximum possible 0x57 for Slot 7. Where your board has on-board devices, you should fit an AT24C256 EEPROM for each device so that the on-board devices can be discovered, exactly as if they were on an expansion card.
160+
161+
The expansion slot is a simple 2x10 header. We suggest the use of a TE card-edge connector, but you could equally use two 1x10 pin-headers if desired.
162+
163+
The pin functions are:
164+
165+
```
166+
SPI_COPI 1 2 GND
167+
SPI_CIPO 3 4 GND
168+
SPI_CLK 5 6 GND
169+
~SPI_CS 7 8 ~IRQ
170+
I2C_SDA 9 10 I2C_SCL
171+
EEPROM_ADDR0 11 12 EEPROM_ADDR1
172+
EEPROM_ADDR2 13 14 ~RESET
173+
5V 15 16 5V
174+
3V3 17 18 3V3
175+
GND 19 20 GND
176+
```
177+
178+
Four expansion slots line up with the ATX case expansion brackets, allowing you to use cards with external connectors. Three of the expansion slots are internal use only.
179+
180+
## Expansion Ideas
181+
182+
Why not design and build your own expansion card? You could try designing:
183+
184+
* A dual Atari/SEGA 9-pin Joypad Interface
185+
* A Mikro Eletronika Click adaptor, allow many of the range of [Click board](https://www.mikroe.com/click) to be fitted
186+
* A Wi-Fi/Bluetooth card, using an Espressif ESP32
187+
* A second processor card - perhaps with a RISC-V microcontroller, or classic Zilog Z80
188+
* An OPL2 or OPL3 based FM synthesiser card
189+
* An ISA adaptor card (taking an ISA card at right-angles, i.e. parallel to the base board) - a simple microcontroller should be able to bit-bang the ISA bus at 8 MHz and offer an SPI peripheral interface to the Neotron Expansion Slot
190+
* An IDE interface card, allowing 40-pin IDE Hard Disk Drives and CD-ROM drives to be used - this will be quite similar to an ISA bus adaptor
191+
* A floppy drive controller card - either using an eSPI Super I/O chip, or connecting a legacy ISA bus floppy controller as per the ISA adaptor
192+
* A video card for a second monitor output, perhaps based on the CPLD used in the [VGAtonic](https://hackaday.io/project/6309-vga-graphics-over-spi-and-serial-vgatonic)
193+
194+
## Changelog
195+
196+
See [CHANGELOG.md](./CHANGELOG.md) for a list of detailed changes.
197+
198+
## Licence
199+
200+
These documents, schematics and PCB designs are Copyright (c) The Neotron Developers.
201+
202+
[![CC BY-SA 4.0](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/)
203+
204+
This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).
205+
206+
## Contribution Agreement
207+
208+
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
209+
210+
## Datasheets and References
211+
212+
* Raspberry Pi Pico
213+
* Raspberry Pi Silicon RP2040
214+
* ST Microelectronics STM32F031K6T6
215+
* Morsun K7805-3AR3
216+
* Texas Instruments TLV320AIC23B
217+
* Texas Instruments THS7316
218+
* Texas Instruments TPD7S019

0 commit comments

Comments
 (0)