Merge pull request #2 from Modos-Labs/lite

Lite version hardware
This commit is contained in:
Wenting Zhang 2024-01-24 00:03:32 -05:00 committed by GitHub
commit b1e0eb794a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 146280 additions and 53480 deletions

5
.gitignore vendored
View file

@ -1,2 +1,7 @@
.*/ .*/
build/ build/
.DS_Store
*.bak
pcb-backups/
#auto_saved_files#
*.lck

BIN
case/case.FCStd Normal file

Binary file not shown.

View file

@ -7,11 +7,15 @@ set(CMAKE_CXX_STANDARD 17)
# initalize pico_sdk from installed location # initalize pico_sdk from installed location
# (note this can come from environment, CMake cache etc) # (note this can come from environment, CMake cache etc)
set(PICO_SDK_PATH "/Users/wenting/pico/pico-sdk") set(PICO_SDK_PATH "/home/wenting/pico/pico-sdk")
set(PICO_EXTRAS_PATH "/home/wenting/pico/pico-extras")
# Pull in Raspberry Pi Pico SDK (must be before project) # Pull in Raspberry Pi Pico SDK (must be before project)
include(pico_sdk_import.cmake) include(pico_sdk_import.cmake)
# We also need PICO EXTRAS
include(pico_extras_import.cmake)
project(fw C CXX ASM) project(fw C CXX ASM)
# Initialise the Raspberry Pi Pico SDK # Initialise the Raspberry Pi Pico SDK
@ -20,19 +24,21 @@ pico_sdk_init()
# Add executable. Default name is the project name, version 0.1 # Add executable. Default name is the project name, version 0.1
add_executable(fw add_executable(fw
fw.c bitstream.c
utils.c caster.c
edid.c
fpga.c
fusb302.c fusb302.c
fw.c
max17135.c
power.c power.c
ptn3460.c ptn3460.c
tcpm_driver.c tcpm_driver.c
tps65185.c tps65185.c
max17135.c
bitstream.c
fpga.c
usb_pd_driver.c usb_pd_driver.c
usb_pd_policy.c usb_pd_policy.c
usb_pd_protocol.c usb_pd_protocol.c
utils.c
) )
pico_set_program_name(fw "fw") pico_set_program_name(fw "fw")
@ -42,7 +48,7 @@ pico_enable_stdio_uart(fw 0)
pico_enable_stdio_usb(fw 1) pico_enable_stdio_usb(fw 1)
# Add the standard library to the build # Add the standard library to the build
target_link_libraries(fw pico_stdlib) target_link_libraries(fw pico_stdlib hardware_sleep)
# Add any user requested libraries # Add any user requested libraries
target_link_libraries(fw target_link_libraries(fw
@ -50,6 +56,8 @@ target_link_libraries(fw
hardware_dma hardware_dma
hardware_i2c hardware_i2c
hardware_pwm hardware_pwm
pico_unique_id
pico_i2c_slave
) )
pico_add_extra_outputs(fw) pico_add_extra_outputs(fw)

File diff suppressed because it is too large Load diff

87
fw/caster.c Normal file
View file

@ -0,0 +1,87 @@
//
// Glider
// Copyright 2024 Wenting Zhang
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
#include "config.h"
#include "caster.h"
#include "fpga.h"
static size_t last_update;
static size_t last_update_duration;
static uint8_t waveform_frames;
static uint8_t get_update_frames(void) {
// Should be worst case time to clear/ update a frame
//uint8_t min_time = 10; // Minimum time for non-LUT modes
// actually, just always return 1s
return 60;
}
static void wait(void) {
// Reading is not implemented in the simulator
}
void caster_init(void) {
waveform_frames = 38; // Need to sync with the RTL code
// fpga_write_reg8(CSR_CFG_V_FP, TCON_VFP);
// fpga_write_reg8(CSR_CFG_V_SYNC, TCON_VSYNC);
// fpga_write_reg8(CSR_CFG_V_BP, TCON_VBP);
// fpga_write_reg16(CSR_CFG_V_ACT, TCON_VACT);
// fpga_write_reg8(CSR_CFG_H_FP, TCON_HFP);
// fpga_write_reg8(CSR_CFG_H_SYNC, TCON_HSYNC);
// fpga_write_reg8(CSR_CFG_H_BP, TCON_HBP);
// fpga_write_reg16(CSR_CFG_H_ACT, TCON_HACT);
// fpga_write_reg8(CSR_CONTROL, 1); // Enable refresh
}
void caster_load_waveform(uint8_t *waveform, uint8_t frames) {
wait();
fpga_write_reg8(CSR_LUT_FRAME, 0); // Reset value before loading
fpga_write_reg16(CSR_LUT_ADDR, 0);
fpga_write_bulk(CSR_LUT_WR, waveform, WAVEFORM_SIZE);
waveform_frames = frames;
}
void caster_redraw(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
wait();
fpga_write_reg16(CSR_OP_LEFT, x0);
fpga_write_reg16(CSR_OP_TOP, y0);
fpga_write_reg16(CSR_OP_RIGHT, x1);
fpga_write_reg16(CSR_OP_BOTTOM, y1);
fpga_write_reg8(CSR_OP_LENGTH, get_update_frames());
fpga_write_reg8(CSR_OP_CMD, OP_EXT_REDRAW);
}
void caster_setmode(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,
UPDATE_MODE mode) {
wait();
fpga_write_reg16(CSR_OP_LEFT, x0);
fpga_write_reg16(CSR_OP_TOP, y0);
fpga_write_reg16(CSR_OP_RIGHT, x1);
fpga_write_reg16(CSR_OP_BOTTOM, y1);
fpga_write_reg8(CSR_OP_LENGTH, get_update_frames());
fpga_write_reg8(CSR_OP_PARAM, (uint8_t)mode);
fpga_write_reg8(CSR_OP_CMD, OP_EXT_SETMODE);
}

95
fw/caster.h Normal file
View file

@ -0,0 +1,95 @@
//
// Caster simulator
// Copyright 2023 Wenting Zhang
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
#pragma once
// Register map
#define CSR_LUT_FRAME 0
#define CSR_LUT_ADDR_HI 1
#define CSR_LUT_ADDR_LO 2
#define CSR_LUT_WR 3
#define CSR_OP_LEFT_HI 4
#define CSR_OP_LEFT_LO 5
#define CSR_OP_RIGHT_HI 6
#define CSR_OP_RIGHT_LO 7
#define CSR_OP_TOP_HI 8
#define CSR_OP_TOP_LO 9
#define CSR_OP_BOTTOM_HI 10
#define CSR_OP_BOTTOM_LO 11
#define CSR_OP_PARAM 12
#define CSR_OP_LENGTH 13
#define CSR_OP_CMD 14
#define CSR_CONTROL 15
#define CSR_CFG_V_FP 16
#define CSR_CFG_V_SYNC 17
#define CSR_CFG_V_BP 18
#define CSR_CFG_V_ACT_HI 19
#define CSR_CFG_V_ACT_LO 20
#define CSR_CFG_H_FP 21
#define CSR_CFG_H_SYNC 22
#define CSR_CFG_H_BP 23
#define CSR_CFG_H_ACT_HI 24
#define CSR_CFG_H_ACT_LO 25
#define CSR_CFG_FBYTES_B2 27
#define CSR_CFG_FBYTES_B1 28
#define CSR_CFG_FBYTES_B0 29
// Alias for 16bit registers
#define CSR_LUT_ADDR CSR_LUT_ADDR_HI
#define CSR_OP_LEFT CSR_OP_LEFT_HI
#define CSR_OP_RIGHT CSR_OP_RIGHT_HI
#define CSR_OP_TOP CSR_OP_TOP_HI
#define CSR_OP_BOTTOM CSR_OP_BOTTOM_HI
#define CSR_CFG_V_ACT CSR_CFG_V_ACT_HI
#define CSR_CFG_H_ACT CSR_CFG_H_ACT_HI
// Commands
#define OP_EXT_REDRAW 0
#define OP_EXT_SETMODE 1
// Status bits
#define STATUS_MIG_ERROR 7
#define STATUS_MIF_ERROR 6
#define STATUS_SYS_READY 5
#define STATUS_OP_BUSY 4
#define STATUS_OP_QUEUE 3
#define CTRL_ENABLE 0
#define WAVEFORM_SIZE (4*1024)
#define FRAME_RATE_HZ (60)
typedef enum {
UM_MANUAL_LUT_NO_DITHER = 0,
UM_MANUAL_LUT_ERROR_DIFFUSION = 1,
UM_FAST_MONO_NO_DITHER = 2,
UM_FAST_MONO_BAYER = 3,
UM_FAST_MONO_BLUE_NOISE = 4,
UM_FAST_GREY = 5,
UM_AUTO_LUT_NO_DITHER = 6,
UM_AUTO_LUT_ERROR_DIFFUSION = 7
} UPDATE_MODE;
void caster_init(void);
void caster_load_waveform(uint8_t *waveform, uint8_t frames);
void caster_redraw(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
void caster_setmode(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,
UPDATE_MODE mode);

View file

@ -24,7 +24,9 @@
/* BOARD REVISION CONFIGURATION */ /* BOARD REVISION CONFIGURATION */
// Eariler revisions are not supported // Eariler revisions are not supported
//#define BOARD_REV_R0P5 //#define BOARD_REV_R0P5
#define BOARD_REV_R0P6 //#define BOARD_REV_R0P6
// Lite version uses DVI instead of Type-C DP Alt-mode
#define BOARD_REV_RL0P1
/* SCREEN CONFIGURATION */ /* SCREEN CONFIGURATION */
@ -49,8 +51,15 @@
/* SET BASED ON PREVIOUS DEFINES, DO NOT MODIFY */ /* SET BASED ON PREVIOUS DEFINES, DO NOT MODIFY */
#if defined(BOARD_REV_R0P5) #if defined(BOARD_REV_R0P5)
#define POWER_TPS65185 #define POWER_TPS65185
#define INPUT_TYPEC
#elif defined(BOARD_REV_R0P6) #elif defined(BOARD_REV_R0P6)
#define POWER_GPIO #define POWER_GPIO
// VCOM measurement is not supported
#define INPUT_TYPEC
#elif defined(BOARD_REV_RL0P1)
#define POWER_GPIO
#define POWER_GPIO_VCOM_MEASURE
#define INPUT_DVI
#else #else
#error "Unknown board revision" #error "Unknown board revision"
#endif #endif
@ -109,6 +118,15 @@
#define SCREEN_VBLK 29 #define SCREEN_VBLK 29
#define SCREEN_VFP 3 #define SCREEN_VFP 3
#define SCREEN_VSYNC 10 #define SCREEN_VSYNC 10
#define TCON_HACT 256
#define TCON_HBP 2
#define TCON_HSYNC 2
#define TCON_HFP 72
#define TCON_VACT 758
#define TCON_VBP 3
#define TCON_VSYNC 1
#define TCON_VFP 12
#elif defined(SCREEN_1448_1072) #elif defined(SCREEN_1448_1072)
// 1448x1072 @ 60, 128.5MHz CVT // 1448x1072 @ 60, 128.5MHz CVT
#define SCREEN_CLK 128500 #define SCREEN_CLK 128500
@ -122,15 +140,34 @@
#define SCREEN_VSYNC 10 #define SCREEN_VSYNC 10
#elif defined(SCREEN_1600_1200) #elif defined(SCREEN_1600_1200)
// 1600x1200 @ 60, 162MHz DMT // 1600x1200 @ 60, 162MHz DMT
#define SCREEN_CLK 162000 // #define SCREEN_CLK 162000
// #define SCREEN_HACT 1600
// #define SCREEN_VACT 1200
// #define SCREEN_HBLK 560
// #define SCREEN_HFP 64
// #define SCREEN_HSYNC 192
// #define SCREEN_VBLK 50
// #define SCREEN_VFP 1
// #define SCREEN_VSYNC 3
// 1600x1200 @ 60, 124.488MHz CVT-RB-v2
#define SCREEN_CLK 124488
#define SCREEN_HACT 1600 #define SCREEN_HACT 1600
#define SCREEN_VACT 1200 #define SCREEN_VACT 1200
#define SCREEN_HBLK 560 #define SCREEN_HBLK 80
#define SCREEN_HFP 64 #define SCREEN_HFP 8
#define SCREEN_HSYNC 192 #define SCREEN_HSYNC 32
#define SCREEN_VBLK 50 #define SCREEN_VBLK 35
#define SCREEN_VFP 1 #define SCREEN_VFP 21
#define SCREEN_VSYNC 3 #define SCREEN_VSYNC 8
#define TCON_HACT 400
#define TCON_HBP 2
#define TCON_HSYNC 2
#define TCON_HFP 16
#define TCON_VACT 1200
#define TCON_VBP 2
#define TCON_VSYNC 1
#define TCON_VFP 12
#elif defined(SCREEN_1872_1404) #elif defined(SCREEN_1872_1404)
// 1872x1404 @ 60, 162MHz Custom // 1872x1404 @ 60, 162MHz Custom
#define SCREEN_CLK 162000 #define SCREEN_CLK 162000

155
fw/edid.c Normal file
View file

@ -0,0 +1,155 @@
//
// Copyright 2022 Wenting Zhang <zephray@outlook.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
#include <stdint.h>
#include <pico/stdlib.h>
#include <hardware/i2c.h>
#include <pico/unique_id.h>
#include <pico/i2c_slave.h>
#include "edid.h"
#include "config.h"
#if defined(INPUT_DVI)
#define EDID_I2C_ADDRESS (0x50)
#define EDID_I2C (i2c0)
#define EDID_I2C_SDA (0)
#define EDID_I2C_SCL (1)
#define EDID_VID_IN_PARAM (0x81) // DVI input
#elif defined(INPUT_TYPEC)
#define EDID_VID_IN_PARAM (0x85) // DisplayPort input
#endif
static char edid[129] = {
0x00, // register number, not part of EDID
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, // fixed header (0-7)
0x6a, 0x12, // manufacturer ID (8-9)
0x01, 0x00, // product code (10-11)
0x42, 0x4b, 0x1d, 0x00, // serial number (12-15)
0x01, // week of manufacture (16)
0x20, // year of manufacture (17)
0x01, // EDID version (18)
0x03, // EDID revision (19)
EDID_VID_IN_PARAM, // video input parameter (20)
(SCREEN_SIZE_X / 10), // horizontal screen size in cm (21)
(SCREEN_SIZE_Y / 10), // vertical screen size in cm (22)
0x78, // display gamma (23)
0x06, // supported feature (24)
0xee, 0x95, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, // chromatic (25-34)
0x00, 0x00, 0x00, // established timing (35-37)
(SCREEN_HACT / 8 - 31), // X resolution (38)
SCREEN_ASPECT, // aspect ratio and vertical frequency (39)
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // standard timing
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // standard timing continued
// descriptor 1 (54-71)
((SCREEN_CLK / 10) & 0xff), ((SCREEN_CLK / 10) >> 8), // pixel clock in 10kHz
(SCREEN_HACT & 0xff), // HACT LSB
(SCREEN_HBLK & 0xff), // VBLK LSB
(((SCREEN_HACT >> 8) << 4) | (SCREEN_HBLK >> 8)), // HACT MSB | HBLK MSB
(SCREEN_VACT & 0xff), // VACT LSB
(SCREEN_VBLK & 0xff), // VBLK LSB
(((SCREEN_VACT >> 8) << 4) | (SCREEN_VBLK >> 8)), // VACT MSB | VBLK MSB
(SCREEN_HFP & 0xff), // HFP LSB
(SCREEN_HSYNC & 0xff), // HSYNC LSB
(((SCREEN_VFP & 0xf) << 4) | (SCREEN_VSYNC & 0xf)), // VFP LSB | VSYNC LSB
(((SCREEN_HFP >> 8) << 6) | ((SCREEN_HSYNC >> 8) << 4) |
((SCREEN_VFP >> 4) << 2) | (SCREEN_VSYNC >> 4)), // HFP MSB | HSYNC MSB | VFP MSB | VSYNC MSB
(SCREEN_SIZE_X & 0xff), // Horizontal size in mm LSB
(SCREEN_SIZE_Y & 0xff), // Vertical size in mm LSB
(((SCREEN_SIZE_X >> 8) << 4) | (SCREEN_SIZE_Y >> 8)), // HSIZE MSB | VSIZE LSB
0x00, // Horizontal border pixels
0x00, // Vertical border lines
0x1e, // Features bitmap
// descriptor 2 (72-89) display name
0x00, 0x00, 0x00, 0xfc, 0x00, 0x50, 0x61, 0x70, 0x65, 0x72, 0x20,
0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
// descriptor 3 (90-107) display name
0x00, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
// descriptor 4 (108-125) dummy
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, // number of extensions (126)
0x00 // checksum (127)
};
#ifdef INPUT_DVI
static void edid_i2c_slave_handler(i2c_inst_t *i2c, i2c_slave_event_t event) {
static uint8_t addr = 0;
switch (event) {
case I2C_SLAVE_RECEIVE:
// I2C master has written some data
// EDID is read only, all write are treated as address
addr = i2c_read_byte_raw(i2c);
break;
case I2C_SLAVE_REQUEST:
// I2C master is requesting data
i2c_write_byte_raw(i2c, edid[addr + 1]);
addr++;
if (addr == 128)
addr = 0; // wrap around
break;
case I2C_SLAVE_FINISH:
// I2C master sent stop
// Reset transaction if needed
break;
}
}
#endif
void edid_init() {
// Fill in runtime info
pico_unique_board_id_t board_id;
pico_get_unique_board_id(&board_id);
// Populate serial number with this ID (XORed down to 4 bytes)
edid[13] = board_id.id[0] ^ board_id.id[4];
edid[14] = board_id.id[1] ^ board_id.id[5];
edid[15] = board_id.id[2] ^ board_id.id[6];
edid[16] = board_id.id[3] ^ board_id.id[7];
// Fix checksum in EDID
uint8_t checksum = 0;
for (int i = 1; i < 128; i++) {
checksum += edid[i];
}
checksum = ~checksum + 1;
edid[128] = checksum;
#ifdef INPUT_DVI
// DVI models has DDC I2C connected directly to the RP2040
// EDID ROM emulation is needed
gpio_init(EDID_I2C_SDA);
gpio_init(EDID_I2C_SCL);
gpio_set_function(EDID_I2C_SDA, GPIO_FUNC_I2C);
gpio_set_function(EDID_I2C_SCL, GPIO_FUNC_I2C);
i2c_slave_init(EDID_I2C, EDID_I2C_ADDRESS, &edid_i2c_slave_handler);
// Pull HPD high so host can read the EDID
#endif
}
uint8_t *edid_get_raw() {
return edid;
}

View file

@ -1,53 +1,25 @@
#include "config.h" //
// Copyright 2022 Wenting Zhang <zephray@outlook.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
#pragma once
char edid[129] = { void edid_init();
0x00, // register number, not part of EDID uint8_t *edid_get_raw();
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, // fixed header (0-7)
0x6a, 0x12, // manufacturer ID (8-9)
0x01, 0x00, // product code (10-11)
0x42, 0x4b, 0x1d, 0x00, // serial number (12-15)
0x01, // week of manufacture (16)
0x20, // year of manufacture (17)
0x01, // EDID version (18)
0x03, // EDID revision (19)
0x85, // display parameter (20)
(SCREEN_SIZE_X / 10), // horizontal screen size in cm (21)
(SCREEN_SIZE_Y / 10), // vertical screen size in cm (22)
0x78, // display gamma (23)
0x06, // supported feature (24)
0xee, 0x95, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, // chromatic (25-34)
0x00, 0x00, 0x00, // established timing (35-37)
(SCREEN_HACT / 8 - 31), // X resolution (38)
SCREEN_ASPECT, // aspect ratio and vertical frequency (39)
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // standard timing
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // standard timing continued
// descriptor 1 (54-71)
((SCREEN_CLK / 10) & 0xff), ((SCREEN_CLK / 10) >> 8), // pixel clock in 10kHz
(SCREEN_HACT & 0xff), // HACT LSB
(SCREEN_HBLK & 0xff), // VBLK LSB
(((SCREEN_HACT >> 8) << 4) | (SCREEN_HBLK >> 8)), // HACT MSB | HBLK MSB
(SCREEN_VACT & 0xff), // VACT LSB
(SCREEN_VBLK & 0xff), // VBLK LSB
(((SCREEN_VACT >> 8) << 4) | (SCREEN_VBLK >> 8)), // VACT MSB | VBLK MSB
(SCREEN_HFP & 0xff), // HFP LSB
(SCREEN_HSYNC & 0xff), // HSYNC LSB
(((SCREEN_VFP & 0xf) << 4) | (SCREEN_VSYNC & 0xf)), // VFP LSB | VSYNC LSB
(((SCREEN_HFP >> 8) << 6) | ((SCREEN_HSYNC >> 8) << 4) |
((SCREEN_VFP >> 4) << 2) | (SCREEN_VSYNC >> 4)), // HFP MSB | HSYNC MSB | VFP MSB | VSYNC MSB
(SCREEN_SIZE_X & 0xff), // Horizontal size in mm LSB
(SCREEN_SIZE_Y & 0xff), // Vertical size in mm LSB
(((SCREEN_SIZE_X >> 8) << 4) | (SCREEN_SIZE_Y >> 8)), // HSIZE MSB | VSIZE LSB
0x00, // Horizontal border pixels
0x00, // Vertical border lines 0x1e,
// descriptor 2 (72-89) display name
0x00, 0x00, 0x00, 0xfc, 0x00, 0x50, 0x61, 0x70, 0x65, 0x72, 0x20,
0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
// descriptor 3 (90-107) display name
0x00, 0x00, 0x00, 0xfc, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
// descriptor 4 (108-125) dummy
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, // number of extensions (126)
0x00 // checksum (127)
};

View file

@ -20,6 +20,8 @@
// SOFTWARE. // SOFTWARE.
// //
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include <stdio.h>
#include "utils.h"
#include "fpga.h" #include "fpga.h"
#include "bitstream.h" #include "bitstream.h"
@ -58,13 +60,54 @@ static void fpga_send_byte(uint8_t byte) {
} }
} }
static void fpga_send_byte_slow(uint8_t byte) {
for (int i = 0; i < 8; i++) {
gpio_put(FPGA_MOSI, byte & 0x80);
delay_loop(20);
gpio_put(FPGA_SCLK, 1);
delay_loop(20);
byte <<= 1;
gpio_put(FPGA_SCLK, 0);
}
}
void fpga_write_reg8(uint8_t addr, uint8_t val) {
gpio_put(FPGA_CS, 0);
fpga_send_byte_slow(addr);
fpga_send_byte_slow(val);
gpio_put(FPGA_CS, 1);
}
void fpga_write_reg16(uint8_t addr, uint16_t val) {
gpio_put(FPGA_CS, 0);
fpga_send_byte_slow(addr);
fpga_send_byte_slow(val >> 8);
fpga_send_byte_slow(val & 0xff);
gpio_put(FPGA_CS, 1);
}
void fpga_write_bulk(uint8_t addr, uint8_t *buf, int length) {
gpio_put(FPGA_CS, 0);
fpga_send_byte_slow(addr);
for (int i = 0; i < length; i++) {
fpga_send_byte_slow(buf[i]);
}
gpio_put(FPGA_CS, 1);
}
static void fpga_load_bitstream(uint8_t *stream, int size) { static void fpga_load_bitstream(uint8_t *stream, int size) {
gpio_put(FPGA_CS, 0); gpio_put(FPGA_CS, 0);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
fpga_send_byte(stream[i]); fpga_send_byte(stream[i]);
} }
gpio_put(FPGA_CS, 1); gpio_put(FPGA_CS, 1);
for (int i = 0; i < 1000; i++) { printf("FPGA bitstream load done.\n");
}
static void fpga_wait_done(bool timeout) {
if (timeout) {
int i;
for (i = 0; i < 1000; i++) {
if (gpio_get(FPGA_DONE) == 1) if (gpio_get(FPGA_DONE) == 1)
break; break;
sleep_ms(1); sleep_ms(1);
@ -72,8 +115,11 @@ static void fpga_load_bitstream(uint8_t *stream, int size) {
if (gpio_get(FPGA_DONE) == 0) { if (gpio_get(FPGA_DONE) == 0) {
fatal("FPGA done does not go high after 1s"); fatal("FPGA done does not go high after 1s");
} }
printf("FPGA is up after %d ms.\n", i);
}
else { else {
printf("FPGA bitstream load done."); while (gpio_get(FPGA_DONE) != 1);
printf("FPGA is up.\n");
} }
} }
@ -87,6 +133,8 @@ void fpga_init(void) {
gpio_init_ipu(FPGA_DONE); gpio_init_ipu(FPGA_DONE);
gpio_init_out(FPGA_SUSP, 0); gpio_init_out(FPGA_SUSP, 0);
gpio_put(FPGA_CS, 1);
// FPGA Reset // FPGA Reset
gpio_put(FPGA_PROG, 0); gpio_put(FPGA_PROG, 0);
sleep_ms(100); sleep_ms(100);
@ -94,7 +142,14 @@ void fpga_init(void) {
sleep_ms(100); sleep_ms(100);
// Load bitstream // Load bitstream
#if 1
fpga_load_bitstream(fpga_bitstream, fpga_bitstream_length); fpga_load_bitstream(fpga_bitstream, fpga_bitstream_length);
fpga_wait_done(true);
#else
fpga_wait_done(false);
#endif
} }
void fpga_suspend(void) { void fpga_suspend(void) {

View file

@ -24,3 +24,6 @@
void fpga_init(void); void fpga_init(void);
void fpga_suspend(void); void fpga_suspend(void);
void fpga_resume(void); void fpga_resume(void);
void fpga_write_reg8(uint8_t addr, uint8_t val);
void fpga_write_reg16(uint8_t addr, uint16_t val);
void fpga_write_bulk(uint8_t addr, uint8_t *buf, int length);

62
fw/fw.c
View file

@ -22,6 +22,7 @@
#include <stdio.h> #include <stdio.h>
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "pico/binary_info.h" #include "pico/binary_info.h"
#include "pico/sleep.h"
#include "hardware/i2c.h" #include "hardware/i2c.h"
#include "config.h" #include "config.h"
#include "utils.h" #include "utils.h"
@ -30,6 +31,8 @@
#include "ptn3460.h" #include "ptn3460.h"
#include "power.h" #include "power.h"
#include "fpga.h" #include "fpga.h"
#include "edid.h"
#include "caster.h"
int main() int main()
{ {
@ -40,6 +43,64 @@ int main()
printf("\n"); printf("\n");
printf("Glider\n"); printf("Glider\n");
// TODO: Unify both input options
#if defined(INPUT_DVI)
power_init();
edid_init();
power_enable(true);
//sleep_run_from_xosc();
//sleep_goto_dormant_until_edge_high(8);
// https://ghubcoder.github.io/posts/awaking-the-pico/
fpga_init();
//sleep_ms(5000);
//caster_init();
gpio_init(2);
gpio_set_dir(2, GPIO_IN);
gpio_pull_up(2);
int mode_max = 6;
int mode = 1;
UPDATE_MODE modes[6] = {
UM_FAST_MONO_NO_DITHER,
UM_FAST_MONO_BAYER,
UM_FAST_MONO_BLUE_NOISE,
UM_FAST_GREY,
UM_AUTO_LUT_NO_DITHER,
UM_AUTO_LUT_ERROR_DIFFUSION
};
while (1) {
//
if (gpio_get(2) == 0) {
sleep_ms(20);
if (gpio_get(2) == 0) {
int i = 0;
while (gpio_get(2) == 0) {
i++;
sleep_ms(1);
if (i > 500)
break;
}
if (i > 500) {
// Long press, clear screen
caster_redraw(0,0,1600,1200);
}
else {
// Short press, switch mode
mode++;
if (mode >= mode_max) mode = 0;
caster_setmode(0,0,1600,1200,modes[mode]);
}
while (gpio_get(2) == 0);
}
while (gpio_get(2) == 0);
}
}
#elif defined(INPUT_TYPEC)
int result = tcpm_init(0); int result = tcpm_init(0);
if (result) if (result)
fatal("Failed to initialize TCPC\n"); fatal("Failed to initialize TCPC\n");
@ -78,6 +139,7 @@ int main()
printf(dp_valid ? "Input is valid\n" : "Input is invalid\n"); printf(dp_valid ? "Input is valid\n" : "Input is invalid\n");
} }
} }
#endif
return 0; return 0;
} }

