Made the build system simplify the microcode so that yosys understands and synthesises it! Now gnome_sort.asm almost works!
This commit is contained in:
parent
fa62b07c14
commit
e06c0eeaa0
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,4 +15,5 @@ boot_code/*.txt
|
|||||||
system/boot_code.bin
|
system/boot_code.bin
|
||||||
system/boot_code.txt
|
system/boot_code.txt
|
||||||
system/obj_dir/
|
system/obj_dir/
|
||||||
|
system/simplified_ucode.txt
|
||||||
tools/*svg
|
tools/*svg
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
|
INCLUDE dos_layer.asm
|
||||||
|
|
||||||
.org 0x100
|
.org 0x100
|
||||||
|
mov sp,#STACK
|
||||||
|
|
||||||
MAIN_LOOP:
|
MAIN_LOOP:
|
||||||
MOV DL,#0xF0
|
MOV DL,#0xF0
|
||||||
@ -16,11 +19,14 @@ out byte #0xB0
|
|||||||
MOV SI,#RESERVED
|
MOV SI,#RESERVED
|
||||||
MOV DI,#RESERVED
|
MOV DI,#RESERVED
|
||||||
MOV AL,#0x68 ; 'h'
|
MOV AL,#0x68 ; 'h'
|
||||||
MOV [DI],AL
|
STOSB
|
||||||
MOV AL,#0x00
|
MOV AL,#0x00
|
||||||
MOV AL,[SI]
|
MOV AL,[SI]
|
||||||
|
|
||||||
out byte #0xA5
|
MOV AH,#0x02
|
||||||
|
MOV DL,AL
|
||||||
|
INT #0x21
|
||||||
|
|
||||||
MOV AL,#0x65
|
MOV AL,#0x65
|
||||||
out byte #0xA5
|
out byte #0xA5
|
||||||
MOV AL,#0x6c
|
MOV AL,#0x6c
|
||||||
@ -47,6 +53,8 @@ MOV AX,#0x0100
|
|||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
RESERVED: DB 0x48 ; 'H'
|
RESERVED: DB 0x48 ; 'H'
|
||||||
|
.BLKB 200
|
||||||
|
STACK:
|
||||||
|
|
||||||
.ORG 0xFFF0
|
.ORG 0xFFF0
|
||||||
MOV AX,#0x0100
|
MOV AX,#0x0100
|
||||||
|
@ -71,8 +71,11 @@ ECP5_TARGETS+=abc.history # created from yosys
|
|||||||
|
|
||||||
EXTRA_SYNTHESIS_SOURCES=peripherals/I2C_driver.v peripherals/ascii_to_HD44780_driver.v peripherals/pcf8574_for_HD44780.v
|
EXTRA_SYNTHESIS_SOURCES=peripherals/I2C_driver.v peripherals/ascii_to_HD44780_driver.v peripherals/pcf8574_for_HD44780.v
|
||||||
|
|
||||||
|
simplified_ucode.txt:ucode.txt
|
||||||
|
${Q}tr 'x' '0' < $^ | sed 's@//.*@@' | grep ^@ |sort | sed 's/.* .//;s/ $$//' | tr -d _ > $@
|
||||||
|
|
||||||
#TODO: we are relying on yosys to trim the input program txt file and hope its enough for the whole program...
|
#TODO: we are relying on yosys to trim the input program txt file and hope its enough for the whole program...
|
||||||
synth_ecp5.json: ${SOURCES} ${TOP_LEVEL_SOURCE} fpga_config/${FPGA_BOARD}/fpga_top.v ${EXTRA_SYNTHESIS_SOURCES} ${INCLUDES} ../boot_code/colored_led.txt
|
synth_ecp5.json: ${SOURCES} ${TOP_LEVEL_SOURCE} fpga_config/${FPGA_BOARD}/fpga_top.v ${EXTRA_SYNTHESIS_SOURCES} ${INCLUDES} ../boot_code/colored_led.txt simplified_ucode.txt
|
||||||
${QUIET_YOSYS}
|
${QUIET_YOSYS}
|
||||||
${Q} yosys -q -D BUILTIN_RAM=512 -D NOT_FULL -p 'read -sv '"${SOURCES} ${TOP_LEVEL_SOURCE} fpga_config/${FPGA_BOARD}/fpga_top.v ${EXTRA_SYNTHESIS_SOURCES} ; synth_ecp5 -json $@ -top fpga_top"
|
${Q} yosys -q -D BUILTIN_RAM=512 -D NOT_FULL -p 'read -sv '"${SOURCES} ${TOP_LEVEL_SOURCE} fpga_config/${FPGA_BOARD}/fpga_top.v ${EXTRA_SYNTHESIS_SOURCES} ; synth_ecp5 -json $@ -top fpga_top"
|
||||||
|
|
||||||
@ -101,4 +104,4 @@ upload: upload_orangecrab
|
|||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(call QUIET_CLEAN,system)
|
$(call QUIET_CLEAN,system)
|
||||||
${Q}rm -rf ${SYSTEM_VVP} *.fst boot_code.txt boot_code.bin *memdump *memdumptxt obj_dir *json ${ECP5_TARGETS}
|
${Q}rm -rf ${SYSTEM_VVP} *.fst boot_code.txt boot_code.bin *memdump *memdumptxt obj_dir *json simplified_ucode.txt ${ECP5_TARGETS}
|
||||||
|
@ -214,7 +214,7 @@ initial begin
|
|||||||
end
|
end
|
||||||
`else
|
`else
|
||||||
//TODO: don't have it hard coded
|
//TODO: don't have it hard coded
|
||||||
$readmemb("ucode.txt",ucode_rom,0,`UCODE_SIZE-1);
|
$readmemb("simplified_ucode.txt",ucode_rom,0,`UCODE_SIZE-1);
|
||||||
`endif
|
`endif
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user