FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

LiteXによるSoC環境構築を試行する (5. LiteXでのPLICによるキーボードが動いた)

https://raw.githubusercontent.com/enjoy-digital/litex/master/doc/litex.png

久しぶりに自作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