久しぶりに自作CPUのコアをLiteXに接続して、シミュレーション作業をしている。 FPGAの環境はどうにかなりつつあるので、シミュレーションでBIOSが動作するのを確認すれば、まずはなんとかなるんじゃないかなと思い作業中。
かなり作業が進んできて、PLICの実装がかなり完成してきた。 LiteXのブートで、キーボードの割り込みを受け付けられるようにするのが目標だ。
最終的にデバッグで問題になったのは、AXIにおけるRead/Writeの順番を守るための論理が入っていなかったことになる。 UCへの書き込みに関しては、Writeを先に行わなければならい野に、WriteのReadyが入る前にReadが入ってしまうケースがあった。
これを修正すると、どうにかキーボードからの入力を受け付けてくれるようになった。よかった!
ただし、上記の問題のせいでまだキーボードの入力の反応がおかしい。一応fence
を入れてはいるが、まだ調子が悪いようだ。
__ _ __ _ __ / / (_) /____ | |/_/ / /__/ / __/ -_)> < /____/_/\__/\__/_/|_| Build your hardware, easily! (c) Copyright 2012-2023 Enjoy-Digital (c) Copyright 2007-2015 M-Labs BIOS built on Apr 17 2023 00:12:03 BIOS CRC passed (e88a6079) LiteX git sha1: be50d8e4 --=============== SoC ==================-- CPU: SCARIV @ 1MHz BUS: WISHBONE 32-bit @ 4GiB CSR: 32-bit data ROM: 128.0KiB SRAM: 8.0KiB --============== Boot ==================-- Booting from serial... Press Q or ESC to abort boot completely. sL5DdSMmkekro Timeout No boot medium found --============= Console ================-- litex> help LiteX BIOS, available commands: flush_cpu_dcache - Flush CPU data cache crc - Compute CRC32 of a part of the address space ident - Identifier of the system help - Print this help serialboot - Boot from Serial (SFL) boot - Boot from Memory mem_cmp - Compare memory content mem_speed - Test memory speed mem_test - Test memory access mem_copy - Copy address space mem_write - Write address space mem_read - Read address space mem_list - List available memory regions