バージョン: 2024/05/29
目次:
JASAチップ1の実現可能性をeFablessの設計および製造プロセスを用いて評価するために、「Marmot1」ロジックをMPW-6のオープンプロジェクトエリアに配置し、「ユーザーサーキットデバッグ機能」を評価します。この評価には、Caravelプログラムを作成し、その機能をテストすることが含まれます。MPW-6で「Marmot1」を実行することで、JASAチップ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] |
以下のように、外部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 |

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

以下のコマンドを実行してファームウェアをビルドし、Caravel管理SoCにフラッシュしてください
cd ~/caravel_samples/picorv32/marmot
make clean
make
sudo make flash
PicoRV32コアにファームウェアをフラッシュすると、CaravelボードのLED D3が点滅し始めます。
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コアの出力が確認できます。
以下の手順に従ってください:
cd ~/caravel_samples/rocket/gpio
make clean
make
sudo make flash2
GPIOピンから信号を取得できました。
対応するピンについては、表ピン配置をご確認ください。
例えば、Caravelボードのgpio0はmprj_io[14]です。oard.






| 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] |
以下の手順に従ってください:
cd ~/caravel_samples/rocket/uart
make clean
make
sudo make flash2
UART0から出力が確認できます。

UART1 - UART4。

| Caravel mprj_io[#] | Marmot IOF0 |
|---|---|
| 26 | i2c0_sda |
| 27 | i2c0_scl |
| 28 | i2c1_sda |
| 29 | i2c1_scl |
以下の手順に従ってください:
cd ~/caravel_samples/rocket/i2c
make clean
make
sudo make flash2
AHT20センサーから温度と湿度を読み取り、それらをUART0に出力できます。

| Caravel mprj_io[#] | Marmot IOF0 |
|---|---|
| 14 | spi1_csb[0] |
| 15 | spi1_sck |
| 16 | spi1_mosi |
| 17 | spi1_miso |
以下の手順に従ってください:
cd ~/caravel_samples/rocket/spi
make clean
make
sudo make flash2

ロジックアナライザーは、ユーザーエリアと管理SoC間を行き来する128ビットのポートです。製造後、SoCはユーザーエリアから任意の信号を「プローブ」することができます(ただし、製造後に変更することはできません)。これは、ブリングアッププロセス中に信号をデバッグしたり、ハードウェアのバグを発見したり、正常に動作していることを確認するために役立ちます。
Marmot1のユーザーロジックでは、最も下位の32ビットポートがgpio0からgpio31に接続されています。
LAテストを実行するには、以下の手順に従ってください:
cd ~/caravel_samples/picorv32/la
make clean
make
sudo make flash
cd ~/caravel_samples/rocket/gpio
make clean
make
sudo make flash2
PicoRV32からUART0でログを取得できます。 PicoRV32 UARTのボーレートは9600です。
Copyright © Japan Embedded Systems Technology Association All Rights Reserved.