Skip to content

Commit a7debe4

Browse files
TinyTapeoutBoturish
authored andcommitted
feat: update project tt_um_rc_servo_motor_xy_ea from yavarhadi/tt09-wokiwi-yavar
Commit: 0a4b6577c6a3b4089e9bde242d8e9ab1d66b371c Workflow: https://github.com/yavarhadi/tt09-wokiwi-yavar/actions/runs/18971376852 Previous top module name: tt_um_wokwi_442984664438498305
1 parent 7951b18 commit a7debe4

File tree

17 files changed

+29766
-7160
lines changed

17 files changed

+29766
-7160
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"app": "Tiny Tapeout main f77b61f7",
3+
"repo": "https://github.com/yavarhadi/rc_servo_motor_xy",
4+
"commit": "0a4b6577c6a3b4089e9bde242d8e9ab1d66b371c",
5+
"workflow_url": "https://github.com/yavarhadi/rc_servo_motor_xy/actions/runs/18971376852",
6+
"project_id": 3066,
7+
"sort_id": 1761911704566
8+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<!---
2+
3+
This file is used to generate your project datasheet. Please fill in the information below and delete any unused
4+
sections.
5+
6+
You can also include images in this folder and reference them in the markdown. Each image must be less than
7+
512 kb in size, and the combined size of all images must be less than 1 MB.
8+
-->
9+
10+
## How it works
11+
12+
This design is a two-channel RC-servo pulse generator. Two asynchronous comparator inputs
13+
(`ui_in[0]` = X, `ui_in[1]` = Y) are sampled and processed by the DUT. For each axis the logic
14+
produces a standard servo PWM frame with a period of ~20 ms and a pulse width between ~1.0 ms
15+
and ~2.0 ms. The system clock is the TinyTapeout `clk` (50 MHz). Reset is active-low (`rst_n`)
16+
and outputs are forced low when `ena` is deasserted. The outputs are:
17+
`uo_out[0]` = PWM_X and `uo_out[1]` = PWM_Y. All other pins are unused and tied low.
18+
19+
## How to test
20+
21+
1. Program the TT board with the bitstream containing this project and select it (`ena` high).
22+
2. Drive `ui_in[0]` and `ui_in[1]` with digital levels to emulate the comparator results:
23+
- a higher duty of high time represents a larger tilt/command.
24+
3. Observe `uo_out[0]` and `uo_out[1]` on a scope. You should see a 20 ms frame where the pulse
25+
width varies roughly 1.0–2.0 ms according to the inputs.
26+
4. In simulation (Verilog or cocotb), toggle `ui_in[0]`/`ui_in[1]` periodically and check the
27+
measured pulse widths on `uo_out[0]`/`uo_out[1]`. Keep `rst_n=1` and provide a 50 MHz clock.
28+
29+
30+
## External hardware
31+
32+
List external hardware used in your project (e.g. PMOD, LED display, etc), if any
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Tiny Tapeout piroject information
2+
project:
3+
wokwi_id: 0
4+
title: "rc_servo_motor_xy" # Project title
5+
author: "Yavar Hadi" # Your name
6+
discord: "" # Your discord username, for communication and automatically assigning you a Tapeout role (optional)
7+
description: "rc servo motor chip " # One line description of what your project does
8+
language: "Verilog" # other examples include SystemVerilog, Amaranth, VHDL, etc
9+
clock_hz: 50000000 # Clock frequency in Hz (or 0 if not applicable)
10+
11+
# How many tiles your design occupies? A single tile is about 167x108 uM.
12+
tiles: "1x2" # Valid values: 1x1, 1x2, 2x2, 3x2, 4x2, 6x2 or 8x2
13+
14+
# Your top module name must start with "tt_um_". Make it unique by including your github username:
15+
top_module: "tt_um_rc_servo_motor_xy_ea"
16+
17+
# List your project's source files here.
18+
# Source files must be in ./src and you must list each source file separately, one per line.
19+
# Don't forget to also update `PROJECT_SOURCES` in test/Makefile.
20+
source_files:
21+
- "tt_um_rc_servo_motor_xy_ea.v"
22+
- "rc_servo_core_xy.v"
23+
24+
25+
# The pinout of your project. Leave unused pins blank. DO NOT delete or add any pins.
26+
# This section is for the datasheet/website. Use descriptive names (e.g., RX, TX, MOSI, SCL, SEG_A, etc.).
27+
pinout:
28+
# Inputs
29+
ui[0]: "comp_async_x_i"
30+
ui[1]: "comp_async_y_i"
31+
ui[2]: ""
32+
ui[3]: ""
33+
ui[4]: ""
34+
ui[5]: ""
35+
ui[6]: ""
36+
ui[7]: ""
37+
38+
# Outputs
39+
uo[0]: "pwm_pin_x_o"
40+
uo[1]: "pwm_pin_y_o"
41+
uo[2]: ""
42+
uo[3]: ""
43+
uo[4]: ""
44+
uo[5]: ""
45+
uo[6]: ""
46+
uo[7]: ""
47+
48+
# Bidirectional pins
49+
uio[0]: ""
50+
uio[1]: ""
51+
uio[2]: ""
52+
uio[3]: ""
53+
uio[4]: ""
54+
uio[5]: ""
55+
uio[6]: ""
56+
uio[7]: ""
57+
58+
# Do not change!
59+
yaml_version: 6
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"FLOW_NAME": "LibreLane",
3+
"FLOW_VERSION": "2.4.2",
4+
"PDK": "sky130A",
5+
"PDK_SOURCE": "open_pdks",
6+
"PDK_VERSION": "0fe599b2afb6708d281543108caf8310912f54af"
7+
}

0 commit comments

Comments
 (0)