FC2カウンター FPGAの部屋 Xyloni Development Kit
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる6

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる5”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、論理合成、Place & Route、ビットファイルの生成を行った。今回は、Efinity Programmer を起動して、Xyloni Development Kit に Sapphire SoC のビットファイルを SPI Active モードで書き込んだ。

最初に、Xyloni Development Kit を Windows 11 のパソコンに USB ケーブルで接続した。

Efinity から Open Programmer ボタンをクリックした。
Efinity_251_240419.png

Efinity Programmer が起動した。
Select Image File ボタンをクリックした。
Efinity_252_240419.png

Open Image File ダイアログが表示された。
xyloni_sapphire.hex ファイルを選択して、開くボタンをクリックした。
Efinity_253_240419.png

Efinity Programmer に戻って、Programming Mode を SPI Active モードに変更した。
Efinity_254_240419.png

Start Program ボタンをクリックし、HEX ファイルを Xyloni Development Board に書き込んだ。
Efinity_255_240419.png

HEX ファイルの書き込みが終了した。
Efinity_256_240419.png

ログを貼っておく。

金 4月 19 24 04:24:47 - Valid device ID found: 0x00000000
金 4月 19 24 04:24:47 - Board Profile: Xyloni Developement Board
金 4月 19 24 04:27:56 - Valid device ID found: 0x00000000
金 4月 19 24 04:27:56 - Board Profile: Xyloni Developement Board
金 4月 19 24 04:27:56 - Using FTDI URL (SPI = ftdi://0x0403:0x6011:0:1/1, JTAG = ftdi://0x0403:0x6011:0:2/1)
金 4月 19 24 04:27:56 - SPI Active Programming on ftdi://0x0403:0x6011:0:1/1
金 4月 19 24 04:27:57 - Unrecognized Flash device. Will use Generic Flash profile. Please contact support if you face any problem.
金 4月 19 24 04:27:57 - Flash device: Generic Flash Profile. JEDEC id: 0xEF7018 @ SPI freq 6.0 MHz
金 4月 19 24 04:27:57 - Erasing 172 KiB from flash @ 0x00000000 (may take a while...)
金 4月 19 24 04:28:01 - Finished erase in 4 seconds
金 4月 19 24 04:28:01 - Writing 169 KiB to flash @ 0x00000000 ...
金 4月 19 24 04:28:03 - Finished write in 1 seconds
金 4月 19 24 04:28:03 - Reading 169 KiB from flash @ 0x00000000 ...
金 4月 19 24 04:28:03 - Finished read in 0 seconds
金 4月 19 24 04:28:03 - Flash verify successful
金 4月 19 24 04:28:03 - "SPI active" programming...done

  1. 2024年04月19日 04:44 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる5

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる4”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。今回は、論理合成、Place & Route、ビットファイルの生成を行った。

Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックした。
Efinity_246_240418.png

論理合成、Place & Route、ビットファイルの生成が実行された。
Efinity_247_240418.png

Result タブをクリックし、Synthesis -> xyloni_sapphire.map.rpt を確認した。
Efinity_248_240418.png

プリミティブの使用量を以下にしめす。

### ### Resource Summary (begin) ### ### ### 
INPUT  PORTS    :   33
OUTPUT PORTS    :   51

EFX_ADD         :   482
EFX_LUT4        :   3194
   1-2  Inputs  :   543
   3    Inputs  :   1043
   4    Inputs  :   1608
EFX_FF          :   2636
EFX_RAM_5K      :   18
EFX_GBUFCE      :   2
### ### Resource Summary (end) ### ### ###


Placement -> xyloni_sapphire.place.rpt を示す。
Efinity_249_240418.png

Place された後の最終的なリソース使用量を示す。

---------- Resource Summary (begin) ----------
Inputs: 31 / 96 (32.29%)
Outputs: 63 / 223 (28.25%)
Clocks: 2 / 16 (12.50%)
Logic Elements: 4972 / 7384 (67.33%)
    LE: LUTs/Adders: 3678 / 7384 (49.81%)
    LE: Registers: 2636 / 5280 (49.92%)
Memory Blocks: 18 / 24 (75.00%)
Multipliers: 0 / 8 (0.00%)
---------- Resource Summary (end) ----------



Routing -> xyloni_sapphire.timing.rpt を示す。
Efinity_250_240418.png

クロックのタイミング制約は満たされている。

---------- 1. Clock Frequency Summary (begin) ----------

User target constrained clocks
  Clock Name   Period (ns)  Frequency (MHz)    Waveform        Targets
io_systemClk      40.000        25.000      {0.000 20.000} {io_systemClk}  
jtag_inst1_TCK   100.000        10.000      {0.000 50.000} {jtag_inst1_TCK}

Maximum possible analyzed clocks frequency
  Clock Name   Period (ns)  Frequency (MHz)     Edge
io_systemClk      34.894        28.658         (R-R)
jtag_inst1_TCK    45.442        22.006         (F-R)

Geomean max period: 39.820

---------- Clock Frequency Summary (end) ---------------

  1. 2024年04月18日 05:01 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる4

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる3”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。今回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。

Open Interface Designer ボタンをクリックし、Interface Designer を起動する。
Efinity_234_240416.png

Efinity Interface Designer が起動した。
Show/Hide GPIO Resouce Assigner ボタンをクリックし、GPIO Resource Assiger を表示する。
Efinity_235_240417.png

GPIO : Instance View タブが表示された。
system_gpio_0_io[0]Package Pin をダウブルクリックし、出てきた下向き三角をクリックすると、設定値がプルダウンメニューで表示された。プルダウンメニューから C9 を選択する。
Efinity_236_240417.png

このピンはすでに gpio_0_io[15] に接続済みなので、Assigning GPIO Instance ダイアログが表示された。
OK ボタンをクリックした。
Efinity_237_240417.png

system_gpio_0_io(0) の >Package Pin は C9 に割り当てられた。

次に、system_gpio_0_io[15] だが、Package Pin は system_gpio_0_io[0] に割り当てられてしまったので、ブランクになっている。
前の system_gpio_0_io[0] と同様ステップを踏んで、Package Pin を B3 に割り当てた。
Efinity_238_240417.png

次に PLL の設定を行う。
Efinity_239_240417.png

Block Editor の Manual Configuration タブをクリックした。
Reset Pin NamesystemClk_rstn に変更した。
Locked Pin NamesystemClk_locked に変更した。
Multipller (M)24 に設定した。
Pre Divider (N) を 1 に設定した。
Efinity_240_240417.png

下にスクロールした。
PLL Frequency の Psot Divider (O)1 に設定した。
Output Divider32 に設定した。
Output Frequncy (MHz) が 24.9975 になった。
Efinity_241_240417.png

左のウインドウの Design : T8T81 -> GPIO (30) -> io_asyncReset:GPIOR_02 をクリックした。
Pin Nameio_asyncResetn に変更した。
Efinity_242_240417.png

Check Design ボタンをクリックして、Check Design を行った。
Efinity_243_240417.png

Check Design が終了した。
Efinity_244_240417.png

最後に、File メニューから Edit Project... を選択した。
Project Editor ダイアログが表示された。
Design タブをクリックした。
Top Module/Entitytop_soc と入力した。
これを入力し忘れると、論理合成でエラーが出てしまう。
Efinity_245_240417.png
  1. 2024年04月17日 18:26 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる3

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる2”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。今回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。

xyloni_sapphire プロジェクトの top_soc.v を開いた。
ポート宣言のところの system_spi_0_... の記述をコピーし、ペーストして、system_spi_1_... に記述をすべて変更した。
Sapphire SoC の生成のところで、SPI_1 を追加したため、Example Design よりもポートが増えているからだ。
Efinity_223_240416.png

同じく、top_soc.v の memoryCheckerPass の行を削除する。
Efinity_224_240416.png

memoryCheckerPass の行を削除した。
Efinity_225_240416.png

次に top_soc.v の SapphireSoC IP のインスタンス部分で、SPI_0 の記述をコピー & ペーストして、SPI_1 の記述に変更する。
元の SPI_1 の記述を示す。
Efinity_226_240416.png

SPI_0 の接続をコピー & ペーストして、SPI_1 に変更した。
Efinity_227_240416.png

セーブ・ボタンをクリックして、セーブを行った。
Efinity を終了した。

Synthesize ボタンをクリックして論理合成、Place & Route、ビットファイルの生成を行った。
Efinity_228_240416.png

GitHub の Efinix-Inc/xyloni の code の横の下向き三角をクリックし、プルダウンメニューから Download ZIP を選択して、ZIP ファイルをダウンロードした。
Efinity_229_240416.png

xyloni-master.zip がダウンロードされた。
xyloni-master.zip を解凍した xyloni-master フォルダの名前を xyloni に変更した。

xyloni_sapphire プロジェクトのフォルダを見ると、xyloni_sapphire.peri.xml ファイルがあったので、これを削除する。
Efinity_230_240416.png

xyloni_sapphire.peri.xml ファイルを削除した。

xyloni\design\soc_Opal_t8\soc_Opal_hw_t8\Xyloni_kit\soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーする。
Efinity_231_240416.png

soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーした。
Efinity_232_240416.png

soc_opalSoc.peri.xml の名前を xyloni_sapphire.peri.xml に変更した。
Efinity_233_240416.png
  1. 2024年04月16日 04:53 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる2

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる1”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Windows 11 のパソコンで、Efinity を起動して、xyloni_sapphire プロジェクトを作成した。そして、RISC-V プロセッサの IP である SapphireSoC IP を生成した。今回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。

SapphireSoC IP を生成したときに生成された T120F324_devkit の Verilog HDL ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。

左のウインドウの Project タブの xyloni_sapphire -> Design を右クリックし、右クリックメニューから Add を選択した。
Efinity_217_240415.png

Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの top_soc.v を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
Efinity_218_240415.png

top_soc.v が 左のウインドウの Project タブの xyloni_sapphire -> Design に加わった。

次に制約ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。

左のウインドウの Project タブの xyloni_sapphire -> Constraint を右クリックし、右クリックメニューから Add を選択した。
Efinity_219_240415.png

Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの constraints.sdc を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
Efinity_220_240415.png

constraints.sdc が左のウインドウの Project タブの xyloni_sapphire -> constraint に加わった。
Efinity_221_240415.png

Dashboard の Synthesize ボタンをクリックして、論理合成、Place & Route、ビットファイルの生成を行った。

ビットファイルの生成まで終了したが、Unassigned Core Pins が 71 個ある。
Efinity_222_240415.png
  1. 2024年04月15日 04:28 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる1

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみよう。
その第1弾として、RISC-V の IP の Sapphire SoC を生成する。

Windows 11 の Efinity 2023.2 を起動して、File メニューから Create Project... を選択した。
Name に xyloni_sapphire と入力した。
Location は C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire とした。
Family は Trion, Device はT8F81, Timing Model は C2 とした。
OK ボタンをクリックした。
Efinity_192_240414.png

xyloni_sapphire プロジェクトが作成された。
Efinity_187_240413.png

左のウインドウの Project タブの IP を右クリックし、右クリックメニューから New IP を選択した。
Efinity_193_240414.png

IP Catalog ダイアログが表示された。
Efinix -> Processors and Peripherals -> Sapphire SoC を選択して、Next>> ボタンをクリックした。
Efinity_194_240414.png

IP Configuration ダイアログが表示された。
SOC タブ
デフォルトの状態を下に示す。
Option と Frequency (MHz) と Cache を変更する。
Efinity_195_240414.png

Opetin を Lite に Frequency (MHz) を 25 MHz に、Cache のチェックボックスのチェックを外した。
Efinity_196_240414.png

Cache/Memory タブ
デフォルトの状態を下に示す。
Efinity_197_240414.png

External Memory Interface のチェックボックスのチェックを外した。
Efinity_198_240414.png

Debug タブ
Target Board/Cable/Module を Xyloni に変更した。
Efinity_199_240414.png

UART タブ
デフォルトのままとした。
Efinity_200_240414.png

SPI タブ
SPI は Flush と SD カードの 2 つのチャネルを使用するので、SPI 1 をイネーブルにするそうだ。
SPI 1 の Include the SPI 1 のチェックボックスにチェックを入れた。
Efinity_201_240414.png

I2C タブ
デフォルトのままとした。
Efinity_202_240414.png

GPIO タブ
GPIO 0 Bit Width を 16 ビットに変更した。
Efinity_203_240414.png

APB3 タブ
APB Slave 0 の Include the APB3 interface 0 のチェックボックスのチェックを外した。
Efinity_204_240414.png

AXI4 タブ
AXI Slave の Include the AXI4 Slave interface のチェックボックスのチェックを外した。
Efinity_205_240414.png

User Interrupt タブ
User A Interrupt の Include the User Interface A のチェックボックスのチェックを外した。
Efinity_206_240414.png

User Timer タブ
User Timer 0 の Include the User Timer 0 のチェックボックスのチェックを入れた。
Efinity_207_240414.png

Base Address タブ
Address Assignment Method はデフォルトの AUTO のままとした。
Efinity_208_240414.png

Deliverables タブ
Example Design (Ti60F255_devkit) と Example Design (Ti180J484_devkit) と Testbench/modelsim のチェックボックスのチェックを外した。
Efinity_209_240414.png

Summary タブ
Module Name に SapphireSoc を入力した。
Summary を確認し、Generate ボタンをクリックした。
Efinity_210_240414.png

Review generation configuration ダイアログが表示された。
Generate ボタンをクリックした。
Efinity_211_240414.png

Generation Success ダイアログが表示された。
OK ボタンをクリックした。
Efinity_212_240414.png

IP Catalog ダイアログの Close ボタンをクリックして、閉じた。
Efinity_213_240414.png

Efinity の左のウインドウの Project タブの IP の下に IP : SapphireSoC が追加された。
Efinity_214_240414.png

xyloni_sapphire フォルダを示す。
embedded_sw フォルダと IP フォルダが作られている。
Efinity_215_240414.png

xyloni_sapphire\ip\SapphireSoC フォルダを示す。
Deliverables タブで指定した T120F324_devkit のサンプル・デザインとテストベンチのフォルダが見える。
Efinity_216_240414.png
  1. 2024年04月14日 07:04 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5)

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、作成した uartEchoDemo の実行のための準備を進めて、Run Configuration を設定した。今回は、Efinity Programmer でFPGA をコンフィギュレーションし、Efinity RISC-V Embedded Software IDE で Run したところ、失敗した。その後、Run Configuration を変えて見たが、失敗した。OpenOCD が必要ということで、インストールしてから、Run してみたが、やはり失敗した。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。

