FServe / vram /nand_page.py
Factor Studios
Upload 37 files
e9bc512 verified
raw
history blame contribute delete
725 Bytes
from nand_cell import MultiLevelCell
class Page:
def __init__(self, num_cells, channel_length, drift_velocity, levels):
self.cells = [MultiLevelCell(channel_length, drift_velocity, levels) for _ in range(num_cells)]
self.ecc = 0 # Placeholder for ECC bits
def program(self, data):
for i, value in enumerate(data):
self.cells[i].program(value)
self.ecc = self.calculate_ecc(data)
def erase(self):
for cell in self.cells:
cell.erase()
self.ecc = 0
def read(self):
data = [cell.read() for cell in self.cells]
return data, self.ecc
def calculate_ecc(self, data):
return sum(data) % 2