Novena EVT to DVT changes

=Novena EVT to DVT changes= This is a list of all the changes applied to the board from EVT1A to DVT1 release. If it's not on this list, it didn't happen.

Each change has the format of issue summary/resolution, and specific change

ECO1: Inrush current limit
The RC constant governing the turn-on/turn-off rates of the FET power switches needs tuning. In EVT, most switches are turning on too quickly for them to be effective. Resolution is to increase capacitance and resistance.

ECO2: FPGA boot fuse interference
FPGA's internal pull-ups on boot will yank boot fuses to the CPU, causing wrong boot source to be selected.

ECO3: Gbit Ethernet Reset
Default circuit recommended by reference design is bogus. Get rid of it.

ECO4: PCIe power on
Wire PCI express power on line (gate of Q10X) to ball R1 / pad name GPIO_17 / "GPIO7[12] aka 6 * 32 + 12 = GPIO 204". Software change required

ECO5: Improve magnetics termination
The magnetics in the PHY are not terminated properly, causing ISSI.

ECO6: Gbit reflcock SI
Drive strength of U10G is not strong enough to overcome series terminator. Replace with shunt. Add RC shunt terminator at the end of the transmission line instead.

ECO7: HDMI HPD polarity
HDMI HPD polarity is not software programmable, so need to buffer (not invert) incoming signal.

ECO8: Audio chip sucks (power)
During power down, audio chip totally leaks power through the I2C bus. Need to really strengthen the pull-down to fully reset the chip and fight the pull-ups on I2C.

ECO9: Reset pulse too short
The PFUZE PMIC reset cycle is too short, approx 2 ms after VGEN6 (last supply) rises. Since there are other supplies slaved off of VGEN5/6 enables stabilizing, reset pulse needs to be lengthened. Use a standard reset monitor on the +5V line, which ensures a minimum 100ms total reset pulse width from 5V stable; provides plenty of margin for system to stabilize (~50ms or so).

ECO10: Input cap bleed
If there is an error condition on U11N, the chip goes into shut down. The leakage in protect mode is sufficiently small that it takes several seconds for the input caps to bleed down to a point where the error condition is cleared. This can lead to a bad user experience. For fixed installations, a 2.2k resistor is installed to bleed current on the input. This wastes about 65mW of power, but the capacitors now discharge in under a second. For battery/mobile installations, the resistor should *not* be installed, and instead the battery board should either guarantee sufficient time for a power cycle or there should be a switched pull-down on the battery board side to clear the error condition.

ECO11: Split audio record/playback clocks
The audio codec requires independent clocks for record and playback (in part to allow for dissimilar sample rates during full duplex operation).


 * ALRCK is connected to what is currently LCD_BL_ON
 * LCD_BL_ON is connected to what is currently KEY_ROW4
 * User switch is no longer bridging GPIOs, it's now a button shorting a pull-up to ground

ECO12: Add user switch on bottom side
Add a user switch (mirror image) on bottom side of PCB to be compatible with new ID

ECO13: Reduce attack surface by making DDC_SCL unidirectional
HDMI DDC and PMIC share the same I2C bus. This means that a hostile HDMI device could commandeer the I2C bus and attempt to reprogram the PMIC with values that can potentially cause permanent damage to the board. Prevent this by turning the DDC device into a slave only. This is accomplished by changing the level shifter on the bus into a unidirectional buffer. This prevents the trivial attack scenario on the board, where a programmable I2C interface on an HDMI plug could be used to destroy a Novena (i.e., a simple software patch loaded into certain TV sets (particularly ones that grab updates via the internet) could accomplish this). Instead, a custom I2C-busting device (like an NeTV or bus pirate) must be made and physically connected to attack Novena using the remaining attack surface.

The remaining attack surface consists of monitoring the SCL/SDA lines and attempting to modify the I2C bus on-the-fly by overriding the SDA line's value using a very strong driver. This can be accomplished by simply waiting for any transaction on the bus where SCL is toggled, and modifying both the destination address and data packets (this is done by an NeTV, for example). One countermeasure is to disable all traffic to the PMIC's I2C bus as long as an HDMI device is plugged in. This is not a totally unreasonable scenario, as it basically means the device is locked in the "on" state if it's driving an external projector.

Of course, if someone had it about them to break into your office and mod the I2C lines in your HDMI interface to your external monitor, they probably could just as easily smash your laptop, mod your AC adapter, or mess with your USB cables and cause you similar trouble. So I think this remaining attack surface is comparable to other existing attack surfaces, and therefore not a high priority to button up.

ECO 14: Fix L11N footprint
Footprint for L11N was mistakenly set to MSS1048; should be sized for XAL4020.

ECO 15: Drop silicon mic feature
Silicon mic built-into motherboard is being dropped. If a microphone is required, one must plug in an android or iphone compatible hands-free headset that contains a mic. The silicon mic is dropped in part due to privacy concerns.

Note that connector to support an add-on board for an external silicon mic is still provisioned.

ECO 16: Drop Raspberry Pi header
No value is seen in keeping the Rpi header; it takes a lot of space, has an inferior pin-out, and probably nobody will actually use it. The board space will instead be allocated to a new header that more intelligently uses the high-speed differential pairs available on the FPGA for expansion and prototyping.