soc_sap_t8 の hex ファイルを SPI Active モードで Xyloni に書き込む。
Efinity Software で Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/outflow/soc_sap_t8.hex を選択した。
Programming Mode を SPI Active に変更した。
Efinity_175_L240409.png

Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
Efinity_176_L240409.png

Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックし、プログラムを走らせた。
Efinity_177_L240409.png

エラーが発生した。
Efinity_178_L240409.png

Error in services launch sequence
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Cannot run program "openocd": Unknown reason


よく見るとパスの区切りが \ になっている。
Run Configuration ダイアログの Debugger タブの Config options の \ を / に変更した。
Efinity_179_L240409.png

Apply ボタンをクリックしてから、Run ボタンをクリックした。
Efinity_180_L240409.png

やはりエラーだった。
Efinity_181_L240409.png

Error in services launch sequence
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Cannot run program "openocd": Unknown reason


もしかして? OpenOCD インストールしてないかも?ということで、OpenOCD をインストールするために”OpenOCDのインストール for ubuntu”を参考に、OpenOCD をインストールした。
sudo apt install openocd
Efinity_182_L240409.png

インストールされてなかったようだ。。。orz
バージョンを確認した。
openocd -v
Efinity_183_L240409.png
バージョンは、

Open On-Chip Debugger 0.11.0

だった。

これで、もう一度 Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックすると、今度は、OpenOCD が Fail した。
Efinity_184_L240409.png

Run Configuration ダイアログの Debugger タブの Config options に

-c 'set CPU0_YAML /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/cpu0.yaml'

を追加しても同様にエラーだった。
Efinity_185_L240409.png
  1. 2024年04月11日 07:28 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0
»