# System on a chip ## Adding IPCore to SoC Edit ~/litex/litex-boards/litex_boards/targets/terasic_de10lite.py, add new package and modify a BaseSoC class. ``` from litex.soc.cores.hexdisp import HexDisp ``` ``` class BaseSoC(SoCCore): def __init__(self, sys_clk_freq=50e6, with_led_chaser = True, with_disp = True, with_video_terminal = False, **kwargs): platform = terasic_de10lite.Platform() # CRG -------------------------------------------------------------------------------------- self.crg = _CRG(platform, sys_clk_freq) # SoCCore ---------------------------------------------------------------------------------- SoCCore.__init__(self, platform, sys_clk_freq, ident="LiteX SoC on DE10-Lite", **kwargs) # SDR SDRAM -------------------------------------------------------------------------------- if not self.integrated_main_ram_size: self.sdrphy = GENSDRPHY(platform.request("sdram"), sys_clk_freq) self.add_sdram("sdram", phy = self.sdrphy, module = IS42S16320(sys_clk_freq, "1:1"), l2_cache_size = kwargs.get("l2_size", 8192) ) # Video Terminal --------------------------------------------------------------------------- if with_video_terminal: self.videophy = VideoVGAPHY(platform.request("vga"), clock_domain="vga") self.add_video_terminal(phy=self.videophy, timings="800x600@60Hz", clock_domain="vga") # Leds ------------------------------------------------------------------------------------- if with_led_chaser: self.leds = LedChaser( pads = platform.request_all("user_led"), sys_clk_freq = sys_clk_freq) if with_disp: self.disp = HexDisp( output_hex0 = platform.request("seven_seg",0), output_hex1 = platform.request("seven_seg",1), output_hex2 = platform.request("seven_seg",2), output_hex3 = platform.request("seven_seg",3), output_hex4 = platform.request("seven_seg",4), output_hex5 = platform.request("seven_seg",5)) ``` ## Compiling a software Create a directory lab5 and copy files from ~/litex/litex/litex/soc/software/demo into it. Then compile the software and program the board with the new software. ``` python3 -m litex_boards.targets.terasic_de10lite --build export SOC_DIRECTORY=~/litex/litex/litex/soc python3 demo.py --build-path=build/terasic_de10lite/ --mem=rom python3 -m litex_boards.targets.terasic_de10lite --integrated-rom-init=demo.bin --build --load ``` ## Tasks In file build/terasic_de10lite/software/include/generated/csr.h in lab5 directory you can find functions to control disp_hex. Define a new function in disp.c file, that will set the current date on 7-seg displays, if you will have a problem you can check implementation of **static void led_cmd(void)** in main.c. On the basis of disp.c add new command to main.c that will print the date in terminal. To compile disp.c with rest of files you have to modify the Makefile.