Skip to content

Commit 2a8662a

Browse files
committed
first commit
0 parents  commit 2a8662a

File tree

9 files changed

+55912
-0
lines changed

9 files changed

+55912
-0
lines changed

LICENSE.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Copyright (c) 2022 Lone Dynamics Corporation. All rights reserved.
2+
3+
Redistribution and use in source, binary or physical forms, with or without
4+
modification, is permitted provided that the following condition is met:
5+
6+
* Redistributions of source code must retain the above copyright notice,
7+
this list of conditions and the following disclaimer.
8+
9+
THIS HARDWARE, SOFTWARE, DATA AND/OR DOCUMENTATION ("THE ASSETS") IS PROVIDED
10+
"AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
11+
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
12+
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
13+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF OR IN
14+
CONNECTION WITH THE ASSETS OR THE USE OR OTHER DEALINGS IN THE ASSETS. USE AT
15+
YOUR OWN RISK.

Makefile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blinky_minze:
2+
mkdir -p output
3+
yosys -q -p "synth_ecp5 -top blinky -json output/blinky_minze.json" rtl/blinky_minze.v
4+
nextpnr-ecp5 --12k --package CABGA256 --lpf minze_v1.lpf --json output/blinky_minze.json --textcfg output/minze_blinky_out.config
5+
ecppack -v --compress --freq 2.4 output/minze_blinky_out.config --bit output/minze.bit
6+
7+
prog:
8+
openFPGALoader -c dirtyJtag output/minze.bit

