(no commit message)
[libreriscv.git] / HDL_workflow / HyperRAM.mdwn
1 # HyperRAM connections
2
3 * jumper wires <https://www.amazon.co.uk/Elegoo-120pcs-Multicolored-Breadboard-arduino-colorful/dp/B01EV70C78/>
4 * Note that cables have to be really short, they may need to
5 be constructed and soldered
6 <https://www.amazon.co.uk/HALJIA-2-54mm-Dupont-Jumper-Connectors/dp/B06WWB66WL/>
7 * nmigen [hyperram.py](https://git.libre-soc.org/?p=lambdasoc.git;a=blob;f=lambdasoc/periph/hyperram.py;hb=HEAD) module
8 * Winbond Datasheet for Quad 1bitsqared PMOD:
9 <https://ftp.libre-soc.org/W956x8MBYA_64Mb_HyperBus_pSRAM_TFBGA24_datasheet_A01-005_20211208.pdf>
10 * Winbond Verilog Model for W956A8MBY:
11 <https://www.winbond.com/resource-files/W956x8MBY_verilog_p.zip>
12 * [[shakti/m_class/HyperRAM]]
13
14 ```
15 from nmigen.resources.memory import HyperRAMResources
16 hyperram_ios = HyperRAMResources(cs_n="B13 C13 A12 A13",
17 dq="E14 C11 B10 E12 D12 A9 D11 D14",
18 rwds="C14", rst_n="E13", clk_p="D13",
19 clk_n="A14", # only in DDR mode
20 attrs=IOStandard("LVCMOS33"))
21 self.platform.add_extension(hyperram_ios)
22 io = self.platform.request("hyperram")
23 hyperram = HyperRAM(io=io, phy_kls=HyperRAMPHY,
24 latency=7) # Winbond W956D8MBYA
25 # latency=6 for Cypress S27KL0641DABHI020
26 ```
27
28 ## 1bitsquared HyperRAM PMOD
29
30 * <https://1bitsquared.de/products/pmod-hyperram>
31
32 | Pin | Function | Colour | Pin | Function | Colour |
33 | --- | -------- | ---------| --- | -------- | ---------|
34 | Top 7 | CS3N | Blue | Top 1 | CS2N | Green |
35 | Top 8 | CS1N | Purple | Top 2 | CS0N | Orange |
36 | Top 9 | RESETN | Grey | Top 3 | CK | Yellow |
37 | Top 10 | RWDS | White | Top 4 | CKN | Brown |
38 | Top 11 | GND | Black | Top 5 | GND | Black |
39 | Top 12 | 3V3 | Red | Top 6 | 3V3 | Red |
40
41 | Pin | Function | Colour | Pin | Function | Colour |
42 | --- | -------- | ---------| --- | -------- | ---------|
43 | Bot 7 | DQ7 | Blue | Bot 1 | DQ0 | Green |
44 | Bot 8 | DQ6 | Purple | Bot 2 | DQ1 | Orange |
45 | Bot 9 | DQ5 | Grey | Bot 3 | DQ2 | Yellow |
46 | Bot 10 | DQ4 | White | Bot 4 | DQ3 | Brown |
47 | Bot 11 | GND | Black | Bot 5 | GND | Black |
48 | Bot 12 | 3V3 | Red | Bot 6 | 3V3 | Red |
49
50 [[!img HDL_workflow/ENtvxc9WwAAGyzl.png size="400x" ]]
51 [[!img HDL_workflow/ENxOeloWsAMSw5u.jpeg size="500x" ]]
52
53 [[!img HDL_workflow/ENw4bZ8W4AM8FOS.png size="900x" ]]
54
55 [[!img HDL_workflow/pmod-hyperram-64mbit-dual-pmod_large.jpg size="700x" ]]
56
57 [[!img HDL_workflow/hyperram_connected_pmod.jpg size="700x" ]]
58
59 # VERSA ECP5 Connections
60
61 Table of connections:
62
63 | X4 pin # | FPGA IO PAD | Function | Wire Colour|
64 |-------------|-------------|-----------|------------|
65 | 3 IO0 | A12 | (CS2N) | Green |
66 | 4 IO1 | A13 | (CS3N) | Blue |
67 | 5 IO2 | B13 | (CS0N) | Orange |
68 | 6 IO3 | C13 | (CS1N) | Purple |
69 | 7 IO4 | D13 | (CK) | Yellow |
70 | 8 IO5 | E13 | (RSTN) | Grey |
71 | 9 IO6 | A14 | (CKN) | Brown |
72 | 10 IO7 | C14 | (RWDS) | White |
73 | 11 IO8 | D14 | (DQ7) | Blue |
74 | 12 IO9 | E14 | (DQ0) | Green |
75 | 13 IO10 | D11 | (DQ6) | Purple |
76 | 14 IO11 | C11 | (DQ1) | Orange |
77 | 15 IO12 | A9 | (DQ5) | Grey |
78 | 16 IO13 | B10 | (DQ2) | Yellow |
79 | 17 IO14 | D12 | (DQ4) | White |
80 | 18 IO15 | E12 | (DQ3) | Brown |
81 | 19 GND | GND | (GND) | Black |
82 | 20 +3.3V | 3.3V supply | (VCC) | Red |
83
84 [[!img HDL_workflow/versa_ecp5_x4_hyperram.png size="900x" ]]
85
86 [[!img 2020-11-03_13-25.png size="900x" ]]
87
88 # Digilent Arty a7-100t Connections
89
90 See <https://digilent.com/reference/_media/reference/programmable-logic/arty/arty_rm.pdf>
91
92 [[!img 2022-03-22_15-56.png size="900x" ]]