forked from TinyTapeout/tt03-verilog-demo
-
Notifications
You must be signed in to change notification settings - Fork 1
/
info.yaml
87 lines (73 loc) · 4.41 KB
/
info.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
---
# TinyTapeout project information
project:
wokwi_id: 0 # If using wokwi, set this to your project's ID
# If using an HDL, set wokwi_id as 0 and uncomment and list your source files here.
# Source files must be in ./src and you must list each source file separately
source_files:
- hpretl_tt03_temperature_sensor.v
- tempsense.v
- vdac.v
- vdac_cell.v
- bin2dec.v
- seg7.v
top_module: "hpretl_tt03_temperature_sensor" # put the name of your top module here, make it unique by prepending your github username
# Keep a track of the submission yaml
yaml_version: 3.0
# As everyone will have access to all designs, try to make it easy for someone new to your design to know what
# it does and how to operate it. This info will be automatically collected and used to make a datasheet for the chip.
#
# Here is a great example: https://github.com/davidsiaw/tt02-davidsiaw-stackcalc/blob/38c5647f83aad2aec675d566aa3d67b98f0aac81/info.yaml
documentation:
author: "Harald Pretl"
title: "Synthesizable Digital Temperature Sensor"
language: "Verilog"
description: "Measure the on-chip temperature and display on the LED display."
# Longer description of how the project works. You can use standard markdown format.
how_it_works: |
By creatively twisting the use of a tristate-inverter (EINVP) a voltage DAC is built. This
voltage-mode DAC is used in another twisted arrangement of an EINVP to bias an NMOS into
subthreshold operation to discharge a pre-charged capacitor (the input capacitor of an inverter).
Since the subthreshold current of a MOSFET is a strong function of temperature, the resulting
delay time is also a strong function of temperature, thus a digital temperature sensor is built.
The temperature-dependent digital signal is output at the LED display, showing tens (dot off) and ones (dot on).
A calibration engine via a LUT is included, to allow to linearize and calibrate the shown
temperature code.
io_in[0] is used as a CLK signal, and io_in[1] is used a RESET.
io_in[4:2] is used to load and enable the calibration engine.
io_in[7:5] is used to enable various debug modes, presenting internal state signals to the io_out.
# Instructions on how someone could test your project, include things like what buttons do what and how to set the clock if needed
how_to_test: |
After reset, one temperature measurement is taken per second and displayed using the LEDs. A code ranging 0...63 is
displayed with tens first (dot off) and ones later (dot on).
During normal operation io_in[7:5] have to be set to 000. The different debug modes are documented in the Verilog code.
For calibration, the internal LUT can be serially loaded by using CAL_CLK (io_in[2]) and CAL_DAT (io_in[3]). Once fully
loaded the calibration engine is enabled by setting CAL_ENA (io_in[4]) to 1 (setting it to 0 displays the raw sensor
code).
# A description of what the inputs do
inputs:
- clock
- reset
- cal_clk
- cal_dat
- cal_ena
- debug_mode[0]
- debug_mode[1]
- debug_mode[2]
# A description of what the outputs do
outputs:
- segment a (or debug information)
- segment b (or debug information)
- segment c (or debug information)
- segment d (or debug information)
- segment e (or debug information)
- segment f (or debug information)
- segment g (or debug information)
- indicate ones or tens (or debug information)
# The following fields are optional
tag: "sensor, temperature, analog" # comma separated list of tags: test encryption, experiment, clock, animation, utility, industrial, pwm, fpga, alu, microprocessor, risc, riscv, sensor, signal generator, fft, filter, music, bcd, sound, serial, timer, random number generator, calculator, decoder, counter, puzzle, multiplier, game, oscillator,
external_hw: "" # Describe any external hardware needed
discord: "" # Your discord handle, used for communication and automatically assigning tapeout role after a submission
doc_link: "https://github.com/hpretl/tt03-tempsensor/blob/main/README.md" # URL to longer form documentation, eg the README.md in your repository
clock_hz: 10000 # Clock frequency in Hz (if required)
picture: "doc/synthesized_temperature_sensor.png" # relative path to a picture in your repository