|
4 | 4 | from mibuild.generic_platform import *
|
5 | 5 | from mibuild.crg import SimpleCRG
|
6 | 6 | from mibuild.xilinx import XilinxPlatform
|
7 |
| -from mibuild.xilinx.programmer import XC3SProg |
| 7 | +from mibuild.xilinx.programmer import XC3SProg, FpgaProg |
8 | 8 |
|
9 | 9 | _io = [
|
10 |
| - ("user_led", 0, Pins("P11"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
11 |
| - ("user_led", 1, Pins("N9"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
12 |
| - ("user_led", 2, Pins("M9"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
13 |
| - ("user_led", 3, Pins("P9"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
14 |
| - ("user_led", 4, Pins("T8"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
15 |
| - ("user_led", 5, Pins("N8"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
16 |
| - ("user_led", 6, Pins("P8"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
17 |
| - ("user_led", 7, Pins("P7"), IOStandard("LVTTL"), Misc("SLEW=SLOW")), |
18 |
| - |
19 |
| - ("user_sw", 0, Pins("L1"), IOStandard("LVTTL"), Misc("PULLUP")), |
20 |
| - ("user_sw", 1, Pins("L3"), IOStandard("LVTTL"), Misc("PULLUP")), |
21 |
| - ("user_sw", 2, Pins("L4"), IOStandard("LVTTL"), Misc("PULLUP")), |
22 |
| - ("user_sw", 3, Pins("L5"), IOStandard("LVTTL"), Misc("PULLUP")), |
| 10 | + ("user_led", 0, Pins("P11"), IOStandard("LVCMOS33")), |
| 11 | + ("user_led", 1, Pins("N9"), IOStandard("LVCMOS33")), |
| 12 | + ("user_led", 2, Pins("M9"), IOStandard("LVCMOS33")), |
| 13 | + ("user_led", 3, Pins("P9"), IOStandard("LVCMOS33")), |
| 14 | + ("user_led", 4, Pins("T8"), IOStandard("LVCMOS33")), |
| 15 | + ("user_led", 5, Pins("N8"), IOStandard("LVCMOS33")), |
| 16 | + ("user_led", 6, Pins("P8"), IOStandard("LVCMOS33")), |
| 17 | + ("user_led", 7, Pins("P7"), IOStandard("LVCMOS33")), |
| 18 | + |
| 19 | + ("user_sw", 0, Pins("L1"), IOStandard("LVCMOS33"), Misc("PULLUP")), |
| 20 | + ("user_sw", 1, Pins("L3"), IOStandard("LVCMOS33"), Misc("PULLUP")), |
| 21 | + ("user_sw", 2, Pins("L4"), IOStandard("LVCMOS33"), Misc("PULLUP")), |
| 22 | + ("user_sw", 3, Pins("L5"), IOStandard("LVCMOS33"), Misc("PULLUP")), |
23 | 23 |
|
24 | 24 | ("clk32", 0, Pins("J4"), IOStandard("LVCMOS33")),
|
25 | 25 | ("clk50", 0, Pins("K3"), IOStandard("LVCMOS33")),
|
26 | 26 |
|
27 | 27 | ("spiflash", 0,
|
28 |
| - Subsignal("cs_n", Pins("T3"), IOStandard("LVTTL")), |
29 |
| - Subsignal("clk", Pins("R11"), IOStandard("LVTTL")), |
30 |
| - Subsignal("mosi", Pins("T10"), IOStandard("LVTTL")), |
31 |
| - Subsignal("miso", Pins("P10"), IOStandard("LVTTL")) |
| 28 | + Subsignal("cs_n", Pins("T3"), IOStandard("LVCMOS33")), |
| 29 | + Subsignal("clk", Pins("R11"), IOStandard("LVCMOS33")), |
| 30 | + Subsignal("mosi", Pins("T10"), IOStandard("LVCMOS33")), |
| 31 | + Subsignal("miso", Pins("P10"), IOStandard("LVCMOS33")) |
32 | 32 | ),
|
33 | 33 |
|
34 | 34 | ("adc", 0,
|
35 |
| - Subsignal("cs_n", Pins("F6"), IOStandard("LVTTL")), |
36 |
| - Subsignal("clk", Pins("G6"), IOStandard("LVTTL")), |
37 |
| - Subsignal("mosi", Pins("H4"), IOStandard("LVTTL")), |
38 |
| - Subsignal("miso", Pins("H5"), IOStandard("LVTTL")) |
| 35 | + Subsignal("cs_n", Pins("F6"), IOStandard("LVCMOS33")), |
| 36 | + Subsignal("clk", Pins("G6"), IOStandard("LVCMOS33")), |
| 37 | + Subsignal("mosi", Pins("H4"), IOStandard("LVCMOS33")), |
| 38 | + Subsignal("miso", Pins("H5"), IOStandard("LVCMOS33")) |
39 | 39 | ),
|
40 | 40 |
|
41 | 41 | ("serial", 0,
|
42 |
| - Subsignal("tx", Pins("N6"), IOStandard("LVTTL")), # FTDI D1 |
43 |
| - Subsignal("rx", Pins("M7"), IOStandard("LVTTL")) # FTDI D0 |
| 42 | + Subsignal("tx", Pins("N6"), IOStandard("LVCMOS33")), # FTDI D1 |
| 43 | + Subsignal("rx", Pins("M7"), IOStandard("LVCMOS33")) # FTDI D0 |
44 | 44 | ),
|
45 | 45 |
|
46 | 46 | ("audio", 0,
|
47 |
| - Subsignal("a0", Pins("B8"), IOStandard("LVTTL")), |
48 |
| - Subsignal("a1", Pins("A8"), IOStandard("LVTTL")) |
| 47 | + Subsignal("a0", Pins("B8"), IOStandard("LVCMOS33")), |
| 48 | + Subsignal("a1", Pins("A8"), IOStandard("LVCMOS33")) |
49 | 49 | ),
|
50 | 50 |
|
51 |
| - ("sdram_clock", 0, Pins("G16"), IOStandard("LVTTL")), |
| 51 | + ("sdram_clock", 0, Pins("G16"), IOStandard("LVCMOS33"), Misc("SLEW=FAST")), |
52 | 52 | ("sdram", 0,
|
53 | 53 | Subsignal("a", Pins("T15 R16 P15 P16 N16 M15 M16 L16 K15 K16 R15 J16 H15")),
|
54 | 54 | Subsignal("dq", Pins("T13 T12 R12 T9 R9 T7 R7 T6 F16 E15 E16 D16 B16 B15 C16 C15")),
|
|
58 | 58 | Subsignal("cs_n", Pins("R1")),
|
59 | 59 | Subsignal("cke", Pins("H16")),
|
60 | 60 | Subsignal("ba", Pins("R14 T14")),
|
61 |
| - Subsignal("dm", Pins("T5 F15")) |
| 61 | + Subsignal("dm", Pins("T5 F15")), |
| 62 | + IOStandard("LVCMOS33"), Misc("SLEW=FAST") |
62 | 63 | ),
|
63 | 64 |
|
64 | 65 | ("sd", 0,
|
|
67 | 68 | Subsignal("d", Pins("M10")),
|
68 | 69 | Subsignal("d1", Pins("L10")),
|
69 | 70 | Subsignal("d2", Pins("J11")),
|
70 |
| - Subsignal("cmd", Pins("K11")) |
| 71 | + Subsignal("cmd", Pins("K11")), |
| 72 | + IOStandard("LVCMOS33") |
71 | 73 | ),
|
72 | 74 |
|
73 | 75 | ("dvi_in", 0,
|
74 | 76 | Subsignal("clk_p", Pins("C9"), IOStandard("TMDS_33")),
|
75 | 77 | Subsignal("clk_n", Pins("A9"), IOStandard("TMDS_33")),
|
76 | 78 | Subsignal("data_p", Pins("C7 B6 B5"), IOStandard("TMDS_33")),
|
77 | 79 | Subsignal("data_n", Pins("A7 A6 A5"), IOStandard("TMDS_33")),
|
78 |
| - Subsignal("scl", Pins("C1"), IOStandard("LVTTL")), |
79 |
| - Subsignal("sda", Pins("B1"), IOStandard("LVTTL")) |
| 80 | + Subsignal("scl", Pins("C1"), IOStandard("LVCMOS33")), |
| 81 | + Subsignal("sda", Pins("B1"), IOStandard("LVCMOS33")) |
80 | 82 | ),
|
81 | 83 |
|
82 | 84 | ("dvi_out", 0,
|
|
97 | 99 | ]
|
98 | 100 |
|
99 | 101 | class Platform(XilinxPlatform):
|
100 |
| - default_clk_name = "clk50" |
101 |
| - default_clk_period = 20 |
| 102 | + default_clk_name = "clk32" |
| 103 | + default_clk_period = 31.25 |
102 | 104 |
|
103 |
| - def __init__(self, device="xc6slx9"): |
| 105 | + def __init__(self, device="xc6slx9", programmer="xc3sprog"): |
| 106 | + self.programmer = programmer |
104 | 107 | XilinxPlatform.__init__(self, device+"-3-ftg256", _io, _connectors)
|
105 | 108 |
|
106 | 109 | def create_programmer(self):
|
107 |
| - return XC3SProg("minispartan6", "bscan_spi_minispartan6.bit") |
| 110 | + if self.programmer == "xc3sprog": |
| 111 | + return XC3SProg("minispartan6", "bscan_spi_minispartan6.bit") |
| 112 | + elif self.programmer == "fpgaprog": |
| 113 | + return FpgaProg() |
| 114 | + else: |
| 115 | + raise ValueError("{} programmer is not supported".format(programmer)) |
0 commit comments