[JASA 1C2] SoCハーネス機能ユーザーロジックデバッグ – Caravel SoC

バージョン: 2024/05/29

目次:

  1. 序文
  2. ソフトウェアの設定
  3. ハードウェアの設定
  4. ファームウェア
  5. ユーザーロジックデバッグ機能
  6. Caravelのロジックアナライザー

1. 序文

JASAチップ1の実現可能性をeFablessの設計および製造プロセスを用いて評価するために、「Marmot1」ロジックをMPW-6のオープンプロジェクトエリアに配置し、「ユーザーサーキットデバッグ機能」を評価します。この評価には、Caravelプログラムを作成し、その機能をテストすることが含まれます。MPW-6で「Marmot1」を実行することで、JASAチップ1で使用することを意図した設計フローをデモンストレーションすることを目指しています。

2. ソフトウェアの設定

前回の調査で行ったソフトウェアのセットアップに従ってください。

3. ハードウェアの設定

3.1 ピン配置

Caravel mprj_io[#]Caravel Mgmt. SoCMarmot IOF0Marmot GPIO
0JTAG
1SDOTDO
2SDITDI
3CSBTMS
4SCKTCK
5ser_rxuart0_rx
6ser_txuart0_tx
7irqspi1_csb[1]gpio[24]
8flash2_csbspi0_flash_csb
9flash2_sckspi0_flash_sck
10flash2_io[0]spi0_flash_io[0]
11flash2_io[1]spi0_flash_io[1]
12spi0_flash_io[2]
13spi0_flash_io[3]
14spi1_csb[0]gpio[0]
15spi1_sckgpio[1]
16spi1_io[0]gpio[2]
17spi1_io[1]gpio[3]
18spi1_io[2]gpio[4]
19spi1_io[3]gpio[5]
20spi2_csb
21spi2_sck
22spi2_io[0]
23spi2_io[1]
24spi2_io[2]
25spi2_io[3]
26i2c0_sdagpio[12]
27i2c0_sclgpio[13]
28i2c1_sdagpio[14]
29i2c1_sclgpio[15]
30uart1_rxgpio[16]
31uart1_txgpio[17]
32uart2_rxgpio[18]
33uart2_txgpio[19]
34uart3_rxgpio[20]
35uart3_txgpio[21]
36uart4_rxgpio[22]
37uart4_txgpio[23]

3.2. Caravelボードを準備する

セットアップを開始する前に、Caravelボードの電源が切られていることを確認してください。
M.2カードがMarmot1 MPW-6と共に適切にM.2コネクタに挿入され、ネジでしっかり固定されていることを確認してください。

3.3. ハードウェア接続

以下のように、外部SPIフラッシュモジュールW25Q32(flash2)をCaravelボードに接続してください。

Caravel BoardMarmot IOF0Flash2
3V3VCC
GNDGND
mprj_io[8]spi0_flash_csbCS
mprj_io[9]spi0_flash_sckCLK
mprj_io[10]spi0_flash_io[0]DI
mprj_io[11]spi0_flash_io[1]DO

以下のように、AHT20センサーモジュールをCaravelボードに接続してください。

Caravel BoardMarmot IOF0AHT20
3V3VIN
GNDGND
mprj_io[26]i2c0_sdaSDA
mprj_io[27]i2c0_sclSCL

以下のように、USBからTTLモジュール(3.3V)を接続してください。

Caravel BoardMarmot IOF0USB to TTL
GNDGND
mprj_io[5]uart0_rxTx
mprj_io[6]uart0_txRx

これでハードウェアのセットアップが完了し、テストの準備が整いました。

4. ファームウェア

4.1. PicoRV32 Core

以下のコマンドを実行してファームウェアをビルドし、Caravel管理SoCにフラッシュしてください

cd ~/caravel_samples/picorv32/marmot make clean make sudo make flash

PicoRV32コアにファームウェアをフラッシュすると、CaravelボードのLED D3が点滅し始めます。

4.2. Rocket Core

Rocketコア用のファームウェアは、外部SPIフラッシュメモリ「flash2」(W25Q32)に配置されます。

外部SPIフラッシュ(W25Q32)をフラッシュするために、ユーザーパススルーモードを使用します。 まず、SPIフラッシュのCSピンをmprj_io[8]ではなくmprj_io[3]に接続する必要があります。

以下のコマンドを実行してファームウェアをビルドし、外部SPIフラッシュメモリにフラッシュしてください:

cd ~/caravel_samples/rocket/hello make clean make sudo make flash2

「flash2」をフラッシュした後、CSピンをmprj_io[8]に再接続する必要があります。これにより、RocketコアがSPIフラッシュメモリからコマンドにアクセスして実行できるようになります。

RESETボタンを押すと、UART(ボーレート115200)を介してRocketコアの出力が確認できます。

5. ユーザーロジックデバッグ機能

5.1. GPIO

以下の手順に従ってください:

  1. 「flash2」のCSピンをmprj_io[3]に接続します。
  2. 以下のコマンドを実行してファームウェアをRocketコアにフラッシュします:
cd ~/caravel_samples/rocket/gpio make clean make sudo make flash2
  1. 「flash2」のCSピンをmprj_io[8]に戻します。
  2. RESETボタンを押します。

GPIOピンから信号を取得できました。
対応するピンについては、表ピン配置をご確認ください。
例えば、Caravelボードのgpio0はmprj_io[14]です。

5.2. UART

Caravel mprj_io[#]Caravel Mgmt. SoCMarmot IOF0Marmot GPIO
5ser_rxuart0_rx
6ser_txuart0_tx
30uart1_rxgpio[16]
31uart1_txgpio[17]
32uart2_rxgpio[18]
33uart2_txgpio[19]
34uart3_rxgpio[20]
35uart3_txgpio[21]
36uart4_rxgpio[22]
37uart4_txgpio[23]

以下の手順に従ってください:

  1. 「flash2」のCSピンをmprj_io[3]に接続します。
  2. 以下のコマンドを実行してファームウェアをRocketコアにフラッシュします:
cd ~/caravel_samples/rocket/uart make clean make sudo make flash2
  1. 「flash2」のCSピンをmprj_io[8]に戻します。
  2. RESETボタンを押します。

UART0から出力が確認できます。

UART1 – UART4。

5.3. I2C

Caravel mprj_io[#]Marmot IOF0
26i2c0_sda
27i2c0_scl
28i2c1_sda
29i2c1_scl

以下の手順に従ってください:

  1. 「flash2」のCSピンをmprj_io[3]に接続します。
  2. 以下のコマンドを実行してファームウェアをRocketコアにフラッシュします:
cd ~/caravel_samples/rocket/i2c make clean make sudo make flash2
  1. 「flash2」のCSピンをmprj_io[8]に戻します。
  2. RESETボタンを押します。

AHT20センサーから温度と湿度を読み取り、それらをUART0に出力できます。

5.4. SPI

Caravel mprj_io[#]Marmot IOF0
14spi1_csb[0]
15spi1_sck
16spi1_mosi
17spi1_miso

以下の手順に従ってください:

  1. 「flash2」のCSピンをmprj_io[3]に接続します。
  2. 以下のコマンドを実行してファームウェアをRocketコアにフラッシュします:
cd ~/caravel_samples/rocket/spi make clean make sudo make flash2
  1. 「flash2」のCSピンをmprj_io[8]に戻します。
  2. RESETボタンを押します。

6. Caravelのロジックアナライザー

ロジックアナライザーは、ユーザーエリアと管理SoC間を行き来する128ビットのポートです。製造後、SoCはユーザーエリアから任意の信号を「プローブ」することができます(ただし、製造後に変更することはできません)。これは、ブリングアッププロセス中に信号をデバッグしたり、ハードウェアのバグを発見したり、正常に動作していることを確認するために役立ちます。

Marmot1のユーザーロジックでは、最も下位の32ビットポートがgpio0からgpio31に接続されています。

LAテストを実行するには、以下の手順に従ってください:

  1. 以下のコマンドを実行してPicoRV32コアにファームウェアをフラッシュします:
cd ~/caravel_samples/picorv32/la make clean make sudo make flash
  1. 「flash2」のCSピンをmprj_io[3]に接続します。
  2. 以下のコマンドを実行してRocketコアにファームウェアをフラッシュします:
cd ~/caravel_samples/rocket/gpio make clean make sudo make flash2
  1. 「flash2」のCSピンをmprj_io[8]に戻します。
  2. RESETボタンを押します。

PicoRV32からUART0でログを取得できます。 PicoRV32 UARTのボーレートは9600です。