Commodore 64 Ultimate Firmware v1.1.0

seen from United States
seen from United States
seen from United States
seen from United States

seen from United States

seen from China
seen from China
seen from United States
seen from Russia
seen from United States

seen from United States
seen from United States
seen from China
seen from United States
seen from United States
seen from Canada

seen from Canada

seen from United States
seen from United States
seen from South Korea
Commodore 64 Ultimate Firmware v1.1.0
Bad news: the embedded system design course aims to "no code" and vibe code everything (hate it so much).
Good news: I got a giant ass board that I can take home.
the genius (stupidity) behind the FPGA in my 6502 computer has almost everything to do with the clock.
basically, the FPGA has a 12mhz clock input, and an adjustable clock output which goes to the CPU.
with the 12mhz FPGA clock, the CPU can run up to 6mhz. however, since the 6502 uses a synchronous bus, all the other devices on the bus must be able to run at that speed as well. and, well, they can't.
my solution was to dynamically adjust the clocking for each peripheral on the bus when it's being accessed. the FPGA monitors the address bus, and when the CPU selects something that runs slower, such as the EEPROM, it halts the clock for a little bit until the EEPROM can catch up.
this allows me to put other stuff on the bus too, like the LCD controller. in the original Ben Eater design, the LCD was attached through the VIA (essentially a GPIO controller). since the nature of the LCD controller needing to constantly switch between reading and writing, this made a pretty sizable overhead. by putting it on the bus directly, not only do we free up 7 GPIO pins, we also significantly reduce the time it takes for something to be written to the screen.
there's was problem though; I plan on using the VIA's timer functionality which essentially just counts clock cycles. if the clock constantly changes speed, this number will be useless. so, the FPGA generates two clocks, a monotonic clock for the VIA, and a non-monotonic clock for everything else.
but the VIA also needs to be synced with the CPU in order for them to communicate. so, when the FPGA sees that the CPU wants to access the VIA, it synchronizes their clocks for a short moment, then essentially "connects" them together for one cycle, before reverting to their original clocks.
this way, the VIA can properly keep time, and the CPU can change its speed at any time. additionally, since the VIA has its own clock, you can adjust it independently and slow it down if you need to track long periods of time, or speed it up if you need more precision.
oh and I forgot to mention that the CPU can also adjust it's clock speed, but i don't think it would make much sense to do anything but the top speed.
damn people are right, lifting weights really does help let out anger. now granted most people are working out over a girl or something, while im angry over vivado’s absurd file size, but you know, still helps
Hot take: far as I'm concerned, recreating an old system with an FPGA does not make it "not emulation".
You're still making the thing run on other, newer hardware. You're just not doing it in software. The FPGA is still just pretending very hard to be a SNES or what have you. The main difference is that there's not an entire operating system running underneath the emulator. It's not even running on the bare metal -- it is the bare metal, so there's a significant lack of overhead and with a good design input lag can be all but eliminated.
But it's still just an emulator.
After all, this
is not this
any more than this is
Now, you might argue seeing that SNES mainboard closeup that there's a one-chip SNES too and that doesn't look anything like that picture either. True. It's called a one-chip because they took all the component parts of the CPU and PPU pair, and stuck it into a single chip. Not reimplementing, but restructuring.
Checklist on getting the N64 MisterFPGA core running (after searching a lot in the forums, myself)
Delete any .cfg files.
Make sure that you have the latest version of the core.
Make sure that you have the latest version of N64-database.txt.
Make sure that you have the N64 BIOS. You can get the BIOS from the MAME 0.260 non-merged ROMset. The BIOS is the .bin file in the .zip file of your choice.
Rename your choice of BIOS to boot.rom. (Remember to change the extension, not just the name.) Any additional BIOS would be renamed boot1.rom and boot2.rom if included.
Put the BIOS where the N64 core would be.
Place the BIOS in the folder where the N64 ROMS are if you are still having trouble.
Place the N64-database.txt file in the folder where the N64 ROMS are if you are still having trouble.
Locations of the BIOS files in the ROMset
The Nipponese BIOS is pifdata.bin in n64dd.zip.
The American BIOS is pifntsc.bin in n64.zip.
The European BIOS is pifpal.bin in n64_pal.zip.
Note: n64, v64, and z64 ROMS all work.
XILINX solution developers, hardware engineers, and FPGA enthusiasts recommend the latest materials---ICGOODFIND electronic components distributor
XCZU9EG-2FFVB1156E AMD ( XILINX FPGA/CPLD) FCBGA-1156(35x35) XC7S6-1FTGB196I AMD ( XILINX FPGA/CPLD) CSBGA-196(15x15) XC9536XL-10VQG44C AMD ( XILINX FPGA/CPLD) VQFP-44 XC7S50-1CSGA324C AMD ( XILINX FPGA/CPLD) CSGA-324(15x15) XC3S1000-4FG320C AMD ( XILINX FPGA/CPLD) FBGA-320(19x19) XC2VP7-6FG456I AMD ( XILINX FPGA/CPLD) XC2S200E-6FTG256I AMD ( XILINX FPGA/CPLD) XC2S50E-6PQ208I AMD ( XILINX FPGA/CPLD) XC2S150E-6FTG256C AMD ( XILINX FPGA/CPLD) - XC6SLX100-3FG676I AMD ( XILINX FPGA/CPLD) FCBGA-676(27x27) XC5VFX100T-2FF1136I AMD ( XILINX FPGA/CPLD) XC4085XLA-09HQ240C AMD ( XILINX FPGA/CPLD) XC95108-10PQG160C AMD ( XILINX FPGA/CPLD) XC6VLX240T-2FF784I AMD ( XILINX FPGA/CPLD) XC7A25T-1CPG238C AMD ( XILINX FPGA/CPLD) CSBGA-238(10x10) XCR3512XL-10PQ208C AMD ( XILINX FPGA/CPLD) XC9536XL-10PC44I AMD ( XILINX FPGA/CPLD) 44-LCC(J 形引线) XC9536XL-7VQ44C AMD ( XILINX FPGA/CPLD) VQFP-44(10x10) XCV300E-7BG432I AMD ( XILINX FPGA/CPLD) 432-LBGA XCZU4EG-1SFVC784E AMD ( XILINX FPGA/CPLD) FCBGA-784(23x23) XCF16PVOG48 AMD ( XILINX FPGA/CPLD) XC95288XL-7FGG256I AMD ( XILINX FPGA/CPLD) FBGA-256(17x17) XC95288XL-10TQG144 AMD ( XILINX FPGA/CPLD) XCKU040-3FBVA900E AMD ( XILINX FPGA/CPLD) XC3S1600E AMD ( XILINX FPGA/CPLD) XC18V04 AMD ( XILINX FPGA/CPLD) XC7A15T-1CSG325 AMD ( XILINX FPGA/CPLD) XC7A100T-1FGG484 AMD ( XILINX FPGA/CPLD) XC7K160T-FFG676 AMD ( XILINX FPGA/CPLD)
In this fast-moving world of electronics and embedded systems, it's time to face one critical decision: ASIC or FPGA? This choice can heavil