Doc cleanup

trunk
alexis 2022-04-24 13:32:33 -06:00
parent cfb6f9ac4f
commit 9e954f3e92
35 changed files with 325422 additions and 13 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ icm68k/3d
*-backups
*.kicad_prl
*.bak
\#auto_saved_files\#

360
README.md Normal file
View File

@ -0,0 +1,360 @@
# ICM68K
**This project is IN DEVELOPMENT! All promises made below are lies.**
ICM68K (Instrument Control Module, 68k) is an embeddable M68010 computer,
intended for controlling test equipment (or whatever else you want to control!).
Its features include:
- Motorola M68010 CPU running at 10 MHz
- Optional memory-mapped M68881 FPU running at 10 MHz
- Up to 13 MB application RAM plus 512 kB system memory
- A memory protection unit supporting up to 127 user processes with read, write,
and execute control
- Dual-channel UART with hardware flow control on one channel
- Dual-channel SPI (one for on-board peripherals, one for user) operating at
up to fSCK = 10 MHz
- Onboard micro SD card slot
- Eight user GPIOs with interrupts
- Real-time clock with alarm and system tick interrupts
- Beeper with hardware volume control and frequency generation
[![3D render](./misc/3d-thumb.png)](./misc/3d-top.png)
[![Top view](./misc/2dtop-thumb.png)](./gen/render/icm68k-r2-2d-top.png)
[![Bottom view](./misc/2dbot-thumb.png)](./gen/render/icm68k-r2-2d-bot.png)
- [Schematic](./gen/doc/icm68k-r2-schem.pdf)
- [IBOM](./gen/doc/icm68k-r2-ibom.html)
- [Front assembly drawing](./gen/doc/icm68k-r2-F_Fab.pdf)
- [Back assembly drawing](./gen/doc/icm68k-r2-B_Fab.pdf)
## Memory map
+----------+----------+----------+-------------+
| First | Last | Size | Description |
+----------|----------|---------:|-------------|
| `000000` | `07FFFF` | 512 kB | Supervisor/OS ROM/RAM |
| `080000` | `0DFFFF` | 384 kB | Not mapped |
| `0E0000` | `0E3FFF` | 16 kB | DUART |
| `0E4000` | `0E7FFF` | 16 kB | SPI |
| `0E8000` | `0FBFFF` | 80 kB | Not mapped |
| `0FC000` | `0FFFFF` | 16 kB | FPU |
| `100000` | `1FFFFF` | 1024 kB | System bus |
| `200000` | `FFFFFF` | 14366 kB | User RAM |
+----------+----------+----------+-------------+
## Boot
The M68010 CPU always boots from a reset vector located at address `000004`.
It is the responsibility of the memory/debug card to ensure there is a valid
vector at this location at reset. Debug cards implement RAM in this region
and provide a supervisor microcontroller to preload it with valid data;
the simple memory card will likely map a flash device here. Note that unlike
the M68000, the M68010 provides a vector base register, so no hardware
remapping is required to allow both a valid reset vector on boot and runtime
rewritable vectors.
## Interrupts
The ICM68K provides interrupts in multiple layers; the board support package
for the [A6 operating system](/alexisvl/a6) will decompose these into a flat
set of software interrupts.
### First level (M68k hardware interrupts)
There is no priority encoder generating the IPL signals to the CPU; instead,
each signal is used independently as an IRQ line, with autovectoring always
generated by the bus control unit. Therefore, each ISR may map to multiple
vectors — as it clears its own interrupt, more interrupts will become visible.
| Autovector | Vector number | ISR |
|------------|---------------|-----|
| 1 | 25 | OS tick |
| 2 | 26 | DUART |
| 3 | 27 | DUART |
| 4 | 28 | Debug |
| 5 | 29 | Debug |
| 6 | 30 | Debug |
| 7 | 31 | Debug |
|------------|---------------|-----|
Note that autovector 7 is a non-maskable interrupt, so if the debug interrupt
is used, this ISR must not interfere in any way with OS function.
### Second level (DUART interrupts)
A second level of interrupts is provided by the DUART on pins IP1 (`COM1_CTS`),
IP2 (`nIRQ_GPIO`), and IP3 (`nIRQ_RTC`). These interrupts may be decoded and
acknowledged by a read to the interrupt status register in the DUART; see the
68681 datasheet for more information.
**Note:** the schematic shows IP4 as `nIRQ_SPI`. However, this pin is not
interrupt capable. A future revision could move it to IP0, but interrupt
functionality is not generally required on the SPI transceiver so the current
plan is to leave this unfixed.
**Note:** `nIRQ_RTC` is a general-purpose RTC IRQ which may be used for the
alarm functionality. The OS tick interrupt, also generated by the RTC, is
routed directly to the CPU.
### Third level (GPIO interrupts)
Up to eight user interrupts are provided by the MCP23S08 GPIO chip, whose
interrupt pin connects to the DUART on IP2.
### OS tick interrupt
The OS tick interrupt is handled in a special way. It is generated by the
real-time clock, which outputs a square wave. This is converted into an
interrupt pulse by an XOR gate combining it with a GPIO. When the OS tick
ISR executes, it should toggle the state of pin OP5 (`RTC_IRQPOL`) on the
DUART to acknowledge the interrupt.
Because the RTC state is not cleared by system reset, this interrupt could be
active at boot.
## Peripherals
### Debug/memory card
There is no onboard system memory; both supervisor and user regions are
provided by a mezzanine card. This interface is designed to provide the
option of a hardware debugger (which is at the time of writing the _only_
mezzanine card that has been built).
In addition to the normal memory interface, this mezzanine connector provides:
- System clock (10 MHz)
- Reset in/out
- Breakpoint-detected signal from the bus control unit
- Separate chip selects for supervisor and user spaces
- Bus mastering signals
- One IRQ line
- Bus timeout inhibit control
- Access to the CPU function code bits
- 5V and 3.3V power; 5V is bidirectional (the debug card allows powering the
ICM68K via a USB port)
### Bus control unit
The bus control unit is a CPLD, named OAK, providing address decode, clock
generation, and part of the memory protection unit functionality.
### Memory protection unit
The memory protection unit (MPU) on the ICM68K allows the operating system to
apply memory protection to up to 127 user-mode processes. Within each process,
every 2 KB section of address space can be assigned a permission mode.
Permission violation when in user mode triggers a bus error.
To select the active process, write the process ID (0 to 127, with 0 intended
for the kernel) to the task select register, using a byte-size write to
any even-numbered address with function code 3 (use `movec` to load 3 into
the DFC register, then use the `moves` instruction to perform the write with
this function code). The high bit functions as an active-low "bypass" bit and
should be set to 1 (currently, A6 does not make use of this bypass
functionality).
To write to the protection table for a process, first select that process as
above in the task select register. Then, write a control byte to the first
odd-numbered address in the block of four 2 KB pages, using function code
3 as above. For example, the control byte for the page containing address
`069420` is at `(0x069420 & 0xFFE000) | 1` or `0x068001`. This control byte
contains permission codes for all four pages in the block, as follows:
```
msb lsb
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
|___| |___| |___| |___|
| | | |
| | | |____ page n + 0
| | |
| | |____________ page n + 1
| |
| |____________________ page n + 2
|
|____________________________ page n + 3
```
Permission modes are:
- 00: `NO_ACCESS`: all access denied
- 01: `READ_ONLY`: data reads allowed, writes and code reads denied
- 10: `READ_WRITE`: data reads/writes allowed, code reads denied
- 11: `READ_EXEC`: data and code reads allowed, writes denied
Note that memory may not allow both execution and writing at the same time.
Memory protection does not apply to supervisor-mode accesses or while bus
mastering is active.
### Dual UART
The 68681 dual UART provides two UARTs, one timer, and several inputs and
outputs.
- UART 0 provides only TXD and RXD.
- UART 1 provides TXD, RXD, RTS, and CTS. It is intended for use with the
system and bootloader console.
- The timer can be used to control the beeper or as a baud rate generator or
periodic interrupt generator. (Note that for system ticks, the intended
source is the RTC.)
- The following IOs are used:
- OP0: SPI chip select for the user GPIO
- OP1: UART 1 RTS
- OP2: up/down control for the beeper loudness adjustment
- OP3: timer output; provides square wave for beeper
- OP4: SPI chip select for the SD card
- OP5: RTC IRQ polarity/acknowledge
- OP6: SPI chip select for RTC
- OP7: beeper loudness adjustment chip select and status LED (see that section)
- IP0: not connected
- IP1: UART 1 CTS (interrupt capable)
- IP2: GPIO IRQ (interrupt capable)
- IP3: RTC IRQ (interrupt capable; separate from OS tick)
- IP4: SPI IRQ/flag (bug: NOT interrupt capable)
- IP5: SD card sense
### SPI
The SPI transceiver is a CPLD, named ASH, providing two SPI channels with
configurable mode and frequency up to 10 MHz. (TODO: add documentation on
this)
### Beeper and status LED
The onboard beeper is controlled by the DUART. To set the loudness, drive the
up/down control (OP2) and chip select (OP7) per the digital potentiometer
datasheet [here (MCP4011)](https://ww1.microchip.com/downloads/en/DeviceDoc/20001978D.pdf).
The potentiometer only permits relative adjustment; to set an absolute value,
send enough "up" or "down" commands to saturate it at the top or bottom first.
The beeper output OP3 should be held high when not in use.
The LED is multiplexed with the loudness chip select, with a bypass capacitor
across it to prevent flashing while adjusting loudness. To control the LED,
simply drive this pin to a constant level. Additional pulses may be sent to
the potentiometer to compensate for the resulting one-step change in loudness
that will be caused by the LED toggle; alternatively, always set the loudness
to an absolute level as described above when emitting a beep.
The A6 board support pack for the ICM68K will provide a driver to handle this
and present demultiplexed LED and beeper devices to userspace.
### Debug console
By convention, a memory mapped debug console is provided by the debug card.
The memory interface control hardware on that card intercepts writes to the
supervisor region and uses this to implement a control interface.
The control interface takes the form of a single 16-bit memory mapped register
located at address `07FFFE`, the last address in supervisor space. Each write
to this register is a command, with the command index in the upper byte and
the argument in the lower byte. Commands are as follows:
- `TRANSMIT` (0): send the argument on the debug console.
- `SET_RXBUF_3` (0x10): set byte 3 (MSB) of the receive buffer address
- `SET_RXBUF_2` (0x11): set byte 2 of the receive buffer address
- `SET_RXBUF_1` (0x12): set byte 1 of the receive buffer address
- `SET_RXBUF_0` (0x13): set byte 0 (LSB) of the receive buffer address
- `SET_RXLEN_1` (0x14): set byte 1 (MSB) of the receive buffer length
- `SET_RXLEN_0` (0x15): set byte 0 (LSB) of the receive buffer length
- `EN_DIS_RX` (0x16): enable (arg is true) or disable (arg is false) receive
- `SET_VECTOR` (0x17): set vector number for RX interrupt (see below)
- `IACK` (0x18): acknowledge the interrupt (see below)
The receive buffer is a ring buffer the operating system must allocate in RAM.
It must be word-aligned. The first word is the head index, the second word is
the tail index, and the rest is data. Once allocated, write the address of the
beginning of the ring buffer using the `SET_RXBUF_n` commands, write the length
of the data portion in bytes using the `SET_RXLEN_n` commands, then enable
receive using `EN_DIS_RX`. As bytes are received by the debugger and passed to
the operating system, the debugger will increment the tail index, and the
operating system will detect `head != tail`, receive the bytes and increment
the head index. Always use word-size accesses to ensure atomicity.
The debug console interface definition supports both full M68000 interrupt
vectoring and autovectoring; the ICM68K _only_ supports autovectoring. To
enable interrupt on byte received, write any autovec vector number into the
debug console's vector register to enable interrupts. When the ISR runs, you
must write the IACK command to acknowledge and clear the interrupt. Beware that
the ICM68K maps the IRQs such that this may be a nonmaskable interrupt if all
three IRQs assert simultaneously. Use of this interrupt is generally not
recommended or needed, though it may be useful to support future debug
functionality.
(TODO: the control register was previously mapped at `01FFFE`, not `07FFFE`.
The code still needs to be updated to reflect this.)
### Floating point unit
The M68010 does not support coprocessor instructions, but it is possible to
memory-map a M68881 floating point unit. The ICM68K provides a socket for this.
Note that the A6 operating system does not presently provide any support for
it.
The FPU SENSE line is not wired up. To detect presence or absence of the FPU,
simply attempt to access it. Because ICM68K generates a bus error on timeout,
this access will not hang if the FPU is not present. A future A6 FPU kernel
module will perform this test on boot — it is not available to userspace.
### System bus
This address range is for user expansion via the DIN 41612 connector. The
system bus chip select line is asserted by the bus controller whenever an
address in this range is accessed. If the system bus (or a section of it) is
not used, it may reply with a bus error, but the onboard bus timeout generator
can take care of this automaticaly.
### User RAM
The last four words of RAM (`FFFFFC` through `FFFFFF`) should not be used; they
may map to control registers of PSRAM on memory cards. Memory cards should
ensure these all sit at the end of RAM (if using multiple chips, interleave
them), and should ensure that the usable region is also aligned to the end of
RAM. Memory cards must respond to accesses to the entire User RAM region; all
of these detectable variations are permitted:
- Entire address range maps to RAM (fully populated option)
- Some segments trigger bus error
- Some segments acknowledge, but no data is read or written
- Some segments overlap with other segments
Because overlap (generally the cheapest way to map smaller amounts of RAM to
larger address ranges) is permitted, an operating system looking to dynamically
detect RAM must test by writing to a region, then scanning forward to ensure
its write did not show up elsewhere.
Segments must be at least 512 kilobits (64 kB) in size.
### Bus timeout generator
The ICM68K contains a bus timeout generator circuit that generates a bus error
condition if the address strobe asserts for approximately 4 ms without a
response. This may be disabled by the memory/debug interface by applying at
least 3V, and no more than 6V, to the `BTO_INHIBIT` signal. This signal should
otherwise float, and voltage may be applied via a diode to ensure this. Because
the bus timeout generator only watches the AS signal, it will trigger for all
hung accesses to any address.
## PLD configurations
- OAK: The config files for OAK, the bus control unit, may be found at TODO.
OAK must be a 5V-variant ATF1502 or ATF1504 CPLD, or the Altera equivalents.
- ASH: The config files for ASH, the SPI transceiver, may be found at TODO.
ASH must be a 3.3V-variant ATF1504 CPLD, or the Altera equivalent.
## License/copyright
Intellectual property is bullshit. This is everyone's design.
## Contact me (issue reports, patches, bare board requests)
Send an email to my username at alexisvl.rocks. I suggest mentioning the project
name in the subject line.

BIN
gen/doc/icm68k-r2-B_Fab.pdf Normal file

Binary file not shown.

BIN
gen/doc/icm68k-r2-F_Fab.pdf Normal file

Binary file not shown.

4345
gen/doc/icm68k-r2-ibom.html Normal file

File diff suppressed because one or more lines are too long

BIN
gen/doc/icm68k-r2-schem.pdf Normal file

Binary file not shown.

BIN
gen/icm68k-r2-pcb.zip Normal file

Binary file not shown.

BIN
gen/icm68k-r2-stencil.zip Normal file

Binary file not shown.

70322
gen/pcb-fab/icm68k-r2-B_Cu.gbl Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,6.0.4+dfsg-1~bpo11+1*
G04 #@! TF.CreationDate,2022-04-24T12:01:34-06:00*
G04 #@! TF.ProjectId,icm68k,69636d36-386b-42e6-9b69-6361645f7063,2*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX45Y45*%
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.4+dfsg-1~bpo11+1) date 2022-04-24 12:01:34*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,Profile*
%ADD10C,0.100000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X6858000Y-4826000D02*
X17018000Y-4826000D01*
X17018000Y-4826000D02*
X17018000Y-14605000D01*
X17018000Y-14605000D02*
X6858000Y-14605000D01*
X6858000Y-14605000D02*
X6858000Y-4826000D01*
M02*