ECO17: Refactor LCD connector
Instead of relying on a discrete-wire cable, flex circuit headers will be used to connect to the LCD. These are cheaper and easier to make in small quantities than the discrete-wire cables. This enables a multiplicity of displays to be adapted to the board with a lower overhead cost.


 * Wire up LVDS0_TX3_[N,P] and LVDS1_TX3_[N,P] to support 8-bit color depths on all channels (better banding performance on IPS displays)
 * Remove resistive touch screen headers and merge signals into FFC breakout
 * Due to high signal speeds, minimize FFC length, and use local adapter/repeater board for super high resolution displays

ECO18: Move status LED
Status LED needs to be moved to edge of board and made right-angle for compatibility with router-case ID

ECO19: Refactor blinkenlight header
A small header is provided for general-purpose switches and blinkenlight for miscellaneous case integration needs. Currently, there is no solid requirement driving the needs of the header. However, the header is occupying a very valuable routing channel.

Change header from through-hole to surface-mount, and reduce pin count to something more likely needed (6 total I/Os)


 * Remove key_row4/key_col4 pins
 * ECSPI3_RDY signal removed (not needed due to no Rpi header)
 * P16D TS_ANA wired up to header (just so we have one "housekeeping" analog input available, e.g. for light sensor or temp sensor)

ECO20: Make LCD off-state bleed stronger
Experience with the audio codec indicates existing 330 ohm resistor is probably too weak to fight substantial leakage.

ECO21: Upgrade FPGA and power supply
Upgrade FPGA from Spartan 6 LX9 to LX45 -- enable more application such as digital oscope, logic analyzer, SDR, etc.

Upgrade capability of FPGA 1.2V VCCINT supply from 1A to 2A -- in anticipation of larger, more complex FPGA designs.

ECO22: Remove low-speed FPGA ADC
Making room for the hyperspace bypass. Actually, just a dual, 8-bit 800MSPS ADC. Or a single 12-bit 800MSPS ADC. Or another low-speed ADC, if you care.

ECO23: Remove low-speed digital I/O
Removed in favor of routing a dozen high-speed capable digital I/O to a high-speed header.

ECO24: Remove PWM I/O
Removed in favor of routing a dozen high-speed capable digital I/O to a high-speed header.

ECO25: Remove I2C FPGA ROM
The I2C FPGA ROM is deemed redundant with the SPI option. The SPI option allows for a higher capacity part that costs about the same. Also, there is no clear requirement for this part, it's simply available "just in case".

ECO26: Add DDR3 memory to FPGA
Adding a local DDR3 memory device to the FPGA. Trying for a 16-bit part so total B/W capable is 1.6 GB/s, sufficient for buffering high-speed ADC capture traces, etc.

Some signals are moved to a new bank:
 * AUD_MCLK displaced
 * EPIT_EPIT0 displaced
 * CLK2_P/_N displaced to bank 2
 * UIM_PWR displaced
 * FPGA_LED2 displaced
 * DDC_SCL, DDC_SDA displaced
 * RESETB_MCU displaced

In addition, C15F-C21F capacitors changed from 3.3V to 1.5V rails, as bank 1 is now a 1.5V VCCIO bank.

ECO27: Add high-speed expansion header to FPGA
Add header capable of high-speed differential (Gbit-speeds) expansion to the FPGA.

Power is provisioned at 1.5A @ 5V. Intention is for expansion card to have local power converters from the 5V line.

Pin-out has:


 * 16 high-speed LVDS-capable data lines
 * 2 high-speed LVDS clock lines
 * 2 high-speed LVDS status lines (e.g. for overflow signal)
 * approx 16-20 digital lines, intended for single-ended use. These are for configuring the high speed ADC, input voltage range, and also to serve as inputs for logic analysis purposes.
 * All I/Os can be configured, inside the FPGA, as low-speed 3.3V-capable digital I/O.

The goal is to support up to two channels 8-bit 800MSPS+ data capture, plus 8+ lines of logic analysis (ideally 16, but depends on routability). Since it's an add-on card, this could also be configured as a single 12-bit 800MSPS+ data capture with more digital I/O.

ECO 28: Remove CCLK terms
CCLK is greatly shortened due to removal of Rpi header. Trace length is now just 750 mils. Termination is no longer needed.

ECO 29: Add DDR3 VREF options
Add option to generate DDR3 VREF locally, improve bypassing of the lines.

ECO 30: SATA power cap interferes with expansion port
The 220uF bulk decap on SATA switched power port is too tall; it prevents a daughtercard from mounting for the FPGA expansion.

Replace with a pair of 22uF caps. This decision was made because (a) I don't like tantalums (b) getting another unique low-profile aluminum cap into inventory would be expensive and (c) as long as we're using SSDs I think we should be fine with 50uF total capacitance on the line. The big cap is questionably necessary, and if so, probably only for spinning disks.

ECO 31: Remove FPGA Done LED
Ain't nobody got time fo' that.

Seriously, though, they don't. It's not even populated and it's in the way.

ECO 32: Add power switch to FPGA expansion card
In standby/hibernate modes, we probably want to be able to turn off the power-hungry analog front ends on the expansion slot. Add a power switch that defaults to 'on', but wired to CPU to give an option to power down the expansion card.

software change required: Power enable is wired to SD1_DAT1 / ball C20.