README.md

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# Minze Computer
2+
3+
Minze is an FPGA computer designed by Lone Dynamics Corporation.
4+
5+
This repo contains schematics, PCB layouts, pinouts, a 3D-printable case (soon), example gateware and documentation.
6+
7+
Find more information on the [Minze product page](https://machdyne.com/product/minze-computer/).
8+
9+
## Programming Minze
10+
11+
Minze has a JTAG interface and ships with a [DFU bootloader](https://github.com/machdyne/tinydfu-bootloader) that allows the included flash [MMOD](https://machdyne.com/product/mmod) to be programmed over the USB-C port.
12+
13+
### DFU
14+
15+
The DFU bootloader is available for 5 seconds after power-on, issuing a DFU command during this period will stop the boot process until the DFU device is detached. If no command is received the boot process will continue and the user gateware will be loaded.
16+
17+
Install [dfu-util](http://dfu-util.sourceforge.net) (Debian/Ubuntu):
18+
19+
```
20+
$ sudo apt install dfu-util
21+
```
22+
23+
Update the user gateware on the flash MMOD:
24+
25+
```
26+
$ sudo dfu-util -a 0 -D image.bit
27+
```
28+
29+
Detach the DFU device and continue the boot process:
30+
31+
```
32+
$ sudo dfu-util -a 0 -e
33+
```
34+
35+
It is possible to update the bootloader itself using DFU but you shouldn't attempt this unless you have a JTAG programmer (or another method to program the MMOD) available, in case you need to restore the bootloader.
36+
37+
### JTAG
38+
39+
These examples assume you're using a "USB Blaster" JTAG cable, see the header pinout below. You will need to have [openFPGALoader](https://github.com/trabucayre/openFPGALoader) installed.
40+
41+
Program the configuration SRAM:
42+
43+
```
44+
openFPGALoader -c usb-blaster image.bit
45+
```
46+
47+
Program the flash MMOD:
48+
49+
```
50+
openFPGALoader -f -c usb-blaster images/bootloader/tinydfu_minze.bit
51+
```
52+
53+
## Blinky
54+
55+
Building the blinky example requires [Yosys](https://github.com/YosysHQ/yosys), [nextpnr-ecp5](https://github.com/YosysHQ/nextpnr) and [Project Trellis](https://github.com/YosysHQ/prjtrellis).
56+
57+
Assuming they are installed, you can simply type `make` to build the gateware, which will be written to output/blinky.bin. You can then use [openFPGALoader](https://github.com/trabucayre/openFPGALoader) or dfu-util to write the gateware to the device.
58+
59+
## Linux
60+
61+
See the [Kakao Linux](https://github.com/machdyne/kakao) repo for the latest instructions.
62+
63+
### Prebuilt Images
64+
65+
Prebuilt gateware capable of running Linux is available in the `images/v1` directory.
66+
67+
### Building Linux-capable Gateware
68+
69+
Please follow the setup instructions in the [linux-on-litex-vexriscv](https://github.com/litex-hub/linux-on-litex-vexriscv) repo and then:
70+
71+
1. Build the Linux-capable gateware:
72+
73+
```
74+
$ cd linux-on-litex-vexriscv
75+
$ ./make.py --board=minze --dcache-size=64 --icache-size=64 --uart-baudrate=115200 --build
76+
$ ls build/minze
77+
```
78+
79+
2. Write the gateware to the MMOD using USB DFU:
80+
81+
```
82+
$ sudo dfu-util -a 0 -D build/minze/gateware/minze.bit
83+
```
84+
85+
3. Copy the device tree binary `build/minze/minze.dtb` to a FAT-formatted MicroSD card.
86+
87+
## JTAG Header
88+
89+
The 3.3V JTAG header can be used to program the FPGA SRAM as well as the MMOD flash memory. It can also be used to provide power (5V) to the board.
90+
91+
```
92+
1 2
93+
3 4
94+
5 6
95+
```
96+
97+
| Pin | Signal |
98+
| --- | ------ |
99+
| 1 | TCK |
100+
| 2 | TDI |
101+
| 3 | TDO |
102+
| 4 | TMS |
103+
| 5 | 5V0 |
104+
| 6 | GND |
105+
106+
## Board Revisions
107+
108+
| Revision | Notes |
109+
| -------- | ----- |
110+
| V1 | Initial production version |
111+
112+
## License
113+
114+
The contents of this repo are released under the [Lone Dynamics Open License](LICENSE.md) with the following exceptions:
115+
116+
- The KiCad design files contain parts of the [kicad-pmod](https://github.com/mithro/kicad-pmod) library which is released under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html).
117+
118+
- The KiCad design files may contain symbols and footprints released under other licenses; please contact us if we've failed to give proper attribution.
119+
120+
Note: You can use these designs for commercial purposes but we ask that instead of producing exact clones, that you either replace our trademarks and logos with your own or add your own next to ours.

minze_v1.lpf

+144
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
BLOCK RESETPATHS;
2+
BLOCK ASYNCPATHS;
3+
4+
LOCATE COMP "CLK_48" SITE "A7";
5+
IOBUF PORT "CLK_48" IO_TYPE=LVCMOS33;
6+
FREQUENCY PORT "CLK_48" 48.0 MHz;
7+
8+
LOCATE COMP "LED_A" SITE "A2";
9+
IOBUF PORT "LED_A" IO_TYPE=LVCMOS33;
10+
11+
LOCATE COMP "UART0_RX" SITE "B1";
12+
IOBUF PORT "UART0_RX" IO_TYPE=LVCMOS33;
13+
LOCATE COMP "UART0_TX" SITE "B2";
14+
IOBUF PORT "UART0_TX" IO_TYPE=LVCMOS33;
15+
16+
LOCATE COMP "sdram_clock" SITE "F16";
17+
IOBUF PORT "sdram_clock" IO_TYPE=LVTTL33;
18+
LOCATE COMP "sdram_a[0]" SITE "M13";
19+
IOBUF PORT "sdram_a[0]" IO_TYPE=LVTTL33;
20+
LOCATE COMP "sdram_a[1]" SITE "M14";
21+
IOBUF PORT "sdram_a[1]" IO_TYPE=LVTTL33;
22+
LOCATE COMP "sdram_a[2]" SITE "L14";
23+
IOBUF PORT "sdram_a[2]" IO_TYPE=LVTTL33;
24+
LOCATE COMP "sdram_a[3]" SITE "L13";
25+
IOBUF PORT "sdram_a[3]" IO_TYPE=LVTTL33;
26+
LOCATE COMP "sdram_a[4]" SITE "G12";
27+
IOBUF PORT "sdram_a[4]" IO_TYPE=LVTTL33;
28+
LOCATE COMP "sdram_a[5]" SITE "G13";
29+
IOBUF PORT "sdram_a[5]" IO_TYPE=LVTTL33;
30+
LOCATE COMP "sdram_a[6]" SITE "G14";
31+
IOBUF PORT "sdram_a[6]" IO_TYPE=LVTTL33;
32+
LOCATE COMP "sdram_a[7]" SITE "G15";
33+
IOBUF PORT "sdram_a[7]" IO_TYPE=LVTTL33;
34+
LOCATE COMP "sdram_a[8]" SITE "F12";
35+
IOBUF PORT "sdram_a[8]" IO_TYPE=LVTTL33;
36+
LOCATE COMP "sdram_a[9]" SITE "F13";
37+
IOBUF PORT "sdram_a[9]" IO_TYPE=LVTTL33;
38+
LOCATE COMP "sdram_a[10]" SITE "T15";
39+
IOBUF PORT "sdram_a[10]" IO_TYPE=LVTTL33;
40+
LOCATE COMP "sdram_a[11]" SITE "F14";
41+
IOBUF PORT "sdram_a[11]" IO_TYPE=LVTTL33;
42+
LOCATE COMP "sdram_a[12]" SITE "E14";
43+
IOBUF PORT "sdram_a[12]" IO_TYPE=LVTTL33;
44+
LOCATE COMP "sdram_ba[0]" SITE "P14";
45+
IOBUF PORT "sdram_ba[0]" IO_TYPE=LVTTL33;
46+
LOCATE COMP "sdram_ba[1]" SITE "N13";
47+
IOBUF PORT "sdram_ba[1]" IO_TYPE=LVTTL33;
48+
LOCATE COMP "sdram_cs_n" SITE "G16";
49+
IOBUF PORT "sdram_cs_n" IO_TYPE=LVTTL33;
50+
LOCATE COMP "sdram_cke" SITE "F15";
51+
IOBUF PORT "sdram_cke" IO_TYPE=LVTTL33;
52+
LOCATE COMP "sdram_ras_n" SITE "J16";
53+
IOBUF PORT "sdram_ras_n" IO_TYPE=LVTTL33;
54+
LOCATE COMP "sdram_cas_n" SITE "K16";
55+
IOBUF PORT "sdram_cas_n" IO_TYPE=LVTTL33;
56+
LOCATE COMP "sdram_we_n" SITE "L15";
57+
IOBUF PORT "sdram_we_n" IO_TYPE=LVTTL33;
58+
LOCATE COMP "sdram_dq[0]" SITE "R15";
59+
IOBUF PORT "sdram_dq[0]" IO_TYPE=LVTTL33;
60+
LOCATE COMP "sdram_dq[1]" SITE "R16";
61+
IOBUF PORT "sdram_dq[1]" IO_TYPE=LVTTL33;
62+
LOCATE COMP "sdram_dq[2]" SITE "P15";
63+
IOBUF PORT "sdram_dq[2]" IO_TYPE=LVTTL33;
64+
LOCATE COMP "sdram_dq[3]" SITE "P16";
65+
IOBUF PORT "sdram_dq[3]" IO_TYPE=LVTTL33;
66+
LOCATE COMP "sdram_dq[4]" SITE "N16";
67+
IOBUF PORT "sdram_dq[4]" IO_TYPE=LVTTL33;
68+
LOCATE COMP "sdram_dq[5]" SITE "N14";
69+
IOBUF PORT "sdram_dq[5]" IO_TYPE=LVTTL33;
70+
LOCATE COMP "sdram_dq[6]" SITE "M16";
71+
IOBUF PORT "sdram_dq[6]" IO_TYPE=LVTTL33;
72+
LOCATE COMP "sdram_dq[7]" SITE "M15";
73+
IOBUF PORT "sdram_dq[7]" IO_TYPE=LVTTL33;
74+
LOCATE COMP "sdram_dq[8]" SITE "E16";
75+
IOBUF PORT "sdram_dq[8]" IO_TYPE=LVTTL33;
76+
LOCATE COMP "sdram_dq[9]" SITE "D14";
77+
IOBUF PORT "sdram_dq[9]" IO_TYPE=LVTTL33;
78+
LOCATE COMP "sdram_dq[10]" SITE "D16";
79+
IOBUF PORT "sdram_dq[10]" IO_TYPE=LVTTL33;
80+
LOCATE COMP "sdram_dq[11]" SITE "C15";
81+
IOBUF PORT "sdram_dq[11]" IO_TYPE=LVTTL33;
82+
LOCATE COMP "sdram_dq[12]" SITE "C16";
83+
IOBUF PORT "sdram_dq[12]" IO_TYPE=LVTTL33;
84+
LOCATE COMP "sdram_dq[13]" SITE "C14";
85+
IOBUF PORT "sdram_dq[13]" IO_TYPE=LVTTL33;
86+
LOCATE COMP "sdram_dq[14]" SITE "B16";
87+
IOBUF PORT "sdram_dq[14]" IO_TYPE=LVTTL33;
88+
LOCATE COMP "sdram_dq[15]" SITE "B15";
89+
IOBUF PORT "sdram_dq[15]" IO_TYPE=LVTTL33;
90+
LOCATE COMP "sdram_dm[0]" SITE "L16";
91+
IOBUF PORT "sdram_dm[0]" IO_TYPE=LVTTL33;
92+
LOCATE COMP "sdram_dm[1]" SITE "E15";
93+
IOBUF PORT "sdram_dm[1]" IO_TYPE=LVTTL33;
94+
95+
LOCATE COMP "VGA_R" SITE "T2";
96+
IOBUF PORT "VGA_R" IO_TYPE=LVCMOS33;
97+
LOCATE COMP "VGA_G" SITE "N1";
98+
IOBUF PORT "VGA_G" IO_TYPE=LVCMOS33;
99+
LOCATE COMP "VGA_B" SITE "R4";
100+
IOBUF PORT "VGA_B" IO_TYPE=LVCMOS33;
101+
LOCATE COMP "VGA_HS" SITE "P3";
102+
IOBUF PORT "VGA_HS" IO_TYPE=LVCMOS33;
103+
LOCATE COMP "VGA_VS" SITE "R3";
104+
IOBUF PORT "VGA_VS" IO_TYPE=LVCMOS33;
105+
106+
LOCATE COMP "SPI_MOSI" SITE "T8";
107+
IOBUF PORT "SPI_MOSI" SLEWRATE=FAST;
108+
IOBUF PORT "SPI_MOSI" IO_TYPE=LVCMOS33;
109+
LOCATE COMP "SPI_SS_FLASH" SITE "N8";
110+
IOBUF PORT "SPI_SS_FLASH" SLEWRATE=FAST;
111+
IOBUF PORT "SPI_SS_FLASH" IO_TYPE=LVCMOS33;
112+
LOCATE COMP "SPI_MISO" SITE "T7";
113+
IOBUF PORT "SPI_MISO" SLEWRATE=FAST;
114+
IOBUF PORT "SPI_MISO" IO_TYPE=LVCMOS33;
115+
116+
LOCATE COMP "SD_SCK" SITE "F2";
117+
IOBUF PORT "SD_SCK" SLEWRATE=FAST;
118+
IOBUF PORT "SD_SCK" IO_TYPE=LVCMOS33;
119+
LOCATE COMP "SD_MOSI" SITE "K1";
120+
IOBUF PORT "SD_MOSI" SLEWRATE=FAST;
121+
IOBUF PORT "SD_MOSI" IO_TYPE=LVCMOS33;
122+
LOCATE COMP "SD_SS" SITE "K2";
123+
IOBUF PORT "SD_SS" SLEWRATE=FAST;
124+
IOBUF PORT "SD_SS" IO_TYPE=LVCMOS33;
125+
LOCATE COMP "SD_MISO" SITE "F3";
126+
IOBUF PORT "SD_MISO" SLEWRATE=FAST;
127+
IOBUF PORT "SD_MISO" IO_TYPE=LVCMOS33;
128+
129+
LOCATE COMP "PMOD_A1" SITE "B11";
130+
IOBUF PORT "PMOD_A1" IO_TYPE=LVCMOS33;
131+
LOCATE COMP "PMOD_A2" SITE "B12";
132+
IOBUF PORT "PMOD_A2" IO_TYPE=LVCMOS33;
133+
LOCATE COMP "PMOD_A3" SITE "B13";
134+
IOBUF PORT "PMOD_A3" IO_TYPE=LVCMOS33;
135+
LOCATE COMP "PMOD_A4" SITE "B14";
136+
IOBUF PORT "PMOD_A4" IO_TYPE=LVCMOS33;
137+
LOCATE COMP "PMOD_A7" SITE "A11";
138+
IOBUF PORT "PMOD_A7" IO_TYPE=LVCMOS33;
139+
LOCATE COMP "PMOD_A8" SITE "A12";
140+
IOBUF PORT "PMOD_A8" IO_TYPE=LVCMOS33;
141+
LOCATE COMP "PMOD_A9" SITE "A13";
142+
IOBUF PORT "PMOD_A9" IO_TYPE=LVCMOS33;
143+
LOCATE COMP "PMOD_A10" SITE "A14";
144+
IOBUF PORT "PMOD_A10" IO_TYPE=LVCMOS33;

pcb/minze_v1.pdf

479 KB
Binary file not shown.

0 commit comments

Comments
 (0)