Is such goal achiveable - AVR Soft-Core

Status
Not open for further replies.

FlyingDutch

Advanced Member level 1
Joined
Dec 16, 2017
Messages
457
Helped
45
Reputation
92
Reaction score
55
Trophy points
28
Location
Bydgoszcz - Poland
Activity points
4,958
Hello,

it comes into my mind such idea: extend AVR Soft-Core described in this post:

https://www.edaboard.com/showthread.php?388251-AVR-Soft-Core-(ATMega103)-issues-during-synthesis-and-implementation

by new instruction. I mean adding to the original design VGA framebuffer and extending "Instruction Set" (ISA) of this soft-CPU by one instruction "vgaprint". I would like to extend "instruction decoder" and "executive system" of AVR soft-core by such instruction. The VGA framebuffer will have 24 rows and 40 columns, so the fo9rmat of new instruction would be:

vgaprint(row, column, ASCI_character)


It would be an assembler instruction recognizable by AVR CPU - CPU would be able to perform such instruction and print asci_character on VGA screen.

There are two questions related to such idea:

1) Extending AVR soft-core by VGA screenbuffer (being able to print ASCII character) and extending this CPU instruction set by such vgaprint instruction. I think that after spending respectively long time for such task I should be able to do such alteration.

2) Extending AVR compiler (for example AVR-GCC) by one assembler instruction "vgaprint", and this seems to me be much difficult.The C compiler (and linker) should know how to translate such instruction to binary code (in the form undersdtandable by soft-core AVR CPU).

Could someone give me hints for described task 1) and 2) ? I also be grateful for pointing literature related to such tasks.

Thanks in advance and regards
 

It is possible, and maybe useful as a training/learning experience.
Otherwise, I think it is a bad idea. A "simpler" solution is to create a separate "vga terminal/screenbuffer" block and connect it with a byte-wide write port (memory mapped?).
This requires no change to the CPU core or the compiler.

Make such a block compatible with an existing serial terminal such as VT100 or similar.
 
Don't change the compiler. Write an assembler function that can be called from C-code.
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…