def main(args): wb = RemoteClient() wb.open() # print('reset before: ', wb.regs.xgmii_reset.read()) # wb.regs.xgmii_reset.write(1) # print('reset after: ', wb.regs.xgmii_reset.read()) # time.sleep(5) # print('reset after: ', wb.regs.xgmii_reset.read()) # wb.regs.xgmii_reset.write(0) # print('reset after: ', wb.regs.xgmii_reset.read()) print(f'pcs status: {hex(wb.regs.xgmii_pcs_status.read())}') print('pcs reset: ', wb.regs.xgmii_pcs_config.write(1)) print(f'pcs status: {hex(wb.regs.xgmii_pcs_status.read())}') for i in range(1): print(wb.regs.f_sample_value.read() / 1e6) time.sleep(1) wb.close()
#!/usr/bin/env python3 import time from litex.tools.litex_client import RemoteClient from litescope.software.driver.analyzer import LiteScopeAnalyzerDriver wb = RemoteClient(debug=False) wb.open() regs = wb.regs analyzer = LiteScopeAnalyzerDriver(wb.regs, "analyzer", debug=False) # # # dfii_control_sel = 0x01 dfii_control_cke = 0x02 dfii_control_odt = 0x04 dfii_control_reset_n = 0x08 dfii_command_cs = 0x01 dfii_command_we = 0x02 dfii_command_cas = 0x04 dfii_command_ras = 0x08 dfii_command_wrdata = 0x10 dfii_command_rddata = 0x20 regs.sdram_dfii_control.write(0) # release reset regs.sdram_dfii_pi0_address.write(0x0) regs.sdram_dfii_pi0_baddress.write(0) regs.sdram_dfii_control.write(dfii_control_odt | dfii_control_reset_n)
# use arty_ddr3 design with this script to # find working bitslip/delay configuration dfii_control_sel = 0x01 dfii_control_cke = 0x02 dfii_control_odt = 0x04 dfii_control_reset_n = 0x08 dfii_command_cs = 0x01 dfii_command_we = 0x02 dfii_command_cas = 0x04 dfii_command_ras = 0x08 dfii_command_wrdata = 0x10 dfii_command_rddata = 0x20 wb = RemoteClient(debug=True) wb.open() regs = wb.regs # # # regs.sdram_dfii_control.write(0) # release reset regs.sdram_dfii_pi0_address.write(0x0) regs.sdram_dfii_pi0_baddress.write(0) regs.sdram_dfii_control.write(dfii_control_odt|dfii_control_reset_n) time.sleep(0.1) # bring cke high regs.sdram_dfii_pi0_address.write(0x0)
from litex.tools.litex_client import RemoteClient wb = RemoteClient("192.168.1.50", 1234, csr_data_width=8) wb.open() regs = wb.regs # # # print("temperature: %f°C" % (regs.xadc_temperature.read() * 503.975 / 4096 - 273.15)) print("vccint: %fV" % (regs.xadc_vccint.read() / 4096 * 3)) print("vccaux: %fV" % (regs.xadc_vccaux.read() / 4096 * 3)) print("vccbram: %fV" % (regs.xadc_vccbram.read() / 4096 * 3)) # # # wb.close()
def connect(desc, *args, add_args=None, **kw): parser = argparse.ArgumentParser(description=desc) get_args(parser, *args, **kw) # Common arguments parser.add_argument("--bind-ip", default="localhost", help="Host bind address") parser.add_argument("--bind-port", default=1234, help="Host bind port") # UART arguments parser.add_argument("--uart", action="store_true", help="Select UART interface") parser.add_argument("--uart-port", default=None, help="Set UART port") #parser.add_argument("--uart-baudrate", default=115200, # help="Set UART baudrate") # UDP arguments parser.add_argument("--udp", action="store_true", help="Select UDP interface") parser.add_argument("--udp-ip", default="192.168.100.50", help="Set UDP remote IP address") parser.add_argument("--udp-port", default=1234, help="Set UDP remote port") # PCIe arguments parser.add_argument("--pcie", action="store_true", help="Select PCIe interface") parser.add_argument("--pcie-bar", default=None, help="Set PCIe BAR") # USB arguments parser.add_argument("--usb", action="store_true", help="Select USB interface") parser.add_argument("--usb-vid", default=None, help="Set USB vendor ID") parser.add_argument("--usb-pid", default=None, help="Set USB product ID") parser.add_argument("--usb-max-retries", default=10, help="Number of times to try reconnecting to USB") if add_args is not None: add_args(parser) args = parser.parse_args() s = ServerProxy(args) s.start() while not s.ready: continue test_dir = os.path.join(TOP_DIR, get_testdir(args)) wb = RemoteClient(args.bind_ip, int(args.bind_port), csr_csv="{}/csr.csv".format(test_dir), debug=True) wb.open() print() print("Device DNA: {}".format(get_dna(wb))) print(" Git Rev: {}".format(get_git(wb))) print(" Platform: {}".format(get_platform(wb))) print(" Analyzer: {}".format(["No", "Yes"][hasattr(wb.regs, "analyzer")])) print(" XADC: {}".format(get_xadc(wb))) print() return args, wb
#!/usr/bin/env python3 from litex.tools.litex_client import RemoteClient rom_base = 0x00000000 dump_size = 0x8000 words_per_packet = 128 wb = RemoteClient() wb.open() # # # print("dumping cpu rom to dump.bin...") dump = [] for n in range(dump_size // (words_per_packet * 4)): dump += wb.read(rom_base + n * words_per_packet * 4, words_per_packet) f = open("dump.bin", "wb") for v in dump: f.write(v.to_bytes(4, byteorder="big")) f.close() # # # wb.close()
from litex.tools.litex_client import RemoteClient import numpy as np import matplotlib.pyplot as plt import pdb wb = RemoteClient() wb.open() ADC_SRAM_BASE = 0x20000000 nsamples = 1024 MAX_SAMPLES = 128 Fs = 50e6 midrange = 2048 if __name__ == '__main__': remaining_samples = nsamples - MAX_SAMPLES s = np.uint32(wb.read(ADC_SRAM_BASE, min(MAX_SAMPLES, nsamples))) while remaining_samples > 0: nsamples_to_read = min(remaining_samples, MAX_SAMPLES) s = np.append(s, wb.read(ADC_SRAM_BASE + len(s) * 4, nsamples_to_read)) remaining_samples -= nsamples_to_read s_a = np.uint16([s_i & 0xFFF for s_i in s]) s_b = np.uint16([s_i >> 16 for s_i in s]) wb.close() plt.subplot(3, 1, 1) plt.plot(s_a) plt.plot(s_b)
# use nexys_ddr3 design with this script to # find working bitslip/delay configuration dfii_control_sel = 0x01 dfii_control_cke = 0x02 dfii_control_odt = 0x04 dfii_control_reset_n = 0x08 dfii_command_cs = 0x01 dfii_command_we = 0x02 dfii_command_cas = 0x04 dfii_command_ras = 0x08 dfii_command_wrdata = 0x10 dfii_command_rddata = 0x20 wb = RemoteClient(csr_data_width=8) wb.open() regs = wb.regs # # # regs.sdram_dfii_control.write(0) # release reset regs.sdram_dfii_pi0_address.write(0x0) regs.sdram_dfii_pi0_baddress.write(0) regs.sdram_dfii_control.write(dfii_control_odt | dfii_control_reset_n) time.sleep(0.1) # bring cke high regs.sdram_dfii_pi0_address.write(0x0)
#!/usr/bin/env python3 import time import sys sys.path.append("../") from litex.tools.litex_client import RemoteClient wb = RemoteClient("192.168.1.50", 1234) wb.open() # # # # test uart for c in "hello world from host\n": wb.regs.uart_rxtx.write(ord(c)) # # # wb.close()