I had learnt of Microblaze by my FPGA colleagues, of course. It felt a bit weird at first that you would use fully programmable silicium to remake a CPU because I was working on a design where there was a CPU onboard already. And yes, if I want my gates in the FPGA do what they have to (e.g. convert the proper video signal based on width and height), they need to be filled with proper values, and in many cases, a compact CPU fetching instructions from memory is more practical for the job than turning that into state machines that turn into FIFOs and LUTs. I still had to learn that not all of them are microblaze. There are actually so many soft cores!
In intel/altera technosystem, it seems that NIOS is the reference softcore. And readers, it is sure tricky to install. I finally got nios2eds/bin/gnu/*/bin/nios2-elf-addr2line and friends installed on my linux VM after I manually started QuartusSetup-23.1std.0.991-linux.run and manually checked the md5sum because the Intel Quartus Prime Installer was stuck in the "checking file integrity step" forever. Now that it is done, I should be able to close the installer, but it insists that it has a background task to complete. I don't see anything but the qinst processes ... I guess I'll have to kill them manually as well.
So much about not sending humans do machines' job.
Thu Apr 18 16:10:08 2024 INFO: Do download ... Thu Apr 18 16:10:08 2024 INFO: Path: /tmp/intelFPGA_standard_23.1std Thu Apr 18 16:10:08 2024 INFO: Total disk space: 21,83 GB Thu Apr 18 16:10:08 2024 INFO: Free disk space: 4,44 GB Thu Apr 18 16:10:08 2024 INFO: File: QuartusSetup-23.1std.0.991-linux.run resume position: 0 Thu Apr 18 16:10:08 2024 INFO: GET QuartusSetup-23.1std.0.991-linux.run Thu Apr 18 16:11:30 2024 INFO: Downloaded /tmp/intelFPGA_standard_23.1std/QuartusSetup-23.1std.0.991-linux.run, 2671252465 bytes (status: 200) Thu Apr 18 16:11:31 2024 INFO: File: max10-23.1std.0.991.qdz resume position: 0 Thu Apr 18 16:11:31 2024 INFO: GET max10-23.1std.0.991.qdz Thu Apr 18 16:11:41 2024 INFO: Downloaded /tmp/intelFPGA_standard_23.1std/max10-23.1std.0.991.qdz, 300376601 bytes (status: 200) Thu Apr 18 16:11:42 2024 INFO: Checking file integrity ... Thu Apr 18 16:57:02 2024 INFO: Download stopped Thu Apr 18 16:57:02 2024 INFO: Total download time: 46 mins 54 secsA few tips about the machine code
- uses the RISC-typical approach of
OP dst, op1 [,op2]except for store instructions that followSTx data, target(offset) movhi reg, 0xcafe ; addi reg, 0xbabeis the natural way to put 0xcafebabe in some register- arguments in function calls are put in r4, r5, r6, r7, ...
- function calls can fit 1 32-bit word.
- it is not unusual to see a bunch of
ldbu reg, ...; stb reg, ...in place of a memcpy call (for small amount of data)

Vote for your favourite post

No comments:
Post a Comment