From 637dfa2c07f229d360ea53fd7a085feeb8df08f8 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Mon, 21 Sep 2020 02:55:13 +0200 Subject: [PATCH] Created Makefile to build entire project and moved microblaze code back into the repo --- .gitignore | 12 +- .vimlocal | 1 + Makefile | 28 + cmds.sh | 17 + mb/Graphics/.cproject | 240 + mb/Graphics/.project | 26 + mb/Graphics/Release/Graphics.elf | Bin 0 -> 51412 bytes mb/Graphics/Release/makefile | 65 + mb/Graphics/Release/objects.mk | 8 + mb/Graphics/Release/sources.mk | 21 + mb/Graphics/Release/src/main.d | 25 + mb/Graphics/Release/src/main.o | Bin 0 -> 11624 bytes mb/Graphics/Release/src/subdir.mk | 27 + mb/Graphics/src/README.txt | 1 + mb/Graphics/src/lscript.ld | 212 + mb/Graphics/src/main.c | 265 + mb/Graphics_bsp/.cproject | 22 + mb/Graphics_bsp/.project | 80 + mb/Graphics_bsp/.sdkproject | 3 + .../org.eclipse.cdt.codan.core.prefs | 34 + mb/Graphics_bsp/Makefile | 21 + mb/Graphics_bsp/libgen.options | 3 + mb/Graphics_bsp/system.mss | 39 + mb/hardware/.project | 12 + mb/hardware/system.xml | 5833 +++++++++++++++++ mb/hardware/system_bd.bmm | 16 + syn/.gitignore | 4 - syn/main.prj | 12 + syn/main.ut | 31 + syn/main.xst | 53 + 30 files changed, 7105 insertions(+), 6 deletions(-) create mode 100644 .vimlocal create mode 100644 Makefile create mode 100755 cmds.sh create mode 100644 mb/Graphics/.cproject create mode 100644 mb/Graphics/.project create mode 100755 mb/Graphics/Release/Graphics.elf create mode 100644 mb/Graphics/Release/makefile create mode 100644 mb/Graphics/Release/objects.mk create mode 100644 mb/Graphics/Release/sources.mk create mode 100644 mb/Graphics/Release/src/main.d create mode 100644 mb/Graphics/Release/src/main.o create mode 100644 mb/Graphics/Release/src/subdir.mk create mode 100644 mb/Graphics/src/README.txt create mode 100644 mb/Graphics/src/lscript.ld create mode 100644 mb/Graphics/src/main.c create mode 100644 mb/Graphics_bsp/.cproject create mode 100644 mb/Graphics_bsp/.project create mode 100644 mb/Graphics_bsp/.sdkproject create mode 100644 mb/Graphics_bsp/.settings/org.eclipse.cdt.codan.core.prefs create mode 100644 mb/Graphics_bsp/Makefile create mode 100644 mb/Graphics_bsp/libgen.options create mode 100644 mb/Graphics_bsp/system.mss create mode 100644 mb/hardware/.project create mode 100644 mb/hardware/system.xml create mode 100644 mb/hardware/system_bd.bmm delete mode 100644 syn/.gitignore create mode 100644 syn/main.prj create mode 100644 syn/main.ut create mode 100644 syn/main.xst diff --git a/.gitignore b/.gitignore index 506079d..a3c4065 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -*.log - # Created by https://www.toptal.com/developers/gitignore/api/xilinxise # Edit at https://www.toptal.com/developers/gitignore?templates=xilinxise @@ -74,3 +72,13 @@ _xmsgs/ # End of https://www.toptal.com/developers/gitignore/api/xilinxise +*.log +syn/* +!syn/main.prj +!syn/main.ut +!syn/main.xst + +mb/*.elf +mb/*.d +mb/*.o +mb/Graphics_bsp/microblaze_mcs diff --git a/.vimlocal b/.vimlocal new file mode 100644 index 0000000..6b16e68 --- /dev/null +++ b/.vimlocal @@ -0,0 +1 @@ +map :Make diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8d3dfae --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +all: syn/main.bin + +syn/main.bin: syn/main.ncd mb/Graphics/Release/Graphics.elf + @cd syn && bitgen -intstyle ise -f main.ut main.ncd + +syn/main.ncd: syn/main.prj syn/main.xst src/*.v ipcore_dir/*.v syn/xst/projnav.tmp/ + @cd syn && xst -intstyle ise -ifn "main.xst" -ofn "main.syr" + @cd syn && ngdbuild -intstyle ise -dd _ngo -sd ../ipcore_dir -nt timestamp -i -p xc6slx9-tqg144-2 main.ngc main.ngd -bm "../ipcore_dir/microblaze_mcs.bmm" + @cd syn && map -intstyle ise -p xc6slx9-tqg144-2 -w -logic_opt off -ol high -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -mt off -ir off -pr off -lc off -power off -o main_map.ncd main.ngd main.pcf + @cd syn && par -w -intstyle ise -ol high -mt off main_map.ncd main.ncd main.pcf + @cd syn && trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml main.twx main.ncd -o main.twr main.pcf + +syn/xst/projnav.tmp/: + @mkdir -p syn/xst/projnav.tmp + +mb/Graphics/Release/Graphics.elf: mb + @echo + +.PHONY: mb +mb: + @$(MAKE) -C mb/Graphics_bsp all + @$(MAKE) -C mb/Graphics/Release all + +.PHONY: clean +clean: + @cd syn && find . ! -name 'main.prj' ! -name 'main.ut' ! -name 'main.xst' ! -name 'Makefile' ! -name '.' -exec rm -rf {} + + @$(MAKE) -C mb/Graphics_bsp clean + @$(MAKE) -C mb/Graphics/Release clean diff --git a/cmds.sh b/cmds.sh new file mode 100755 index 0000000..9a32afc --- /dev/null +++ b/cmds.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# @todo We need to figure out the dependecies and turn this into a Makefile + +# mkdir -p xst/projnav.tmp && \ + +# xst -intstyle ise -ifn "/home/tim/Projects/z80/hdmi/syn/main.xst" -ofn "/home/tim/Projects/z80/hdmi/syn/main.syr" +# +# ngdbuild -intstyle ise -dd _ngo -sd ../ipcore_dir -nt timestamp -i -p xc6slx9-tqg144-2 main.ngc main.ngd -bm "../ipcore_dir/microblaze_mcs.bmm" +# +# map -intstyle ise -p xc6slx9-tqg144-2 -w -logic_opt off -ol high -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -mt off -ir off -pr off -lc off -power off -o main_map.ncd main.ngd main.pcf +# +# par -w -intstyle ise -ol high -mt off main_map.ncd main.ncd main.pcf +# +# trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml main.twx main.ncd -o main.twr main.pcf + +bitgen -intstyle ise -f main.ut main.ncd diff --git a/mb/Graphics/.cproject b/mb/Graphics/.cproject new file mode 100644 index 0000000..be440c1 --- /dev/null +++ b/mb/Graphics/.cproject @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mb/Graphics/.project b/mb/Graphics/.project new file mode 100644 index 0000000..0145828 --- /dev/null +++ b/mb/Graphics/.project @@ -0,0 +1,26 @@ + + + Graphics + LED_Controller_bsp - microblaze_mcs + + LED_Controller_bsp + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/mb/Graphics/Release/Graphics.elf b/mb/Graphics/Release/Graphics.elf new file mode 100755 index 0000000000000000000000000000000000000000..40ce029f71bfa3d8ca16289165897a36cb77db9f GIT binary patch literal 51412 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 Hw|xHxbZPva literal 0 HcmV?d00001 diff --git a/mb/Graphics/Release/makefile b/mb/Graphics/Release/makefile new file mode 100644 index 0000000..1c78fd6 --- /dev/null +++ b/mb/Graphics/Release/makefile @@ -0,0 +1,65 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include src/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +ELFSIZE += \ + +ELFCHECK += \ + + +# All Target +all: Graphics.elf secondary-outputs + +# Tool invocations +Graphics.elf: $(OBJS) ../src/lscript.ld $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: MicroBlaze gcc linker' + mb-gcc -Wl,-T -Wl,../src/lscript.ld -L../../Graphics_bsp/microblaze_mcs/lib -mlittle-endian -mcpu=v8.40.a -mxl-soft-mul -Wl,--no-relax -Wl,--gc-sections -o "Graphics.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +Graphics.elf.size: Graphics.elf + @echo 'Invoking: MicroBlaze Print Size' + mb-size Graphics.elf |tee "Graphics.elf.size" + @echo 'Finished building: $@' + @echo ' ' + +Graphics.elf.elfcheck: Graphics.elf + @echo 'Invoking: Xilinx ELF Check' + elfcheck Graphics.elf -hw ../../hardware/system.xml -pe microblaze_mcs |tee "Graphics.elf.elfcheck" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES)$(ELFSIZE)$(ELFCHECK)$(S_UPPER_DEPS) Graphics.elf + -@echo ' ' + +secondary-outputs: $(ELFSIZE) $(ELFCHECK) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/mb/Graphics/Release/objects.mk b/mb/Graphics/Release/objects.mk new file mode 100644 index 0000000..dca16ac --- /dev/null +++ b/mb/Graphics/Release/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := -Wl,--start-group,-lxil,-lgcc,-lc,--end-group + diff --git a/mb/Graphics/Release/sources.mk b/mb/Graphics/Release/sources.mk new file mode 100644 index 0000000..a745eb3 --- /dev/null +++ b/mb/Graphics/Release/sources.mk @@ -0,0 +1,21 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +LD_SRCS := +S_UPPER_SRCS := +S_SRCS := +OBJ_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := +ELFSIZE := +ELFCHECK := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +src \ + diff --git a/mb/Graphics/Release/src/main.d b/mb/Graphics/Release/src/main.d new file mode 100644 index 0000000..02a52d5 --- /dev/null +++ b/mb/Graphics/Release/src/main.d @@ -0,0 +1,25 @@ +src/main.d: ../src/main.c \ + ../../Graphics_bsp/microblaze_mcs/include/xparameters.h \ + ../../Graphics_bsp/microblaze_mcs/include/xiomodule.h \ + ../../Graphics_bsp/microblaze_mcs/include/xbasic_types.h \ + ../../Graphics_bsp/microblaze_mcs/include/xparameters.h \ + ../../Graphics_bsp/microblaze_mcs/include/xstatus.h \ + ../../Graphics_bsp/microblaze_mcs/include/xiomodule_l.h \ + ../../Graphics_bsp/microblaze_mcs/include/xiomodule_io.h \ + ../../Graphics_bsp/microblaze_mcs/include/xil_io.h \ + ../../Graphics_bsp/microblaze_mcs/include/xil_types.h \ + ../../Graphics_bsp/microblaze_mcs/include/mb_interface.h \ + ../../Graphics_bsp/microblaze_mcs/include/xil_printf.h \ + ../../Graphics_bsp/microblaze_mcs/include/xio.h +../../Graphics_bsp/microblaze_mcs/include/xparameters.h: +../../Graphics_bsp/microblaze_mcs/include/xiomodule.h: +../../Graphics_bsp/microblaze_mcs/include/xbasic_types.h: +../../Graphics_bsp/microblaze_mcs/include/xparameters.h: +../../Graphics_bsp/microblaze_mcs/include/xstatus.h: +../../Graphics_bsp/microblaze_mcs/include/xiomodule_l.h: +../../Graphics_bsp/microblaze_mcs/include/xiomodule_io.h: +../../Graphics_bsp/microblaze_mcs/include/xil_io.h: +../../Graphics_bsp/microblaze_mcs/include/xil_types.h: +../../Graphics_bsp/microblaze_mcs/include/mb_interface.h: +../../Graphics_bsp/microblaze_mcs/include/xil_printf.h: +../../Graphics_bsp/microblaze_mcs/include/xio.h: diff --git a/mb/Graphics/Release/src/main.o b/mb/Graphics/Release/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..97343521a6219daf2e49f9319e2b0e282f043a20 GIT binary patch literal 11624 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 yvQTU0h&=UDD3U>7{xy&F0+IY0n&kvgMzI ilmb_cntlr_dlmb_cntlr + +.init : { + KEEP (*(.init)) +} > ilmb_cntlr_dlmb_cntlr + +.fini : { + KEEP (*(.fini)) +} > ilmb_cntlr_dlmb_cntlr + +.ctors : { + __CTOR_LIST__ = .; + ___CTORS_LIST___ = .; + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __CTOR_END__ = .; + ___CTORS_END___ = .; +} > ilmb_cntlr_dlmb_cntlr + +.dtors : { + __DTOR_LIST__ = .; + ___DTORS_LIST___ = .; + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + PROVIDE(__DTOR_END__ = .); + PROVIDE(___DTORS_END___ = .); +} > ilmb_cntlr_dlmb_cntlr + +.rodata : { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + __rodata_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.sdata2 : { + . = ALIGN(8); + __sdata2_start = .; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + . = ALIGN(8); + __sdata2_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.sbss2 : { + __sbss2_start = .; + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + __sbss2_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.data : { + . = ALIGN(4); + __data_start = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + __data_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.got : { + *(.got) +} > ilmb_cntlr_dlmb_cntlr + +.got1 : { + *(.got1) +} > ilmb_cntlr_dlmb_cntlr + +.got2 : { + *(.got2) +} > ilmb_cntlr_dlmb_cntlr + +.eh_frame : { + *(.eh_frame) +} > ilmb_cntlr_dlmb_cntlr + +.jcr : { + *(.jcr) +} > ilmb_cntlr_dlmb_cntlr + +.gcc_except_table : { + *(.gcc_except_table) +} > ilmb_cntlr_dlmb_cntlr + +.sdata : { + . = ALIGN(8); + __sdata_start = .; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __sdata_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.sbss (NOLOAD) : { + . = ALIGN(4); + __sbss_start = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + . = ALIGN(8); + __sbss_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.tdata : { + __tdata_start = .; + *(.tdata) + *(.tdata.*) + *(.gnu.linkonce.td.*) + __tdata_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.tbss : { + __tbss_start = .; + *(.tbss) + *(.tbss.*) + *(.gnu.linkonce.tb.*) + __tbss_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.bss (NOLOAD) : { + . = ALIGN(4); + __bss_start = .; + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + __bss_end = .; +} > ilmb_cntlr_dlmb_cntlr + +_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 ); + +_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); + +/* Generate Stack and Heap definitions */ + +.heap (NOLOAD) : { + . = ALIGN(8); + _heap = .; + _heap_start = .; + . += _HEAP_SIZE; + _heap_end = .; +} > ilmb_cntlr_dlmb_cntlr + +.stack (NOLOAD) : { + _stack_end = .; + . += _STACK_SIZE; + . = ALIGN(8); + _stack = .; + __stack = _stack; +} > ilmb_cntlr_dlmb_cntlr + +_end = .; +} + diff --git a/mb/Graphics/src/main.c b/mb/Graphics/src/main.c new file mode 100644 index 0000000..52392c6 --- /dev/null +++ b/mb/Graphics/src/main.c @@ -0,0 +1,265 @@ +#include +#include + +XIOModule gpo; + +Xint8 x = 0; +Xint8 y = 0; +Xint8 scroll = 0; + +Xint8 reversed = 0; +Xint8 foreground = 0b111; +Xint8 background = 0; + +Xint16 properties = 0; + +void commit() { + XIOModule_DiscreteSet(&gpo, 3, 1); + XIOModule_DiscreteClear(&gpo, 3, 1); +} + +void calculate_properties() { + if (reversed) { + properties = ((foreground << 4) + background) << 8; + } else { + properties = ((background << 4) + foreground) << 8; + } +} + +void set_foreground(Xint8 color) { + foreground = color; + + calculate_properties(); +} + +void set_background(Xint8 color) { + background = color; + + calculate_properties(); +} + +void reverse(u8 enable) { + reversed = enable; + + calculate_properties(); +} + +void clear_screen() { + reverse(0); + set_foreground(0b111); + set_background(0); + XIOModule_DiscreteWrite(&gpo, 1, 0); + XIOModule_DiscreteWrite(&gpo, 2, 0); + XIOModule_DiscreteSet(&gpo, 3, 1); + + for (int y = 0; y < (45+2); ++y) { + Xint16 temp = (y << 8); + for (int x = 0; x < (80+24); ++x) { + XIOModule_DiscreteWrite(&gpo, 2, temp + x); + } + } + + XIOModule_DiscreteClear(&gpo, 3, 1); + + x = 0; + y = 0; + scroll = 0; + XIOModule_DiscreteWrite(&gpo, 4, scroll); +} + +void clear_eol() { + reverse(0); + Xint16 temp = (y << 8); + + XIOModule_DiscreteWrite(&gpo, 1, 0); + XIOModule_DiscreteWrite(&gpo, 2, temp + x); + XIOModule_DiscreteSet(&gpo, 3, 1); + + for (int i = x; i < (80+24); ++i) { + XIOModule_DiscreteWrite(&gpo, 2, temp + i); + } + + XIOModule_DiscreteClear(&gpo, 3, 1); +} + +void write(u8 c) { + XIOModule_DiscreteWrite(&gpo, 1, properties + c); + XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x); + commit(); +} + +void next() { + x++; + if (x >= 80) { + y++; + x %= 80; + } + + if (y >= 45) { + y--; + scroll = (scroll + 1) % 45; + XIOModule_DiscreteWrite(&gpo, 4, scroll); + clear_eol(); + } +} + +// @todo This does not appear to work quite correctly +void previous() { + x--; + if (x < 0) { + y--; + x %= 80; + } + + if (y < 0) { + y = 0; + x = 0; + } +} + +u8 data = 0; +u8 had = 0; +u8 escape = 0; +u8 escape_parameter_1 = 0; +u8 escape_parameter_2 = 0; + + +void clock() { + u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11; + + if (!(signals & 0b01)) { + return; + } + + if (signals & 0b10) { + data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF; + had = 1; + } else if (had) { + had = 0; + + if (escape == 1) { + if (data == '[') { + escape = 2; + } else { + escape = 0; + } + } else if (escape) { + switch (data) { + // For now we are only going to implement what we actually use + case 'K': + // Assume parameter 0 + clear_eol(); + escape = 0; + break; + + case 'H': + if (escape_parameter_1 == 0) { + escape_parameter_1 = 1; + } + + if (escape_parameter_2 == 0) { + escape_parameter_2 = 1; + } + + x = escape_parameter_1 - 1; + y = escape_parameter_2 - 1; + escape = 0; + break; + + case 'm': + if (escape_parameter_1 == 0) { + reverse(0); + set_foreground(0b111); + set_background(0); + } else if (escape_parameter_1 == 7) { + reverse(1); + } else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) { + set_foreground(escape_parameter_1 - 30); + } else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) { + set_background(escape_parameter_1 - 40); + } else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) { + set_foreground(escape_parameter_1 - 90 + 8); + } else if (escape_parameter_1 >= 100 && escape_parameter_1 <= 107) { + set_background(escape_parameter_1 - 100 + 8); + } + escape = 0; + break; + + case 'J': + // Assume parameter 2 + clear_screen(); + escape = 0; + break; + + case '0' ... '9': + escape_parameter_1 *= 10; + escape_parameter_1 += (data - 48); + break; + + case ';': + escape_parameter_2 = escape_parameter_1; + escape_parameter_1 = 0; + break; + + default: + escape = 0; + break; + } + } else { + switch (data) { + case '\n': + y++; + if (y >= 45) { + y--; + scroll = (scroll + 1) % 45; + XIOModule_DiscreteWrite(&gpo, 4, scroll); + clear_eol(); + } + break; + + case '\r': + x = 0; + break; + + case 0x08: + previous(); + break; + + case 0x1B: + escape = 1; + escape_parameter_1 = 0; + escape_parameter_2 = 0; + // Handle escape code + break; + + default: + write(data - 32); + next(); + break; + } + } + XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x); + } +} + +int main() { + XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module + + microblaze_register_handler(XIOModule_DeviceInterruptHandler, + XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler + + XIOModule_Start(&gpo); // start the GPO module + + XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock, + NULL); // register timerTick() as our interrupt handler + XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt + + microblaze_enable_interrupts(); // enable global interrupts + + // Clear the screen + clear_screen(); + + while (1) { + + } +} diff --git a/mb/Graphics_bsp/.cproject b/mb/Graphics_bsp/.cproject new file mode 100644 index 0000000..7e4fa4a --- /dev/null +++ b/mb/Graphics_bsp/.cproject @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/mb/Graphics_bsp/.project b/mb/Graphics_bsp/.project new file mode 100644 index 0000000..e49cd14 --- /dev/null +++ b/mb/Graphics_bsp/.project @@ -0,0 +1,80 @@ + + + Graphics_bsp + + + hardware + + + + org.eclipse.cdt.make.core.makeBuilder + + + org.eclipse.cdt.core.errorOutputParser + org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.MakeErrorParser; + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.build.arguments + + + + org.eclipse.cdt.make.core.build.command + make + + + org.eclipse.cdt.make.core.build.location + + + + org.eclipse.cdt.make.core.build.target.auto + all + + + org.eclipse.cdt.make.core.build.target.clean + clean + + + org.eclipse.cdt.make.core.build.target.inc + all + + + org.eclipse.cdt.make.core.enableAutoBuild + true + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.enabledIncrementalBuild + true + + + org.eclipse.cdt.make.core.environment + + + + org.eclipse.cdt.make.core.stopOnError + false + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + + com.xilinx.sdk.sw.SwProjectNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.make.core.makeNature + + diff --git a/mb/Graphics_bsp/.sdkproject b/mb/Graphics_bsp/.sdkproject new file mode 100644 index 0000000..20a40c3 --- /dev/null +++ b/mb/Graphics_bsp/.sdkproject @@ -0,0 +1,3 @@ +THIRPARTY=false +PROCESSOR=microblaze_mcs +MSS_FILE=system.mss diff --git a/mb/Graphics_bsp/.settings/org.eclipse.cdt.codan.core.prefs b/mb/Graphics_bsp/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..8e05504 --- /dev/null +++ b/mb/Graphics_bsp/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,34 @@ +eclipse.preferences.version=1 +org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} +org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false} +org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true} +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false} +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} diff --git a/mb/Graphics_bsp/Makefile b/mb/Graphics_bsp/Makefile new file mode 100644 index 0000000..fe2a0ef --- /dev/null +++ b/mb/Graphics_bsp/Makefile @@ -0,0 +1,21 @@ +# Makefile generated by Xilinx SDK. + +-include libgen.options + +LIBRARIES = ${PROCESSOR}/lib/libxil.a +MSS = system.mss + +all: libs + @echo 'Finished building libraries' + +libs: $(LIBRARIES) + +$(LIBRARIES): $(MSS) + libgen -hw ${HWSPEC}\ + ${REPOSITORIES}\ + -pe ${PROCESSOR} \ + -log libgen.log \ + $(MSS) + +clean: + rm -rf ${PROCESSOR} diff --git a/mb/Graphics_bsp/libgen.options b/mb/Graphics_bsp/libgen.options new file mode 100644 index 0000000..b483db4 --- /dev/null +++ b/mb/Graphics_bsp/libgen.options @@ -0,0 +1,3 @@ +PROCESSOR=microblaze_mcs +REPOSITORIES= +HWSPEC=../hardware/system.xml diff --git a/mb/Graphics_bsp/system.mss b/mb/Graphics_bsp/system.mss new file mode 100644 index 0000000..b226217 --- /dev/null +++ b/mb/Graphics_bsp/system.mss @@ -0,0 +1,39 @@ + + PARAMETER VERSION = 2.2.0 + + +BEGIN OS + PARAMETER OS_NAME = standalone + PARAMETER OS_VER = 3.11.a + PARAMETER PROC_INSTANCE = microblaze_mcs + PARAMETER STDIN = iomodule_0 + PARAMETER STDOUT = iomodule_0 +END + + +BEGIN PROCESSOR + PARAMETER DRIVER_NAME = cpu + PARAMETER DRIVER_VER = 1.15.a + PARAMETER HW_INSTANCE = microblaze_mcs +END + + +BEGIN DRIVER + PARAMETER DRIVER_NAME = bram + PARAMETER DRIVER_VER = 3.03.a + PARAMETER HW_INSTANCE = dlmb_cntlr +END + +BEGIN DRIVER + PARAMETER DRIVER_NAME = bram + PARAMETER DRIVER_VER = 3.03.a + PARAMETER HW_INSTANCE = ilmb_cntlr +END + +BEGIN DRIVER + PARAMETER DRIVER_NAME = iomodule + PARAMETER DRIVER_VER = 1.04.a + PARAMETER HW_INSTANCE = iomodule_0 +END + + diff --git a/mb/hardware/.project b/mb/hardware/.project new file mode 100644 index 0000000..c5a043d --- /dev/null +++ b/mb/hardware/.project @@ -0,0 +1,12 @@ + + + hardware + + + + + + + com.xilinx.sdk.hw.HwProject + + diff --git a/mb/hardware/system.xml b/mb/hardware/system.xml new file mode 100644 index 0000000..023c73b --- /dev/null +++ b/mb/hardware/system.xml @@ -0,0 +1,5833 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable Fault Tolerance Support + + + + + + Select implementation to optimize area (with lower instruction throughput) + + + + Select Bus Interfaces + + + Select Stream Interfaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable Additional Machine Status Register Instructions + + + Enable Pattern Comparator + + + Enable Barrel Shifter + + + Enable Integer Divider + + + Enable Integer Multiplier + + + Enable Floating Point Unit + + + Enable Reversed Load/Store and Swap Instructions + + + Enable Unaligned Data Exception + + + Enable Illegal Instruction Exception + + + Enable Instruction-side AXI Exception + + + Enable Data-side AXI Exception + + + Enable Instruction-side PLB Exception + + + Enable Data-side PLB Exception + + + Enable Integer Divide Exception + + + Enable Floating Point Unit Exceptions + + + Enable Stream Exception + + + <qt>Enable stack protection</qt> + + + Specifies Processor Version Register + + + Specify USER1 Bits in Processor Version Register + + + Specify USER2 Bits in Processor Version Registers + + + Enable MicroBlaze Debug Module Interface + + + Number of PC Breakpoints + + + Number of Read Address Watchpoints + + + Number of Write Address Watchpoints + + + Sense Interrupt on Edge vs. Level + + + Sense Interrupt on Rising vs. Falling Edge + + + Specify Reset Value for Select MSR Bits + + + <qt>Generate Illegal Instruction Exception for NULL Instruction</qt> + + + Number of Stream Links + + + + Enable Additional Stream Instructions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base Address + + + High Address + + + Enable Instruction Cache + + + Enable Writes + + + + Size in Bytes + + + + Line Length + + + Use Cache Links for All Memory Accesses + + + + Number of Victims + + + Number of Streams + + + Use Distributed RAM for Tags + + + Data Width + + + + + + + + + + + + + + + + + + + Base Address + + + High Address + + + Enable Data Cache + + + Enable Writes + + + + Size in Bytes + + + + Line Length + + + Use Cache Links for All Memory Accesses + + + + Enable Write-back Storage Policy + + + Number of Victims + + + Use Distributed RAM for Tags + + + Data Width + + + + + + + + + + + + + + + + + + + + + Memory Management + + + Data Shadow Translation Look-Aside Buffer Size + + + Instruction Shadow Translation Look-Aside Buffer Size + + + Enable Access to Memory Management Special Registers + + + Number of Memory Protection Zones + + + Privileged Instructions + + + + + + Enable Branch Target Cache + + + Branch Target Cache Size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local Memory Bus (LMB) 1.0 + 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' + + + + Number of Bus Slaves + + + LMB Address Bus Width + + + LMB Data Bus Width + + + Active High External Reset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local Memory Bus (LMB) 1.0 + 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' + + + + Number of Bus Slaves + + + LMB Address Bus Width + + + LMB Data Bus Width + + + Active High External Reset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMB BRAM Base Address + + + LMB BRAM High Address + + + + SLMB Address Decode Mask + + + SLMB1 Address Decode Mask + + + SLMB2 Address Decode Mask + + + SLMB3 Address Decode Mask + + + LMB Address Bus Width + + + LMB Data Bus Width + + + Error Correction Code + + + Select Interconnect + + + Fault Inject Registers + + + Correctable Error First Failing Register + + + Uncorrectable Error First Failing Register + + + ECC Status and Control Register + + + ECC On/Off Register + + + ECC On/Off Reset Value + + + Correctable Error Counter Register Width + + + Write Access setting + + + Number of LMB ports + + + Base Address for PLB Interface + + + High Address for PLB Interface + + + PLB Address Bus Width + + + PLB Data Bus Width + + + PLB Slave Uses P2P Topology + + + Master ID Bus Width of PLB + + + Number of PLB Masters + + + PLB Slave is Capable of Bursts + + + Native Data Bus Width of PLB Slave + + + Frequency of PLB Slave + + + S_AXI_CTRL Clock Frequency + + + S_AXI_CTRL Base Address + + + S_AXI_CTRL High Address + + + S_AXI_CTRL Address Width + + + S_AXI_CTRL Data Width + + + S_AXI_CTRL Protocol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMB BRAM Base Address + + + LMB BRAM High Address + + + + SLMB Address Decode Mask + + + SLMB1 Address Decode Mask + + + SLMB2 Address Decode Mask + + + SLMB3 Address Decode Mask + + + LMB Address Bus Width + + + LMB Data Bus Width + + + Error Correction Code + + + Select Interconnect + + + Fault Inject Registers + + + Correctable Error First Failing Register + + + Uncorrectable Error First Failing Register + + + ECC Status and Control Register + + + ECC On/Off Register + + + ECC On/Off Reset Value + + + Correctable Error Counter Register Width + + + Write Access setting + + + Number of LMB ports + + + Base Address for PLB Interface + + + High Address for PLB Interface + + + PLB Address Bus Width + + + PLB Data Bus Width + + + PLB Slave Uses P2P Topology + + + Master ID Bus Width of PLB + + + Number of PLB Masters + + + PLB Slave is Capable of Bursts + + + Native Data Bus Width of PLB Slave + + + Frequency of PLB Slave + + + S_AXI_CTRL Clock Frequency + + + S_AXI_CTRL Base Address + + + S_AXI_CTRL High Address + + + S_AXI_CTRL Address Width + + + S_AXI_CTRL Data Width + + + S_AXI_CTRL Protocol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Block RAM (BRAM) Block + The BRAM Block is a configurable memory module that attaches to a variety of BRAM Interface Controllers. + + + + + + + Size of BRAM(s) in Bytes + + + Data Width of Port A and B + + + Address Width of Port A and B + + + Number of Byte Write Enables + + + Device Family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMB I/O Module + LMB module which includes plenty of I/O peripherals + + + + + + + I/O Module Register Base Address + + + I/O Module Register High Address + + + I/O Module Register Address Decode Mask + + + I/O Module IO Bus Base Address + + + I/O Module IO Bus High Address + + + I/O Module IO Bus Address Decode Mask + + + LMB Address Bus Width + + + LMB Data Bus Width + + + Enable IO Bus + + + Enable Receiver + + + Enable Transmitter + + + Define Baud Rate + + + Number of Data Bits + + + Use Parity + + + Even or Odd Parity + + + Implement Receive Interrupt + + + Implement Transmit Interrupt + + + Implement Error Interrupt + + + Programmable Baud Rate + + + Use FIT + + + Number of Clocks Between Strobes + + + Generate Interrupt + + + Use FIT + + + Number of Clocks Between Strobes + + + Generate Interrupt + + + Use FIT + + + Number of Clocks Between Strobes + + + Generate Interrupt + + + Use FIT + + + Number of Clocks Between Strobes + + + Generate Interrupt + + + Use PIT + + + Number of Bits for Timer + + + Shall Counter Value Be Readable + + + Define Prescaler + + + Generate Interrupt + + + Use PIT + + + Number of Bits for Timer + + + Shall Counter Value Be Readable + + + Define Prescaler + + + Generate Interrupt + + + Use PIT + + + Number of Bits for Timer + + + Shall Counter Value be Readable + + + Define Prescaler + + + Generate Interrupt + + + Use PIT + + + Number of Bits for Timer + + + Shall Counter Value Be Readable + + + Define Prescaler + + + Generate Interrupt + + + Use GPO + + + Number of Bits + + + Initial Value of GPO + + + Use GPO + + + Number of Bits + + + Initial Value of GPO + + + Use GPO + + + Number of Bits + + + Initial Value of GPO + + + Use GPO + + + Number of Bits + + + Initial Value of GPO + + + Use GPI + + + Number of Bits + + + Generate Interrupt + + + Use GPI + + + Number of Bits + + + Generate Interrupt + + + Use GPI + + + Number of Bits + + + Generate Interrupt + + + Use GPI + + + Number of Bits + + + Generate Interrupt + + + Use External Interrupts + + + Number of External Inputs + + + + + Use Low-latency Interrupt Handling + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Serial Data In + + + + + + Serial Data Out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interrupt Inputs + + + + Interrupt Request Output + + + + + + + Interrupt Vector Address Output + + + + + + Interrupt Acknowledgement Input + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mb/hardware/system_bd.bmm b/mb/hardware/system_bd.bmm new file mode 100644 index 0000000..b71facc --- /dev/null +++ b/mb/hardware/system_bd.bmm @@ -0,0 +1,16 @@ +ADDRESS_MAP microblaze_mcs MICROBLAZE-LE 100 + ADDRESS_SPACE lmb_bram COMBINED [0x00000000:0x00003fff] + ADDRESS_RANGE RAMB16 + BUS_BLOCK + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[0].RAMB16_S4_1 [31:28] INPUT = microblaze_mcs.lmb_bram_0.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[1].RAMB16_S4_1 [27:24] INPUT = microblaze_mcs.lmb_bram_1.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[2].RAMB16_S4_1 [23:20] INPUT = microblaze_mcs.lmb_bram_2.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[3].RAMB16_S4_1 [19:16] INPUT = microblaze_mcs.lmb_bram_3.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[4].RAMB16_S4_1 [15:12] INPUT = microblaze_mcs.lmb_bram_4.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[5].RAMB16_S4_1 [11:8] INPUT = microblaze_mcs.lmb_bram_5.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[6].RAMB16_S4_1 [7:4] INPUT = microblaze_mcs.lmb_bram_6.mem; + mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[7].RAMB16_S4_1 [3:0] INPUT = microblaze_mcs.lmb_bram_7.mem; + END_BUS_BLOCK; + END_ADDRESS_RANGE; + END_ADDRESS_SPACE; +END_ADDRESS_MAP; diff --git a/syn/.gitignore b/syn/.gitignore deleted file mode 100644 index 86d0cb2..0000000 --- a/syn/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore \ No newline at end of file diff --git a/syn/main.prj b/syn/main.prj new file mode 100644 index 0000000..f2039e9 --- /dev/null +++ b/syn/main.prj @@ -0,0 +1,12 @@ +verilog work "../ipcore_dir/microblaze_mcs.v" +verilog work "../ipcore_dir/hdmi_clk.v" +verilog work "../src/simple_dual_ram.v" +verilog work "../src/async_fifo.v" +verilog work "../src/tmds_encoder.v" +verilog work "../src/serdes_n_to_1.v" +verilog work "../src/fifo_2x_reducer.v" +verilog work "../src/dvi_encoder.v" +verilog work "../src/hdmi_encoder.v" +verilog work "../src/color_map.v" +verilog work "../src/char_map.v" +verilog work "../src/main.v" diff --git a/syn/main.ut b/syn/main.ut new file mode 100644 index 0000000..0a46560 --- /dev/null +++ b/syn/main.ut @@ -0,0 +1,31 @@ +-bd "/home/tim/Projects/z80/hdmi-mb/Graphics/Release/Graphics.elf" tag microblaze_mcs +-w +-g Binary:yes +-g Compress +-g CRC:Enable +-g Reset_on_err:No +-g ConfigRate:2 +-g ProgPin:PullUp +-g TckPin:PullUp +-g TdiPin:PullUp +-g TdoPin:PullUp +-g TmsPin:PullUp +-g UnusedPin:PullDown +-g UserID:0xFFFFFFFF +-g ExtMasterCclk_en:No +-g SPI_buswidth:1 +-g TIMER_CFG:0xFFFF +-g multipin_wakeup:No +-g StartUpClk:CClk +-g DONE_cycle:4 +-g GTS_cycle:5 +-g GWE_cycle:6 +-g LCK_cycle:NoWait +-g Security:None +-g DonePipe:Yes +-g DriveDone:No +-g en_sw_gsr:No +-g drive_awake:No +-g sw_clk:Startupclk +-g sw_gwe_cycle:5 +-g sw_gts_cycle:4 diff --git a/syn/main.xst b/syn/main.xst new file mode 100644 index 0000000..3ca81cb --- /dev/null +++ b/syn/main.xst @@ -0,0 +1,53 @@ +set -tmpdir "xst/projnav.tmp" +set -xsthdpdir "xst" +run +-ifn main.prj +-ofn main +-ofmt NGC +-p xc6slx9-2-tqg144 +-top main +-opt_mode Speed +-opt_level 1 +-power NO +-iuc NO +-keep_hierarchy No +-netlist_hierarchy As_Optimized +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-sd {"../ipcore_dir" } +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case Maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-dsp_utilization_ratio 100 +-lc Auto +-reduce_control_sets Auto +-fsm_extract YES -fsm_encoding Auto +-safe_implementation No +-fsm_style LUT +-ram_extract Yes +-ram_style Auto +-rom_extract Yes +-shreg_extract YES +-rom_style Auto +-auto_bram_packing NO +-resource_sharing YES +-async_to_sync NO +-shreg_min_size 2 +-use_dsp48 Auto +-iobuf YES +-max_fanout 100000 +-bufg 16 +-register_duplication YES +-register_balancing No +-optimize_primitives NO +-use_clock_enable Auto +-use_sync_set Auto +-use_sync_reset Auto +-iob Auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5