annotate venus/src/periph/loudspeaker.v @ 70:8bc2aa52fd23

manual RESET button new part: 260 g force, shorter actuator One of the main envisioned use cases for FC Venus is field demonstration: the board will be carried around, mounted on a sheet of acrylic or somesuch, it will have a battery and an antenna connected, there will be a test SIM with active service inserted, and the setup will be ready to demonstrate as a working phone at a moment's notice. But when a demo is not actively in progress, the fully assembled setup will be transported around in a big and loose ESD bag, and it will need to be equivalent to a traditional phone in its switched-off state: battery present, RTC keeping time, but not switched on all the time. Having a RESET button of the same keyswitch type as used for the regular keypad and PWON would cause a problem for such field transport scenarios: any spurious press of this button would cause a "misc boot" switch-on. Short spurious presses of PWON are filtered out by the firmware (automatic power-off if the button isn't held down long enough), but the same cannot be done for super-low-level nTESTRESET. However, a button with significantly greater operating force and a shorter actuator (not sticking out to the same height as the regular keypad buttons) should be much safer.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 02 Dec 2021 22:40:39 +0000
parents 66d99b5be8a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /* Loudspeaker circuit following Leonardo schematics */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 module loudspeaker (GND, VBAT, Input_pos, Input_neg, GPIO_enable);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 input GND, VBAT;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 input Input_pos, Input_neg;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 input GPIO_enable;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 wire PA_in_pos, PA_in_neg;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 wire Out_pos, Out_neg;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 wire BYPASS;
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 /* instantiate the audio PA */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 pkg_TPA6203A1 apa (.BYPASS(BYPASS),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 .GND(GND),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 .In_neg(PA_in_neg),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 .In_pos(PA_in_pos),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 .SHUTDOWN(GPIO_enable),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 .VDD(VBAT),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 .Out_pos(Out_pos),
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 .Out_neg(Out_neg)
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 );
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 /* input resistors: the inversion is per Leonardo schematics */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 resistor R33xA (Input_pos, PA_in_neg);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 resistor R33xB (Input_neg, PA_in_pos);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 /* feedback resistors */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 resistor R331 (Out_neg, PA_in_pos);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 resistor R332 (Out_pos, PA_in_neg);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 /* bypass and supply decoupling caps */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 capacitor C319 (BYPASS, GND);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 capacitor C330 (VBAT, GND);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 /* small output capacitors */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 capacitor C331 (Out_neg, GND);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 capacitor C332 (Out_pos, GND);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 /* the speaker itself! */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 header_2pin spkr_connector (Out_pos, Out_neg);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 /* pull-down on the GPIO control line */
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 resistor R338 (GPIO_enable, GND);
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
66d99b5be8a3 loudspeaker block implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 endmodule