import numpy as np
import matplotlib.pyplot as plt

Databits = [True, False, True, False, False, True, True, True, False, False, True]

Clock = np.concat([
    np.zeros(500),
    np.ones(500)
]*len(Databits))

Clock90 = np.concat([Clock[250:], np.ones(250)])

Data = []
for bit in Databits:
    if bit:
        Data.append(np.ones(1000))
    else:
        Data.append(np.zeros(1000))

Data = np.concat(Data)

Mod = np.logical_xor(Clock, Data)*2-1
plt.plot(Clock+1.5)
plt.plot(Clock90+1.5)
plt.plot(Data)
plt.plot(Mod-1.5)
plt.plot((Mod*Clock)-4)
plt.plot(np.cumsum((Mod*(Clock*2-1)))/1000-4)
plt.plot((Mod*Clock90)-6.5)
plt.plot(np.cumsum((Mod*(Clock90*2-1)))/500-6.5)

plt.grid()
ax = plt.gca()
ax.set_xticks(np.arange(0,len(Databits)*1000,1000))
plt.show()