View file

@ -0,0 +1,62 @@
# This is a copy of <PICO_EXTRAS_PATH>/external/pico_extras_import.cmake
# This can be dropped into an external project to help locate pico-extras
# It should be include()ed prior to project()
if (DEFINED ENV{PICO_EXTRAS_PATH} AND (NOT PICO_EXTRAS_PATH))
set(PICO_EXTRAS_PATH $ENV{PICO_EXTRAS_PATH})
message("Using PICO_EXTRAS_PATH from environment ('${PICO_EXTRAS_PATH}')")
endif ()
if (DEFINED ENV{PICO_EXTRAS_FETCH_FROM_GIT} AND (NOT PICO_EXTRAS_FETCH_FROM_GIT))
set(PICO_EXTRAS_FETCH_FROM_GIT $ENV{PICO_EXTRAS_FETCH_FROM_GIT})
message("Using PICO_EXTRAS_FETCH_FROM_GIT from environment ('${PICO_EXTRAS_FETCH_FROM_GIT}')")
endif ()
if (DEFINED ENV{PICO_EXTRAS_FETCH_FROM_GIT_PATH} AND (NOT PICO_EXTRAS_FETCH_FROM_GIT_PATH))
set(PICO_EXTRAS_FETCH_FROM_GIT_PATH $ENV{PICO_EXTRAS_FETCH_FROM_GIT_PATH})
message("Using PICO_EXTRAS_FETCH_FROM_GIT_PATH from environment ('${PICO_EXTRAS_FETCH_FROM_GIT_PATH}')")
endif ()
if (NOT PICO_EXTRAS_PATH)
if (PICO_EXTRAS_FETCH_FROM_GIT)
include(FetchContent)
set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
if (PICO_EXTRAS_FETCH_FROM_GIT_PATH)
get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_EXTRAS_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
endif ()
FetchContent_Declare(
PICO_EXTRAS
GIT_REPOSITORY https://github.com/raspberrypi/pico-extras
GIT_TAG master
)
if (NOT PICO_EXTRAS)
message("Downloading PICO EXTRAS")
FetchContent_Populate(PICO_EXTRAS)
set(PICO_EXTRAS_PATH ${PICO_EXTRAS_SOURCE_DIR})
endif ()
set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
else ()
if (PICO_SDK_PATH AND EXISTS "${PICO_SDK_PATH}/../pico-extras")
set(PICO_EXTRAS_PATH ${PICO_SDK_PATH}/../pico-extras)
message("Defaulting PICO_EXTRAS_PATH as sibling of PICO_SDK_PATH: ${PICO_EXTRAS_PATH}")
else()
message(FATAL_ERROR
"PICO EXTRAS location was not specified. Please set PICO_EXTRAS_PATH or set PICO_EXTRAS_FETCH_FROM_GIT to on to fetch from git."
)
endif()
endif ()
endif ()
set(PICO_EXTRAS_PATH "${PICO_EXTRAS_PATH}" CACHE PATH "Path to the PICO EXTRAS")
set(PICO_EXTRAS_FETCH_FROM_GIT "${PICO_EXTRAS_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of PICO EXTRAS from git if not otherwise locatable")
set(PICO_EXTRAS_FETCH_FROM_GIT_PATH "${PICO_EXTRAS_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download EXTRAS")
get_filename_component(PICO_EXTRAS_PATH "${PICO_EXTRAS_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
if (NOT EXISTS ${PICO_EXTRAS_PATH})
message(FATAL_ERROR "Directory '${PICO_EXTRAS_PATH}' not found")
endif ()
set(PICO_EXTRAS_PATH ${PICO_EXTRAS_PATH} CACHE PATH "Path to the PICO EXTRAS" FORCE)
add_subdirectory(${PICO_EXTRAS_PATH} pico_extras)

View file

@ -28,6 +28,12 @@
#define PWR_EN_GPIO 21 #define PWR_EN_GPIO 21
#define PWR_VCOM_GPIO 22 #define PWR_VCOM_GPIO 22
#if defined(POWER_GPIO_VCOM_MEASURE)
#define PWR_VCOM_EN_GPIO 28
#define PWR_VCOM_MEN_GPIO 26
#define PWR_VCOM_MEA_GPIO 27
#endif
void power_init(void) { void power_init(void) {
gpio_put(PWR_EN_GPIO, 0); gpio_put(PWR_EN_GPIO, 0);
gpio_init(PWR_EN_GPIO); gpio_init(PWR_EN_GPIO);
@ -37,6 +43,21 @@ void power_init(void) {
// Set period to 256 cycles // Set period to 256 cycles
pwm_set_wrap(slice_num, 255); pwm_set_wrap(slice_num, 255);
pwm_set_gpio_level(PWR_VCOM_GPIO, 127); pwm_set_gpio_level(PWR_VCOM_GPIO, 127);
// 0 -3.421V
// 127 -2.145V
// 255 -0.987V
#if defined(POWER_GPIO_VCOM_MEASURE)
gpio_init(PWR_VCOM_EN_GPIO);
gpio_put(PWR_VCOM_EN_GPIO, 0);
gpio_set_dir(PWR_VCOM_EN_GPIO, GPIO_OUT);
gpio_init(PWR_VCOM_MEN_GPIO);
gpio_put(PWR_VCOM_MEN_GPIO, 1);
gpio_set_dir(PWR_VCOM_MEN_GPIO, GPIO_OUT);
#endif
} }
void power_enable(bool en) { void power_enable(bool en) {

View file

@ -20,12 +20,15 @@
// SOFTWARE. // SOFTWARE.
// //
#include <stdint.h> #include <stdint.h>
#include <stdio.h>
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "hardware/i2c.h" #include "hardware/i2c.h"
#include "ptn3460.h" #include "ptn3460.h"
#include "utils.h" #include "utils.h"
#include "edid.h" #include "edid.h"
#ifdef INPUT_TYPEC
#define PTN3460_I2C_ADDRESS (0x60) #define PTN3460_I2C_ADDRESS (0x60)
#define PTN3460_I2C (i2c0) #define PTN3460_I2C (i2c0)
#define PTN3460_HPD_PIN (8) #define PTN3460_HPD_PIN (8)
@ -46,13 +49,6 @@ void ptn3460_select_edid_emulation(uint8_t id) {
void ptn3460_load_edid(uint8_t *edid) { void ptn3460_load_edid(uint8_t *edid) {
int result; int result;
// Fix checksum in EDID
uint8_t checksum = 0;
for (int i = 1; i < 128; i++) {
checksum += edid[i];
}
checksum = ~checksum + 1;
edid[128] = checksum;
result = i2c_write_blocking(PTN3460_I2C, PTN3460_I2C_ADDRESS, result = i2c_write_blocking(PTN3460_I2C, PTN3460_I2C_ADDRESS,
edid, 129, false); edid, 129, false);
@ -96,7 +92,7 @@ void ptn3460_init(void) {
printf("PTN3460 up after %d ms\n", ticks); printf("PTN3460 up after %d ms\n", ticks);
// Enable EDID emulation // Enable EDID emulation
ptn3460_select_edid_emulation(0); ptn3460_select_edid_emulation(0);
ptn3460_load_edid(edid); ptn3460_load_edid(edid_get_raw());
//ptn3460_write(0x80, 0x02); // Set AUX reverse //ptn3460_write(0x80, 0x02); // Set AUX reverse
ptn3460_write(0x81, 0x29); // 18bpp, clock on odd bus, dual channel ptn3460_write(0x81, 0x29); // 18bpp, clock on odd bus, dual channel
@ -115,3 +111,5 @@ void ptn3460_init(void) {
bool ptn3460_is_valid(void) { bool ptn3460_is_valid(void) {
return gpio_get(PTN3460_VALID_PIN); return gpio_get(PTN3460_VALID_PIN);
} }
#endif

View file

@ -21,5 +21,7 @@
// //
#pragma once #pragma once
#ifdef INPUT_TYPEC
void ptn3460_init(void); void ptn3460_init(void);
bool ptn3460_is_valid(void); bool ptn3460_is_valid(void);
#endif

View file

@ -0,0 +1,114 @@
(footprint "BGA-60_9x10_10.0x11.5mm" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(attr smd)
(fp_text reference "REF**" (at 0 -6.75) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 6ef97399-2538-46b2-b406-b6fdb6d53873)
)
(fp_text value "BGA-60_9x10_10.0x11.5mm" (at 0 6.75) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 51e3cfc1-3a23-41a5-83cb-932f5c72c4ff)
)
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 898197a2-6be2-4dc9-afc8-e816cc16c100)
)
(fp_line (start -5.12 -4.75) (end -5.12 -2.995)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp c4d72759-f9cf-4778-80bf-d68945d849a0))
(fp_line (start -5.12 5.87) (end -5.12 2.995)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 16d70370-30d3-4b64-82f7-9918aa47c4e4))
(fp_line (start -4 -5.87) (end -5.12 -4.75)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 02512a7e-3a7a-4ee4-81b8-496d97c178bb))
(fp_line (start -2.62 -5.87) (end -4 -5.87)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 3c4ee0ad-c310-4c32-9c31-607bed6f995b))
(fp_line (start -2.62 5.87) (end -5.12 5.87)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp ef23cf85-fa98-4b19-b5f4-701fa3f9c8d9))
(fp_line (start 2.62 -5.87) (end 5.12 -5.87)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp bb26f7ef-3633-4ffd-bcd9-b090dd0d3a4c))
(fp_line (start 2.62 5.87) (end 5.12 5.87)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp e76a3762-359e-4770-92a7-c713c4e8ec52))
(fp_line (start 5.12 -5.87) (end 5.12 -2.995)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 2c11485c-ff09-4f01-8167-965707924caa))
(fp_line (start 5.12 5.87) (end 5.12 2.995)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 872cac61-d4c6-42e9-b042-18274bc7287f))
(fp_circle (center -5 -5.75) (end -5 -5.65)
(stroke (width 0.2) (type default)) (fill none) (layer "F.SilkS") (tstamp 9ff6722b-2490-4f81-980c-b5d29bd9d9d2))
(fp_line (start -5.25 -6) (end 5.25 -6)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp c9d83a81-a2f2-4138-9a46-8a7ca964f7ab))
(fp_line (start -5.25 6) (end -5.25 -6)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp 9be05e98-d3af-4c15-81db-a97a505bcd90))
(fp_line (start 5.25 -6) (end 5.25 6)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp 72716308-00e0-465a-a638-9d7adac155ec))
(fp_line (start 5.25 6) (end -5.25 6)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp b583fbc6-0ab1-4586-9f98-a6ef191c0f2e))
(fp_line (start -5 -4.75) (end -5 5.75)
(stroke (width 0.1) (type default)) (layer "F.Fab") (tstamp 9421e41b-d7ad-4c17-84e4-afaafc1e002d))
(fp_line (start -5 5.75) (end 5 5.75)
(stroke (width 0.1) (type default)) (layer "F.Fab") (tstamp 2593df18-42c2-40c7-aca6-01ee7f61ddd5))
(fp_line (start -4 -5.75) (end -5 -4.75)
(stroke (width 0.1) (type default)) (layer "F.Fab") (tstamp 04f8ce39-9eac-4d69-903a-68509060be13))
(fp_line (start 5 -5.75) (end -4 -5.75)
(stroke (width 0.1) (type default)) (layer "F.Fab") (tstamp 4aa3af0d-4ebb-4144-8c62-8228d582675c))
(fp_line (start 5 5.75) (end 5 -5.75)
(stroke (width 0.1) (type default)) (layer "F.Fab") (tstamp 34191f04-7f94-4cb4-8243-15cbda571e2a))
(pad "A1" smd circle (at -3.2 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1ed8e2fb-597a-4dd5-9c1a-e0822425530c))
(pad "A2" smd circle (at -2.4 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f1f03b20-cd15-4783-b1ce-1f0d3495feea))
(pad "A3" smd circle (at -1.6 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e7a7f501-0ef3-47d6-bd04-1f9d1609df86))
(pad "A7" smd circle (at 1.6 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 68bbd399-8f19-4dbe-8e0c-cb5e1c29ce68))
(pad "A8" smd circle (at 2.4 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 94f005b6-29db-4e51-8625-c4703ccdd19a))
(pad "A9" smd circle (at 3.2 -3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 082c0a61-7608-469a-8d61-1cf8234cbb06))
(pad "B1" smd circle (at -3.2 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp def8dc9a-6912-4463-9bae-472409b0d1c3))
(pad "B2" smd circle (at -2.4 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp fa9a142c-cfe6-4423-aef2-cf5b5b5f2a02))
(pad "B3" smd circle (at -1.6 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bcdc01f7-0971-4016-bf91-5128a9c514bd))
(pad "B7" smd circle (at 1.6 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 83df7a60-8830-472e-9f48-9d8921ca9f32))
(pad "B8" smd circle (at 2.4 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f8961775-ed36-4ecf-b5ab-903d962e30a5))
(pad "B9" smd circle (at 3.2 -2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f0c2e495-b659-4fc1-98a4-21e8d1732dce))
(pad "C1" smd circle (at -3.2 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 392eb024-581a-451b-bcb1-8f1d0f5c957d))
(pad "C2" smd circle (at -2.4 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ac1d9d5e-219c-409a-a31d-ed4910b886f2))
(pad "C3" smd circle (at -1.6 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 5246e2b3-ed55-4f30-b96f-2be7564dc700))
(pad "C7" smd circle (at 1.6 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b9747526-ce81-4294-8638-4a8fcdb676f6))
(pad "C8" smd circle (at 2.4 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 94248dbc-3a0a-46da-bf80-550e4b8890cd))
(pad "C9" smd circle (at 3.2 -2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bfcc721a-9661-4a80-9401-7828ab1c91d3))
(pad "D1" smd circle (at -3.2 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ec01fb19-059b-4d1d-a4df-db7cbdb48e7f))
(pad "D2" smd circle (at -2.4 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp d53cfca3-18c9-4c95-95da-125f8da9ff9b))
(pad "D3" smd circle (at -1.6 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 10c0ed62-ed0b-4798-91ae-54ccea753569))
(pad "D7" smd circle (at 1.6 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 34e43709-fcad-489a-b355-e50523b60062))
(pad "D8" smd circle (at 2.4 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a6034dc0-8305-4289-8506-d7c9f57691e5))
(pad "D9" smd circle (at 3.2 -1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3e122192-1295-4aa8-97e5-8fe727d0ee60))
(pad "E1" smd circle (at -3.2 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e7c8456b-af20-465d-8c5f-f9870396d2ab))
(pad "E2" smd circle (at -2.4 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a1fb7f28-36ea-4590-945a-9ad008a37b28))
(pad "E3" smd circle (at -1.6 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 53520db0-46e1-4ac6-b905-699bc241924b))
(pad "E7" smd circle (at 1.6 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a103d333-2b65-450a-8cdc-10e1da599fd1))
(pad "E8" smd circle (at 2.4 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2b07ced1-40b8-464f-9aa3-23fc4ffedd27))
(pad "E9" smd circle (at 3.2 -0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp be201012-ccf5-4765-af9f-1d00193db717))
(pad "F1" smd circle (at -3.2 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4213c3c9-2f4b-49d9-ad21-b29ab90a5d5e))
(pad "F2" smd circle (at -2.4 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ca10451a-e061-407d-a677-315ef3de80e3))
(pad "F3" smd circle (at -1.6 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 59146dbb-e324-42f4-8eb7-9f071cee14b1))
(pad "F7" smd circle (at 1.6 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c4067c59-f6b6-4711-bd56-227a56cc770c))
(pad "F8" smd circle (at 2.4 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b47558d7-c796-411f-856f-0bf42482b186))
(pad "F9" smd circle (at 3.2 0.4) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp dde6347b-62b1-40f0-9e1e-446581d960bb))
(pad "G1" smd circle (at -3.2 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a03ce8f8-ec84-453f-adc2-aeecaae0afb0))
(pad "G2" smd circle (at -2.4 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ef6d9358-78ac-48c6-b945-6e81a0764a53))
(pad "G3" smd circle (at -1.6 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8e95f3ac-9d7c-472f-8fcb-6530be3fa0c8))
(pad "G7" smd circle (at 1.6 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 540cc0d3-25c5-499b-ac56-59e7e777ebbb))
(pad "G8" smd circle (at 2.4 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3e8d9619-ad2c-4e26-b30c-113efd6ea3e9))
(pad "G9" smd circle (at 3.2 1.2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c20c2f77-c6f3-410b-882e-c91061a9b6dc))
(pad "H1" smd circle (at -3.2 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp acf3d1cb-86a5-4026-aa3c-cf1b67f376e1))
(pad "H2" smd circle (at -2.4 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2e5cfbbf-dbbf-47a8-a26c-e7487da00e71))
(pad "H3" smd circle (at -1.6 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 95041607-6113-4ec7-ada0-a291ade51cf3))
(pad "H7" smd circle (at 1.6 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp d0004639-c663-4017-858d-83b964d4a24e))
(pad "H8" smd circle (at 2.4 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7c337360-91d4-42ac-9e82-2ab75e0733b8))
(pad "H9" smd circle (at 3.2 2) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f3f03a7e-69ad-4986-b637-95f1d74877b0))
(pad "J1" smd circle (at -3.2 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp fee98fe8-de5c-49ca-8632-ae4dd4e566bc))
(pad "J2" smd circle (at -2.4 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ea39c172-c047-442d-b459-762b490c1a54))
(pad "J3" smd circle (at -1.6 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 021d163a-c307-4d36-bf26-dbe11c3d80d1))
(pad "J7" smd circle (at 1.6 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 58350fd9-8875-4845-93ed-3df4d1e6c985))
(pad "J8" smd circle (at 2.4 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 12db921e-f783-4d8a-b292-36fab0d15107))
(pad "J9" smd circle (at 3.2 2.8) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c93e99db-de08-4966-8296-b8c02b264bad))
(pad "K1" smd circle (at -3.2 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bd4c8ead-25e4-4cb5-acda-ef0f09ba28a4))
(pad "K2" smd circle (at -2.4 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp d35221d4-53af-4ba7-a180-1eadcce69977))
(pad "K3" smd circle (at -1.6 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e7287c5b-eaab-4eb5-8fe3-4b4581b74cd2))
(pad "K7" smd circle (at 1.6 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp af4de8dc-74df-4303-9125-f59b97dbf82b))
(pad "K8" smd circle (at 2.4 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7832a5d8-ba3e-406a-9dfa-82bca01f816d))
(pad "K9" smd circle (at 3.2 3.6) (size 0.4 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 52b0748c-7f27-46aa-99c1-e6f99932399d))
)

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

