[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. SoC Marmot IOF0 Marmot GPIO
0 JTAG - -
1 SDO TDO -
2 SDI TDI -
3 CSB TMS -
4 SCK TCK -
5 ser_rx uart0_rx -
6 ser_tx uart0_tx -
7 irq spi1_csb[1] gpio[24]
8 flash2_csb spi0_flash_csb -
9 flash2_sck spi0_flash_sck -
10 flash2_io[0] spi0_flash_io[0] -
11 flash2_io[1] spi0_flash_io[1] -
12 - spi0_flash_io[2] -
13 - spi0_flash_io[3] -
14 - spi1_csb[0] gpio[0]
15 - spi1_sck gpio[1]
16 - spi1_io[0] gpio[2]
17 - spi1_io[1] gpio[3]
18 - spi1_io[2] gpio[4]
19 - spi1_io[3] gpio[5]
20 - spi2_csb -
21 - spi2_sck -
22 - spi2_io[0] -
23 - spi2_io[1] -
24 - spi2_io[2] -
25 - spi2_io[3] -
26 - i2c0_sda gpio[12]
27 - i2c0_scl gpio[13]
28 - i2c1_sda gpio[14]
29 - i2c1_scl gpio[15]
30 - uart1_rx gpio[16]
31 - uart1_tx gpio[17]
32 - uart2_rx gpio[18]
33 - uart2_tx gpio[19]
34 - uart3_rx gpio[20]
35 - uart3_tx gpio[21]
36 - uart4_rx gpio[22]
37 - uart4_tx gpio[23]

3.2. Caravelボードを準備する

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

3.3. ハードウェア接続

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

Caravel Board Marmot IOF0 Flash2
3V3 VCC
GND GND
mprj_io[8] spi0_flash_csb CS
mprj_io[9] spi0_flash_sck CLK
mprj_io[10] spi0_flash_io[0] DI
mprj_io[11] spi0_flash_io[1] DO

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

Caravel Board Marmot IOF0 AHT20
3V3 VIN
GND GND
mprj_io[26] i2c0_sda SDA
mprj_io[27] i2c0_scl SCL

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

Caravel Board Marmot IOF0 USB to TTL
GND GND
mprj_io[5] uart0_rx Tx
mprj_io[6] uart0_tx Rx

Hardware

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

Hardware

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]に接続する必要があります。

change CS pin

以下のコマンドを実行してファームウェアをビルドし、外部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]です。oard.

GPIO

GPIO

GPIO

GPIO

GPIO

GPIO

5.2. UART

Caravel mprj_io[#] Caravel Mgmt. SoC Marmot IOF0 Marmot GPIO
5 ser_rx uart0_rx -
6 ser_tx uart0_tx -
30 - uart1_rx gpio[16]
31 - uart1_tx gpio[17]
32 - uart2_rx gpio[18]
33 - uart2_tx gpio[19]
34 - uart3_rx gpio[20]
35 - uart3_tx gpio[21]
36 - uart4_rx gpio[22]
37 - uart4_tx gpio[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から出力が確認できます。

UART0

UART1 - UART4。

UART

5.3. I2C

Caravel mprj_io[#] Marmot IOF0
26 i2c0_sda
27 i2c0_scl
28 i2c1_sda
29 i2c1_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に出力できます。

I2C

5.4. SPI

Caravel mprj_io[#] Marmot IOF0
14 spi1_csb[0]
15 spi1_sck
16 spi1_mosi
17 spi1_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ボタンを押します。

SPI

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です。