Update chaoskey to v1.0
[web/altusmetrum] / ChaosKey / index.mdwn
1 # ChaosKey
2
3 This is a hardware True Random Number Generator that attaches via USB.
4
5 ## Version 1.0 ##
6
7 1.0 is the first production version of ChaosKey. The first run of 1000
8 units is expected sometime around August, 2016.
9
10 <a href="v1.0/chaoskey-bare.jpg"><img src="v1.0/chaoskey-bare-thumb.jpg">/a>
11
12 <a href="v1.0/chaoskey-boxed.jpg"><img src="v1.0/chaoskey-boxed-thumb.jpg">/a>
13
14 ### Version 1.0 Hardware ###
15
16  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
17     * ARM Cortex-M0 MCU
18     * 32k Flash
19     * 6k RAM
20     * USB 2.0 Full Speed
21     * Crystal-less operation
22  * 20V noise source
23     * AP3015A boost regulator
24     * back-to-back 3904 transistor noise
25  * [OPA356](http://www.ti.com/product/opa356) op amp
26     * 200MHz GBP
27
28 Here's a circuit diagram of the noise source:
29
30 <img src="v1.0/noise-source.svg">
31
32 ### Version 1.0 Bits ###
33
34 Source code for the firmware, flash loader and a utility to pull raw
35 bits from the noise source are available here:
36
37 [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary)
38
39 Hardware designs using [gEDA](http://www.geda-project.org/) are
40 available here:
41
42 [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary)
43
44 ## Version 0.3 ##
45
46 This one uses the better noise source coupled with an op amp that
47 provides 2MHz of bandwidth at a gain of 100, offering linear frequency
48 response at a million samples per second.
49
50 A photo of prototype version 0.3:
51
52 <a href="v0.3/chaoskey-v0.3.jpg"> <img src="v0.3/chaoskey-v0.3-thumb.jpg"></a>
53
54 Here's a circuit diagram of the noise source:
55
56 <img src="v0.3/noise-source.svg">
57
58 Version 0.3 uses the same hardware design as version 1.0, except that
59 it uses a QFP package version of the processor instead of the QFN used
60 in 1.0, and hence needs a larger circuit board.
61
62 ## Version 0.2 ##
63
64 This version uses a better noise source, but the single transistor amp
65 designed to get from the 20mV noise source to a digital value doesn't
66 provide enough bandwidth, so the resulting signal seen by the CPU has
67 poor frequency response.
68
69 Here's a photo of prototype version 0.2:
70
71 <a href="v0.2/chaoskey-v0.2.jpg"> <img src="v0.2/chaoskey-v0.2-thumb.jpg"></a>
72
73 ### Version 0.2 Hardware ###
74
75  * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip
76     * ARM Cortex-M0 MCU
77     * 32k Flash
78     * 6k RAM
79     * USB 2.0
80     * Crystal-less operation
81  * 20V noise source
82     * AP3015A boost regulator
83     * back-to-back 3904 transistor noise
84
85 ## Version 0.1 ##
86
87 These are photos of prototype version 0.1:
88
89 <a href="v0.1/chaoskey-v0.1-top.jpg"> <img src="v0.1/chaoskey-v0.1-top-thumb.jpg"></a>
90 <a href="v0.1/chaoskey-v0.1-bottom.jpg"> <img src="v0.1/chaoskey-v0.1-bottom-thumb.jpg"></a>
91
92 ### Version 0.1 Hardware ###
93
94  * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip
95         * ARM Cortex-M0 MCU
96         * 32k Flash
97         * 6k RAM
98         * USB 2.0
99         * 8 12-bit analog inputs
100         * I2C, SPI, async serial
101         * digital I/O
102  * ZXRE1004 zener diode noise source
103  * MCP6L92 dual op-amp
104
105 ## Software ##
106
107 * Firmware Features
108         * [AltOS](../AltOS/) is written mostly in C with some ARM assembler
109 * Tools Used
110         * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout
111         * [GCC](http://gcc.gnu.org/) compiler and source debugger
112 * Licenses
113         * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
114         * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)