126993
gen/pcb-fab/icm68k-r2-F_Cu.gtl Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
M48
; DRILL file {KiCad 6.0.4+dfsg-1~bpo11+1} date Sun 24 Apr 2022 12:01:34 PM MDT
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2022-04-24T12:01:34-06:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,6.0.4+dfsg-1~bpo11+1
; #@! TF.FileFunction,NonPlated,1,4,NPTH
FMAT,2
METRIC
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T1C0.838
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T2C1.219
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T3C1.800
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T4C2.850
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T5C3.000
%
G90
G05
T1
X164.465Y-133.1
T2
X164.465Y-88.9
T3
X72.39Y-52.07
X100.33Y-52.07
X159.385Y-56.515
X159.385Y-84.455
T4
X74.93Y-143.51
X163.83Y-143.51
T5
X127.265Y-130.6
T0
M30

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
part_name,quantity,reference,note
CAP-12P-0603,1,C27,
CAP-47P-0603,1,C49,
CAP-100N-0603,2,C23 C24,
CAP-1U-0603,29,C1 C3 C8 C9 C11 C13 C15 C17 C19 C20 C21 C22 C26 C29 C33 C34 C35 C36 C37 C38 C39 C40 C41 C42 C45 C46 C47 C48 C50,
CAP-10U-0805,12,C4 C5 C7 C10 C12 C14 C16 C18 C25 C32 C43 C44,
CAP-100U-16V-Radial-5mm-12.5mm-2mmLS,4,C2 C6 C30 C31,
BAT54C,3,D1 D2 D3,
LED-Red-Diff-0603 LED-Green-Diff-0805,2,DS1 DS2,
"Mezz-BergStakLite0.8-Plug-100p-7,11,15mm",1,J2,
Conn-DIN41612-96/3C-Plug-RA-Lvl1,1,J4,
Skt-MicroSD-MEM2051,1,J3,
Skt-PLCC44-SMT,3,J_U7 J_U12 J_U15,
Skt-PLCC68-SMT-Pegs,2,J_U5 J_U6,
Speaker-SP-1504,1,LS1,
Standoff-M2-7mm-SMT,1,MP1,
ICM68K-r2-PCB,1,PCB1,
MMBT3904,2,Q1 Q2,
MMBT3906,1,Q3,
RES-0R-0603,1,R28,
RES-3R3-0603,1,R24,
RES-27-0603,2,R17 R18,
RES-100-0603,2,R23 R32,
RES-240-0603,1,R11,
RES-270-0603,1,R31,
RES-1K-0603,2,R1 R2,
RES-2K2-0603,7,R5 R6 R9 R19 R20 R21 R22,
RES-10K-0603,6,R4 R7 R8 R10 R15 R29,
RES-39K-0603,1,R13,
RES-47K-0603,7,R3 R12 R14 R16 R25 R26 R30,
RES-91K-0603,1,R33,
DNS,1,R27,
SW-Tact-FSMSM,1,SW1,
Keystone-5019,2,TP1 TP2,
OSC-20MHz-7x5,1,U2,
MCP4011T-202E/MS,1,U13,
68681-PLCC,1,U12,
74LVC08-SOIC,1,U4,
74LVC125-TSSOP,1,U23,
74LVC138-SOIC,1,U9,
74LVC1G27-SOT363,2,U16 U18,
74LVC1G86-SOT23,1,U24,
74LVC244-TSSOP,1,U14,
74LVC245-TSSOP,1,U19,
74LVC273-TSSOP,1,U20,
74LVC2G02-TSSOP,1,U17,
74LVXT4051-SOIC,1,U10,
AB1815-T3,1,U26,
Vreg-1117-3.3V-SOT223,1,U3,
Ash3,1,U15,
SRAM-2Mbit-3V3-55ns-32TSOPI,1,U21,
DNS,1,U21_1,
MC1455-SOIC,2,U8 U27,
MC68010FN10,1,U5,
MC68881FN12,1,U6,
MCP100-460I/TT,1,U1,
MCP23S08-E/SS,1,U25,
Oak:ICM68Kr2,1,U7,
74CB3T16211-TSSOP,1,U11,
74CBT3253-TSSOP,1,U22,
Crystal-3.6864MHz-20pF-HC49US,1,Y1,
Crystal-32768Hz-6pF-Cyl2mm,1,Y2,
1 part_name quantity reference note
2 CAP-12P-0603 1 C27
3 CAP-47P-0603 1 C49
4 CAP-100N-0603 2 C23 C24
5 CAP-1U-0603 29 C1 C3 C8 C9 C11 C13 C15 C17 C19 C20 C21 C22 C26 C29 C33 C34 C35 C36 C37 C38 C39 C40 C41 C42 C45 C46 C47 C48 C50
6 CAP-10U-0805 12 C4 C5 C7 C10 C12 C14 C16 C18 C25 C32 C43 C44
7 CAP-100U-16V-Radial-5mm-12.5mm-2mmLS 4 C2 C6 C30 C31
8 BAT54C 3 D1 D2 D3
9 LED-Red-Diff-0603 LED-Green-Diff-0805 2 DS1 DS2
10 Mezz-BergStakLite0.8-Plug-100p-7,11,15mm 1 J2
11 Conn-DIN41612-96/3C-Plug-RA-Lvl1 1 J4
12 Skt-MicroSD-MEM2051 1 J3
13 Skt-PLCC44-SMT 3 J_U7 J_U12 J_U15
14 Skt-PLCC68-SMT-Pegs 2 J_U5 J_U6
15 Speaker-SP-1504 1 LS1
16 Standoff-M2-7mm-SMT 1 MP1
17 ICM68K-r2-PCB 1 PCB1
18 MMBT3904 2 Q1 Q2
19 MMBT3906 1 Q3
20 RES-0R-0603 1 R28
21 RES-3R3-0603 1 R24
22 RES-27-0603 2 R17 R18
23 RES-100-0603 2 R23 R32
24 RES-240-0603 1 R11
25 RES-270-0603 1 R31
26 RES-1K-0603 2 R1 R2
27 RES-2K2-0603 7 R5 R6 R9 R19 R20 R21 R22
28 RES-10K-0603 6 R4 R7 R8 R10 R15 R29
29 RES-39K-0603 1 R13
30 RES-47K-0603 7 R3 R12 R14 R16 R25 R26 R30
31 RES-91K-0603 1 R33
32 DNS 1 R27
33 SW-Tact-FSMSM 1 SW1
34 Keystone-5019 2 TP1 TP2
35 OSC-20MHz-7x5 1 U2
36 MCP4011T-202E/MS 1 U13
37 68681-PLCC 1 U12
38 74LVC08-SOIC 1 U4
39 74LVC125-TSSOP 1 U23
40 74LVC138-SOIC 1 U9
41 74LVC1G27-SOT363 2 U16 U18
42 74LVC1G86-SOT23 1 U24
43 74LVC244-TSSOP 1 U14
44 74LVC245-TSSOP 1 U19
45 74LVC273-TSSOP 1 U20
46 74LVC2G02-TSSOP 1 U17
47 74LVXT4051-SOIC 1 U10
48 AB1815-T3 1 U26
49 Vreg-1117-3.3V-SOT223 1 U3
50 Ash3 1 U15
51 SRAM-2Mbit-3V3-55ns-32TSOPI 1 U21
52 DNS 1 U21_1
53 MC1455-SOIC 2 U8 U27
54 MC68010FN10 1 U5
55 MC68881FN12 1 U6
56 MCP100-460I/TT 1 U1
57 MCP23S08-E/SS 1 U25
58 Oak:ICM68Kr2 1 U7
59 74CB3T16211-TSSOP 1 U11
60 74CBT3253-TSSOP 1 U22
61 Crystal-3.6864MHz-20pF-HC49US 1 Y1
62 Crystal-32768Hz-6pF-Cyl2mm 1 Y2

