Skip to content

Commit

Permalink
uart/software: remove litescope dependency
Browse files Browse the repository at this point in the history
enjoy-digital committed Sep 21, 2015
1 parent bc1450e commit b2a4eea
Showing 2 changed files with 56 additions and 1 deletion.
55 changes: 55 additions & 0 deletions misoclib/com/uart/software/reg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import csv


class MappedReg:
def __init__(self, readfn, writefn, name, addr, length, busword, mode):
self.readfn = readfn
self.writefn = writefn
self.addr = addr
self.length = length
self.busword = busword
self.mode = mode

def read(self):
if self.mode not in ["rw", "ro"]:
raise KeyError(name + "register not readable")
datas = self.readfn(self.addr, burst_length=self.length)
if isinstance(datas, int):
return datas
else:
data = 0
for i in range(self.length):
data = data << self.busword
data |= datas[i]
return data

def write(self, value):
if self.mode not in ["rw", "wo"]:
raise KeyError(name + "register not writable")
datas = []
for i in range(self.length):
datas.append((value >> ((self.length-1-i)*self.busword)) & (2**self.busword-1))
self.writefn(self.addr, datas)


class MappedRegs:
def __init__(self, d):
self.d = d

def __getattr__(self, attr):
try:
return self.__dict__['d'][attr]
except KeyError:
pass
raise KeyError("No such register " + attr)


def build_map(addrmap, busword, readfn, writefn):
csv_reader = csv.reader(open(addrmap), delimiter=',', quotechar='#')
d = {}
for item in csv_reader:
name, addr, length, mode = item
addr = int(addr.replace("0x", ""), 16)
length = int(length)
d[name] = MappedReg(readfn, writefn, name, addr, length, busword, mode)
return MappedRegs(d)
2 changes: 1 addition & 1 deletion misoclib/com/uart/software/wishbone.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import serial
from struct import *
from misoclib.tools.litescope.software.driver.reg import *
from misoclib.com.uart.software.reg import *


def write_b(uart, data):

0 comments on commit b2a4eea

Please sign in to comment.