28 lines
893 B
Python
28 lines
893 B
Python
import xmostest
|
|
|
|
class UARTClockDevice(xmostest.SimThread):
|
|
def __init__(self, clock_port, clock_frequency):
|
|
"""
|
|
Create a clock input to a given port for the XCore.
|
|
|
|
:param: clock_port Port to clock
|
|
:param: clock_frequency Frequency in Hz of the clock
|
|
"""
|
|
self._clock_port = clock_port
|
|
self._clock_frequency = clock_frequency
|
|
|
|
def run(self):
|
|
xsi = self.xsi
|
|
time = xsi.get_time()
|
|
|
|
# (1s/(freq))/2 = T for 1 edge. 1s = 1e9ns, 0.5s = 5e8ns
|
|
half_period_ns = float(5e8) / self._clock_frequency
|
|
while True:
|
|
xsi.drive_port_pins(self._clock_port, 1)
|
|
self.wait_until(time + half_period_ns)
|
|
time += half_period_ns
|
|
|
|
xsi.drive_port_pins(self._clock_port, 0)
|
|
self.wait_until(time + half_period_ns)
|
|
time += half_period_ns
|