@ -64,7 +64,7 @@
35, 35,
36 36
], ],
"visible_layers": "00150d0_00000000", "visible_layers": "0015050_00000000",
"zone_display_mode": 0 "zone_display_mode": 0
}, },
"meta": { "meta": {

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,953 @@
230118065756145
Package_TO_SOT_SMD
ATPAK-2
ATPAK SMD package, http://www.onsemi.com/pub/Collateral/ENA2192-D.PDF
ATPAK
0
7
3
Package_TO_SOT_SMD
Analog_KS-4
Analog Devices KS-4, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/sc70ks/ks_4.pdf
Analog Devices KS-4 (like EIAJ SC-82)
0
4
4
Package_TO_SOT_SMD
Diodes_SOT-553
Diodes SOT-553, https://www.diodes.com/assets/Package-Files/SOT553.pdf
SOT-553
0
5
5
Package_TO_SOT_SMD
HVSOF5
HVSOF5, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hvsof5_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/hall/bu52001gul-e.pdf
HVSOF5
0
5
5
Package_TO_SOT_SMD
HVSOF6
HVSOF6, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hvsof6_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/audio_video/video_amplifier/bh76106hfv-e.pdf
HVSOF6
0
7
7
Package_TO_SOT_SMD
Infineon_PG-HDSOP-10-1
Infineon PG-HDSOP-10-1 (DDPAK), 20.96x6.5x2.3mm, slug up (https://www.infineon.com/cms/en/product/packages/PG-HDSOP/PG-HDSOP-10-1/)
hdsop 10 ddpak
0
10
10
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-1
HSOF-8-1 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-1/)
mosfet hsof toll
0
53
3
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-1_ThermalVias
HSOF-8-1 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-1/)
mosfet hsof toll thermal vias
0
96
3
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-2
HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/)
mosfet hsof toll
0
12
4
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-2_ThermalVias
HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/)
mosfet hsof toll thermal vias
0
97
4
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-2_ThermalVias2
HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/, https://www.infineon.com/dgdl/Infineon-ApplicationNote_600V_CoolMOS_C7_Gold_TOLL-AN-v01_00-EN.pdf?fileId=5546d4625b10283a015b144a1af70df6)
mosfet hsof toll thermal vias
0
159
4
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-3
HSOF-8-3 power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-3/)
mosfet hsof
0
25
4
Package_TO_SOT_SMD
Infineon_PG-HSOF-8-3_ThermalVias
HSOF-8-3 power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-3/)
mosfet hsof
0
64
4
Package_TO_SOT_SMD
Infineon_PG-TO-220-7Lead_TabPin8
Infineon PG-TO-220-7, Tab as Pin 8, see e.g. https://www.infineon.com/dgdl/Infineon-BTS50055-1TMC-DS-v01_00-EN.pdf?fileId=5546d4625a888733015aa9b0007235e9
Infineon PG-TO-220-7
0
12
8
Package_TO_SOT_SMD
Infineon_PG-TSFP-3-1
Infineon_PG-TSFP-3-1, https://www.infineon.com/dgdl/TSFP-3-1,-2-Package_Overview.pdf?fileId=db3a30431936bc4b0119539929863d46
TSFP-3
0
3
3
Package_TO_SOT_SMD
LFPAK33
LFPAK33 SOT-1210 https://assets.nexperia.com/documents/outline-drawing/SOT1210.pdf
LFPAK33 SOT-1210
0
17
5
Package_TO_SOT_SMD
LFPAK56
LFPAK56 https://assets.nexperia.com/documents/outline-drawing/SOT669.pdf
LFPAK56 SOT-669 Power-SO8
0
18
5
Package_TO_SOT_SMD
Nexperia_CFP15_SOT-1289
Nexperia CFP15 (SOT-1289), https://assets.nexperia.com/documents/outline-drawing/SOT1289.pdf
SOT-1289 CFP15
0
8
3
Package_TO_SOT_SMD
OnSemi_ECH8
On Semiconductor ECH8, https://www.onsemi.com/pub/Collateral/318BF.PDF
ECH8 SOT28-FL SOT-28-FL
0
8
8
Package_TO_SOT_SMD
PQFN_8x8
Low Profile 8x8mm PQFN, Dual Cool 88, https://www.onsemi.com/pub/Collateral/FDMT80080DC-D.pdf
pqfn vdfn mosfet
0
9
3
Package_TO_SOT_SMD
PowerMacro_M234_NoHole
TO-50-4 Power Macro Package Style M234
TO-50-4 Power Macro Package Style M234
0
4
4
Package_TO_SOT_SMD
PowerMacro_M234_WithHole
TO-50-4 Power Macro Package Style M234
TO-50-4 Power Macro Package Style M234
0
4
4
Package_TO_SOT_SMD
Rohm_HRP7
Rohm HRP7 SMD package, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hrp7_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/motor/dc/bd621x-e.pdf
Rohm HRP7 SMD
0
69
7
Package_TO_SOT_SMD
SC-59
SC-59, https://lib.chipdip.ru/images/import_diod/original/SOT-23_SC-59.jpg
SC-59
0
3
3
Package_TO_SOT_SMD
SC-59_Handsoldering
SC-59, hand-soldering varaint, https://lib.chipdip.ru/images/import_diod/original/SOT-23_SC-59.jpg
SC-59 hand-soldering
0
3
3
Package_TO_SOT_SMD
SC-70-8
SC70-8
SC70-8
0
8
8
Package_TO_SOT_SMD
SC-70-8_Handsoldering
SC70-8, Handsoldering
SC70-8 Handsoldering
0
8
8
Package_TO_SOT_SMD
SC-82AA
SC-82AA
SC-82AA
0
4
4
Package_TO_SOT_SMD
SC-82AA_Handsoldering
SC-82AA
SC-82AA
0
4
4
Package_TO_SOT_SMD
SC-82AB
SC-82AB
SC-82AB
0
4
4
Package_TO_SOT_SMD
SC-82AB_Handsoldering
SC-82AB
SC-82AB
0
4
4
Package_TO_SOT_SMD
SOT-23
SOT, 3 Pin (https://www.jedec.org/system/files/docs/to-236h.pdf variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py
SOT TO_SOT_SMD
0
3
3
Package_TO_SOT_SMD
SOT-23-3
SOT, 3 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178D.PDF inferred 3-pin variant), generated with kicad-footprint-generator ipc_gullwing_generator.py
SOT TO_SOT_SMD
0
3
3
Package_TO_SOT_SMD
SOT-23-5
SOT, 5 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py
SOT TO_SOT_SMD
0
5
5
Package_TO_SOT_SMD
SOT-23-5_HandSoldering
5-pin SOT23 package
SOT-23-5 hand-soldering
0
5
5
Package_TO_SOT_SMD
SOT-23-6
SOT, 6 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py
SOT TO_SOT_SMD
0
6
6
Package_TO_SOT_SMD
SOT-23-6_Handsoldering
6-pin SOT-23 package, Handsoldering
SOT-23-6 Handsoldering
0
6
6
Package_TO_SOT_SMD
SOT-23-8
SOT, 8 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant BA), generated with kicad-footprint-generator ipc_gullwing_generator.py
SOT TO_SOT_SMD
0
8
8
Package_TO_SOT_SMD
SOT-23-8_Handsoldering
8-pin SOT-23 package, Handsoldering, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/sot-23rj/rj_8.pdf
SOT-23-8 Handsoldering
0
8
8
Package_TO_SOT_SMD
SOT-23W
SOT-23W http://www.allegromicro.com/~/media/Files/Datasheets/A112x-Datasheet.ashx?la=en&hash=7BC461E058CC246E0BAB62433B2F1ECA104CA9D3
SOT-23W
0
3
3
Package_TO_SOT_SMD
SOT-23W_Handsoldering
SOT-23W http://www.allegromicro.com/~/media/Files/Datasheets/A112x-Datasheet.ashx?la=en&hash=7BC461E058CC246E0BAB62433B2F1ECA104CA9D3
SOT-23W for handsoldering
0
3
3
Package_TO_SOT_SMD
SOT-23_Handsoldering
SOT-23, Handsoldering
SOT-23
0
3
3
Package_TO_SOT_SMD
SOT-89-3
SOT-89-3, http://ww1.microchip.com/downloads/en/DeviceDoc/3L_SOT-89_MB_C04-029C.pdf
SOT-89-3
0
3
3
Package_TO_SOT_SMD
SOT-89-3_Handsoldering
SOT-89-3 Handsoldering
SOT-89-3 Handsoldering
0
3
3
Package_TO_SOT_SMD
SOT-89-5
SOT-89-5, http://www.e-devices.ricoh.co.jp/en/products/product_power/pkg/sot-89-5.pdf
SOT-89-5
0
5
5
Package_TO_SOT_SMD
SOT-89-5_Handsoldering
SOT-89-5, http://www.e-devices.ricoh.co.jp/en/products/product_power/pkg/sot-89-5.pdf
SOT-89-5
0
5
5
Package_TO_SOT_SMD
SOT-143
SOT-143 https://www.nxp.com/docs/en/package-information/SOT143B.pdf
SOT-143
0
4
4
Package_TO_SOT_SMD
SOT-143R
SOT-143R, reverse pinning, https://www.nxp.com/docs/en/package-information/SOT143R.pdf
SOT-143R Reverse
0
4
4
Package_TO_SOT_SMD
SOT-143R_Handsoldering
SOT-143R, reverse pinning, Handsoldering, https://www.nxp.com/docs/en/package-information/SOT143R.pdf
SOT-143 Reverse Handsoldering
0
4
4
Package_TO_SOT_SMD
SOT-143_Handsoldering
SOT-143 Handsoldering https://www.nxp.com/docs/en/package-information/SOT143B.pdf
SOT-143 Handsoldering
0
4
4
Package_TO_SOT_SMD
SOT-223
module CMS SOT223 4 pins
CMS SOT
0
4
4
Package_TO_SOT_SMD
SOT-223-3_TabPin2
module CMS SOT223 4 pins
CMS SOT
0
4
3
Package_TO_SOT_SMD
SOT-223-5
module CMS SOT223 5 pins, http://ww1.microchip.com/downloads/en/DeviceDoc/51751a.pdf
CMS SOT
0
5
5
Package_TO_SOT_SMD
SOT-223-6
module CMS SOT223 6 pins, http://www.ti.com/lit/ds/symlink/tps737.pdf
CMS SOT
0
6
6
Package_TO_SOT_SMD
SOT-223-6_TabPin3
module CMS SOT223 6 pins, http://www.ti.com/lit/ds/symlink/tps737.pdf
CMS SOT
0
6
5
Package_TO_SOT_SMD
SOT-223-8
module CMS SOT223 8 pins, https://www.diodes.com/assets/Datasheets/ZXSBMR16PT8.pdf
CMS SOT
0
8
8
Package_TO_SOT_SMD
SOT-323_SC-70
SOT-323, SC-70
SOT-323 SC-70
0
3
3
Package_TO_SOT_SMD
SOT-323_SC-70_Handsoldering
SOT-323, SC-70 Handsoldering
SOT-323 SC-70 Handsoldering
0
3
3
Package_TO_SOT_SMD
SOT-343_SC-70-4
SOT-343, SC-70-4
SOT-343 SC-70-4
0
4
4
Package_TO_SOT_SMD
SOT-343_SC-70-4_Handsoldering
SOT-343, SC-70-4, Handsoldering
SOT-343 SC-70-4 Handsoldering
0
4
4
Package_TO_SOT_SMD
SOT-353_SC-70-5
SOT-353, SC-70-5
SOT-353 SC-70-5
0
5
5
Package_TO_SOT_SMD
SOT-353_SC-70-5_Handsoldering
SOT-353, SC-70-5, Handsoldering
SOT-353 SC-70-5 Handsoldering
0
5
5
Package_TO_SOT_SMD
SOT-363_SC-70-6
SOT-363, SC-70-6
SOT-363 SC-70-6
0
6
6
Package_TO_SOT_SMD
SOT-363_SC-70-6_Handsoldering
SOT-363, SC-70-6, Handsoldering
SOT-363 SC-70-6 Handsoldering
0
6
6
Package_TO_SOT_SMD
SOT-383F
8-pin SOT-383F, http://www.mouser.com/ds/2/80/CPDVR085V0C-HF-RevB-10783.pdf
SOT-383F
0
9
9
Package_TO_SOT_SMD
SOT-383FL
8-pin SOT-383FL package, http://www.onsemi.com/pub_link/Collateral/ENA2267-D.PDF
SOT-383FL
0
8
8
Package_TO_SOT_SMD
SOT-416
SOT-416, https://www.nxp.com/docs/en/package-information/SOT416.pdf
SOT-416
0
3
3
Package_TO_SOT_SMD
SOT-523
SOT523, https://www.diodes.com/assets/Package-Files/SOT523.pdf
SOT-523
0
3
3
Package_TO_SOT_SMD
SOT-543
SOT-543 4 lead surface package
SOT-543 SC-107A EMD4
0
4
4
Package_TO_SOT_SMD
SOT-553
SOT553
SOT-553
0
5
5
Package_TO_SOT_SMD
SOT-563
SOT563
SOT-563
0
6
6
Package_TO_SOT_SMD
SOT-583-8
https://www.ti.com/lit/ds/symlink/tps62933.pdf
SOT-583-8
0
8
8
Package_TO_SOT_SMD
SOT-665
SOT665
SOT-665
0
5
5
Package_TO_SOT_SMD
SOT-666
SOT666
SOT-666
0
6
6
Package_TO_SOT_SMD
SOT-723
http://toshiba.semicon-storage.com/info/docget.jsp?did=5879&prodName=RN1104MFV
sot 723
0
3
3
Package_TO_SOT_SMD
SOT-883
SOT-883, https://assets.nexperia.com/documents/outline-drawing/SOT883.pdf
SOT-883
0
3
3
Package_TO_SOT_SMD
SOT-886
SOT-886
SOT-886
0
6
6
Package_TO_SOT_SMD
SOT-963
SOT 963 6 pins package 1x0.8mm pitch 0.35mm
SOT 963 6 pins package 1x0.8mm pitch 0.35mm
0
6
6
Package_TO_SOT_SMD
SOT-1123
SOT-1123 small outline transistor (see http://www.onsemi.com/pub/Collateral/NST3906F3-D.PDF)
SOT-1123 transistor
0
3
3
Package_TO_SOT_SMD
SOT-1333-1
SOT-1333-1
SOT-1333-1
0
9
9
Package_TO_SOT_SMD
SOT-1334-1
SOT-1334-1
SOT-1334-1
0
14
14
Package_TO_SOT_SMD
SuperSOT-3
3-pin SuperSOT package https://www.fairchildsemi.com/package-drawings/MA/MA03B.pdf
SuperSOT-3 SSOT-3
0
3
3
Package_TO_SOT_SMD
SuperSOT-6
6-pin SuperSOT package http://www.mouser.com/ds/2/149/FMB5551-889214.pdf
SuperSOT-6 SSOT-6
0
6
6
Package_TO_SOT_SMD
SuperSOT-8
8-pin SuperSOT package, http://www.icbank.com/icbank_data/semi_package/ssot8_dim.pdf
SuperSOT-8 SSOT-8
0
8
8
Package_TO_SOT_SMD
TDSON-8-1
Power MOSFET package, TDSON-8-1, 5.15x5.9mm (https://www.infineon.com/cms/en/product/packages/PG-TDSON/PG-TDSON-8-1/)
tdson
0
14
5
Package_TO_SOT_SMD
TO-50-3_LongPad-NoHole_Housing
TO-50-3 Macro T Package Style M236
TO-50-3 Macro T Package Style M236
0
3
3
Package_TO_SOT_SMD
TO-50-3_LongPad-WithHole_Housing
TO-50-3 Macro T Package Style M236
TO-50-3 Macro T Package Style M236
0
3
3
Package_TO_SOT_SMD
TO-50-3_ShortPad-NoHole_Housing
TO-50-3 Macro T Package Style M236
TO-50-3 Macro T Package Style M236
0
3
3
Package_TO_SOT_SMD
TO-50-3_ShortPad-WithHole_Housing
TO-50-3 Macro T Package Style M236
TO-50-3 Macro T Package Style M236
0
3
3
Package_TO_SOT_SMD
TO-50-4_LongPad-NoHole_Housing
TO-50-4 Macro X Package Style M238
TO-50-4 Macro X Package Style M238
0
4
4
Package_TO_SOT_SMD
TO-50-4_LongPad-WithHole_Housing
TO-50-4 Macro X Package Style M238
TO-50-4 Macro X Package Style M238
0
4
4
Package_TO_SOT_SMD
TO-50-4_ShortPad-NoHole_Housing
TO-50-4 Macro X Package Style M238
TO-50-4 Macro X Package Style M238
0
4
4
Package_TO_SOT_SMD
TO-50-4_ShortPad-WithHole_Housing
TO-50-4 Macro X Package Style M238
TO-50-4 Macro X Package Style M238
0
4
4
Package_TO_SOT_SMD
TO-252-2
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/
DPAK TO-252 DPAK-3 TO-252-3 SOT-428
0
7
3
Package_TO_SOT_SMD
TO-252-2_TabPin1
TO-252-2, tab to pin 1 https://www.wolfspeed.com/media/downloads/87/CSD01060.pdf
TO-252-2 diode
0
7
2
Package_TO_SOT_SMD
TO-252-3_TabPin2
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/
DPAK TO-252 DPAK-3 TO-252-3 SOT-428
0
8
3
Package_TO_SOT_SMD
TO-252-3_TabPin4
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/
DPAK TO-252 DPAK-3 TO-252-3 SOT-428
0
8
4
Package_TO_SOT_SMD
TO-252-4
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/
DPAK TO-252 DPAK-5 TO-252-5
0
9
5
Package_TO_SOT_SMD
TO-252-5_TabPin3
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/
DPAK TO-252 DPAK-5 TO-252-5
0
10
5
Package_TO_SOT_SMD
TO-252-5_TabPin6
TO-252/DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/
DPAK TO-252 DPAK-5 TO-252-5
0
10
6
Package_TO_SOT_SMD
TO-263-2
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/
D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404
0
7
3
Package_TO_SOT_SMD
TO-263-2_TabPin1
TO-263 / D2PAK / DDPAK SMD package, tab to pin 1, https://www.wolfspeed.com/media/downloads/137/C3D06060G.pdf
D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404 diode
0
7
2
Package_TO_SOT_SMD
TO-263-3_TabPin2
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/
D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404
0
8
3
Package_TO_SOT_SMD
TO-263-3_TabPin4
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/
D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404
0
8
4
Package_TO_SOT_SMD
TO-263-4
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/
D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426
0
9
5
Package_TO_SOT_SMD
TO-263-5_TabPin3
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/
D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426
0
10
5
Package_TO_SOT_SMD
TO-263-5_TabPin6
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/
D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426
0
10
6
Package_TO_SOT_SMD
TO-263-6
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/
D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427
0
11
7
Package_TO_SOT_SMD
TO-263-7_TabPin4
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/
D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427
0
12
7
Package_TO_SOT_SMD
TO-263-7_TabPin8
TO-263/D2PAK/DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/
D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427
0
12
8
Package_TO_SOT_SMD
TO-263-9_TabPin5
TO-263 / D2PAK / DDPAK SMD package, http://www.ti.com/lit/ds/symlink/lm4755.pdf
D2PAK DDPAK TO-263 D2PAK-9 TO-263-9
0
14
9
Package_TO_SOT_SMD
TO-263-9_TabPin10
TO-263 / D2PAK / DDPAK SMD package, http://www.ti.com/lit/ds/symlink/lm4755.pdf
D2PAK DDPAK TO-263 D2PAK-9 TO-263-9
0
14
10
Package_TO_SOT_SMD
TO-268-2
TO-268/D3PAK SMD package, http://www.icbank.com/icbank_data/semi_package/to268aa_dim.pdf
D3PAK TO-268 D3PAK-3 TO-268-3
0
7
3
Package_TO_SOT_SMD
TO-269AA
SMD package TO-269AA (e.g. diode bridge), see http://www.vishay.com/docs/88854/padlayouts.pdf
TO-269AA MBS diode bridge
0
4
4
Package_TO_SOT_SMD
TO-277A
Thermal enhanced ultra thin SMD package; 3 leads; body: 4.3x6.1x0.43mm, https://www.vishay.com/docs/95570/to-277asmpc.pdf
TO-277A SMPC
0
12
3
Package_TO_SOT_SMD
TO-277B
TO-227B https://media.digikey.com/pdf/Data%20Sheets/Littelfuse%20PDFs/DST2050S.pdf
TO-277B
0
9
3
Package_TO_SOT_SMD
TSOT-23
3-pin TSOT23 package, http://www.analog.com.tw/pdf/All_In_One.pdf
TSOT-23
0
3
3
Package_TO_SOT_SMD
TSOT-23-5
TSOT, 5 Pin (https://www.jedec.org/sites/default/files/docs/MO-193D.pdf variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py
TSOT TO_SOT_SMD
0
5
5
Package_TO_SOT_SMD
TSOT-23-5_HandSoldering
5-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_5_05-08-1635.pdf
TSOT-23-5 Hand-soldering
0
5
5
Package_TO_SOT_SMD
TSOT-23-6
TSOT, 6 Pin (https://www.jedec.org/sites/default/files/docs/MO-193D.pdf variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py
TSOT TO_SOT_SMD
0
6
6
Package_TO_SOT_SMD
TSOT-23-6_HandSoldering
6-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_6_05-08-1636.pdf
TSOT-23-6 MK06A TSOT-6 Hand-soldering
0
6
6
Package_TO_SOT_SMD
TSOT-23-8
TSOT, 8 Pin (https://www.jedec.org/sites/default/files/docs/MO-193D.pdf variant BA), generated with kicad-footprint-generator ipc_gullwing_generator.py
TSOT TO_SOT_SMD
0
8
8
Package_TO_SOT_SMD
TSOT-23-8_HandSoldering
8-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_8_05-08-1637.pdf
TSOT-23-8 Hand-soldering
0
8
8
Package_TO_SOT_SMD
TSOT-23_HandSoldering
5-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_5_05-08-1635.pdf
TSOT-23 Hand-soldering
0
3
3
Package_TO_SOT_SMD
Texas_DRT-3
Texas Instrument DRT-3 1x0.8mm Pitch 0.7mm http://www.ti.com/lit/ds/symlink/tpd2eusb30.pdf
DRT-3 1x0.8mm Pitch 0.7mm
0
3
3
Package_TO_SOT_SMD
Texas_NDQ
Texas Instruments, NDQ, 5 pin (https://www.ti.com/lit/ml/mmsf022/mmsf022.pdf)
ti pfm dap
0
6
6
Package_TO_SOT_SMD
Texas_NDW-7_TabPin4
NDW0007A SMD package, http://www.ti.com/lit/ml/mmsf024/mmsf024.pdf
NDW NDW
0
12
7
Package_TO_SOT_SMD
Texas_NDW-7_TabPin8
NDW0007A SMD package, http://www.ti.com/lit/ml/mmsf024/mmsf024.pdf
NDW NDW
0
12
8
Package_TO_SOT_SMD
Texas_NDY0011A
TO-PMOD-11 11-pin switching regulator package, http://www.ti.com/lit/ml/mmsf025/mmsf025.pdf
Texas TO-PMOD NDY00011A
0
12
12
Package_TO_SOT_SMD
Texas_R-PDSO-G5_DCK-5
DCK R-PDSO-G5, JEDEC MO-203C Var AA, https://www.ti.com/lit/ds/symlink/tmp20.pdf#page=23
DCK R-PDSO-G5 MO-203C
0
5
5
Package_TO_SOT_SMD
Texas_R-PDSO-G6
R-PDSO-G6, http://www.ti.com/lit/ds/slis144b/slis144b.pdf
R-PDSO-G6 SC-70-6
0
6
6
Package_TO_SOT_SMD
Texas_R-PDSO-N5_DRL-5
R-PDSO-N5, DRL, JEDEC MO-293B Var UAAD-1, https://www.ti.com/lit/ml/mpds158d/mpds158d.pdf
SOT R-PDSO-N5 DRL
0
5
5
Package_TO_SOT_SMD
Texas_R-PDSO-N6_DRL-6
R-PDSO-N6, DRL, similar to JEDEC MO-293B Var UAAD (but not the same) , https://www.ti.com/lit/pdf/mpds159f
SOT R-PDSO-N6 DRL
0
6
6
Package_TO_SOT_SMD
VSOF5
VSOF5
VSOF5
0
5
5
Package_TO_SOT_SMD
Vishay_PowerPAK_SC70-6L_Dual
Vishay PowerPAK SC70 dual transistor package http://www.vishay.com/docs/70487/70487.pdf
powerpak sc70 sc-70 dual
0
8
6
Package_TO_SOT_SMD
Vishay_PowerPAK_SC70-6L_Single
Vishay PowerPAK SC70 single transistor package http://www.vishay.com/docs/70486/70486.pdf
powerpak sc70 sc-70
0
6
3

View file

@ -0,0 +1,3 @@
(fp_lib_table
(lib (name "footprints")(type "KiCad")(uri "${KIPRJMOD}/../common/footprints.pretty")(options "")(descr ""))
)

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,77 @@
{
"board": {
"active_layer": 37,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 1.0
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": false,
"footprints": false,
"graphics": false,
"keepouts": false,
"lockedItems": true,
"otherItems": false,
"pads": false,
"text": true,
"tracks": false,
"vias": false,
"zones": false
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "00090e0_80000001",
"zone_display_mode": 0
},
"meta": {
"filename": "pcb.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

692
pcb/mainboard_lite/pcb.kicad_pro Executable file
View file

@ -0,0 +1,692 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 0.7,
"silk_text_size_v": 0.7,
"silk_text_thickness": 0.09999999999999999,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.15
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "warning",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "error",
"silk_overlap": "error",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.3,
"min_hole_clearance": 0.0,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.09999999999999999,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.44999999999999996,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.1,
0.11,
0.12,
0.13,
0.15,
0.2,
0.3,
0.5,
0.6,
1.0,
1.5,
2.0
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.46,
"drill": 0.2
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "pcb.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.11,
"diff_pair_gap": 0.1,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.11,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.11,
"diff_pair_gap": 0.11,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.15,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "DP",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.15,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.11,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "EPD",
"pcb_color": "rgb(255, 0, 191)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.11,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.11,
"diff_pair_gap": 0.11,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.15,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "LVDS",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.15,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.1,
"diff_pair_gap": 0.1,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.1,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "SDRAM_A",
"pcb_color": "rgb(103, 255, 0)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.1,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.1,
"diff_pair_gap": 0.1,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.1,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "SDRAM_H",
"pcb_color": "rgb(255, 252, 0)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.1,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.1,
"diff_pair_gap": 0.1,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.1,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "SDRAM_L",
"pcb_color": "rgb(255, 131, 3)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.1,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.11,
"diff_pair_gap": 0.11,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.18,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "USB",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.15,
"via_diameter": 0.45,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": {
"+1V0": "rgb(255, 92, 56)",
"+1V35": "rgb(185, 61, 143)",
"+3V3": "rgb(179, 228, 50)",
"+5V": "rgb(255, 122, 107)",
"GND": "rgb(0, 94, 255)"
},
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "EPD",
"pattern": "/eink/ED*"
},
{
"netclass": "EPD",
"pattern": "EPDC_*"
},
{
"netclass": "SDRAM_A",
"pattern": "/fpga_ddr/DRAM_*"
},
{
"netclass": "EPD",
"pattern": "/eink/ES*"
},
{
"netclass": "LVDS",
"pattern": "TMDS*"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_bus_thickness": 12.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"default_wire_thickness": 6.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "./",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"4654897e-3e2f-4522-96c3-20b19803c088",
""
],
[
"0606a719-6980-4867-837f-aa642737d361",
"power"
],
[
"35d2a4e1-1cb2-4b6c-a7fb-e3a9449d4ff3",
"fpga"
],
[
"b1d5941d-0481-47a2-a434-0b8e587a166a",
"eink"
],
[
"866a5b4a-453a-413a-94a2-5e610f40d8dd",
"fpga_ddr"
],
[
"80373716-d41f-4f06-92dd-577434075703",
"dp_in"
],
[
"d0757a0a-c868-475e-8221-24a5e99d32b9",
"mcu"
]
],
"text_variables": {}
}

View file

@ -0,0 +1,144 @@
(kicad_sch (version 20230121) (generator eeschema)
(uuid 4654897e-3e2f-4522-96c3-20b19803c088)
(paper "A4")
(title_block
(title "Glider Lite")
(date "2023-12-24")
(rev "R0.7")
(company "Copyright 2023 Modos / Engineer: Wenting Zhang")
)
(lib_symbols
)
(text "FPGA DDR Memory" (at 35.56 67.31 0)
(effects (font (size 2.54 2.54)) (justify left bottom))
(uuid 36b30dff-23e2-4ed9-971b-1df779950e92)
)
(text "Power Supply" (at 35.56 33.02 0)
(effects (font (size 2.54 2.54)) (justify left bottom))
(uuid 558a13be-3757-4ba7-9c3e-24eef7c78d0f)
)
(text "Display" (at 35.56 55.88 0)
(effects (font (size 2.54 2.54)) (justify left bottom))
(uuid d2b3e5ed-56f7-4162-ab02-9bde306dbf5a)
)
(text "FPGA Core" (at 35.56 44.45 0)
(effects (font (size 2.54 2.54)) (justify left bottom))
(uuid edafe42e-7b4b-443d-9c19-73868867df97)
)
(text "TMDS Input" (at 35.56 78.74 0)
(effects (font (size 2.54 2.54)) (justify left bottom))
(uuid fbc25d2d-afe2-4ffb-9abb-3b9e35c79f93)
)
(sheet (at 33.02 27.94) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid 0606a719-6980-4867-837f-aa642737d361)
(property "Sheetname" "power" (at 33.02 27.2284 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "power.kicad_sch" (at 33.02 34.8746 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "1"))
)
)
)
(sheet (at 33.02 39.37) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid 35d2a4e1-1cb2-4b6c-a7fb-e3a9449d4ff3)
(property "Sheetname" "fpga" (at 33.02 38.6584 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "fpga.kicad_sch" (at 33.02 46.3046 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "2"))
)
)
)
(sheet (at 33.02 73.66) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid 80373716-d41f-4f06-92dd-577434075703)
(property "Sheetname" "dp_in" (at 33.02 72.9484 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "dp_in.kicad_sch" (at 33.02 80.5946 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "5"))
)
)
)
(sheet (at 33.02 62.23) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid 866a5b4a-453a-413a-94a2-5e610f40d8dd)
(property "Sheetname" "fpga_ddr" (at 33.02 61.5184 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "fpga_ddr.kicad_sch" (at 33.02 69.1646 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "4"))
)
)
)
(sheet (at 33.02 50.8) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid b1d5941d-0481-47a2-a434-0b8e587a166a)
(property "Sheetname" "eink" (at 33.02 50.0884 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "eink.kicad_sch" (at 33.02 57.7346 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "3"))
)
)
)
(sheet (at 33.02 85.09) (size 53.34 6.35) (fields_autoplaced)
(stroke (width 0.1524) (type solid))
(fill (color 0 0 0 0.0000))
(uuid d0757a0a-c868-475e-8221-24a5e99d32b9)
(property "Sheetname" "mcu" (at 33.02 84.3784 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Sheetfile" "mcu.kicad_sch" (at 33.02 92.0246 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(instances
(project "pcb"
(path "/4654897e-3e2f-4522-96c3-20b19803c088" (page "6"))
)
)
)
(sheet_instances
(path "/" (page "0"))
)
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "symbols")(type "KiCad")(uri "${KIPRJMOD}/../common/symbols.kicad_sym")(options "")(descr ""))
)