Add README (special thanks to Christopher Lozinski)
This commit is contained in:
parent
b725311229
commit
e77c75f0df
62
README.md
Normal file
62
README.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Pico Ice Video
|
||||||
|
|
||||||
|
This repository displays a video signal from the Pico Ice FPGA on the
|
||||||
|
desktop computer, over USB, using the USB Video Device Class (UVC).
|
||||||
|
You can then take screenshots, record the video, or use it as a demo
|
||||||
|
during a Zoom call.
|
||||||
|
|
||||||
|
Here is the [FPGA
|
||||||
|
interface](https://git.shylie.info/shylie/pico-ice-video/src/branch/main/ice/mandelbrot/source/impl_1/top.sv). There
|
||||||
|
is a start wire, really that is the vertical sync signal. There are 8
|
||||||
|
bits of data that get sent to the RP2040. The RP2040 reads the data
|
||||||
|
using PIO, writes the data to the inactive frame buffer using direct
|
||||||
|
memory access. Meanwhile the TinyUSB library is writing uncompressed
|
||||||
|
data to the desktop over USB using the active frame buffer. The
|
||||||
|
RP2040 sysclk runs at120 MHz, the clkdiv for the pio is 2.5 and the
|
||||||
|
FPGA runs at 48Mhz. The image size is 320 * 180. The next version of
|
||||||
|
the Pico-Ice will have the RP2350 Chip which will also support a
|
||||||
|
higher resolution HDMI output.
|
||||||
|
|
||||||
|
This software is based on the [Tiny video USB Capture example](
|
||||||
|
https://github.com/hathach/tinyusb/tree/master/examples/device/video_capture).
|
||||||
|
UVC does not need to be fully synchronous: there is no timing to
|
||||||
|
keep-up with: if you send the frame sometimes slow sometimes fast, it
|
||||||
|
is fine. In particular if using BULK (throw data in like it's a
|
||||||
|
truck) endpoint rather than ISOCHRONOUS (always same time
|
||||||
|
interval...)
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
If you have questions, first please search the Pico Ice discord
|
||||||
|
server, and then ask. This is a private repository, to make
|
||||||
|
contributions, please post your branch somewhere and notify the author
|
||||||
|
@shylie on the Pico Ice Discord server.
|
||||||
|
|
||||||
|
## INSTALLATION
|
||||||
|
|
||||||
|
To install it on linux , [put the Pico-Ice into install mode](
|
||||||
|
https://pico-ice.tinyvision.ai/md_programming_the_mcu.html )
|
||||||
|
|
||||||
|
Using the command
|
||||||
|
|
||||||
|
picocom) --baud 1200 /dev/ttyACM0
|
||||||
|
|
||||||
|
Then drag the executable onto the RP2040 drive on the desktop.
|
||||||
|
|
||||||
|
## TO DO
|
||||||
|
|
||||||
|
**Implement compression**. There are lower complexity compression
|
||||||
|
techniques,PEG-XS seems to be one of the newer standards thats meant
|
||||||
|
for low latency and reasonable compression. This may be doable with
|
||||||
|
the RPi in FW. Doubt MJPG is possible for larger frames as that
|
||||||
|
requires multiple frames to be in memory.
|
||||||
|
|
||||||
|
**Free UP SPI and UART pins** The interface requires 9 pins. There
|
||||||
|
are 8 RP2040<->FPGA pins, so one of the spi pins is also used. One
|
||||||
|
could solder a pin between the FPGA and RP2040 and preserve the SPI
|
||||||
|
bus. Better yet, solder 3 pins and preserve both the SPI bus, and
|
||||||
|
the default part.
|
||||||
|
|
||||||
|
## Special Thanks
|
||||||
|
|
||||||
|
Christopher Lozinski (@clozinski) - wrote this README file. Thank you!
|
Loading…
Reference in New Issue
Block a user