diff venus/src/core/dbb_block.v @ 9:3ed0f7a9c489

Venus: first version of Verilog for the Calypso core
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 19 Nov 2021 05:58:21 +0000
parents
children 5ee03a306da3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/venus/src/core/dbb_block.v	Fri Nov 19 05:58:21 2021 +0000
@@ -0,0 +1,212 @@
+/*
+ * This module encapsulates the Calypso DBB chip plus the following:
+ *
+ * - star points and bypass capacitors for the powering arrangement;
+ * - the 32 kHz xtal circuit with its special ground;
+ * - nIBOOT, IDDQ, SIM_CD and SIM_PWCTRL tie-offs;
+ * - nBSCAN and nEMU[1:0] no-connects.
+ *
+ * All other Calypso signals are passed through untouched.
+ */
+
+module dbb_block (GND, Vdbb, Vio, Vflash, Vrtc,
+		  TSPCLKX, TSPDO, TSPDI_IO4, TSPEN, TSPACT,
+		  DATA, ADD, RnW, nFWE, nFOE, FDP, nBLE, nBHE, nCS,
+		  SCLK, SDO, SDI_SDA, nSCS0_SCL, nSCS1,
+		  TX_IRDA, RX_IRDA, TXIR_IRDA, RXIR_IRDA, SD_IRDA,
+		  TX_MODEM, RX_MODEM, RTS_MODEM, CTS_MODEM, DSR_LPG,
+		  MCSI_TXD, MCSI_RXD, MCSI_CLK, MCSI_FSYNCH,
+		  KBC, KBR, BU_PWT, LT_PWL, GPIO,
+		  nRESET_OUT_IO7, CLKTCXO,
+		  CLK32K_OUT, CLK13M_OUT, nRESPWON, EXT_FIQ, EXT_IRQ,
+		  TCXOEN, RFEN, ON_OFF, IT_WAKEUP,
+		  TDI, TDO, TCK, TMS,
+		  BFSR, BDR, BFSX, BDX, BCLKX_IO6, BCLKR_ARMCLK,
+		  VDX, VDR, VFSRX, VCLKRX,
+		  MCUDI, MCUDO, MCUEN0, MCUEN1_IO8, MCUEN2_IO13,
+		  SIM_IO, SIM_CLK, SIM_RST);
+
+input GND, Vdbb, Vio, Vflash, Vrtc;
+
+output TSPCLKX, TSPDO;
+inout TSPDI_IO4;
+output [3:0] TSPEN;
+output [11:0] TSPACT;
+
+inout [15:0] DATA;
+output [22:0] ADD;
+output RnW, nFWE, nFOE, FDP, nBLE, nBHE;
+output [4:0] nCS;
+
+output SCLK, SDO, nSCS1;
+inout SDI_SDA, nSCS0_SCL;
+
+output TX_IRDA, TXIR_IRDA, SD_IRDA, TX_MODEM, RTS_MODEM;
+input RX_IRDA, RXIR_IRDA, RX_MODEM, CTS_MODEM;
+inout DSR_LPG;
+
+output MCSI_TXD;
+input MCSI_RXD;
+inout MCSI_CLK, MCSI_FSYNCH;
+
+output [4:0] KBC;
+input [4:0] KBR;
+output BU_PWT, LT_PWL;
+inout [3:0] GPIO;
+
+output nRESET_OUT_IO7;
+input CLKTCXO;
+output CLK32K_OUT, CLK13M_OUT;
+input nRESPWON, EXT_FIQ, EXT_IRQ;
+
+output TCXOEN, RFEN, IT_WAKEUP;
+input ON_OFF;
+
+input TDI, TCK, TMS;
+output TDO;
+
+input BFSR, BDR;
+output BFSX, BDX;
+inout BCLKX_IO6;
+input BCLKR_ARMCLK;
+
+output VDX;
+input VDR, VFSRX, VCLKRX;
+
+input MCUDI;
+output MCUDO, MCUEN0, MCUEN1_IO8, MCUEN2_IO13;
+
+inout SIM_IO;
+output SIM_CLK, SIM_RST;
+
+/* nets inside this module */
+wire SIM_PWCTRL;
+wire GND_32khz, OSC32K_IN, OSC32K_OUT, OSC32K_OUT_2;
+wire VDD_PLL, VDD_CORE;
+
+starpoint HST201 (Vdbb, VDD_PLL);
+starpoint HST202 (Vdbb, VDD_CORE);
+
+/* instantiate the Calypso! */
+
+calypso_179ghh calypso (.TSPCLKX(TSPCLKX),
+			.TSPDO(TSPDO),
+			.TSPDI_IO4(TSPDI_IO4),
+			.TSPEN(TSPEN),
+			.TSPACT(TSPACT),
+			.DATA(DATA),
+			.ADD(ADD),
+			.RnW(RnW),
+			.nFWE(nFWE),
+			.nFOE(nFOE),
+			.FDP(FDP),
+			.nBLE(nBLE),
+			.nBHE(nBHE),
+			.nCS(nCS),
+			.VDDS_MIF(Vflash),
+			.VDDS_1(Vio),
+			.VDDS_2(Vio),
+			.VDD(VDD_CORE),
+			.VSS(GND),
+			.VDDS_RTC(Vrtc),
+			.VDD_RTC(Vrtc),
+			.VSS_RTC(GND),
+			.VDD_ANG(Vio),
+			.VSS_ANG(GND),
+			.VDD_PLL(VDD_PLL),
+			.VSS_PLL(GND),
+			.SCLK(SCLK),
+			.SDO(SDO),
+			.SDI_SDA(SDI_SDA),
+			.nSCS0_SCL(nSCS0_SCL),
+			.nSCS1(nSCS1),
+			.TX_IRDA(TX_IRDA),
+			.RX_IRDA(RX_IRDA),
+			.TXIR_IRDA(TXIR_IRDA),
+			.RXIR_IRDA(RXIR_IRDA),
+			.SD_IRDA(SD_IRDA),
+			.TX_MODEM(TX_MODEM),
+			.RX_MODEM(RX_MODEM),
+			.RTS_MODEM(RTS_MODEM),
+			.CTS_MODEM(CTS_MODEM),
+			.DSR_LPG(DSR_LPG),
+			.MCSI_TXD(MCSI_TXD),
+			.MCSI_RXD(MCSI_RXD),
+			.MCSI_CLK(MCSI_CLK),
+			.MCSI_FSYNCH(MCSI_FSYNCH),
+			.KBC(KBC),
+			.KBR(KBR),
+			.BU_PWT(BU_PWT),
+			.LT_PWL(LT_PWL),
+			.GPIO(GPIO),
+			.nRESET_OUT_IO7(nRESET_OUT_IO7),
+			.nIBOOT(GND),
+			.IDDQ(GND),
+			.CLKTCXO(CLKTCXO),
+			.VSSO(GND_32khz),
+			.OSC32K_IN(OSC32K_IN),
+			.OSC32K_OUT(OSC32K_OUT),
+			.CLK32K_OUT(CLK32K_OUT),
+			.CLK13M_OUT(CLK13M_OUT),
+			.nRESPWON(nRESPWON),
+			.EXT_FIQ(EXT_FIQ),
+			.EXT_IRQ(EXT_IRQ),
+			.TCXOEN(TCXOEN),
+			.RFEN(RFEN),
+			.ON_OFF(ON_OFF),
+			.IT_WAKEUP(IT_WAKEUP),
+			.nEMU(),	/* no connect */
+			.nBSCAN(),	/* ditto */
+			.TDI(TDI),
+			.TDO(TDO),
+			.TCK(TCK),
+			.TMS(TMS),
+			.BFSR(BFSR),
+			.BDR(BDR),
+			.BFSX(BFSX),
+			.BDX(BDX),
+			.BCLKX_IO6(BCLKX_IO6),
+			.BCLKR_ARMCLK(BCLKR_ARMCLK),
+			.VDX(VDX),
+			.VDR(VDR),
+			.VFSRX(VFSRX),
+			.VCLKRX(VCLKRX),
+			.MCUDI(MCUDI),
+			.MCUDO(MCUDO),
+			.MCUEN0(MCUEN0),
+			.MCUEN1_IO8(MCUEN1_IO8),
+			.MCUEN2_IO13(MCUEN2_IO13),
+			.SIM_IO(SIM_IO),
+			.SIM_CLK(SIM_CLK),
+			.SIM_RST(SIM_RST),
+			.SIM_CD(Vio),
+			.SIM_PWCTRL_IO5(SIM_PWCTRL));
+
+/* power bypass caps, absolutely unchanged from Leonardo */
+
+capacitor C209 (Vflash, GND);
+capacitor C210 (Vio, GND);
+capacitor C211 (VDD_CORE, GND);
+capacitor C212 (VDD_PLL, GND);
+
+/* 32.768 kHz xtal circuit, following Leonardo schematics */
+
+/* special ground */
+starpoint HST203 (GND, GND_32khz);
+
+/* resistor and extra cap on OSC32K_OUT */
+resistor R215 (OSC32K_OUT, OSC32K_OUT_2);
+capacitor C223 (OSC32K_OUT, GND);	/* regular GND per Leonardo schem */
+
+/* actual xtal and caps */
+xtal_32khz_wrap xtal (OSC32K_IN, OSC32K_OUT_2, GND);	/* pkg case GND */
+capacitor C202 (OSC32K_IN, GND_32khz);
+capacitor C203 (OSC32K_OUT_2, GND_32khz);
+
+/* Vrtc bypass cap */
+capacitor C201 (Vrtc, GND_32khz);
+
+/* SIM_PWCTRL resistor like on Leonardo schematics */
+resistor R207 (SIM_PWCTRL, SIM_IO);
+
+endmodule