View File

@ -0,0 +1,81 @@
Row,Description,Part,References,Value,Footprint,Quantity Per PCB,Status,Datasheet,BOM,MFR,MPN,Field4,Label,IPN
1,Unpolarized capacitor,C,C27,12p,C_0603_1608Metric_Pad1.08x0.95mm_HandSolder,1, ,~,CAP-12P-0603,,0603N120J500CT,,,
2,Unpolarized capacitor,C,C49,47p,C_0603_1608Metric_Pad1.08x0.95mm_HandSolder,1, ,~,CAP-47P-0603,,,,,
3,Unpolarized capacitor,C,C23 C24,100n,C_0603_1608Metric_Pad1.08x0.95mm_HandSolder,2, ,~,CAP-100N-0603,,CL10B104KB8NFNC,,,
4,Unpolarized capacitor,C,C1 C3 C8 C9 C11 C13 C15 C17 C19 C20 C21 C22 C26 C29 C33 C34 C35 C36 C37 C38 C39 C40 C41 C42 C45 C46 C47 C48 C50,1µ,C_0603_1608Metric_Pad1.08x0.95mm_HandSolder,29, ,~,CAP-1U-0603,,CL10A105KNA8NNNC,,,
5,Unpolarized capacitor,C,C4 C5 C7 C10 C12 C14 C16 C18 C25 C32 C43 C44,10µ,C_0805_2012Metric_Pad1.18x1.45mm_HandSolder,12, ,~,CAP-10U-0805,,CL21A106KPFNNNG,,,
6,Polarized capacitor,C_Polarized,C2 C6 C30 C31,100µ,CP_Radial_D5.0mm_P2.00mm,4, ,~,CAP-100U-16V-Radial-5mm-12.5mm-2mmLS,KEMET,ESL107M016AC3AA,,,
7,Unpolarized capacitor,C,C28,DNS,C_0603_1608Metric_Pad1.08x0.95mm_HandSolder,1, ,~,,,,,,
8,"Dual Schottky diode, common anode on pin 1",D_Schottky_Dual_CommonCathode_AAK_Parallel,D1 D2 D3,BAT54C,SOT-23,3, ,~,BAT54C,,,,,
9,Light emitting diode,LED,DS2,Green,LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder,1, ,~,LED-Green-Diff-0805,OSRAM Opto Semiconductors Inc.,LG R971-KN-1,,Disk/Power,
10,Light emitting diode,LED,DS1,Red,LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder,1, ,~,LED-Red-Diff-0603,Rohm Semiconductor,SML-D12U1WT86,,LED0,
11,,10144518-101802LF,J2,10144518-103802LF,10144518-101802LF,1, ,,"Mezz-BergStakLite0.8-Plug-100p-7,11,15mm",Amphenol ICC (FCI),10144518-103802LF,,,
12,"Generic connector, single row, 01x08, script generated (kicad-library-utils/schlib/autogen/connector/)",Conn_01x08_Male,J1,DBG,PinHeader_1x08_P2.54mm_Vertical,1, ,~,,,,,,
13,,DIN41612_3x32,J4,DIN41612_3x32,DIN41612_C_3x32_Male_Horizontal_THT,1, ,,Conn-DIN41612-96/3C-Plug-RA-Lvl1,Amphenol ICC (FCI),86093967113765ELF,,,
14,,MEM2051-00-195-00-A_REVC,J3,µSD,GCT_MEM2051-00-195-00-A_HandSoldering,1, ,,Skt-MicroSD-MEM2051,GCT,MEM2051-00-195-00-A,,,
15,,Object,J_U7 J_U12 J_U15,PLCC44,,3, ,,Skt-PLCC44-SMT,3M,8444-21B1-RK-TP,,,
16,,Object,J_U5 J_U6,PLCC68,,2, ,,Skt-PLCC68-SMT-Pegs,3M,8468-21A1-RK-TP,,,
17,Speaker,Speaker,LS1,SP-1504,PinHeader_1x02_P2.54mm_Vertical,1, ,~,Speaker-SP-1504,Soberton Inc.,SP-1504,,,
18,"Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)",Conn_01x01_Female,MP1,STANDOFF,9774070243R,1, ,~,Standoff-M2-7mm-SMT,Würth Elektronik,9774070243R,,,
19,,Object,PCB1,ICM68K-r2-PCB,,1, ,,ICM68K-r2-PCB,,,,,
20,"0.2A Ic, 40V Vce, Small Signal NPN Transistor, SOT-23",MMBT3904,Q1 Q2,MMBT3904,SOT-23,2, ,https://www.onsemi.com/pub/Collateral/2N3903-D.PDF,MMBT3904,,,,,
21,"-0.2A Ic, -40V Vce, Small Signal PNP Transistor, SOT-23",MMBT3906,Q3,MMBT3906,SOT-23,1, ,https://www.onsemi.com/pub/Collateral/2N3906-D.PDF,MMBT3906,,,,,
22,Resistor,R,R28,0R,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-0R-0603,,,,,
23,Resistor,R,R24,3r3,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-3R3-0603,,,,,
24,Resistor,R,R17 R18,27,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,2, ,~,RES-27-0603,,,,,
25,Resistor,R,R23 R32,100,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,2, ,~,RES-100-0603,,,,,
26,Resistor,R,R11,240,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-240-0603,,,,,
27,Resistor,R,R31,270,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-270-0603,,,,,
28,Resistor,R,R1 R2,1k,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,2, ,~,RES-1K-0603,,,,,
29,Resistor,R,R5 R6 R9 R19 R20 R21 R22,2k2,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,7, ,~,RES-2K2-0603,,,,,
30,Resistor,R,R4 R7 R8 R10 R15 R29,10k,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,6, ,~,RES-10K-0603,,,,,
31,Resistor,R,R13,39k,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-39K-0603,,,,,
32,Resistor,R,R3 R12 R14 R16 R25 R26 R30,47k,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,7, ,~,RES-47K-0603,,,,,
33,Resistor,R,R33,91k,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,RES-91K-0603,,,,,
34,Resistor,R,R27,DNS,R_0603_1608Metric_Pad0.98x0.95mm_HandSolder,1, ,~,DNS,DNS,DNS,,,
35,"Push button switch, generic, two pins",SW_Push,SW1,RESET,SW_SPST_FSMSM,1, ,~,SW-Tact-FSMSM,TE Connectivity ALCOSWITCH Switches,FSMSMTR,,,
36,"3.3V HCMOS SMD Crystal Clock Oscillator, Abracon",ASV-xxxMHz,U2,20MHz,Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm,1, ,http://www.abracon.com/Oscillators/ASV.pdf,OSC-20MHz-7x5,Abracon LLC,ASV-20.000MHZ-E-T,,,
37,Low-Cost 64-Step Volatile Digital Potentiometer,MCP4011-xxxxMS,U13,2k1,MSOP-8_3x3mm_P0.65mm,1, ,"http://ww1.microchip.com/downloads/en/DeviceDoc/21978c.pdf, MSOP-8",MCP4011T-202E/MS,Microchip Technology,MCP4011T-202E/MS,,,
38,Dual UART,68681-A44,U12,68681-A44,PLCC-44_SMD-Socket,1, ,,68681-PLCC,Philips/NXP,SCN68681C1A44,,,
39,Quad And2,74LS08,U4,74LVC08,SOIC-14_3.9x8.7mm_P1.27mm,1, ,http://www.ti.com/lit/gpn/sn74LS08,74LVC08-SOIC,Texas Instruments,SN74LVC08ADRG3,,,
40,Quad buffer 3-State outputs,74LS125,U23,74LVC125,TSSOP-14_4.4x5mm_P0.65mm,1, ,http://www.ti.com/lit/gpn/sn74LS125,74LVC125-TSSOP,Nexperia USA Inc.,"74LVC125APW,118",,,
41,Decoder 3 to 8 active low outputs,74LS138,U9,74LVC138,SOIC-16_3.9x9.9mm_P1.27mm,1, ,http://www.ti.com/lit/gpn/sn74LS138,74LVC138-SOIC,Texas Instruments,SN74LVC138ADR,,,
42,3-input NOR gate,74LVC1G27,U16 U18,74LVC1G27,SOT-363_SC-70-6_Handsoldering,2, ,http://www.ti.com/lit/sg/scyt129e/scyt129e.pdf,74LVC1G27-SOT363,Nexperia USA Inc.,"74LVC1G27GW,125",,,
43,"Single EX-OR Gate, Low-Voltage CMOS",74LVC1G86,U24,74LVC1G86,SOT-23-5,1, ,http://www.ti.com/lit/sg/scyt129e/scyt129e.pdf,74LVC1G86-SOT23,Texas Instruments,SN74LVC1G86DBVRG4,,,
44,8-bit Buffer/Line Driver 3-state,74AHC244,U14,74LVC244,TSSOP-20_4.4x6.5mm_P0.65mm,1, ,https://assets.nexperia.com/documents/data-sheet/74AHC_AHCT244.pdf,74LVC244-TSSOP,Nexperia USA Inc.,"74LVC244APW,118",,,
45,"Octal BUS Transceivers, 3-State outputs",74HC245,U19,74LVC245,TSSOP-20_4.4x6.5mm_P0.65mm,1, ,http://www.ti.com/lit/gpn/sn74HC245,74LVC245-TSSOP,Nexperia USA Inc.,"74LVC245APW,118",,,
46,"8-bit D Flip-Flop, reset",74AHC273,U20,74LVC273,TSSOP-20_4.4x6.5mm_P0.65mm,1, ,https://assets.nexperia.com/documents/data-sheet/74AHC_AHCT273.pdf,74LVC273-TSSOP,Nexperia USA Inc.,"74LVC273PW,118",,,
47,Dual 2-input NOR gate,74LVC2G02,U17,74LVC2G02,TSSOP-8_3x3mm_P0.65mm,1, ,http://www.ti.com/lit/sg/scyt129e/scyt129e.pdf,74LVC2G02-TSSOP,Nexperia USA Inc.,"74LVC2G02DP,125",,,
48,"CMOS single 8-channel analog multiplexer demultiplexer, TSSOP-16/DIP-16/SOIC-16",CD4051B,U10,74LVXT4051,SOIC-16_3.9x9.9mm_P1.27mm,1, ,http://www.ti.com/lit/ds/symlink/cd74hc4051.pdf,74LVXT4051-SOIC,onsemi,MC74LVXT4051DR2G,,,
49,"Real-Time Clock, SPI Interface, 3 GPO, QFN-16",AB1815,U26,AB1815,VQFN-16-1EP_3x3mm_P0.5mm_EP1.8x1.8mm,1, ,https://abracon.com/Precisiontiming/AB18X5-RTC.pdf,AB1815-T3,Abracon LLC,AB1815-T3,,,
50,"1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223",AP1117-33,U3,AZ1117-3.3,SOT-223-3_TabPin2,1, ,http://www.diodes.com/datasheets/AP1117.pdf,Vreg-1117-3.3V-SOT223,Diodes Incorporated,AZ1117IH-3.3TRG1,,,
51,ASH (SPI transeiver) on a PLCC44 ATF1504,Ash_PLCC44,U15,Ash_PLCC44_3V,PLCC-44_SMD-Socket,1, ,,Ash3,Microchip Technology,ATF1504ASVL-20JU44,,,
52,256kbit SRAM,IS62WV2568BLL-55TLI,U21,IS62WV2568BLL-55TLI,TSOP-I-32_18.4x8mm_P0.5mm,1, ,,SRAM-2Mbit-3V3-55ns-32TSOPI,"ISSI, Integrated Silicon Solution Inc",IS62WV2568BLL-55TLI,,,
53,256kbit SRAM,IS62WV2568BLL-55TLI,U21_1,IS62WV2568BLL-55TLI,TSOP-I-32_11.8x8mm_P0.5mm,1, ,,DNS,DNS,DNS,,,
54,"Precision Timers, 555 compatible, SOIC-8",MC1455,U8 U27,MC1455,SOIC-8_3.9x4.9mm_P1.27mm,2, ,,MC1455-SOIC,onsemi,MC1455DR2G,,,
55,"Microprocessor, 16-bit bus",MC68010_PLCC,U5,MC68010FN10,PLCC-68_SMD-Socket-3M-8400-wPegs,1, ,https://www.nxp.com/docs/en/reference-manual/MC68000UM.pdf,MC68010FN10,Motorola,MC68010FN10,,,
56,,MC68881FN,U6,MC68881FN,PLCC-68_SMD-Socket-3M-8400-wPegs,1, ,,MC68881FN12,Motorola,MC68881FN12,,,
57,"Microcontroller reset monitor, 4.60V threshold, active low output",MCP100-460D,U1,MCP100T-460I/TT,SOT-23,1, ,http://ww1.microchip.com/downloads/en/DeviceDoc/11187f.pdf,MCP100-460I/TT,Microchip Technology,MCP100T-460I/TT,,,
58,"8-bit I/O expander, SPI, interrupts, SOIC-18",MCP23S08-xSS,U25,MCP23S08-E/SS,SSOP-20_5.3x7.2mm_P0.65mm,1, ,http://ww1.microchip.com/downloads/en/DeviceDoc/MCP23008-MCP23S08-Data-Sheet-20001919F.pdf,MCP23S08-E/SS,Microchip Technology,MCP23S08-E/SS,,,
59,OAK (Address decoder) on a PLCC44 ATF1502,Oak_PLCC44,U7,OAK:ICM68K,PLCC-44_SMD-Socket,1, ,,Oak:ICM68Kr2,,,,,
60,Low-voltage 24-bit FET Bus-exchange switch,74CB3T16211,U11,SN74CB3T16211,TSSOP-56_6.1x14mm_P0.5mm,1, ,,74CB3T16211-TSSOP,Texas Instruments,SN74CB3T16211DGGR,,,
61,Dual Multiplexer 4 to 1,74LS153,U22,SN74CBT3253,TSSOP-16_4.4x5mm_P0.65mm,1, ,http://www.ti.com/lit/gpn/sn74LS153,74CBT3253-TSSOP,Texas Instruments,SN74CBT3253PWR,,,
62,Two pin crystal,Crystal,Y1,3.6864M,Crystal_SMD_HC49-SD,1, ,~,Crystal-3.6864MHz-20pF-HC49US,CTS-Frequency Controls,ATS037SM-1E,,,
63,Two pin crystal,Crystal,Y2,32768,Crystal_C26-LF_D2.1mm_L6.5mm_Horizontal,1, ,~,Crystal-32768Hz-6pF-Cyl2mm,Citizen Finedevice Co Ltd,CFS-20632768EZBB,,,
Project info:
Schematic:,icm68k
Variant:,default
Revision:,2
Date:,2022-01-09
KiCad Version:,6.0.4+dfsg-1~bpo11+1
Statistics:
Component Groups:,63
Component Count:,134
Fitted Components:,134
Number of PCBs:,1
Total Components:,134
Can't render this file because it has a wrong number of fields in line 70.

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2324,7 +2324,7 @@
(in_bom yes) (on_board yes)
(uuid 2bcfd0ac-007f-46d1-9d95-83e14ebbebd4)
(property "Reference" "DS1" (id 0) (at 142.24 46.99 90))
(property "Value" "" (id 1) (at 142.24 49.53 90))
(property "Value" "Red" (id 1) (at 142.24 49.53 90))
(property "Footprint" "LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder" (id 2) (at 138.43 49.53 0)
(effects (font (size 1.27 1.27)) hide)
)

