diff venus/src/periph/loudspeaker.v @ 59:66d99b5be8a3

loudspeaker block implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 01 Dec 2021 04:08:35 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/venus/src/periph/loudspeaker.v	Wed Dec 01 04:08:35 2021 +0000
@@ -0,0 +1,46 @@
+/* Loudspeaker circuit following Leonardo schematics */
+
+module loudspeaker (GND, VBAT, Input_pos, Input_neg, GPIO_enable);
+
+input GND, VBAT;
+input Input_pos, Input_neg;
+input GPIO_enable;
+
+wire PA_in_pos, PA_in_neg;
+wire Out_pos, Out_neg;
+wire BYPASS;
+
+/* instantiate the audio PA */
+pkg_TPA6203A1 apa (.BYPASS(BYPASS),
+		   .GND(GND),
+		   .In_neg(PA_in_neg),
+		   .In_pos(PA_in_pos),
+		   .SHUTDOWN(GPIO_enable),
+		   .VDD(VBAT),
+		   .Out_pos(Out_pos),
+		   .Out_neg(Out_neg)
+	);
+
+/* input resistors: the inversion is per Leonardo schematics */
+resistor R33xA (Input_pos, PA_in_neg);
+resistor R33xB (Input_neg, PA_in_pos);
+
+/* feedback resistors */
+resistor R331 (Out_neg, PA_in_pos);
+resistor R332 (Out_pos, PA_in_neg);
+
+/* bypass and supply decoupling caps */
+capacitor C319 (BYPASS, GND);
+capacitor C330 (VBAT, GND);
+
+/* small output capacitors */
+capacitor C331 (Out_neg, GND);
+capacitor C332 (Out_pos, GND);
+
+/* the speaker itself! */
+header_2pin spkr_connector (Out_pos, Out_neg);
+
+/* pull-down on the GPIO control line */
+resistor R338 (GPIO_enable, GND);
+
+endmodule