|
4 | 4 | from migen.bus import dfi
|
5 | 5 |
|
6 | 6 | class S6DDRPHY(Module):
|
7 |
| - def __init__(self, a, ba, d): |
| 7 | + def __init__(self, pads): |
| 8 | + self.dfi = dfi.Interface(len(pads.a), len(pads.ba), 2*len(pads.dq), 2) |
| 9 | + self.clk4x_wr_strb = Signal() |
| 10 | + self.clk4x_rd_strb = Signal() |
| 11 | + |
| 12 | + ### |
| 13 | + |
8 | 14 | inst_items = [
|
9 |
| - Instance.Parameter("NUM_AD", a), |
10 |
| - Instance.Parameter("NUM_BA", ba), |
11 |
| - Instance.Parameter("NUM_D", d), |
| 15 | + Instance.Parameter("NUM_AD", len(pads.a)), |
| 16 | + Instance.Parameter("NUM_BA", len(pads.ba)), |
| 17 | + Instance.Parameter("NUM_D", 2*len(pads.dq)), |
| 18 | + |
12 | 19 | Instance.Input("sys_clk", ClockSignal()),
|
13 | 20 | Instance.Input("clk2x_270", ClockSignal("sys2x_270")),
|
14 | 21 | Instance.Input("clk4x_wr", ClockSignal("sys4x_wr")),
|
15 |
| - Instance.Input("clk4x_rd", ClockSignal("sys4x_rd")) |
| 22 | + Instance.Input("clk4x_rd", ClockSignal("sys4x_rd")), |
| 23 | + |
| 24 | + Instance.Input("clk4x_wr_strb", self.clk4x_wr_strb), |
| 25 | + Instance.Input("clk4x_rd_strb", self.clk4x_rd_strb), |
| 26 | + |
| 27 | + Instance.Output("sd_a", pads.a), |
| 28 | + Instance.Output("sd_ba", pads.ba), |
| 29 | + Instance.Output("sd_cs_n", pads.cs_n), |
| 30 | + Instance.Output("sd_cke", pads.cke), |
| 31 | + Instance.Output("sd_ras_n", pads.ras_n), |
| 32 | + Instance.Output("sd_cas_n", pads.cas_n), |
| 33 | + Instance.Output("sd_we_n", pads.we_n), |
| 34 | + Instance.InOut("sd_dq", pads.dq), |
| 35 | + Instance.Output("sd_dm", pads.dm), |
| 36 | + Instance.InOut("sd_dqs", pads.dqs) |
16 | 37 | ]
|
17 |
| - for name, width, cl in [ |
18 |
| - ("clk4x_wr_strb", 1, Instance.Input), |
19 |
| - ("clk4x_rd_strb", 1, Instance.Input), |
20 |
| - |
21 |
| - ("sd_a", a, Instance.Output), |
22 |
| - ("sd_ba", ba, Instance.Output), |
23 |
| - ("sd_cs_n", 1, Instance.Output), |
24 |
| - ("sd_cke", 1, Instance.Output), |
25 |
| - ("sd_ras_n", 1, Instance.Output), |
26 |
| - ("sd_cas_n", 1, Instance.Output), |
27 |
| - ("sd_we_n", 1, Instance.Output), |
28 |
| - ("sd_dq", d//2, Instance.InOut), |
29 |
| - ("sd_dm", d//16, Instance.Output), |
30 |
| - ("sd_dqs", d//16, Instance.InOut) |
31 |
| - |
32 |
| - ]: |
33 |
| - s = Signal(width, name=name) |
34 |
| - setattr(self, name, s) |
35 |
| - inst_items.append(cl(name, s)) |
36 |
| - |
37 |
| - self.dfi = dfi.Interface(a, ba, d, 2) |
38 | 38 | inst_items += [Instance.Input(name, signal)
|
39 | 39 | for name, signal in self.dfi.get_standard_names(True, False)]
|
40 | 40 | inst_items += [Instance.Output(name, signal)
|
41 | 41 | for name, signal in self.dfi.get_standard_names(False, True)]
|
42 |
| - |
43 | 42 | self.specials += Instance("s6ddrphy", *inst_items)
|
0 commit comments