# HG changeset patch # User Mychaela Falconia # Date 1637301501 0 # Node ID 3ed0f7a9c489024d87488223f8ba4702b41b41c7 # Parent d23dae52cd7b6fe26b91731686f09cbdbb59da15 Venus: first version of Verilog for the Calypso core diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/M034F.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/M034F.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,35 @@ +module M034F (ANT, GND, RX_LOW1, RX_LOW2, RX_DCS1, RX_DCS2, RX_PCS1, RX_PCS2, + TX_LOW, TX_HIGH, V_TX_LOW, V_TX_HIGH, V_RX_850); + +inout ANT; +input GND; + +output RX_LOW1, RX_LOW2, RX_DCS1, RX_DCS2, RX_PCS1, RX_PCS2; +input TX_LOW, TX_HIGH; + +input V_TX_LOW, V_TX_HIGH, V_RX_850; + +/* instantiate the package; the mapping of signals to pins is defined here */ + +pkg_M034F pkg (.pin_1(ANT), + .pin_2(GND), + .pin_3(TX_HIGH), + .pin_4(GND), + .pin_5(GND), + .pin_6(TX_LOW), + .pin_7(V_TX_LOW), + .pin_8(V_TX_HIGH), + .pin_9(V_RX_850), + .pin_10(RX_DCS1), + .pin_11(RX_DCS2), + .pin_12(RX_PCS1), + .pin_13(RX_PCS2), + .pin_14(RX_LOW1), + .pin_15(RX_LOW2), + .pin_16(GND), + .pin_17(GND), + .pin_18(GND), + .pin_19(GND) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/RF3166.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/RF3166.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,44 @@ +module RF3166 (HB_RF_in, Band_Select, Tx_Enable, Vbatt, GND, Vramp, LB_RF_in, + LB_RF_out, HB_RF_out); + +input LB_RF_in, HB_RF_in; +input Band_Select, Tx_Enable; +input GND, Vbatt, Vramp; +output LB_RF_out, HB_RF_out; + +/* instantiate the package; the mapping of signals to pins is defined here */ + +pkg_RF3166 pkg (.pin_1(HB_RF_in), + .pin_2(Band_Select), + .pin_3(Tx_Enable), + .pin_4(Vbatt), + .pin_5(GND), + .pin_6(Vramp), + .pin_7(LB_RF_in), + .pin_8(LB_RF_out), + .pin_9(HB_RF_out), + .pin_10(GND), + .pin_11(GND), + .pin_12(GND), + .pin_13(GND), + .pin_14(GND), + .pin_15(GND), + .pin_16(GND), + .pin_17(GND), + .pin_18(GND), + .pin_19(GND), + .pin_20(GND), + .pin_21(GND), + .pin_22(GND), + .pin_23(GND), + .pin_24(GND), + .pin_25(GND), + .pin_26(GND), + .pin_27(GND), + .pin_28(GND), + .pin_29(GND), + .pin_30(GND), + .pin_31(GND) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/S71PL064J.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/S71PL064J.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,75 @@ +module S71PL064J (Flash_Vcc, RAM_Vcc, Vss, + A, DQ, OE, WE, + Flash_CE1, Flash_RST, + Flash_WP_ACC, Flash_ready_busy, + RAM_CE_actlow, RAM_CE_acthigh, RAM_UB, RAM_LB); + +input Flash_Vcc, RAM_Vcc, Vss; +input [21:0] A; +inout [15:0] DQ; +input OE, WE; +input Flash_CE1, Flash_RST, Flash_WP_ACC; +output Flash_ready_busy; +input RAM_CE_actlow, RAM_CE_acthigh, RAM_UB, RAM_LB; + +/* instantiate the package; the mapping of signals to balls is defined here */ + +pkg_TLC056 pkg (.A2(A[7]), + .A3(RAM_LB), + .A4(Flash_WP_ACC), + .A5(WE), + .A6(A[8]), + .A7(A[11]), + .B1(A[3]), + .B2(A[6]), + .B3(RAM_UB), + .B4(Flash_RST), + .B5(RAM_CE_acthigh), + .B6(A[19]), + .B7(A[12]), + .B8(A[15]), + .C1(A[2]), + .C2(A[5]), + .C3(A[18]), + .C4(Flash_ready_busy), + .C5(A[20]), + .C6(A[9]), + .C7(A[13]), + .C8(A[21]), + .D1(A[1]), + .D2(A[4]), + .D3(A[17]), + .D6(A[10]), + .D7(A[14]), + .D8(), /* no connect */ + .E1(A[0]), + .E2(Vss), + .E3(DQ[1]), + .E6(DQ[6]), + .E7(), /* no connect */ + .E8(A[16]), + .F1(Flash_CE1), + .F2(OE), + .F3(DQ[9]), + .F4(DQ[3]), + .F5(DQ[4]), + .F6(DQ[13]), + .F7(DQ[15]), + .F8(), /* no connect */ + .G1(RAM_CE_actlow), + .G2(DQ[0]), + .G3(DQ[10]), + .G4(Flash_Vcc), + .G5(RAM_Vcc), + .G6(DQ[12]), + .G7(DQ[7]), + .G8(Vss), + .H2(DQ[8]), + .H3(DQ[2]), + .H4(DQ[11]), + .H5(), /* no connect */ + .H6(DQ[5]), + .H7(DQ[14]) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/abb_block.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/abb_block.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,238 @@ +/* + * This module encapsulates the Iota ABB chip plus the following: + * + * - bypass capacitors on the VBAT input and the regulator outputs + * - all GND connections + * - IBIAS and VREF external components + * - UPR, VLMEM, VLRTC and everything connected to them + * - pull-up of SIM_IO to VSIM + * - cap on the AFC output + * - RC network joining BDL[IQ][MP] and BUL[IQ][MP] + * - VBACKUP resistor to GND in this FC Venus version + * + * All other Iota signals are passed through untouched. + */ + +module abb_block (GND, VBAT, VSIM, Vdbb, Vio, Vflash, Vsram, Vrtc, + nRESPWON, nTESTRESET, + Analog_IM, Analog_IP, Analog_QM, Analog_QP, + ADIN1, ADIN2, ADIN3, ADIN4, AFC, APC, AUXI, AUXON, AUXOP, + BDR, BDX, BFSR, BFSX, CK13M, CK32K, DAC, DBBSCK, DBBSIO, + DBBSRST, EARN, EARP, + HSMICBIAS, HSMICP, HSO, ICTL, INT1, INT2, ITWAKEUP, + LED_A, LED_B, LED_C, MICBIAS, MICIN, MICIP, ON_nOFF, + PCHG, PWON, RPWON, + TCK, TDI, TDO, TDR, TEN, TMS, UDR, UDX, UEN, + VBATS, VCCS, VCHG, VCK, VDR, VDX, VFS, + SIM_IO, SIM_CLK, SIM_RST); + +input GND, VBAT; +output VSIM, Vdbb, Vio, Vflash, Vsram, Vrtc; + +output nRESPWON; +input nTESTRESET; + +inout Analog_IM, Analog_IP, Analog_QM, Analog_QP; + +input ADIN1, ADIN2, ADIN3, ADIN4; +output AFC, APC, DAC; + +input AUXI; +output AUXON, AUXOP; +output EARN, EARP; +output HSMICBIAS, HSO; +input HSMICP; +output MICBIAS; +input MICIN, MICIP; + +input BDR, BFSR; +output BDX, BFSX; +input TDR, TEN; +input UDR, UEN; +output UDX; +output VCK, VDX, VFS; +input VDR; + +input CK13M, CK32K, ITWAKEUP; +output INT1, INT2; +output ON_nOFF; + +input DBBSCK, DBBSRST; +inout DBBSIO; + +input PWON, RPWON; +output ICTL, PCHG; + +output LED_A, LED_B, LED_C; + +output SIM_CLK, SIM_RST; +inout SIM_IO; + +input TCK, TDI, TMS; +output TDO; + +input VBATS, VCCS, VCHG; + +/* nets inside this module */ +wire UPR, VLMEM, Vabb; +wire IBIAS, VREF; +wire BULIM, BULIP, BULQM, BULQP; +wire VBACKUP; + +/* instantiate the Iota! */ + +iota_100ggm iota (.ADIN1(ADIN1), + .ADIN2(ADIN2), + .ADIN3(ADIN3), + .ADIN4(ADIN4), + .AFC(AFC), + .APC(APC), + .AUXI(AUXI), + .AUXON(AUXON), + .AUXOP(AUXOP), + .BDLIM(Analog_IM), + .BDLIP(Analog_IP), + .BDLQM(Analog_QM), + .BDLQP(Analog_QP), + .BDR(BDR), + .BDX(BDX), + .BFSR(BFSR), + .BFSX(BFSX), + .BULIM(BULIM), + .BULIP(BULIP), + .BULQM(BULQM), + .BULQP(BULQP), + .CK13M(CK13M), + .CK32K(CK32K), + .DAC(DAC), + .DBBSCK(DBBSCK), + .DBBSIO(DBBSIO), + .DBBSRST(DBBSRST), + .EARN(EARN), + .EARP(EARP), + .GNDA(GND), + .GNDAV(GND), + .GNDD(GND), + .GNDL1(GND), + .GNDL2(GND), + .HSMICBIAS(HSMICBIAS), + .HSMICP(HSMICP), + .HSO(HSO), + .IBIAS(IBIAS), + .ICTL(ICTL), + .INT1(INT1), + .INT2(INT2), + .ITWAKEUP(ITWAKEUP), + .LEDA(LED_A), + .LEDB1(LED_B), + .LEDB2(LED_B), + .LEDC(LED_C), + .MICBIAS(MICBIAS), + .MICIN(MICIN), + .MICIP(MICIP), + .ON_nOFF(ON_nOFF), + .PCHG(PCHG), + .PWON(PWON), + .REFGND(GND), + .RESPWONz(nRESPWON), + .RPWON(RPWON), + .SIMCK(SIM_CLK), + .SIMIO(SIM_IO), + .SIMRST(SIM_RST), + .TCK(TCK), + .TDI(TDI), + .TDO(TDO), + .TDR(TDR), + .TEN(TEN), + .TEST3(), /* no connect */ + .TEST4(), /* ditto */ + .TESTRSTz(nTESTRESET), + .TESTV(), /* no connect */ + .TMS(TMS), + .UDR(UDR), + .UDX(UDX), + .UEN(UEN), + .UPR(UPR), + .VBACKUP(VBACKUP), + .VBAT(VBAT), + .VBATS(VBATS), + .VCABB(VBAT), + .VCCS(VCCS), + .VCDBB(VBAT), + .VCHG(VCHG), + .VCIO1(VBAT), + .VCIO2(VBAT), + .VCK(VCK), + .VCMEM(VBAT), + .VCRAM(VBAT), + .VDR(VDR), + .VDX(VDX), + .VFS(VFS), + .VLMEM(VLMEM), + .VLRTC(GND), + .VRABB(Vabb), + .VRDBB(Vdbb), + .VREF(VREF), + .VRIO1(Vio), + .VRIO2(Vio), + .VRMEM(Vflash), + .VRRAM(Vsram), + .VRRTC(Vrtc), + .VRSIM(VSIM), + .VSDBB(Vdbb), + .VXRTC() /* no connect */ + ); + +/* power bypass caps per Leonardo schematics */ + +/* VBAT input */ +capacitor C220 (VBAT, GND); +capacitor C221 (VBAT, GND); + +/* regulator outputs */ +capacitor C213 (Vabb, GND); +capacitor C214 (Vdbb, GND); +capacitor C215 (Vio, GND); +capacitor C216 (Vflash, GND); +capacitor C217 (Vsram, GND); +capacitor C218 (VSIM, GND); +capacitor C219 (Vrtc, GND); + +/* UPR bypass cap */ +capacitor C208 (UPR, GND); + +/* + * VLMEM is pulled up to UPR, and we are eliminating the pull-down option + * on FC Venus - our LCD wiring is incompatible with 1.8V MEMIF. + */ +resistor R209 (VLMEM, UPR); + +/* nTESTRESET also needs to be pulled up to UPR */ +resistor R208 (nTESTRESET, UPR); + +/* IBIAS and VREF */ +resistor R204 (IBIAS, GND); +capacitor C204 (VREF, GND); + +/* pull-up on SIM_IO to VSIM */ +resistor R206 (SIM_IO, VSIM); + +/* cap on AFC output */ +capacitor C205 (AFC, GND); + +/* RC network joining BDL[IQ][MP] and BUL[IQ][MP] */ + +abb_rc_network abb_rc_network ( .IM_bidir(Analog_IM), + .IP_bidir(Analog_IP), + .QM_bidir(Analog_QM), + .QP_bidir(Analog_QP), + .IM_abbout(BULIM), + .IP_abbout(BULIP), + .QM_abbout(BULQM), + .QP_abbout(BULQP) + ); + +/* VBACKUP pull-down to GND */ +resistor VBACKUP_pull_down (VBACKUP, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/abb_rc_network.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/abb_rc_network.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,34 @@ +/* + * In the Leonardo schematics there is an RC network in the analog I&Q + * signal path between the uplink (BUL[IQ][MP]) outputs from the ABB + * and the bidirectional signals which connect directly to the RF xcvr + * and to Iota's downlink (BDL[IQ][MP]) inputs. + * + * This structural Verilog module encapsulates the RC network in question. + */ + +module abb_rc_network (IM_bidir, IP_bidir, QM_bidir, QP_bidir, + IM_abbout, IP_abbout, QM_abbout, QP_abbout); + +inout IM_bidir, IP_bidir, QM_bidir, QP_bidir; +input IM_abbout, IP_abbout, QM_abbout, QP_abbout; + +wire IM_mid, IP_mid, QM_mid, QP_mid; + +/* resistors on the outputs from the ABB */ +resistor_slot R295A (IM_abbout, IM_mid); +resistor_slot R295B (IP_abbout, IP_mid); +resistor_slot R295C (QP_abbout, QP_mid); +resistor_slot R295D (QM_abbout, QM_mid); + +/* capacitors in the middle */ +capacitor C295 (QM_mid, QP_mid); +capacitor C296 (IM_mid, IP_mid); + +/* resistors joining with the bidirectional lines */ +resistor_slot R296A (IM_mid, IM_bidir); +resistor_slot R296B (IP_mid, IP_bidir); +resistor_slot R296C (QP_mid, QP_bidir); +resistor_slot R296D (QM_mid, QM_bidir); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/baseband.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/baseband.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,267 @@ +/* + * This module encapsulates the DBB, the ABB and the connections between + * them. It approximately corresponds to the "200 - Baseband" sheet + * in the original Leonardo schematics. + */ + +module baseband (GND, VBAT, VSIM, Vio, Vflash, Vsram, + PWON, RPWON, nTESTRESET, ON_nOFF, CLKTCXO_IN, + TDI, TDO, TCK, TMS, + MCU_A, MCU_D, MCU_RnW, MCU_nFWE, MCU_nFOE, MCU_FDP, + MCU_nBLE, MCU_nBHE, MCU_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, + GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO6, GPIO7_RESETOUT, + GPIO8, GPIO13, + ADIN1, ADIN2, ADIN3, ADIN4, DAC, + AUXI, AUXON, AUXOP, EARN, EARP, HSMICBIAS, HSMICP, HSO, + MICBIAS, MICIN, MICIP, + LED_A, LED_B, LED_C, + ICTL, PCHG, VBATS, VCCS, VCHG, + SIM_IO, SIM_CLK, SIM_RST, + Analog_IM, Analog_IP, Analog_QM, Analog_QP, AFC, APC, + TCXOEN, RFEN, TSPCLK, TSPDO, TSPEN_Rita, TSPACT); + +input GND, VBAT; +output VSIM, Vio, Vflash, Vsram; + +input PWON, RPWON, nTESTRESET; +output ON_nOFF; + +input CLKTCXO_IN; + +input TDI, TCK, TMS; +output TDO; + +output [22:0] MCU_A; +inout [15:0] MCU_D; +output MCU_RnW, MCU_nFWE, MCU_nFOE, MCU_FDP, MCU_nBLE, MCU_nBHE; +output [4:0] MCU_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 GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO6, GPIO7_RESETOUT, GPIO8, GPIO13; + +input ADIN1, ADIN2, ADIN3, ADIN4; +output DAC; + +input AUXI; +output AUXON, AUXOP; +output EARN, EARP; +output HSMICBIAS, HSO; +input HSMICP; +output MICBIAS; +input MICIN, MICIP; + +output LED_A, LED_B, LED_C; + +output ICTL, PCHG; +input VBATS, VCCS, VCHG; + +output SIM_CLK, SIM_RST; +inout SIM_IO; + +inout Analog_IM, Analog_IP, Analog_QM, Analog_QP; +output AFC, APC; +output TCXOEN, RFEN, TSPCLK, TSPDO, TSPEN_Rita; +output [11:0] TSPACT; + +/* nets between DBB and ABB */ +wire Vdbb, Vrtc; +wire CLK13M_OUT, CLK32K_OUT, nRESPWON, IT_WAKEUP; +wire EXT_FIQ, EXT_IRQ; +wire TSPEN_Iota; + +/* Baseband serial port */ +wire BSP_dbb2abb_data, BSP_dbb2abb_sync; +wire BSP_abb2dbb_data, BSP_abb2dbb_sync; + +/* Voiceband serial port */ +wire VSP_DL_data, VSP_UL_data; +wire VSP_clock, VSP_sync; + +/* MCU serial port */ +wire USP_dbb2abb_data, USP_abb2dbb_data, USP_enable; + +/* SIM interface at Vio */ +wire DBBSIO, DBBSCLK, DBBSRST; + +/* instantiate the DBB and ABB blocks! */ + +dbb_block dbb ( .GND(GND), + .Vdbb(Vdbb), + .Vio(Vio), + .Vflash(Vflash), + .Vrtc(Vrtc), + .TSPCLKX(TSPCLK), + .TSPDO(TSPDO), + .TSPDI_IO4(GPIO4), + .TSPEN[0](TSPEN_Iota), + .TSPEN[1](), /* no connect */ + .TSPEN[2](TSPEN_Rita), + .TSPEN[3](), /* no connect */ + .TSPACT(TSPACT), + .DATA(MCU_D), + .ADD(MCU_A), + .RnW(MCU_RnW), + .nFWE(MCU_nFWE), + .nFOE(MCU_nFOE), + .FDP(MCU_FDP), + .nBLE(MCU_nBLE), + .nBHE(MCU_nBHE), + .nCS(MCU_nCS), + .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[0](GPIO0), + .GPIO[1](GPIO1), + .GPIO[2](GPIO2), + .GPIO[3](GPIO3), + .nRESET_OUT_IO7(GPIO7_RESETOUT), + .CLKTCXO(CLKTCXO_IN), + .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_nOFF), + .IT_WAKEUP(IT_WAKEUP), + .TDI(TDI), + .TDO(TDO), + .TCK(TCK), + .TMS(TMS), + .BFSR(BSP_abb2dbb_sync), + .BDR(BSP_abb2dbb_data), + .BFSX(BSP_dbb2abb_sync), + .BDX(BSP_dbb2abb_data), + .BCLKX_IO6(GPIO6), + .BCLKR_ARMCLK(GND), + .VDX(VSP_DL_data), + .VDR(VSP_UL_data), + .VFSRX(VSP_sync), + .VCLKRX(VSP_clock), + .MCUDI(USP_abb2dbb_data), + .MCUDO(USP_dbb2abb_data), + .MCUEN0(USP_enable), + .MCUEN1_IO8(GPIO8), + .MCUEN2_IO13(GPIO13), + .SIM_IO(DBBSIO), + .SIM_CLK(DBBSCLK), + .SIM_RST(DBBSRST) + ); + +abb_block abb ( .GND(GND), + .VBAT(VBAT), + .VSIM(VSIM), + .Vdbb(Vdbb), + .Vio(Vio), + .Vflash(Vflash), + .Vsram(Vsram), + .Vrtc(Vrtc), + .nRESPWON(nRESPWON), + .nTESTRESET(nTESTRESET), + .Analog_IM(Analog_IM), + .Analog_IP(Analog_IP), + .Analog_QM(Analog_QM), + .Analog_QP(Analog_QP), + .ADIN1(ADIN1), + .ADIN2(ADIN2), + .ADIN3(ADIN3), + .ADIN4(ADIN4), + .AFC(AFC), + .APC(APC), + .AUXI(AUXI), + .AUXON(AUXON), + .AUXOP(AUXOP), + .BDR(BSP_dbb2abb_data), + .BDX(BSP_abb2dbb_data), + .BFSR(BSP_dbb2abb_sync), + .BFSX(BSP_abb2dbb_sync), + .CK13M(CLK13M_OUT), + .CK32K(CLK32K_OUT), + .DAC(DAC), + .DBBSCK(DBBSCLK), + .DBBSIO(DBBSIO), + .DBBSRST(DBBSRST), + .EARN(EARN), + .EARP(EARP), + .HSMICBIAS(HSMICBIAS), + .HSMICP(HSMICP), + .HSO(HSO), + .ICTL(ICTL), + .INT1(EXT_FIQ), + .INT2(EXT_IRQ), + .ITWAKEUP(IT_WAKEUP), + .LED_A(LED_A), + .LED_B(LED_B), + .LED_C(LED_C), + .MICBIAS(MICBIAS), + .MICIN(MICIN), + .MICIP(MICIP), + .ON_nOFF(ON_nOFF), + .PCHG(PCHG), + .PWON(PWON), + .RPWON(RPWON), + .TCK(), /* no connect */ + .TDI(), /* no connect */ + .TDO(), /* no connect */ + .TDR(TSPDO), + .TEN(TSPEN_Iota), + .TMS(), /* no connect */ + .UDR(USP_dbb2abb_data), + .UDX(USP_abb2dbb_data), + .UEN(USP_enable), + .VBATS(VBATS), + .VCCS(VCCS), + .VCHG(VCHG), + .VCK(VSP_clock), + .VDR(VSP_DL_data), + .VDX(VSP_UL_data), + .VFS(VSP_sync), + .SIM_IO(SIM_IO), + .SIM_CLK(SIM_CLK), + .SIM_RST(SIM_RST) + ); + +/* there needs to be a pull-down resistor on the MCUDI/UDX net */ +resistor R216 (USP_abb2dbb_data, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/calypso_179ghh.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/calypso_179ghh.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,262 @@ +module calypso_179ghh (TSPCLKX, TSPDO, TSPDI_IO4, TSPEN, TSPACT, + DATA, ADD, RnW, nFWE, nFOE, FDP, nBLE, nBHE, nCS, + VDDS_MIF, VDDS_1, VDDS_2, VDD, VSS, + VDDS_RTC, VDD_RTC, VSS_RTC, + VDD_ANG, VSS_ANG, VDD_PLL, VSS_PLL, + 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, nIBOOT, IDDQ, + CLKTCXO, VSSO, OSC32K_IN, OSC32K_OUT, + CLK32K_OUT, CLK13M_OUT, nRESPWON, EXT_FIQ, EXT_IRQ, + TCXOEN, RFEN, ON_OFF, IT_WAKEUP, + nEMU, nBSCAN, 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, SIM_CD, SIM_PWCTRL_IO5); + +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; + +input VDDS_MIF, VDDS_1, VDDS_2, VDD, VSS; +input VDDS_RTC, VDD_RTC, VSS_RTC; +input VDD_ANG, VSS_ANG, VDD_PLL, VSS_PLL; + +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 nIBOOT, IDDQ, CLKTCXO, VSSO; +inout OSC32K_IN, OSC32K_OUT; +output CLK32K_OUT, CLK13M_OUT; +input nRESPWON, EXT_FIQ, EXT_IRQ; + +output TCXOEN, RFEN, IT_WAKEUP; +input ON_OFF; + +inout [1:0] nEMU; +input nBSCAN, 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, SIM_PWCTRL_IO5; +output SIM_CLK, SIM_RST; +input SIM_CD; + +/* instantiate the package; the mapping of signals to balls is defined here */ + +pkg_179GHH pkg (.F3(ADD[0]), + .F2(ADD[1]), + .G5(ADD[2]), + .G4(ADD[3]), + .G2(ADD[4]), + .G3(ADD[5]), + .H1(ADD[6]), + .H3(ADD[7]), + .H2(ADD[8]), + .H4(ADD[9]), + .H5(ADD[10]), + .J1(ADD[11]), + .J2(ADD[12]), + .J3(ADD[13]), + .J4(ADD[14]), + .K3(ADD[15]), + .K2(ADD[16]), + .K4(ADD[17]), + .J5(ADD[18]), + .L1(ADD[19]), + .L2(ADD[20]), + .L3(ADD[21]), + .D2(ADD[22]), + .B7(DATA[0]), + .D7(DATA[1]), + .E7(DATA[2]), + .D6(DATA[3]), + .A6(DATA[4]), + .C6(DATA[5]), + .E6(DATA[6]), + .C5(DATA[7]), + .B5(DATA[8]), + .D5(DATA[9]), + .E5(DATA[10]), + .B4(DATA[11]), + .C4(DATA[12]), + .D4(DATA[13]), + .A3(DATA[14]), + .B3(DATA[15]), + .F4(FDP), + .B2(RnW), + .F5(nBHE), + .E4(nBLE), + .C2(nCS[0]), + .C3(nCS[1]), + .C1(nCS[2]), + .D3(nCS[3]), + .C11(nCS[4]), + .E2(nFOE), + .E3(nFWE), + .J14(TSPCLKX), + .H10(TSPDI_IO4), + .H11(TSPDO), + .H13(TSPEN[0]), + .H12(TSPEN[1]), + .H14(TSPEN[2]), + .G12(TSPEN[3]), + .M12(TSPACT[0]), + .M14(TSPACT[1]), + .L12(TSPACT[2]), + .L13(TSPACT[3]), + .J10(TSPACT[4]), + .K11(TSPACT[5]), + .K13(TSPACT[6]), + .K12(TSPACT[7]), + .K14(TSPACT[8]), + .J11(TSPACT[9]), + .J12(TSPACT[10]), + .J13(TSPACT[11]), + .P9(SCLK), + .M9(SDI_SDA), + .K8(SDO), + .L9(nSCS0_SCL), + .N9(nSCS1), + .C8(TX_IRDA), + .D8(RX_IRDA), + .C7(TXIR_IRDA), + .A8(RXIR_IRDA), + .B8(SD_IRDA), + .B9(TX_MODEM), + .A9(RX_MODEM), + .E8(RTS_MODEM), + .D9(DSR_LPG), + .C9(CTS_MODEM), + .L10(MCSI_TXD), + .M10(MCSI_RXD), + .N10(MCSI_CLK), + .K9(MCSI_FSYNCH), + .N4(KBC[0]), + .K5(KBC[1]), + .L5(KBC[2]), + .P5(KBC[3]), + .M5(KBC[4]), + .K6(KBR[0]), + .M6(KBR[1]), + .P6(KBR[2]), + .N6(KBR[3]), + .L6(KBR[4]), + .K7(BU_PWT), + .L7(LT_PWL), + .N3(GPIO[0]), + .P3(GPIO[1]), + .L4(GPIO[2]), + .M4(GPIO[3]), + .N2(nRESET_OUT_IO7), + .N1(nIBOOT), + .M2(IDDQ), + .E13(CLKTCXO), + .C13(OSC32K_IN), + .B13(OSC32K_OUT), + .C12(CLK32K_OUT), + .F12(CLK13M_OUT), + .D12(nRESPWON), + .P1(EXT_FIQ), + .M3(EXT_IRQ), + .A4(VDDS_MIF), + .B6(VDDS_MIF), + .G1(VDDS_MIF), + .D1(VDDS_MIF), + .A11(VDDS_2), + .L14(VDDS_1), + .N5(VDDS_1), + .A5(VDD), + .B12(VDD), + .N14(VDD), + .P7(VDD), + .M1(VDD), + .E1(VDD), + .F1(VSS), + .N8(VSS), + .K1(VSS), + .P2(VSS), + .P4(VSS), + .P10(VSS), + .P13(VSS), + .G14(VSS), + .A10(VSS), + .A7(VSS), + .A2(VSS), + .B1(VSS), + .D13(VDDS_RTC), + .D14(VDD_RTC), + .C14(VSS_RTC), + .E11(VDD_ANG), + .E12(VSS_ANG), + .F11(VDD_PLL), + .E14(VSS_PLL), + .A14(VSSO), + .A12(TCXOEN), + .A13(RFEN), + .F10(ON_OFF), + .B14(IT_WAKEUP), + .D11(nBSCAN), + .B11(nEMU[0]), + .E10(nEMU[1]), + .D10(TDI), + .C10(TDO), + .B10(TCK), + .E9(TMS), + .L11(BFSR), + .K10(BDR), + .P12(BFSX), + .M11(BDX), + .P11(BCLKR_ARMCLK), + .N11(BCLKX_IO6), + .P14(VDX), + .N13(VDR), + .M13(VFSRX), + .N12(VCLKRX), + .N7(MCUDI), + .M7(MCUDO), + .M8(MCUEN0), + .P8(MCUEN1_IO8), + .L8(MCUEN2_IO13), + .G13(SIM_IO), + .F13(SIM_CLK), + .G10(SIM_RST), + .G11(SIM_CD), + .F14(SIM_PWCTRL_IO5) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/clock_rf2dbb.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/clock_rf2dbb.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,12 @@ +module clock_rf2dbb (In, Out); + +input In; +output Out; + +wire mid; + +resistor R251 (In, mid); + +capacitor C253 (mid, Out); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/core.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/core.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,231 @@ +/* + * This Verilog module encapsulates the Calypso chipset core part + * of our Venus development board. + */ + +module core (GND, VBAT1, VBAT2, VBAT3, VSIM, Vio, + PWON, RPWON, nTESTRESET, ON_nOFF, + TDI, TDO, TCK, TMS, + MCU_A, MCU_D, MCU_RnW, MCU_nFWE, MCU_nFOE, + EXT_nCS3, EXT_nCS4, + 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, + GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO6, GPIO7_RESETOUT, + GPIO8, GPIO13, + ADIN1, ADIN2, ADIN3, DAC, + AUXI, AUXON, AUXOP, EARN, EARP, HSMICBIAS, HSMICP, HSO, + MICBIAS, MICIN, MICIP, + LED_A, LED_B, LED_C, + ICTL, PCHG, VBATS, VCCS, VCHG, + SIM_IO, SIM_CLK, SIM_RST, ANTENNA); + +input GND, VBAT1, VBAT2, VBAT3; +output VSIM, Vio; + +input PWON, RPWON, nTESTRESET; +output ON_nOFF; + +input TDI, TCK, TMS; +output TDO; + +output [22:0] MCU_A; +inout [15:0] MCU_D; +output MCU_RnW, MCU_nFWE, MCU_nFOE; +output EXT_nCS3, EXT_nCS4; + +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 GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO6, GPIO7_RESETOUT, GPIO8, GPIO13; + +input ADIN1, ADIN2, ADIN3; +output DAC; + +input AUXI; +output AUXON, AUXOP; +output EARN, EARP; +output HSMICBIAS, HSO; +input HSMICP; +output MICBIAS; +input MICIN, MICIP; + +output LED_A, LED_B, LED_C; + +output ICTL, PCHG; +input VBATS, VCCS, VCHG; + +output SIM_CLK, SIM_RST; +inout SIM_IO; +inout ANTENNA; + +/* wires between baseband and RF */ +wire Clock_26MHz_RF_out, Clock_26MHz_DBB_in; +wire Analog_IM, Analog_IP, Analog_QM, Analog_QP; +wire AFC, APC; +wire TCXOEN, RFEN, TSPCLK, TSPDO, TSPEN_Rita; +wire [11:0] TSPACT; +wire ADIN4; + +/* wires between baseband and memory */ +wire Vflash, Vsram; +wire MCU_FDP, MCU_nBLE, MCU_nBHE; +wire INT_nCS0, INT_nCS1, INT_nCS2; + +/* instantiate the blocks! */ + +baseband bb (.GND(GND), + .VBAT(VBAT1), + .VSIM(VSIM), + .Vio(Vio), + .Vflash(Vflash), + .Vsram(Vsram), + .PWON(PWON), + .RPWON(RPWON), + .nTESTRESET(nTESTRESET), + .ON_nOFF(ON_nOFF), + .CLKTCXO_IN(Clock_26MHz_DBB_in), + .TDI(TDI), + .TDO(TDO), + .TCK(TCK), + .TMS(TMS), + .MCU_A(MCU_A), + .MCU_D(MCU_D), + .MCU_RnW(MCU_RnW), + .MCU_nFWE(MCU_nFWE), + .MCU_nFOE(MCU_nFOE), + .MCU_FDP(MCU_FDP), + .MCU_nBLE(MCU_nBLE), + .MCU_nBHE(MCU_nBHE), + .MCU_nCS[0](INT_nCS0), + .MCU_nCS[1](INT_nCS1), + .MCU_nCS[2](INT_nCS2), + .MCU_nCS[3](EXT_nCS3), + .MCU_nCS[4](EXT_nCS4), + .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), + .GPIO0(GPIO0), + .GPIO1(GPIO1), + .GPIO2(GPIO2), + .GPIO3(GPIO3), + .GPIO4(GPIO4), + .GPIO6(GPIO6), + .GPIO7_RESETOUT(GPIO7_RESETOUT), + .GPIO8(GPIO8), + .GPIO13(GPIO13), + .ADIN1(ADIN1), + .ADIN2(ADIN2), + .ADIN3(ADIN3), + .ADIN4(ADIN4), + .DAC(DAC), + .AUXI(AUXI), + .AUXON(AUXON), + .AUXOP(AUXOP), + .EARN(EARN), + .EARP(EARP), + .HSMICBIAS(HSMICBIAS), + .HSMICP(HSMICP), + .HSO(HSO), + .MICBIAS(MICBIAS), + .MICIN(MICIN), + .MICIP(MICIP), + .LED_A(LED_A), + .LED_B(LED_B), + .LED_C(LED_C), + .ICTL(ICTL), + .PCHG(PCHG), + .VBATS(VBATS), + .VCCS(VCCS), + .VCHG(VCHG), + .SIM_IO(SIM_IO), + .SIM_CLK(SIM_CLK), + .SIM_RST(SIM_RST), + .Analog_IM(Analog_IM), + .Analog_IP(Analog_IP), + .Analog_QM(Analog_QM), + .Analog_QP(Analog_QP), + .AFC(AFC), + .APC(APC), + .TCXOEN(TCXOEN), + .RFEN(RFEN), + .TSPCLK(TSPCLK), + .TSPDO(TSPDO), + .TSPEN_Rita(TSPEN_Rita), + .TSPACT(TSPACT) + ); + +memory mem (.GND(GND), + .Vflash(Vflash), + .Vsram(Vsram), + .MCU_A(MCU_A[22:1]), + .MCU_D(MCU_D[15:0]), + .MCU_nRD(MCU_nFOE), + .MCU_nWR(MCU_RnW), + .MCU_nBHE(MCU_nBHE), + .MCU_nBLE(MCU_nBLE), + .Flash_RST(MCU_FDP), + .CS_flash1(INT_nCS0), + .CS_RAM(INT_nCS1) + ); + +rf_section rf (.GND(GND), + .VBAT_REG(VBAT2), + .VBAT_PA(VBAT3), + .Vio(Vio), + .Analog_IM(Analog_IM), + .Analog_IP(Analog_IP), + .Analog_QM(Analog_QM), + .Analog_QP(Analog_QP), + .AFC(AFC), + .APC(APC), + .TCXOEN(TCXOEN), + .RFEN(RFEN), + .TSPCLK(TSPCLK), + .TSPDO(TSPDO), + .TSPEN_Rita(TSPEN_Rita), + .TSPACT(TSPACT), + .Clock_out_to_DBB(Clock_26MHz_RF_out), + .RTEMP_VTEST(ADIN4), + .ANTENNA(ANTENNA) + ); + +clock_rf2dbb clock_rf2dbb (.In(Clock_26MHz_RF_out), + .Out(Clock_26MHz_DBB_in) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/dbb_block.v --- /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 diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/int_vcxo_passive.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/int_vcxo_passive.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,28 @@ +/* + * This module captures the mysterious all-passive circuit between Iota's + * AFC output and Rita's XIN input as depicted on the Leonardo schematics. + * This circuit defies understanding, but it appears in Openmoko's GSM + * modem (unchanged from Leonardo) and that modem works, hence we deem + * this voodoo circuit to be suitable for mindless copying w/o understanding... + * + * Note that C205 is not included here, as it's already been included + * in the abb_block wrapper instead. + */ + +module int_vcxo_passive (AFC_in, XIN_connection, GND); + +input AFC_in, GND; +inout XIN_connection; + +wire R217_to_xtal, xtal_to_R211, R211_to_C225; + +resistor R217 (AFC_in, R217_to_xtal); +varactor_diode D200 (.Cathode(R217_to_xtal), .Anode(GND)); +capacitor C226 (R217_to_xtal, GND); +xtal_4pin_pkg xtal (.pin_1(xtal_to_R211), .pin_2(GND), + .pin_3(R217_to_xtal), .pin_4(GND)); +resistor R211 (xtal_to_R211, R211_to_C225); +capacitor C224 (R211_to_C225, GND); +capacitor C225 (R211_to_C225, XIN_connection); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/iota_100ggm.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/iota_100ggm.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,175 @@ +module iota_100ggm (ADIN1, ADIN2, ADIN3, ADIN4, AFC, APC, AUXI, AUXON, AUXOP, + BDLIM, BDLIP, BDLQM, BDLQP, BDR, BDX, BFSR, BFSX, BULIM, + BULIP, BULQM, BULQP, CK13M, CK32K, DAC, DBBSCK, DBBSIO, + DBBSRST, EARN, EARP, GNDA, GNDAV, GNDD, GNDL1, GNDL2, + HSMICBIAS, HSMICP, HSO, IBIAS, ICTL, INT1, INT2, ITWAKEUP, + LEDA, LEDB1, LEDB2, LEDC, MICBIAS, MICIN, MICIP, ON_nOFF, + PCHG, PWON, REFGND, RESPWONz, RPWON, SIMCK, SIMIO, SIMRST, + TCK, TDI, TDO, TDR, TEN, TEST3, TEST4, TESTRSTz, TESTV, + TMS, UDR, UDX, UEN, UPR, VBACKUP, VBAT, VBATS, VCABB, VCCS, + VCDBB, VCHG, VCIO1, VCIO2, VCK, VCMEM, VCRAM, VDR, VDX, + VFS, VLMEM, VLRTC, VRABB, VRDBB, VREF, VRIO1, VRIO2, VRMEM, + VRRAM, VRRTC, VRSIM, VSDBB, VXRTC); + +input ADIN1, ADIN2, ADIN3, ADIN4; +output AFC, APC, DAC; + +input AUXI; +output AUXON, AUXOP; +output EARN, EARP; +output HSMICBIAS, HSO; +input HSMICP; +output MICBIAS; +input MICIN, MICIP; + +input BDLIM, BDLIP, BDLQM, BDLQP; +output BULIM, BULIP, BULQM, BULQP; + +input BDR, BFSR; +output BDX, BFSX; +input TDR, TEN; +input UDR, UEN; +output UDX; +output VCK, VDX, VFS; +input VDR; + +input CK13M, CK32K, ITWAKEUP; +output INT1, INT2; +output ON_nOFF, RESPWONz; + +input DBBSCK, DBBSRST; +inout DBBSIO; + +input GNDA, GNDAV, GNDD, GNDL1, GNDL2; + +inout IBIAS, VREF, REFGND; + +input PWON, RPWON; +output ICTL, PCHG; + +output LEDA, LEDB1, LEDB2, LEDC; + +output SIMCK, SIMRST; +inout SIMIO; + +input TCK, TDI, TMS; +output TDO; +inout TEST3, TEST4; +input TESTRSTz; +output TESTV; + +inout UPR; +input VBACKUP, VBAT, VBATS, VCABB, VCCS, VCDBB, VCHG, VCIO1, VCIO2; +input VCMEM, VCRAM; + +input VLMEM, VLRTC; +output VRABB, VRDBB, VRIO1, VRIO2, VRMEM, VRRAM, VRRTC, VRSIM; + +input VSDBB; +inout VXRTC; + +/* instantiate the package; the mapping of signals to balls is defined here */ + +pkg_100GGM pkg (.B6(ADIN1), + .A6(ADIN2), + .C7(ADIN3), + .C6(ADIN4), + .J4(AFC), + .K4(APC), + .G7(AUXI), + .K10(AUXON), + .K9(AUXOP), + .F10(BDLIM), + .F9(BDLIP), + .E9(BDLQM), + .E10(BDLQP), + .J3(BDR), + .J2(BDX), + .H3(BFSR), + .K2(BFSX), + .D10(BULIM), + .D9(BULIP), + .C9(BULQM), + .C10(BULQP), + .E4(CK13M), + .E2(CK32K), + .H4(DAC), + .F4(DBBSCK), + .E5(DBBSIO), + .G4(DBBSRST), + .J10(EARN), + .J9(EARP), + .G10(GNDA), + .G6(GNDAV), + .A3(GNDD), + .B9(GNDL1), + .A9(GNDL2), + .K8(HSMICBIAS), + .K7(HSMICP), + .H9(HSO), + .B7(IBIAS), + .D6(ICTL), + .H6(INT1), + .E6(INT2), + .D2(ITWAKEUP), + .B8(LEDA), + .B10(LEDB1), + .A10(LEDB2), + .C8(LEDC), + .J8(MICBIAS), + .H7(MICIN), + .J7(MICIP), + .E3(ON_nOFF), + .B5(PCHG), + .F8(PWON), + .A7(REFGND), + .D3(RESPWONz), + .F7(RPWON), + .C4(SIMCK), + .B3(SIMIO), + .D4(SIMRST), + .D8(TCK), + .D7(TDI), + .E7(TDO), + .G3(TDR), + .H1(TEN), + .J6(TEST3), + .F6(TEST4), + .H8(TESTRSTz), + .G8(TESTV), + .E8(TMS), + .K5(UDR), + .J5(UDX), + .K6(UEN), + .C2(UPR), + .E1(VBACKUP), + .A4(VBAT), + .C5(VBATS), + .G9(VCABB), + .D5(VCCS), + .K1(VCDBB), + .A5(VCHG), + .A2(VCIO1), + .A1(VCIO2), + .K3(VCK), + .G2(VCMEM), + .F2(VCRAM), + .F5(VDR), + .H5(VDX), + .G5(VFS), + .F3(VLMEM), + .C3(VLRTC), + .H10(VRABB), + .J1(VRDBB), + .A8(VREF), + .B2(VRIO1), + .B1(VRIO2), + .G1(VRMEM), + .F1(VRRAM), + .D1(VRRTC), + .B4(VRSIM), + .H2(VSDBB), + .C1(VXRTC) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/memory.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/memory.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,33 @@ +module memory (GND, Vflash, Vsram, + MCU_A, MCU_D, MCU_nRD, MCU_nWR, MCU_nBHE, MCU_nBLE, + Flash_RST, CS_flash1, CS_RAM); + +input GND, Vflash, Vsram; +input [22:1] MCU_A; +inout [15:0] MCU_D; +input MCU_nRD, MCU_nWR, MCU_nBHE, MCU_nBLE; +input Flash_RST; +input CS_flash1, CS_RAM; + +S71PL064J chip (.Flash_Vcc(Vflash), + .RAM_Vcc(Vsram), + .Vss(GND), + .A(MCU_A), + .DQ(MCU_D), + .OE(MCU_nRD), + .WE(MCU_nWR), + .Flash_CE1(CS_flash1), + .Flash_RST(Flash_RST), + .Flash_WP_ACC(Vflash), + .Flash_ready_busy(), /* no connect */ + .RAM_CE_actlow(CS_RAM), + .RAM_CE_acthigh(Vsram), + .RAM_UB(MCU_nBHE), + .RAM_LB(MCU_nBLE) + ); + +/* bypass caps */ +capacitor C318 (Vsram, GND); +capacitor C322 (Vflash, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rf_fem_block.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rf_fem_block.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,50 @@ +/* + * This module encapsulates the RF FEM (quadband M034F) along with the PNP + * transistors and R/C footprints to GND for the control lines, and the cap + * on the antenna output. + */ + +module rf_fem_block (GND, VREG3, Ctrl_Tx_Low, Ctrl_Tx_High, Ctrl_Rx_850, + RX_LOW1, RX_LOW2, RX_DCS1, RX_DCS2, RX_PCS1, RX_PCS2, + TX_LOW, TX_HIGH, ANT); + +input GND, VREG3; +input Ctrl_Tx_Low, Ctrl_Tx_High, Ctrl_Rx_850; + +output RX_LOW1, RX_LOW2, RX_DCS1, RX_DCS2, RX_PCS1, RX_PCS2; +input TX_LOW, TX_HIGH; +inout ANT; + +wire ANT_before_cap; +wire V_TX_LOW, V_TX_HIGH, V_RX_850; + +/* transform control signals through PNP transistors */ + +transistor_slot PNP_FEM7 (.E(VREG3), .B(Ctrl_Tx_Low), .C(V_TX_LOW)); +transistor_slot PNP_FEM8 (.E(VREG3), .B(Ctrl_Tx_High), .C(V_TX_HIGH)); +transistor_slot PNP_FEM9 (.E(VREG3), .B(Ctrl_Rx_850), .C(V_RX_850)); + +/* instantiate the M034F */ + +M034F M034F (.ANT(ANT_before_cap), + .GND(GND), + .RX_LOW1(RX_LOW1), + .RX_LOW2(RX_LOW2), + .RX_DCS1(RX_DCS1), + .RX_DCS2(RX_DCS2), + .RX_PCS1(RX_PCS1), + .RX_PCS2(RX_PCS2), + .TX_LOW(TX_LOW), + .TX_HIGH(TX_HIGH), + .V_TX_LOW(V_TX_LOW), + .V_TX_HIGH(V_TX_HIGH), + .V_RX_850(V_RX_850) + ); + +capacitor C635 (ANT_before_cap, ANT); + +capacitor C645 (V_TX_LOW, GND); +capacitor C644 (V_TX_HIGH, GND); +capacitor C643 (V_RX_850, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rf_pa_block.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rf_pa_block.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,46 @@ +/* + * This module encapsulates the RF PA along with its power bypass caps + * and the Rs and Cs on the control inputs. + */ + +module rf_pa_block (GND, VBAT, Band_Select, Tx_Enable, APC_in, + LB_RF_in, HB_RF_in, LB_RF_out, HB_RF_out); + +input GND, VBAT; +input Band_Select, Tx_Enable, APC_in; +input LB_RF_in, HB_RF_in; +output LB_RF_out, HB_RF_out; + +/* + * A little bit of muck with the control inputs, following Leonardo + * and Openmoko schematics. On FC Venus we completely eliminate + * R621 and R622. + */ + +wire APC_after_resistor; + +resistor R623 (APC_in, APC_after_resistor); +capacitor C648 (APC_after_resistor, GND); +capacitor C656 (Band_Select, GND); + +/* instantiate the PA itself */ + +RF3166 PA (.HB_RF_in(HB_RF_in), + .Band_Select(Band_Select), + .Tx_Enable(Tx_Enable), + .Vbatt(VBAT), + .GND(GND), + .Vramp(APC_after_resistor), + .LB_RF_in(LB_RF_in), + .LB_RF_out(LB_RF_out), + .HB_RF_out(HB_RF_out) + ); + +/* 4 bypass caps per both Leonardo and Openmoko schematics */ + +capacitor C651 (VBAT, GND); +capacitor C652 (VBAT, GND); +capacitor C653 (VBAT, GND); +capacitor C654 (VBAT, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rf_section.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rf_section.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,115 @@ +module rf_section (GND, VBAT_REG, VBAT_PA, Vio, + Analog_IM, Analog_IP, Analog_QM, Analog_QP, AFC, APC, + TCXOEN, RFEN, TSPCLK, TSPDO, TSPEN_Rita, TSPACT, + Clock_out_to_DBB, RTEMP_VTEST, ANTENNA); + +input GND, VBAT_REG, VBAT_PA, Vio; + +inout Analog_IM, Analog_IP, Analog_QM, Analog_QP; +input AFC, APC; +input TCXOEN, RFEN, TSPCLK, TSPDO, TSPEN_Rita; +input [11:0] TSPACT; + +output Clock_out_to_DBB, RTEMP_VTEST; +inout ANTENNA; + +/* wires between subblocks */ +wire VREG3; +wire LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP; +wire Rita_LBTXOUT, Rita_HBTXOUT; +wire PA_LB_in, PA_HB_in, PA_LB_out, PA_HB_out; +wire FEM_TX_LB_in, FEM_TX_HB_in; +wire FEMout_to_LNAGSMN, FEMout_to_LNAGSMP; +wire FEMout_to_LNADCSN, FEMout_to_LNADCSP; +wire FEMout_to_LNAPCSN, FEMout_to_LNAPCSP; + +/* instantiate the main subblocks */ + +rita_vcxo_int Rita_vcxo (.GND(GND), + .VBAT(VBAT_REG), + .VREG3(VREG3), + .VRIO(Vio), + .TCXOEN(TCXOEN), + .RFEN(RFEN), + .AFC_in(AFC), + .Clock_out_to_DBB(Clock_out_to_DBB), + .Ctrl_CLK(TSPCLK), + .Ctrl_DATA(TSPDO), + .Ctrl_STROBE(TSPEN_Rita), + .Ctrl_RESETZ(TSPACT[0]), + .IN(Analog_IM), + .IP(Analog_IP), + .QN(Analog_QM), + .QP(Analog_QP), + .LNAGSMN(LNAGSMN), + .LNAGSMP(LNAGSMP), + .LNADCSN(LNADCSN), + .LNADCSP(LNADCSP), + .LNAPCSN(LNAPCSN), + .LNAPCSP(LNAPCSP), + .LBTXOUT(Rita_LBTXOUT), + .HBTXOUT(Rita_HBTXOUT), + .DAC(GND), + .DET1(GND), + .DET2(GND), + .APC(), /* no connect */ + .RTEMP_VTEST(RTEMP_VTEST) + ); + +rf_pa_block PA (.GND(GND), + .VBAT(VBAT_PA), + .Band_Select(TSPACT[3]), + .Tx_Enable(TSPACT[9]), + .APC_in(APC), + .LB_RF_in(PA_LB_in), + .HB_RF_in(PA_HB_in), + .LB_RF_out(PA_LB_out), + .HB_RF_out(PA_HB_out) + ); + +rf_fem_block FEM (.GND(GND), + .VREG3(VREG3), + .Ctrl_Tx_Low(TSPACT[2]), + .Ctrl_Tx_High(TSPACT[1]), + .Ctrl_Rx_850(TSPACT[4]), + .RX_LOW1(FEMout_to_LNAGSMP), + .RX_LOW2(FEMout_to_LNAGSMN), + .RX_DCS1(FEMout_to_LNADCSN), + .RX_DCS2(FEMout_to_LNADCSP), + .RX_PCS1(FEMout_to_LNAPCSN), + .RX_PCS2(FEMout_to_LNAPCSP), + .TX_LOW(FEM_TX_LB_in), + .TX_HIGH(FEM_TX_HB_in), + .ANT(ANTENNA) + ); + +/* RF magic glue connecting the blocks */ + +/* Tx: Rita to PA */ +rfmatch_rita2pa_lb rita2pa_lb (.In(Rita_LBTXOUT), .Out(PA_LB_in), .GND(GND)); +rfmatch_rita2pa_hb rita2pa_hb (.In(Rita_HBTXOUT), .Out(PA_HB_in), .GND(GND), + .VREG3(VREG3)); + +/* Tx: PA to FEM */ +rfmatch_pa2fem_pi pa2fem_lb (.In(PA_LB_out), .Out(FEM_TX_LB_in), .GND(GND)); +rfmatch_pa2fem_pi pa2fem_hb (.In(PA_HB_out), .Out(FEM_TX_HB_in), .GND(GND)); + +/* Rx paths (3) from the FEM to Rita LNA inputs */ + +rfmatch_fem2rita_low fem2rita_low (.In_neg(FEMout_to_LNAGSMN), + .In_pos(FEMout_to_LNAGSMP), + .Out_neg(LNAGSMN), + .Out_pos(LNAGSMP) + ); +rfmatch_fem2rita_dcs fem2rita_dcs (.In_neg(FEMout_to_LNADCSN), + .In_pos(FEMout_to_LNADCSP), + .Out_neg(LNADCSN), + .Out_pos(LNADCSP) + ); +rfmatch_fem2rita_pcs fem2rita_pcs (.In_neg(FEMout_to_LNAPCSN), + .In_pos(FEMout_to_LNAPCSP), + .Out_neg(LNAPCSN), + .Out_pos(LNAPCSP) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_fem2rita_dcs.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_fem2rita_dcs.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,13 @@ +/* RF Rx path from quadband FEM to Rita, DCS band, per Leonardo schematics */ + +module rfmatch_fem2rita_dcs (In_neg, In_pos, Out_neg, Out_pos); + +input In_neg, In_pos; +output Out_neg, Out_pos; + +inductor L607 (In_neg, Out_neg); +inductor L608 (In_pos, Out_pos); + +capacitor C699 (Out_neg, Out_pos); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_fem2rita_low.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_fem2rita_low.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,16 @@ +/* RF Rx path from quadband FEM to Rita, low bands, per Leonardo schematics */ + +module rfmatch_fem2rita_low (In_neg, In_pos, Out_neg, Out_pos); + +input In_neg, In_pos; +output Out_neg, Out_pos; + +wire mid_neg, mid_pos; + +capacitor C614 (In_neg, mid_neg); +capacitor C615 (In_pos, mid_pos); + +inductor L605 (mid_neg, Out_neg); +inductor L606 (mid_pos, Out_pos); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_fem2rita_pcs.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_fem2rita_pcs.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,13 @@ +/* RF Rx path from quadband FEM to Rita, PCS band, per Leonardo schematics */ + +module rfmatch_fem2rita_pcs (In_neg, In_pos, Out_neg, Out_pos); + +input In_neg, In_pos; +output Out_neg, Out_pos; + +inductor L604 (In_neg, In_pos); + +capacitor C624 (In_neg, Out_neg); +capacitor C625 (In_pos, Out_pos); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_pa2fem_pi.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_pa2fem_pi.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,14 @@ +/* RF Tx path from PA to M034F FEM, replicated for high and low bands */ +/* we are going to use a generic pi network topology on FC Venus */ + +module rfmatch_pa2fem_pi (In, Out, GND); + +input In; +output Out; +input GND; + +rlc_generic series (In, Out); +rlc_generic GND_leg_in (In, GND); +rlc_generic GND_leg_out (Out, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_rita2pa_hb.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_rita2pa_hb.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,15 @@ +/* RF Tx path from Rita to PA, high bands */ + +module rfmatch_rita2pa_hb (In, Out, GND, VREG3); + +input In; +output Out; +input GND, VREG3; + +wire mid; + +inductor L600 (In, VREG3); +capacitor C600 (In, mid); +chip_attenuator R601 (mid, Out, GND, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rfmatch_rita2pa_lb.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rfmatch_rita2pa_lb.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,15 @@ +/* RF Tx path from Rita to PA, low bands */ + +module rfmatch_rita2pa_lb (In, Out, GND); + +input In; +output Out; +input GND; + +wire mid1, mid2; + +inductor L601 (In, mid1); +capacitor C655 (mid1, mid2); +chip_attenuator R600 (mid2, Out, GND, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rita_rf_chip.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rita_rf_chip.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,87 @@ +module rita_rf_chip (GND, + CLK, DATA, STROBE, RESETZ, + IN, IP, QN, QP, + LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP, + LBTXOUT, HBTXOUT, + DAC, DET1, DET2, APC, + RTEMP_VTEST, SIOUT_TST, TSTVCO1, TSTVCO2, + VBAT1, VBAT2, VREG1, VREG2, VREG3, VRIO, + VCC1, VCC2, VCC3, VCC4, VCC5, VCC6, VCC7, VCC8, VCC9, + VCC10, VCC11, VCC12, VCC13, VBG, + XEN, XSEL, XIN, XOUT); + +input GND; +input CLK, DATA, STROBE, RESETZ; +inout IN, IP, QN, QP; + +input LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP; +output LBTXOUT, HBTXOUT; + +input DAC, DET1, DET2; +output APC; + +output RTEMP_VTEST, SIOUT_TST, TSTVCO1, TSTVCO2; + +input VBAT1, VBAT2, VRIO; +output VREG1, VREG2, VREG3; +inout VCC1, VCC2, VCC3, VCC4, VCC5, VCC6, VCC7, VCC8, VCC9; +inout VCC10, VCC11, VCC12, VCC13, VBG; + +input XEN, XSEL; +inout XIN; +output XOUT; + +/* instantiate the package; the mapping of signals to pins is defined here */ + +pkg_Rita_RF pkg (.pin_1(XSEL), + .pin_2(XEN), + .pin_3(RESETZ), + .pin_4(VCC1), + .pin_5(DATA), + .pin_6(VCC2), + .pin_7(CLK), + .pin_8(VCC3), + .pin_9(STROBE), + .pin_10(VCC4), + .pin_11(VCC5), + .pin_12(VCC6), + .pin_13(SIOUT_TST), + .pin_14(RTEMP_VTEST), + .pin_15(LNAPCSP), + .pin_16(LNAPCSN), + .pin_17(VCC7), + .pin_18(LNADCSP), + .pin_19(LNADCSN), + .pin_20(VBG), + .pin_21(LNAGSMP), + .pin_22(LNAGSMN), + .pin_23(VREG3), + .pin_24(VBAT2), + .pin_25(DET1), + .pin_26(DET2), + .pin_27(APC), + .pin_28(DAC), + .pin_29(HBTXOUT), + .pin_30(VCC8), + .pin_31(LBTXOUT), + .pin_32(VCC9), + .pin_33(VCC10), + .pin_34(TSTVCO1), + .pin_35(TSTVCO2), + .pin_36(VCC11), + .pin_37(VCC12), + .pin_38(IN), + .pin_39(IP), + .pin_40(QP), + .pin_41(QN), + .pin_42(VCC13), + .pin_43(VREG1), + .pin_44(VBAT1), + .pin_45(VREG2), + .pin_46(VRIO), + .pin_47(XOUT), + .pin_48(XIN), + .pin_49(GND) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rita_vcxo_int.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rita_vcxo_int.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,85 @@ +/* + * This module encapsulates the Rita block (Rita chip + caps) together with + * the choice of internal or external VC(TC)XO; this version is for the + * internal configuration. + */ + +module rita_vcxo_int (GND, VBAT, VREG3, VRIO, + TCXOEN, RFEN, AFC_in, Clock_out_to_DBB, + Ctrl_CLK, Ctrl_DATA, Ctrl_STROBE, Ctrl_RESETZ, + IN, IP, QN, QP, + LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP, + LBTXOUT, HBTXOUT, + DAC, DET1, DET2, APC, + RTEMP_VTEST); + +input GND, VBAT, VRIO; +output VREG3; + +input TCXOEN, RFEN, AFC_in; +output Clock_out_to_DBB; + +input Ctrl_CLK, Ctrl_DATA, Ctrl_STROBE, Ctrl_RESETZ; +inout IN, IP, QN, QP; + +input LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP; +output LBTXOUT, HBTXOUT; + +input DAC, DET1, DET2; +output APC; + +output RTEMP_VTEST; + +/* internal VCTCXO configuration */ + +wire XIN; + +int_vcxo_passive vcxo_passive (AFC_in, XIN, GND); + +/* + * Some Leonardo schematic versions show a "resistor short" with refdes R604 + * between TCXOEN from the Calypso and the net going to XEN, XSEL and the cap + * or two caps. In Openmoko's version this component is a physical 0402 SMT + * 0R jumper; in iWOW TR-800 this series R has been measured to be 47 Ohm + * instead. On FC Venus we shall include an 0402 series R footprint + * just in case. + */ + +wire TCXOEN_after_0R; + +resistor R604 (TCXOEN, TCXOEN_after_0R); + +/* instantiate the Rita block */ + +rita_wrap rita (.GND(GND), + .VBAT(VBAT), + .VREG3(VREG3), + .VRIO(VRIO), + .XEN(TCXOEN_after_0R), + .XSEL(TCXOEN_after_0R), + .XIN(XIN), + .Clock_out_to_DBB(Clock_out_to_DBB), + .Ctrl_CLK(Ctrl_CLK), + .Ctrl_DATA(Ctrl_DATA), + .Ctrl_STROBE(Ctrl_STROBE), + .Ctrl_RESETZ(Ctrl_RESETZ), + .IN(IN), + .IP(IP), + .QN(QN), + .QP(QP), + .LNAGSMN(LNAGSMN), + .LNAGSMP(LNAGSMP), + .LNADCSN(LNADCSN), + .LNADCSP(LNADCSP), + .LNAPCSN(LNAPCSN), + .LNAPCSP(LNAPCSP), + .LBTXOUT(LBTXOUT), + .HBTXOUT(HBTXOUT), + .DAC(DAC), + .DET1(DET1), + .DET2(DET2), + .APC(APC), + .RTEMP_VTEST(RTEMP_VTEST) + ); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/rita_wrap.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/rita_wrap.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,118 @@ +/* + * This module encapsulates the Rita chip along with the surrounding entourage + * of power bypass capacitors; all other Rita signals are passed through + * unchanged. + */ + +module rita_wrap (GND, VBAT, VREG3, VRIO, + XEN, XSEL, XIN, Clock_out_to_DBB, + Ctrl_CLK, Ctrl_DATA, Ctrl_STROBE, Ctrl_RESETZ, + IN, IP, QN, QP, + LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP, + LBTXOUT, HBTXOUT, + DAC, DET1, DET2, APC, + RTEMP_VTEST); + +input GND, VBAT, VRIO; +output VREG3; + +input XEN, XSEL, XIN; +output Clock_out_to_DBB; + +input Ctrl_CLK, Ctrl_DATA, Ctrl_STROBE, Ctrl_RESETZ; +inout IN, IP, QN, QP; + +input LNAGSMN, LNAGSMP, LNADCSN, LNADCSP, LNAPCSN, LNAPCSP; +output LBTXOUT, HBTXOUT; + +input DAC, DET1, DET2; +output APC; + +output RTEMP_VTEST; + +/* Rita power nets contained inside this wrapper */ + +wire VREG1, VREG2; +wire VCC4, VCC6, VCC9, VCC11; +wire VBG; + +/* instantiate the Rita! */ + +rita_rf_chip rita (.GND(GND), + .CLK(Ctrl_CLK), + .DATA(Ctrl_DATA), + .STROBE(Ctrl_STROBE), + .RESETZ(Ctrl_RESETZ), + .IN(IN), + .IP(IP), + .QN(QN), + .QP(QP), + .LNAGSMN(LNAGSMN), + .LNAGSMP(LNAGSMP), + .LNADCSN(LNADCSN), + .LNADCSP(LNADCSP), + .LNAPCSN(LNAPCSN), + .LNAPCSP(LNAPCSP), + .LBTXOUT(LBTXOUT), + .HBTXOUT(HBTXOUT), + .DAC(DAC), + .DET1(DET1), + .DET2(DET2), + .APC(APC), + .RTEMP_VTEST(RTEMP_VTEST), + .SIOUT_TST(), /* no connect */ + .TSTVCO1(), /* ditto */ + .TSTVCO2(), /* "" */ + .VBAT1(VBAT), + .VBAT2(VBAT), + .VREG1(VREG1), + .VREG2(VREG2), + .VREG3(VREG3), + .VRIO(VRIO), + .VCC1(VREG2), + .VCC2(VREG2), + .VCC3(VREG2), + .VCC4(VCC4), + .VCC5(VREG2), + .VCC6(VCC6), + .VCC7(VREG1), + .VCC8(VREG3), + .VCC9(VCC9), + .VCC10(VREG3), + .VCC11(VCC11), + .VCC12(VREG1), + .VCC13(VREG1), + .VBG(VBG), + .XEN(XEN), + .XSEL(XSEL), + .XIN(XIN), + .XOUT(Clock_out_to_DBB) + ); + +/* bypass caps on VREGn */ +capacitor C619 (VREG1, GND); +capacitor C622 (VREG2, GND); +capacitor C613 (VREG3, GND); + +/* caps on VCCn */ + +/* VCC1 */ capacitor C629 (VREG2, GND); +/* VCC2 */ capacitor C630 (VREG2, GND); +/* VCC3 */ capacitor C631 (VREG2, GND); +/* VCC4 */ capacitor C632 (VCC4, GND); +/* VCC5 */ capacitor C633 (VREG2, GND); +/* VCC6 */ capacitor C634 (VCC6, GND); +/* VCC7 */ capacitor C620 (VREG1, GND); +/* VCC8 */ capacitor C609 (VREG3, GND); +/* VCC9 */ capacitor C608 (VCC9, GND); +/* VCC10 */ capacitor C607 (VREG3, GND); +/* VCC11 */ capacitor C606 (VCC11, GND); +/* VCC12 */ capacitor C610 (VREG1, GND); +/* VCC13 */ capacitor C617 (VREG1, GND); + +capacitor C616 (VBG, GND); + +capacitor XEN_cap (XEN, GND); +capacitor XEN_cap2 (XEN, GND); + +endmodule diff -r d23dae52cd7b -r 3ed0f7a9c489 venus/src/core/xtal_32khz_wrap.v --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venus/src/core/xtal_32khz_wrap.v Fri Nov 19 05:58:21 2021 +0000 @@ -0,0 +1,13 @@ +/* + * The 32 kHz crystal resonator package used in the TR-800 module + * only has the two electrodes as pads, no ground pad. + * We shall use the same type of crystal on FC Venus. + */ + +module xtal_32khz_wrap (electrode1, electrode2, GND); + +input electrode1, electrode2, GND; + +xtal_2pin_pkg xtal (electrode1, electrode2); + +endmodule