View File

@ -805,12 +805,6 @@
(uuid fe7571cb-0e18-4010-9006-7209546aee72)
)
(text "TODO: ASH: ~{IACK} became A1, make sure the CUPL is ok with this\nMakes room for possible BigAsh with 16-bit transfer support"
(at 120.65 128.27 0)
(effects (font (size 2.032 2.032)) (justify left bottom))
(uuid e5940b98-b68f-48d6-b88c-43aa77c41e16)
)
(label "R~{W}" (at 67.31 87.63 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid 05c04a7d-7173-4a6d-b469-01cb9d734a6c)

View File

@ -1933,8 +1933,8 @@
(in_bom yes) (on_board yes)
(uuid 27b1b4b0-87da-4c11-9560-96fec7ca3a00)
(property "Reference" "DS2" (id 0) (at 234.95 80.01 90))
(property "Value" "" (id 1) (at 234.95 82.55 90))
(property "Footprint" "" (id 2) (at 231.14 82.55 0)
(property "Value" "Green" (id 1) (at 234.95 82.55 90))
(property "Footprint" "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" (id 2) (at 231.14 82.55 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (id 3) (at 231.14 82.55 0)

233
icm68k/ick68k.kibot.yaml Normal file
View File

@ -0,0 +1,233 @@
# Output structure:
#
# gen/
# pcba-fab/
# PROJECT-bom.csv
# PROJECT-bom-inventree.csv
# pcb-fab/
# Gerbers
# Drill files
# stencil-fab/
# Paste layers
# render/
# PROJECT-3d-top.png
# PROJECT-3d-bot.png
# PROJECT-2d-top.png
# PROJECT-2d-bot.png
# doc/
# PROJECT-schem.pdf
# PROJECT-ibom.html
#
# PROJECT-pcb.zip <-- pcb-fab
# PROJECT.stencil.zip <-- stencil-fab
# PROJECT.step
#
# Note that the 3D files (STEP and renders) are not exported by default as
# these exports are very slow. Ask for them by name:
# kibot step 3d-top 3d-bot
kibot:
version: 1
global:
solder_mask_color: green
silk_screen_color: white
pcb_finish: ENIG
units: 'millimeters'
output: '%f-r%r-%i.%x'
preflight:
run_erc: false
run_drc: false # TODO kicad issue #11410, this doesn't work
check_zone_fills: true
ignore_unconnected: false
filters:
- name: inventree_filter
type: generic
exclude_any:
- column: 'BOM'
regex: '^UNTR:'
- column: 'BOM'
regex: '^$'
- name: light_step_filter
type: generic
exclude_any:
- column: 'Footprint'
regex: '^Resistor_SMD:R_(0805|0603|0402|0201)'
- column: 'Footprint'
regex: '^Capacitor_SMD:C_(0805|0603|0402|0201)'
outputs:
- name: pcb-fab-main
type: gerber
dir: ../gen/pcb-fab
options:
&gerbopts
exclude_edge_layer: false
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: true
force_plot_invisible_refs_vals: false
tent_vias: true
line_width: 0.15
subtract_mask_from_silk: true
use_protel_extensions: true
gerber_precision: 4.5
create_gerber_job_file: false
use_gerber_x2_attributes: false
disable_aperture_macros: true
layers:
- 'F.Cu'
- 'In1.Cu'
- 'In2.Cu'
- 'B.Cu'
- 'F.SilkS'
- 'B.SilkS'
- 'F.Mask'
- 'B.Mask'
- 'F.Paste'
- 'Edge.Cuts'
- name: pcb-fab-drill
type: excellon
dir: ../gen/pcb-fab
options:
pth_and_npth_single_file: false
pth_id: "PTH"
npth_id: "NPTH"
metric_units: true
route_mode_for_oval_holes: false
- name: stencil-fab
type: gerber
dir: ../gen/stencil-fab
options:
<<: *gerbopts
layers:
- 'F.Paste'
- 'B.Paste'
- name: 2d-top
type: pcbdraw
dir: ../gen/render
options: &2dopts
format: png
output: '%f-r%r-2d-top.%x'
dpi: 600
- name: 2d-bot
type: pcbdraw
dir: ../gen/render
options:
<<: *2dopts
output: '%f-r%r-2d-bot.%x'
bottom: true
- name: 3d-top
type: render_3d
dir: ../gen/render
run_by_default: false
options: &3dopts
output: '%f-r%r-3d-top.%x'
solder_mask: '#1C4C2D'
zoom: 4
rotate_z: 2
rotate_x: 3
move_y: 1
height: 1000
width: 1000
- name: 3d-bot
type: render_3d
dir: ../gen/render
run_by_default: false
options:
<<: *3dopts
output: '%f-r%r-3d-bot.%x'
rotate_z: 18
rotate_x: 20
- name: bom
type: bom
dir: ../gen/pcba-fab
options:
format: CSV
output: '%f-r%r-bom.%x'
- name: bom-inventree
type: bom
dir: ../gen/pcba-fab
options:
format: CSV
columns:
- field: BOM
name: part_name
- field: "Quantity Per PCB"
name: quantity
- field: References
name: reference
- field: Note
name: note
csv:
hide_pcb_info: true
hide_stats_info: true
exclude_filter: inventree_filter
output: '%f-r%r-bom-inventree.%x'
- name: schem
type: pdf_sch_print
dir: ../gen/doc
options:
output: '%f-r%r-schem.%x'
- name: ffab
type: pdf_pcb_print
dir: ../gen/doc
layers: ['F.Fab']
options:
output: '%f-r%r-%i.%x'
- name: bfab
type: pdf_pcb_print
dir: ../gen/doc
layers: ['B.Fab']
options:
output: '%f-r%r-%i.%x'
mirror: true
- name: ibom
type: ibom
dir: ../gen/doc
options:
layer_view: F
show_fabrication: true
extra_fields: BOM
output: '%f-r%r-ibom.%x'
- name: step
type: step
dir: ../gen
run_by_default: false
options:
dnf_filter: light_step_filter
origin: drill
- name: pcb-archive
type: compress
dir: ../gen
options:
files:
- source: ../gen/pcb-fab/**
dest: 'pcb'
output: '%f-r%r-pcb.%x'
- name: stencil-archive
type: compress
dir: ../gen
options:
files:
- source: ../gen/stencil-fab/**
dest: 'stencil'
output: '%f-r%r-stencil.zip'

View File

@ -55,10 +55,7 @@
"width": 0.0
}
],
"drc_exclusions": [
"courtyards_overlap|136822001|109415001|57a6ebb9-7b18-4558-94ae-5e97f20b3bff|d9735f77-0dfa-45e8-a55b-df6d61246daa",
"courtyards_overlap|136822001|109415001|d9735f77-0dfa-45e8-a55b-df6d61246daa|57a6ebb9-7b18-4558-94ae-5e97f20b3bff"
],
"drc_exclusions": [],
"meta": {
"version": 2
},

BIN
misc/2dbot-thumb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
misc/2dtop-thumb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
misc/3d-thumb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
misc/3d-top.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 KiB