@@ -59,18 +59,23 @@ def IrDAResource(number, *, rx, tx, en=None, sd=None,
5959def SPIResource (* args , cs , clk , copi , cipo , int = None , reset = None ,
6060 conn = None , attrs = None , role = "controller" ):
6161 assert role in ("controller" , "peripheral" )
62+ assert copi is not None or cipo is not None # support unidirectional SPI
6263
6364 io = []
6465 if role == "controller" :
6566 io .append (Subsignal ("cs" , PinsN (cs , dir = "o" , conn = conn )))
6667 io .append (Subsignal ("clk" , Pins (clk , dir = "o" , conn = conn , assert_width = 1 )))
67- io .append (Subsignal ("copi" , Pins (copi , dir = "o" , conn = conn , assert_width = 1 )))
68- io .append (Subsignal ("cipo" , Pins (cipo , dir = "i" , conn = conn , assert_width = 1 )))
68+ if copi is not None :
69+ io .append (Subsignal ("copi" , Pins (copi , dir = "o" , conn = conn , assert_width = 1 )))
70+ if cipo is not None :
71+ io .append (Subsignal ("cipo" , Pins (cipo , dir = "i" , conn = conn , assert_width = 1 )))
6972 else : # peripheral
7073 io .append (Subsignal ("cs" , PinsN (cs , dir = "i" , conn = conn , assert_width = 1 )))
7174 io .append (Subsignal ("clk" , Pins (clk , dir = "i" , conn = conn , assert_width = 1 )))
72- io .append (Subsignal ("copi" , Pins (copi , dir = "i" , conn = conn , assert_width = 1 )))
73- io .append (Subsignal ("cipo" , Pins (cipo , dir = "oe" , conn = conn , assert_width = 1 )))
75+ if copi is not None :
76+ io .append (Subsignal ("copi" , Pins (copi , dir = "i" , conn = conn , assert_width = 1 )))
77+ if cipo is not None :
78+ io .append (Subsignal ("cipo" , Pins (cipo , dir = "oe" , conn = conn , assert_width = 1 )))
7479 if int is not None :
7580 if role == "controller" :
7681 io .append (Subsignal ("int" , Pins (int , dir = "i" , conn = conn )))
@@ -95,8 +100,7 @@ def I2CResource(*args, scl, sda, conn=None, attrs=None):
95100 return Resource .family (* args , default_name = "i2c" , ios = io )
96101
97102
98- def DirectUSBResource (* args , d_p , d_n , pullup = None , vbus_valid = None ,
99- conn = None , attrs = None ):
103+ def DirectUSBResource (* args , d_p , d_n , pullup = None , vbus_valid = None , conn = None , attrs = None ):
100104
101105 io = []
102106 io .append (Subsignal ("d_p" , Pins (d_p , dir = "io" , conn = conn , assert_width = 1 )))
0 commit comments