37 algofoogle analog stuff

37 : algofoogle analog stuff

Design render

How it works

This is a simple VCO experiment using a current-starved ring oscillator. It consists of 5 current-starved inverter stages in a ring, followed by a buffer pair. This is output via ua[1] and also fed to a digital test block where it is divided using a 5-bit synchronous counter and presented on uio_out[5:1], beside a buffered (but non-divided) copy of the VCO output on uio_out[0] (aka osc_out).

For a given input voltage (vin, i.e. ua[0]) in the range 0.55V to 3.3V, the oscillator output (vco_out, i.e. ua[1]) is expected to be a square wave roughly in the range of 2MHz to 400MHz.

How to test

  • Apply power with vin held at 0V and rst_n high. No TT clk is required. Expect to see no oscillation on vco_out or uio_out[5:1].
  • Raise vin to 0.55V, and you might see vco_out oscillating at about 2MHz, 3.3Vpp, about 50% duty cycle.
  • Raise vin slowly and if vco_out wasn't already oscillating then you should see it start at least by the time vin reaches 0.65V (if not sooner), and as you raise vin further the frequency at vco_out should rapidly increase.
  • Observe digital-buffered (and TT-digital-mux-shaped) output of the VCO on uio_out[0], and then halving of the frequency up through each of uio_out[1] to uio_out[5].

External hardware

  • Precision variable voltage source for vin.
  • Oscilloscope to monitor vco_out.

IO

#InputOutputBidirectional
0dac_d0R1avo[0]
1dac_d1G1avo[1]
2dac_d2B1avo[4]
3dac_loadVSyncavo[5]
4dac_shiftR0dvo[0]
5vco_disableG0dvo[1]
6test_modeB0dvo[4]
7vga_modeHSyncdvo[5]

Analog pins

uaPCB PinInternal indexDescription
0B612ana_vco_vin
1B713ana_vco_out
2B814dac_vco_vin
3B915dac_vco_out

Chip location

Controller Mux Mux Mux Mux Mux Analog Mux Analog Mux Mux Mux Mux Analog Mux Mux Mux Analog Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_tnt_gf_555 (tnt's recreation of a 555 on GF180mcu) tt_um_mcml_vco (MCML VCO) tt_um_tnt_gf_vco (Quadrature VCO) tt_um_oscillating_bones (Oscillating Bones) tt_um_MichaelBell_tinyQV (TinyQV Risc-V SoC) tt_um_essen (256x8 SRAM) tt_um_analog_factory_test (TT GF180mcuD Analog Factory Test) tt_um_cw_testbuffer (TT GF180mcuD Testbuffer) tt_um_fabulous_gf_0p3 (Tiny FABulous FPGA) tt_um_fabulous_gf_0p3_3v3 (Tiny FABulous FPGA (3.3V version)) tt_um_htfab_momcap (MoM capacitor) tt_um_gf_r2r_dac (GF R2R DAC) tt_um_AbAdA_2048 (Abad2048) tt_um_mattvenn_signal_generator (Simple Signal Generator) tt_um_74hct00 (74HCT00 Quad 2-Input NAND (3.3 V)) tt_um_algofoogle_gf_analog (algofoogle analog stuff) tt_um_LPCAS_TTGF0P3_TP1 (3.3V Folded Cascode OTA ) tt_um_kianV_rv32ima_uLinux_SoC (KianV uLinux SoC) tt_um_kiterai_current_dac (Analog 4 bit Current DAC) tt_um_urish_simon (Simon Says memory game) tt_um_waferspace_vga_screensaver (Wafer.space Logo VGA Screensaver) tt_um_urish_usb_cdc (USB CDC (Serial) Device) tt_um_a1k0n_nyancat (VGA Nyan Cat) tt_um_rahulbhagwat_gf180_bandgap_reference (GF BGR) tt_um_odgrip_polywave (PolyWave) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_combined (Philippine flag waving) tt_um_gojimmypi_ttgfa_UART_FSM_TRNG_Lab (Hardware Entropy Explorer: UART/SPI TRNG and PUF) tt_um_gojimmypi_ttgfa_UART_FSM_TRNG_Lab_analog (Hardware Entropy Explorer: UART/SPI TRNG and PUF (Analog)) tt_um_coldbrew (Until heat death do us part) Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available