FPGAの部屋 2024年10月
FC2ブログ

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

FPGAの部屋

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

Identify を試してみる5

Identify を試してみる4”の続き。

MACNICA の Identify という資料を見つけたので、Identify を使ってみようということで、前回は、Synplify Pro で論理合成を行って、Synplify Pro を閉じた。Libero SoC に戻って、Place and Route を行った。今回は、FPGA をプログラムしたが、エラーになってしまった。もう一度、FPGA をプログラムしたところ今度は成功した。

FPGA にビットファイルをダウンロードして、プログラムする。

Program Design -> Run PROGRAM Action をダブルクリックした。
Libero_SoC2_638_241031.png

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

エラーを示す。

Error: programmer 'E20094IQJG' : device 'MPFS095T' : FP5 Scan: JTAG_ExecuteCommandSequence
       FP5: Error code = 4 - General device IO error.
programmer 'E20094IQJG' : device 'MPFS095T' : Finished: Thu Oct 31 04:16:48 2024 (Elapsed time 00:00:01)
Error: programmer 'E20094IQJG' : device 'MPFS095T' : Executing action PROGRAM FAILED.
Error: programmer 'E20094IQJG' : Chain programming FAILED.
Chain Programming Finished: Thu Oct 31 04:16:48 2024 (Elapsed time 00:00:01)
Error: Failed to run Action.
Error: The command 'run_selected_actions' failed.
Error: Failure when executing Tcl script. [ Line 5 ]
Error: The Execute Script command failed.


もう一度、Program Design -> Run PROGRAM Action をダブルクリックしたところ、成功した。
Libero_SoC2_640_241031.png

ディスプレイにテストパターンが表示された。
Libero_SoC2_587_241026.jpg

FPGA をプログラムしたときに、エラーが出ることがあるんだね。
  1. 2024年10月31日 04:30 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Identify を試してみる4

Identify を試してみる3”の続き。

MACNICA の Identify という資料を見つけたので、Identify を使ってみようということで、前回は、Idenfity Instrumentor の Watchpoint と Breakpoint を設定して、FPGA のメモリ長や Memory Type を設定した。今回は、Synplify Pro で論理合成を行って、Synplify Pro を閉じた。Libero SoC に戻って、Place and Route を行った。

Synplify Pro で、synthesis_1 をクリックして、Run ボタンをクリックした。
Libero_SoC2_625_241030.png

Design out of date ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_626_241030.png

論理合成が終了した。
Libero_SoC2_627_241030.png

Project Status タブの内容を示す。
Libero_SoC2_628_241030.png
Libero_SoC2_629_241030.png

Synplify Pro を閉じた。
Libero SoC に戻って、Implement Design -> Place and Route をダブルクリックして、Place and Route を行った。
Libero_SoC2_630_241030.png

Place and Route が終了した。
4LUT の使用量は 1326 で、Idenfity Instrumentor を入れない時は、300 くらいだったと思うので、1000 くらい増えたようだ。
Libero_SoC2_631_241030.png

Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックして、SmartTime ウインドウを開いた。
タイミング制約を掛けた pll_clk が 414.938 MHz になっていた。
PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 が 170.503 MHz で 148.5 MHz は満たしている。
Libero_SoC2_632_241030.png

PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 -> Register to Register をクリックした。
Libero_SoC2_633_241030.png

PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 -> Register to Register の右ウインドウのリストから一番上の項目をダブルクリックした。
各パスのディレイが表示されて、グラフィカルに遅延パスを見ることができるようだ。
Libero_SoC2_634_241030.png

Max Delay Analysis ボタンをクリックすると元の画面に戻る。

atck -> Register to Register をクリックした。
このクロックは、Identify のクロックのようだ。
Libero_SoC2_635_241030.png

atck -> Register to Register の右ウインドウのリストから一番上の項目をダブルクリックした。
Libero_SoC2_636_241030.png

pll_clk -> Register to Register には、エントリが何もない。
Libero_SoC2_637_241030.png

pll_clk はネット名で制約を掛けているので、インスタンスの PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 で制約を掛けた方が良さそうだ。
  1. 2024年10月30日 05:13 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Identify を試してみる3

Identify を試してみる2”の続き。

MACNICA の Identify という資料を見つけたので、Identify を使ってみようということで、前回は、Identify インプリメンテーションを新規作成して、Idenfity Instrumentor を起動した。今回は、Idenfity Instrumentor の Watchpoint と Breakpoint を設定して、FPGA のメモリ長や Memory Type を設定した。

MACNICA の Identify14 ページ目の Watchpoint とBreakpoint を引用する。

Watchpoint とBreakpoint
 Watchpoint はデザイン内の信号の状態でトリガを生成
• 信号の値でトリガまたはある値から別の値への信号の遷移でトリガ
 Breakpoint はフローでトリガを生成
• if, else, case 文
• Breakpoint は、1つ以上のif ~ elseまたはcase 文の条件式に特定の値
がある場合にトリガ
 Identify Instrumentor で設定された Watchpoint と
Breakpoint のみが、Identify Debugger でトリガとして有効


Watchpoint を指定する。
PF_CCC_C1_0_OUT0_FABCLK_0 を右クリックし、右クリックメニューから Sample Clock を指定した。
下の図は既に指定されている。
MACNICA の Identify15 ページ目には、”CCC(PLL)の出力ネットを Sample Clock に設定不可”と書いてあったが、この信号をクロックに使用しているので、とりあえず Sample Clock に指定してみた。ダメだったら後で BUFG を追加する。
Libero_SoC2_611_241029.png

BLUE_O を右クリックし、右クリックメニューから Sample and Trigger を選択して、設定する。
Libero_SoC2_612_241029.png

BLUE_O に Sample and Trigger を選択して、設定した。
Libero_SoC2_613_241029.png

GREEN_O と RED_O、H_SYNC_O、V_SYNC_O にも同様に、Sample and Trigger を選択して、設定した。

PATTERN_SEL_I[2:0] には、Sample Only を指定する。
Libero_SoC2_614_241029.png

PATTERN_SEL_I[2:0] に、Sample Only を指定した。
Libero_SoC2_615_241029.png

次に Breakpoint を指定する。
Test Pattern Generator で、赤一面の場合の r_red に値を代入している行を Breakpoint に指定した。
Libero_SoC2_616_241029.png

FPGA Memory を指定する。
左のウインドウで Control Panel タブの FPGA Memory をクリックする。
Libero_SoC2_617_241029.png

IICE Sampler タブ
Memory Type を URAM に変更し、Sample depth を 1024 に変更した。
Libero_SoC2_618_241029.png

IICE Clock タブ
Sample Clock が指定されている。
Libero_SoC2_619_241029.png

IICE Controller タブ
Libero_SoC2_620_241029.png

IICE Options タブ
Libero_SoC2_621_241029.png

OK ボタンをクリックした。

File メニューから Save All を選択して、セーブした。

File メニューから Close を選択して、Idenfity Instrumentor を終了した。
Libero_SoC2_622_241029.png

Synplify Pro に戻った。
Libero_SoC2_623_241029.png

HDMI_TX_SD.srs (RTL)[d:0] タブをクリックした。
ブロック図が表示された。
Libero_SoC2_624_241029.png
  1. 2024年10月29日 04:36 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Identify を試してみる2

Identify を試してみる1”の続き。

MACNICA の Identify という資料を見つけたので、Identfy を使ってみようということで、前回は、DIP SW に PATTERM_SEL_I [2:0] を割り当てて、論理合成、Place and Route を行った。今度は DIP SW でテストパターンを変更することができた。今回は、Identify インプリメンテーションを新規作成して、Idenfity Instrumentor を起動した。

Options -> Configure Identify Launch... を選択した。
Libero_SoC2_601_241028.png

Synplify Pro (R) ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_602_241028.png

Configure Identify Launch ダイアログが表示された。
Where is identify installed? の ... ボタンをクリックして、identify のディレクトリを選択した。
後はデフォルトのまま、OK ボタンをクリックした。
Libero_SoC2_603_241028.png

synthesis を右クリックし、右クリックメニューから New Identify Implementation... を選択した。
Libero_SoC2_610_241028.png

Add Identity Implementation ダイアログが表示された。
Implementation Name: に synthesis_1 と入力した。
後は下図のように設定した。デフォルトのままだったと思う。
Libero_SoC2_605_241028.png

synthesis_1 が生成された。
Libero_SoC2_606_241028.png

synthesis_1 を右クリックし、右クリックメニューから Identify Instrumentor を選択した。
Libero_SoC2_607_241028.png

SRS Instrumentation ダイアログが表示された。
SRS Instrumentation Options の 2 つのチェックボックスのチェックを確認して、OK ボタンをクリックした。
Libero_SoC2_608_241028.png

Identify Instrumentor が起動した。
Libero_SoC2_609_241028.png
  1. 2024年10月28日 04:00 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Identify を試してみる1

MACNICA の Identify という資料を見つけたので、Identify を使ってみよう。

Identify はMACNICA の Identifyによると、Synopsys社のRTLソース・レベル・ハードウェア・デバッガで、HDL レベルで、ロジック・アナライザを組み込むそうだ。ネットでつなぐのと違って、どこでも接続できるはず。

Identify Instrumentor でデザインにロジック・アナライザを組み込んで、Identify Debugger で FPGA と通信して、制御するそうだ。
IICE (Intelligent In Circuit Emulator) が Identify で挿入されたデバッグ用ロジックだそうだ。

早速、Synplify を起動して、そこから Identify を起動しよう。今回は、Synplify を起動するところまで行う。

Implement Design -> Synthesize -> Open Interactivety を選択した。
Libero_SoC2_595_241027.png

Synopsys License Agreement ダイアログが表示された。
YES ボタンをクリックした。
Libero_SoC2_596_241027.png

Windows セキュリティ・ダイアログが表示された。(Windows 11 です)
許可ボタンをクリックした。
Libero_SoC2_597_241027.png

Synplify Pro (R) ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_598_241027.png

Synplify Pro の Do you Know... ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_599_241027.png

Synplify Pro が起動した。
Libero_SoC2_600_241027.png
  1. 2024年10月27日 04:00 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう19

HDMI TX Sample Design をやってみよう18”の続き。

前回は、PMOD VGA をメス―メス・ジャンパー線で PolarFire SoC FPGA Discovery Kit のラスベリーパイ・コネクタに接続して、FPGA をプログラムしたところ、テストパターンが出力された。しかし、DIP SW の値を変更してもテストパターンが変更されなかったので、配置制約を見たところ、ピン配置が間違っていた。今回は、DIP SW に PATTERM_SEL_I [2:0] を割り当てて、論理合成、Place and Route を行った。今度は DIP SW でテストパターンを変更することができた。

I/O Editor を立ち上げて、PATTERN_SEL_I[2:0] を前回の設定通りに設定しようとしたが、この設定では設定できなかったので、user.pdc のテキスト記述を変更して、それを I/O Editor で表示している。
Libero_SoC2_583_241026.png

論理合成、Place and Route を行った。
Libero_SoC2_584_241026.png

SmartTime ウインドウを立ち上げて、タイミングを表示した。タイミング制約は満たされている。
Libero_SoC2_585_241026.png

Libero SoC 2024.1 の Design Flow ウインドウの Program Design -> Run PROGRAM Action を右クリックし、右クリックメニューから Run を選択して、FPGA をプログラムする。

Libero ダイアログが表示されて、FPGA がプログラムされている。

FPGA のプログラムが終了した。
Libero_SoC2_586_241026.png

テストパターンが表示された。
PATTERM_SEL_I [2:0] = 3'b000 にしたときのテストパターンを示す。
Libero_SoC2_587_241026.jpg

PATTERM_SEL_I [2:0] = 3'b001 にしたときのテストパターンを示す。
Libero_SoC2_588_241026.jpg

PATTERM_SEL_I [2:0] = 3'b010 にしたときのテストパターンを示す。
Libero_SoC2_589_241026.jpg

PATTERM_SEL_I [2:0] = 3'b011 にしたときのテストパターンを示す。
Libero_SoC2_590_241026.jpg

PATTERM_SEL_I [2:0] = 3'b100 にしたときのテストパターンを示す。
Libero_SoC2_591_241026.jpg

PATTERM_SEL_I [2:0] = 3'b101 にしたときのテストパターンを示す。
Libero_SoC2_592_241026.jpg

PATTERM_SEL_I [2:0] = 3'b110 にしたときのテストパターンを示す。
Libero_SoC2_593_241026.jpg

PATTERM_SEL_I [2:0] = 3'b111 にしたときのテストパターンを示す。
Libero_SoC2_594_241026.jpg
  1. 2024年10月26日 13:02 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう18

HDMI TX Sample Design をやってみよう17”の続き。

前回は、Power を確認して、レイアウト後のシミュレーションを行ったが、クロックが 100 MHz に変更したままだったことが判明した。PF_CCC_C1_0 の出力周波数を 148.5 MHz に変更して、もう一度、論理合成、Place and Route を行った。Power を確認し、レイアウト後のシミュレーションを行ったところ、動作周波数が 148.5 MHz であることを確認できた。今回は、PMOD VGA をメス―メス・ジャンパー線で PolarFire SoC FPGA Discovery Kit のラスベリーパイ・コネクタに接続して、FPGA をプログラムしたところ、テストパターンが出力された。しかし、DIP SW の値を変更してもテストパターンが変更されなかったので、配置制約を見たところ、ピン配置が間違っていた。

PMOD VGA をメス―メス・ジャンパー線で PolarFire SoC FPGA Discovery Kit のラスベリーパイ・コネクタに接続した。
Libero_SoC2_583_241025.jpg

Libero_SoC2_584_241025.jpg

Libero SoC 2024.1 の Design Flow ウインドウの Program Design -> Run PROGRAM Action を右クリックし、右クリックメニューから Run を選択して、FPGA をプログラムする。
Libero_SoC2_579_241025.png

Libero ダイアログが表示されて、FPGA がプログラムされている。
Libero_SoC2_580_241025.png

FPGA のプログラムが終了した。
Libero_SoC2_581_241025.png

テストパターンが表示された。やった~。
Libero_SoC2_585_241025.jpg

テストパターンが表示されたのだが、DIP SW でパターンが変更できない。

I/O Editor を立ち上げて、PATTERN_SEL_I[2:0] を見たところ、配置制約が間違っていた。
Libero_SoC2_582_241025.png

正しくは、

PATTERN_SEL_I[0] : DIP_SW[3] : R17
PATTERN_SEL_I[1] : DIP_SW[2] : Y16
PATTERN_SEL_I[2] : DIP_SW[1] : U17


だった。
  1. 2024年10月25日 20:24 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう17

HDMI TX Sample Design をやってみよう16”の続き。

前回は、PLL 後のクロック信号にタイミング制約を掛けて、論理合成、Place and Route を行って、SmartTime を起動してタイミング制約がかかっているのを確認できた。タイミング制約も満足している。今回は、Power を確認して、レイアウト後のシミュレーションを行ったが、クロックが 100 MHz に変更したままだったことが判明した。PF_CCC_C1_0 の出力周波数を 148.5 MHz に変更して、もう一度、論理合成、Place and Route を行った。Power を確認し、レイアウト後のシミュレーションを行ったところ、動作周波数が 148.5 MHz であることを確認できた。

Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Verify Power をダブルクリックして、パワー・レポートを確認する。

パワー・レポートが表示された。
Total Power は 93.064 mW で、Static Power は 82.289 mW, Dynamic Power は 10.775 mW だった。
Libero_SoC2_565_241024.png

Place and Route 後のシミュレーションをしてみよう。
Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Simulate を右クリックし、右クリックメニューから Open Interactively を選択する。

ModelSim Pro が起動した。
Libero_SoC2_566_241024.png

Wave ウインドウも表示されたが、信号が入っていない。
Libero_SoC2_567_241024.png

Object ウインドウの信号をすべて選択して、右クリックし、右クリックメニューから Add Wave を選択して、信号を Wave ウインドウに追加した。
Libero_SoC2_568_241024.png

Run Length に 50 us を指定して、Run ボタンをクリックした。
Libero_SoC2_569_241024.png

Wave ウインドウでシミュレーション波形が見えたが、HSYNC の間隔が 22 us もある?
Libero_SoC2_570_241024.png

PF_CCC_C1_0 を Instance ウインドウからクリックして、Object ウインドウで OUT1 を選択して、Wave ウインドウに追加した。
再度、50 us のシミュレーションをしたところ、OUT1 のクロック周波数は 100 MHz だった。orz
Libero_SoC2_571_241024.png

これは、PF_CCC_C1_0 を変更してトラブルシューティングしていた時の設定が残ってしまったようだ。
Libero_SoC2_572_241024.png

PF_CCC_C1_0 の出力周波数を 148.5 MHz に変更した。
Libero_SoC2_573_241024.png

SmartDesign の Generate ボタンをクリックして、生成してから、論理合成、Place and Route を行った。
Libero_SoC2_574_241024.png

SmartTime ウインドウを開いて、タイミング制約の満たしているか?を確認したが、問題は無いようだ。
前回と同じ数値だった。
Libero_SoC2_575_241024.png

Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Verify Power をダブルクリックして、パワー・レポートを表示した。
Libero_SoC2_578_241024.png

Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Simulate を右クリックし、右クリックメニューから Open Interactively を選択する。

ModelSim Pro が起動した。
Wave ウインドウに信号を追加した。
50 us のシミュレーションを行った。
HSYNC の間隔は、14.8 us 位になった。
Libero_SoC2_576_241024.png

PF_CCC_C1_0 の OUT1 の信号波形を確認したところ、6.734 ns なので、クロック周波数は 148.5 MHz となった。
Libero_SoC2_577_241024.png
  1. 2024年10月25日 19:40 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう16

HDMI TX Sample Design をやってみよう15”の続き。

前回は、論理合成をして、続いて、Place and Route を行った。ピン配置とタイミング・レポートを確認したが、PLL の出力クロックの周波数が想定と違っていて、PLL 後のクロック信号にタイミング制約がかかっていないことが分かった。今回は、PLL 後のクロック信号にタイミング制約を掛けて、論理合成、Place and Route を行って、SmartTime を起動してタイミング制約がかかっているのを確認できた。タイミング制約も満足している。

SmartDesign を 見て、PLL 後のクロックのネット名を確認した。
PLL 後のクロックのネット名は PF_CCC_C1_0_OUT0_FABCLK_0 だった。
Libero_SoC2_555_241023.png

タイミング制約を作成しよう。
Constraint Manager の Timing タブで Edit の下向き三角をクリックし、Edit Sythesis Contraints を選択した。

ConstraintsEditor ダイアログが開く。
Clock Name の空欄をダブルクリックする。
Libero_SoC2_556_241023.png

Create Clock Constraint ダイアログが開いた。
Clock Source の ... ボタンをクリックした。

Select Source Pins for Clock Constraint ダイアログが開いた。
Type を All Nets に変更し、Pattern: に *PF_CCC_C1_0_OUT0* を入力し、Select a Type and Pattern to start selection の Search ボタンをクリックした。
Avalable Pins にPF_CCC_C1_0_OUT0_FABCLK_0 が表示されたので、PF_CCC_C1_0_OUT0_FABCLK_0 を選択して、Add ボタンをクリックした。
Libero_SoC2_557_241023.png

Assigned Pins に PF_CCC_C1_0_OUT0_FABCLK_0 が入った。
OK ボタンをクリックした。
Libero_SoC2_558_241023.png

Clock Source が入力された。
Clock Name に pll_clk と入力し、Frequency: に 148.5 を入力した。
他はデフォルトで問題ないので、OK ボタンをクリックした。
Libero_SoC2_559_241023.png

pll_clk タイミング制約が ConstraintsEditor に入った。
Add のチェックボックスにチェックを入れた。
セーブを行った。
Libero_SoC2_560_241023.png

user.sdc を示す。
Libero_SoC2_561_241023.png

Implement Design -> Synthesize をクリックして、論理合成を行った。成功した。
Design Flow ウインドウで、Implement Design -> Place and Route をダブルクリックして成功した。
Libero_SoC2_562_241023.png

Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックして、SmartTime ウインドウを開いた。
pll_clk のタイミング制約で、Required Frequency (MHz) が 148.500 に設定されていて、これは正しい。
pll_clk の Frequency (MHz) は 188.041 でタイミング制約を満たしている。
Libero_SoC2_563_241023.png

Analysis for scenrio timing_analysis で Register to Register を選択した。
ワーストケースのレジスタ間の遅延も 5.270 ns となっていて、問題なさそうだ。
Libero_SoC2_564_241023.png
  1. 2024年10月23日 04:26 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう15

HDMI TX Sample Design をやってみよう14”の続き。

前回は、論理合成を行って、ピンの配置と属性を指定した。今回は、タイミング制約を作成した。今回は、論理合成をして、続いて、Place and Route を行った。ピン配置とタイミング・レポートを確認したが、PLL の出力クロックの周波数が想定と違っているようだ?

Design Flow ウインドウで、Implement Design -> Synthesize をダブルクリックして、論理合成を行った。
Libero_SoC2_547_241021.png

Design Flow ウインドウで、Implement Design -> Place and Route をダブルクリックして成功した。
Libero_SoC2_548_241021.png

Reports タブの HDMI_TX_SD reports -> Place and Route -> HDMI_TX_SD pinrpt name.rpt をクリックすると、Port の情報が出てきた。
問題無さそうだ。
Libero_SoC2_549_241021.png

Reports タブの HDMI_TX_SD reports -> Place and Route -> HDMI_TX_SD_layout_log.log を見るとリソース使用量が見えた。
4LUT は 328 個、DFF が 116 個、Logic Element が 346 個だった。
Libero_SoC2_550_241021.png

Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックした。
SmartTime ウインドウが開いた。
PF_CCC_C0_0/PF_CCC_C0_0/pll_inst_0:OUT0 をクリックした。
Period は 7.109 ns, Frequency は 140.667 MHz だった。148.5 MHz より低い。
でもタイミング制約は伝搬していないのか?
Libero_SoC2_551_241021.png

PF_CCC_C0_0/PF_CCC_C0_0/pll_inst_0:OUT0 -> Register to Register をクリックした。
Delay は 7.066 ns 程度だった。
Libero_SoC2_552_241021.png

PF_CCC_C0_0 の出力周波数を 100 MHz に変更した。
Libero_SoC2_553_241022.png

Generate して論理合成、Place and Route を行って、Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックして、SmartTime ウインドウを開いた。
Libero_SoC2_554_241021.png

PF_CCC_C0_0/PF_CCC_C0_0/pll_inst_0:OUT0 は 136.351 MHz ということで、Required Period が N/A になっていて制約がかかっていない。。。
ここのタイミング制約を掛ける必要がある。タイミング制約は PLL を伝搬しないようだ。
  1. 2024年10月22日 05:20 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

昨日、車で事故ってしまったので今日のブログはお休みします

昨日、15 時ころ、信号のない交差点で、一時停止無視してきた車と衝突しました。
突然の出来事で何もできずにブレーキかけるしかできませんでした。衝突して初めてエアバッグの動作を確認できました。
その時は何ともなかったのですが、今朝起きると首が痛いです。むち打ち症状ですね。
今日はブログお休みにして、医者に行ってきます。
IMG_20241020_163449705_HDR.jpg

IMG_20241020_163503095_HDR.jpg
  1. 2024年10月21日 05:14 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう14

HDMI TX Sample Design をやってみよう13”の続き。

前回は、論理合成を行って、ピンの配置と属性を指定しようとしたが、クロックの配置と属性が指定できなかった。そこで、Smart Design を変更して、PF_XCVR_REF_CLK IP を削除した。その後、論理合成を行って、ピンの配置と属性を指定した。今回は、タイミング制約を作成した。

今回は、タイミング制約を作成しよう。
Constraint Manager の Timing タブで Edit の下向き三角をクリックし、Edit Sythesis Contraints を選択した。
Libero_SoC2_534_241020.png

ConstraintsEditor ダイアログが開く。
Clock Name の空欄をダブルクリックすると、Create Clock Constraint ダイアログが開いた。
Clock Source の ... ボタンをクリックした。
Libero_SoC2_535_241020.png

Select Source Pins for Clock Constraint ダイアログが開いた。
デフォルトのままで、Select a Type and Pattern to start selection の Search ボタンをクリックした。
Avalable Pins に PATTERN_SEL_I[2:0] と REF_CLK_O が表示されたので、REF_CLK_O を選択して、Add ボタンをクリックした。
Libero_SoC2_536_241020.png

Assigned Pins に REF_CLK_O が入った。
OK ボタンをクリックした。
Libero_SoC2_537_241020.png

Clock Source が入力された。
Clock Name に clk と入力し、Period に 20 ns を入力した。
他はデフォルトで問題ないので、OK ボタンをクリックした。
Libero_SoC2_538_241020.png

clk タイミング制約が ConstraintsEditor に入った。
Add のチェックボックスにチェックを入れた。
セーブを行った。
Libero_SoC2_539_241020.png

Constraint Manager に戻ると、constraint/user.sdc {Target] の Synthesize のチェックボックスだけチェックが入っているので、他の Place and Route と Timing Verification のチェックボックスにチェックを入れて、セーブ・ボタンをクリックした。
Libero_SoC2_540_241020.png

セーブ・ボタンをクリックするとWarning ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_541_241020.png

Constraint Manager の Timing タブで Check の下向き三角をクリックし、Check Synthesis Constraints を選択した。
Libero_SoC2_542_241020.png

Information ダイアログが開いた。
チェックは成功した。
Libero_SoC2_543_241020.png

Constraint Manager の Timing タブで Check の下向き三角をクリックし、Check Place and Route Constraints を選択した。
Information ダイアログが開いた。
チェックは成功した。
Libero_SoC2_544_241020.png

Constraint Manager の Timing タブで Check の下向き三角をクリックし、CheckTiming Verification Constraints を選択した。
最初はWarning ダイアログが表示されたが、2度目は Information ダイアログが開いた。
チェックは成功した。
Libero_SoC2_545_241020.png

user.sdc を示す。
Libero_SoC2_546_241020.png

create_clock -name {clk} -period 20 -waveform {0 10 } -add [ get_ports { REF_CLK_0 } ]

  1. 2024年10月20日 05:20 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう13

HDMI TX Sample Design をやってみよう12”の続き。

前回は、Test Pattern Generator の RGB 出力のビット幅を 4 に変更した。SmartDesign を完成させた。今回は、論理合成を行って、ピンの配置と属性を指定しようとしたが、クロックの配置と属性が指定できなかった。そこで、Smart Design を変更して、PF_XCVR_REF_CLK IP を削除した。その後、論理合成を行って、ピンの配置と属性を指定した。

Smart Design で Generate Component ボタンをクリックした。
Libero_SoC2_519_241019.png

Implement Design -> Synthesize をクリックして、論理合成を行った。成功した。
Libero_SoC2_520_241019.png

ピンを割り当てて、制約ファイルを生成する。
Design Flow ウインドウで、 Constraints -> Manage Constraints をダブルクリックした。

Constraint Manager ウインドウが開き、 I/O Attributes タブが選択されていた。
Target Devices: の MPFS095TL のチェックボックスをチェックした。

Edit の下向き三角をクリックし、Edit with I/O Editor を選択した。
Libero_SoC2_521_241019.png

I/O Editor ダイアログが開いた。
REF_CLK_PAD_0 の I/O Standard や Pin Number が指定できない。
Libero_SoC2_522_241019.png

HDMI_TX_SD Smart Design に戻って、PF_XCVR_REF_CLK IP を削除した。
PF_CCC_C0_0 の REF_CLK_0 を外部ピンに接続した。
Generate Component ボタンをクリックした。
Libero_SoC2_523_241019.png

HDMI_TX_SD_tb Smart Design も修正した。
Generate Component ボタンをクリックした。
Libero_SoC2_524_241019.png

もう一度、論理合成を行って、成功した。
Libero_SoC2_525_241019.png

Constraint Manager ウインドウで、Edit の下向き三角をクリックし、Edit with I/O Editor を選択した。
I/O Editor ダイアログが開いた。
クロックピンは REF_CLK_O でピンの配置と属性を指定できる。
Libero_SoC2_526_241019.png

REF_CLK_0 を除いた信号の I/O Standard を LVCOMS33 に指定した。
Libero_SoC2_527_241019.png

Pin Number を指定した。
Libero_SoC2_528_241019.png

セーブを行うと、PF_CCC_C0_0 でエラーが出ているが、とりあえず無視する。
Libero_SoC2_529_241019.png

I/O Attributes タブに contraintt\user.pdc が追加された。
Libero_SoC2_530_241019.png

user.pdc を開いた。
Libero_SoC2_531_241019.png

Raspberry Pi 4 Interfaceコネクタ表にFPGAピン名を追加した。
Libero_SoC2_532_241019.png
Libero_SoC2_533_241019.png

user.pdc を貼っておく。

# Microchip I/O Physical Design Constraints file

# User I/O Constraints file 

# Version: 2024.1 2024.1.0.3

# Family: PolarFireSoC , Die: MPFS095T , Package: FCSG325

# Date generated: Sat Oct 19 07:52:14 2024 


# User Locked I/O Bank Settings



# Unlocked I/O Bank Settings
# The I/O Bank Settings can be locked by directly editing this file
# or by making changes in the I/O Attribute Editor



# User Locked I/O settings


set_io -port_name {BLUE_O[4]}  \
    -pin_name E12              \
    -fixed true                \
    -io_std LVCMOS33           \
    -DIRECTION OUTPUT


set_io -port_name {BLUE_O[5]}  \
    -pin_name A20              \
    -fixed true                \
    -io_std LVCMOS33           \
    -DIRECTION OUTPUT


set_io -port_name {BLUE_O[6]}  \
    -pin_name B21              \
    -fixed true                \
    -io_std LVCMOS33           \
    -DIRECTION OUTPUT


set_io -port_name {BLUE_O[7]}  \
    -pin_name G18              \
    -fixed true                \
    -io_std LVCMOS33           \
    -DIRECTION OUTPUT


set_io -port_name {GREEN_O[4]}  \
    -pin_name E10               \
    -fixed true                 \
    -io_std LVCMOS33            \
    -DIRECTION OUTPUT


set_io -port_name {GREEN_O[5]}  \
    -pin_name F21               \
    -fixed true                 \
    -io_std LVCMOS33            \
    -DIRECTION OUTPUT


set_io -port_name {GREEN_O[6]}  \
    -pin_name F20               \
    -fixed true                 \
    -io_std LVCMOS33            \
    -DIRECTION OUTPUT


set_io -port_name {GREEN_O[7]}  \
    -pin_name E21               \
    -fixed true                 \
    -io_std LVCMOS33            \
    -DIRECTION OUTPUT


set_io -port_name H_SYNC_O  \
    -pin_name B20           \
    -fixed true             \
    -io_std LVCMOS33        \
    -DIRECTION OUTPUT


set_io -port_name {PATTERN_SEL_I[0]}  \
    -pin_name B19                     \
    -fixed true                       \
    -io_std LVCMOS33                  \
    -DIRECTION INPUT


set_io -port_name {PATTERN_SEL_I[1]}  \
    -pin_name B15                     \
    -fixed true                       \
    -io_std LVCMOS33                  \
    -DIRECTION INPUT


set_io -port_name {PATTERN_SEL_I[2]}  \
    -pin_name B17                     \
    -fixed true                       \
    -io_std LVCMOS33                  \
    -DIRECTION INPUT


set_io -port_name {RED_O[4]}  \
    -pin_name F19             \
    -fixed true               \
    -io_std LVCMOS33          \
    -DIRECTION OUTPUT


set_io -port_name {RED_O[5]}  \
    -pin_name A19             \
    -fixed true               \
    -io_std LVCMOS33          \
    -DIRECTION OUTPUT


set_io -port_name {RED_O[6]}  \
    -pin_name D17             \
    -fixed true               \
    -io_std LVCMOS33          \
    -DIRECTION OUTPUT


set_io -port_name {RED_O[7]}  \
    -pin_name D18             \
    -fixed true               \
    -io_std LVCMOS33          \
    -DIRECTION OUTPUT


set_io -port_name REF_CLK_0  \
    -pin_name R18            \
    -fixed true              \
    -DIRECTION INPUT


set_io -port_name V_SYNC_O  \
    -pin_name A15           \
    -fixed true             \
    -io_std LVCMOS33        \
    -DIRECTION OUTPUT




# Dedicated Peripheral I/O Settings




# Unlocked I/O settings
# The I/Os in this section are unplaced or placed but are not locked
# the other listed attributes have been applied



#
#Ports using Dedicated Pins

#

  1. 2024年10月19日 13:15 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう12

HDMI TX Sample Design をやってみよう11”の続き。

前回は、 HDMI_TX_SD SmartDesign から HDMI TX と PF_XCVR__ERM と PF_TX_PLL を削除して、Clock Conditioning Circuitry (CCC) を実装した。今回は、Test Pattern Generator の RGB 出力のビット幅を 4 に変更した。SmartDesign を完成させた。

Test Pattern Generator からのRED_O, GREEN_O, BLUE_O 出力は、8 ビット幅だが、PMOD VGA のデータ幅は 4 ビットなので、それに合わせる必要がある。それには、Edit Slices... を使用する。

Test Pattern Generator の RED_O[7:0] を右クリックし、右クリックメニューから Edit Slices... を選択した。
Libero_SoC2_512_241018.png

Edit Slices - RED_O ダイアログが表示された。
最初、8 行表示されていたが、X ボタンで削除し、1 行にした。
Left を 7 に Right を 4 に変更した。Left や Right の項をダブルクリックすると入力できる。
Libero_SoC2_513_241018.png

すると、Test_Pattern_Generator _C1_0 に RED_O[7:4] が追加された。
Libero_SoC2_514_241018.png

GREEN_O と BLUE_O も同様に 4 ビット幅の信号を作成した。
Libero_SoC2_515_241018.png

RED_O[7:4] を外部ピンに接続する。
RED_O[7:4] を右クリックし、右クリックメニューから Promote to Top Level を選択した。
Libero_SoC2_516_241018.png

RED_O[7:4] が外部ピンに接続された。
Libero_SoC2_517_241018.png

GREEN_O[7:4] と BLUE_O[7:4] も外部ピンに接続した。
Display Contorller の H_SYNC_O と V_SYNC_O も外部ピンに接続した。
他の配線も行って、SmartDesign を完成させた。
Libero_SoC2_518_241018.png
  1. 2024年10月18日 04:17 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう11

HDMI TX Sample Design をやってみよう10”の続き。

前回は、HDMI を PolarFire SoC Discovery Kit で実装できないということで落ち込んでしまってブログが書けなかったけど、PMOD VGA を使ってみようということで、気持ちを持ち直して、ブログを書く。。。
今回は、 HDMI_TX_SD SmartDesign から HDMI TX と PF_XCVR__ERM と PF_TX_PLL を削除して、Clock Conditioning Circuitry (CCC) を実装した。

Digilent の PMOD VGA をすでに持っているので、これを使って VGA 信号を出してみようと思う。
基板は作成せずにメス―メスのジャンパーワイヤで接続してみよう。

というわけで、前回の HDMI_TX_SD SmartDesign から HDMI TX と PF_XCVR__ERM と PF_TX_PLL を削除した。
Libero_SoC2_505_241017.png

PLLを実装する必要があるので、Clock Conditioning Circuitry (CCC) を実装する。
Clock Conditioning Circuitry (CCC) を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択した。
Libero_SoC2_506_241017.png

Clock Conditioning Circuitry (CCC) の設定ダイアログが表示された。
Clock Option PLL タブ
Input Freqency を 50 MHzに設定した。
Libero_SoC2_507_241017.png

Output Clocks タブ
Output Clock 0 の Requested Frequency を 148.5 MHz に設定した。
Libero_SoC2_508_241017.png

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

Information ダイアログが表示された。
Libero_SoC2_510_241017.png

PF_CCC_C0_0 が実装された。
Libero_SoC2_511_241017.png
  1. 2024年10月17日 12:52 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう10

HDMI TX Sample Design をやってみよう9”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、論理合成、Place and Route するためにピンアサインを考えた。使用するピンは、ラズベリーパイの 40 ピン・コネクタの内で P と N が揃っている IO ピンにしようと思う。今回は、論理合成を行ったが、トランシーバーが 4 レーンは使用できないで、2 レーンだけということで、トランシーバーを 2 レーンにして、2 個使用してみたが、やはりエラーとなった。残念ながら、これでは、画像を出力することができないので、このプロジェクトは終了とする。

Design Flow ウインドウの Synthesize をダブルクリックして、論理合成を行った。
Libero_SoC2_497_241015.png

論理合成はエラーになった。
エラー内容は、”Error: Number of Transceiver Lanes modules (4) exceeds the limit (2) of the selected device.”ということで、1 IP 当たりのレーン数が 2 個なのだろうか?
Libero_SoC2_498_241015.png

2 レーンのトランシーバーを 2 個実装してみる。
Catalog タブをクリックし、Simulation Mode のチェックボックスのチェックを外した。
検索ボックスに PF_XCVR と入力し、Transceiver Interface を SmartDesign ファイルにドラック・アンド・ドロップした。
Libero_SoC2_499_241015.png

Transceiver Interface の設定を行った。
Number of lanes は 2 とした。
Libero_SoC2_500_241015.png

PR_XCVR_ERM_C1_0 がインスタンスされた。
PR_XCVR_ERM_C0_0 の配線を PR_XCVR_ERM_C1_0 につないでいく。
Libero_SoC2_501_241015.png

PR_XCVR_ERM_C2_0 をインスタンスして、配線を行った。
Libero_SoC2_502_241015.png

PR_XCVR_ERM_C0_0 を削除した。これで完成だ。
Libero_SoC2_503_241015.png

再び、論理合成を行ったが、同様のエラーだった。
Libero_SoC2_504_241015.png

HDMI が 4 レーン実装できないと画像出せないので、ここでこのプロジェクトは終了とする。
  1. 2024年10月15日 05:09 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう9

HDMI TX Sample Design をやってみよう8”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、ModelSim でシミュレーションを行ったところ、エラーが発生した。SmartDesign を generate してから、シミュレーションを行ったところ成功した。今回は、論理合成、Place and Route するためにピンアサインを考えた。使用するピンは、ラズベリーパイの 40 ピン・コネクタの内で P と N が揃っている IO ピンにしようと思う。

最初に”PolarFire SoC Discovery Kit Schematics”でラズベリーパイの 40 ピン・コネクタの回路図を確認した。8 ページから”Raspberry Pi 4 Interface”を下に引用する。
Libero_SoC2_493_241014.png

40 ピン・コネクタに接続されている FPGA のバンクはBANK-1 と MSSIO-B2 だった。
PolarFire SoC Discovery Kit Schematics”の 7 ページから BANK-1 の回路図を引用する。
Libero_SoC2_494_241014.png

40 ピン・コネクタに接続されている FPGA のバンクはBANK-1 と MSSIO-B2 だった。
PolarFire SoC Discovery Kit Schematics”の 7 ページから MSSIO-B2 の回路図を引用する。
Libero_SoC2_495_241014.png

これらの情報をもとに、”Raspberry Pi 4 Interface コネクタ対応表”を作成した。
Libero_SoC2_496_241014.png
Libero_SoC2_497_241014.png

色が付いているのが P, N のペアがある信号で、同じ色がペアを示す。
4 ペアあるので、問題ないと思う。

”Raspberry Pi 4 Interface コネクタ対応表”の CSV 版を貼っておく。

Raspberry Pi 4 Interface コネクタ対応表,,,,,,
,,,,,,
信号名,RasPiコネクタピン番号,ピン番号,ピン名,バンク,電圧,備 考
3P3V,1,,,,,
5P0V,2,,,,,
RPi_GPIO2_SDA,3,E18,GPIO16NB1,BANK-1,2.5/3.3V,10KΩプルアップ
5P0V,4,,,,,
RPi_GPIO3_SCL,5,F18,GPIO16PB1/CCC_SE_PLL1_OUT1,BANK-1,2.5/3.3V,10KΩプルアップ
GND,6,,,,,
RPi_GPIO4_GCLK,7,E12,GPIO123PB1/CLKIN_S_2/CCC_SW_CLKIN_S_2/CCC_SW_PLL1_OUT0,BANK-1,2.5/3.3V,
RPi_GPIO14_TXD0,8,A20,GPIO5PB1/CLKIN_S_7,BANK-1,2.5/3.3V,
GND,9,,,BANK-1,2.5/3.3V,
RPi_GPIO15_RXD0,10,B21,GPIO5NB1,BANK-1,2.5/3.3V,
RPi_GPIO17_GEN0,11,G18,GPIO14NB1/DQS,BANK-1,2.5/3.3V,
RPi_GPIO18_GEN1,12,E10,GPIO120PB1/CCC_SW_CLKIN_S_0,BANK-1,2.5/3.3V,
RPi_GPIO27_GEN2,13,F21,GPIO17NB1,BANK-1,2.5/3.3V,
GND,14,,,,,
RPi_GPIO22_GEN3,15,F20,GPIO17PB1/CCC_SE_CLKIN_S_11,BANK-1,2.5/3.3V,
RPi_GPIO23_GEN4,16,E21,GPIO11NB1,BANK-1,2.5/3.3V,
3P3V,17,,,,,
RPi_GPIO24_GEN5,18,F19,GPIO15PB1/CCC_SE_CLKIN_S_10/CCC_SE_PLL1_OUT0,BANK-1,2.5/3.3V,
RPi_GPIO10_SPI_MOSI,19,A4,MSSIO32B2,MSSIO-B2, 3.3V,
GND,20,,,,,
RPI_GPIO9_SPI_MISO,21,B4,MSSIO33B2,MSSIO-B2, 3.3V,
RPi_GPIO25_GEN6,22,A19,GPIO3PB1/CLKIN_S_6,BANK-1,2.5/3.3V,
RPi_GPIO11_SPI_SCLK,23,D6,MSSIO30B2,MSSIO-B2, 3.3V,
RPi_GPIO8_SPI_CE0_N,24,D5,MSSIO31B2,MSSIO-B2, 3.3V,10KΩプルアップ
GND,25,,,,,
RPI_GPIO7,26,B2,MSSIO34B2,MSSIO-B2, 3.3V,10KΩプルアップ
RPi_ID_SD,27,D1,MSSIO36B2,MSSIO-B2, 3.3V,10KΩプルアップ+10KΩプルダウン
RPi_ID_SC,28,C2,MSSIO35B2,MSSIO-B2, 3.3V,10KΩプルアップ+10KΩプルダウン
RPi_GPIO5,29,D17,GPIO2NB1/DQS,BANK-1,2.5/3.3V,
GND,30,,,,,
RPi_GPIO6,31,D18,GPIO2PB1/DQS,BANK-1,2.5/3.3V,
RPi_GPIO12,32,B20,GPIO0NB1,BANK-1,2.5/3.3V,
RPi_GPIO13,33,A15,GPIO131PB1,BANK-1,2.5/3.3V,
GND,34,,,,,
RPi_GPIO19,35,B19,GPIO0PB1/CLKIN_S_4,BANK-1,2.5/3.3V,
RPi_GPIO16,36,B15,GPIO129NB1,BANK-1,2.5/3.3V,
RPi_GPIO26,37,B17,GPIO1NB1,BANK-1,2.5/3.3V,
RPi_GPIO20,38,B14,GPIO129PB1/CCC_SW_PLL0_OUT0,BANK-1,2.5/3.3V,
GND,39,,,,,
RPi_GPIO21,40,E13,GPIO128NB1/DQS,BANK-1,2.5/3.3V,

  1. 2024年10月14日 17:39 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう8

”HDMI TX Sample Design をやってみよう7”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、シミュレーションの設定を行った。今回は、ModelSim でシミュレーションを行ったところ、エラーが発生した。SmartDesign を generate してから、シミュレーションを行ったところ成功した。

Design Flow タブをクリックした。
Create Design -> Verify Pre-Synthesized Design -> Smulate をクリックした。
Libero_SoC2_478_241011.png

エラーが発生した。
エラー内容は、”Error: Simulate operation failed. Active stimulus component is not in generated state, regenerate your SmartDesign testbench 'HDMI_TX_SD_tb'”だった。
Libero_SoC2_479_241011.png

なんか SmartDesign を generate していないというエラーのようだ。そういえば、generate ボタンがあったのだった。

HDMI_TX_SD_tb SmartDesign の Generate Component ボタンをクリックした。
Libero_SoC2_480_241011.png

HDMI_TX_SD SmartDesign の Generate Component ボタンをクリックした。
Libero_SoC2_482_241011.png

Simulation Hierarchy タブをクリックした。
HDMI_TX_SD_tb SmartDesign を右クリックし、右クリックメニューから Simulate Pre-Synth Desgin → Run を選択した。
Libero_SoC2_481_241011.png

Simulation Completed. が表示された。問題はなさそう。
Libero_SoC2_483_241011.png

ModelSim を起動して、シミュレーションをしよう。
Design Flow タブをクリックした。
Create Design -> Verify Pre-Synthesized Design -> Smulate を右クリックし、右クリックメニューから Open Interactively を選択した。
Libero_SoC2_484_241011.png

ModelSim が起動した。
Libero_SoC2_485_241011.png

信号を Wave ウインドウに入れよう。
sim - Default ウインドウの HDMI_TX_SD_0 をクリックした。
Object ウインドウで、CTRL+A をクリックして、すべての信号を選択した。
Object ウインドウの信号のところで、右クリックし、右クリックメニューから Add Wave を選択した。
Libero_SoC2_486_241013.png

選択した信号が Wave ウインドウに表示された。
Libero_SoC2_487_241013.png

Display Controller の信号も Wave ウインドウに追加しよう。
sim - Default ウインドウの Display Controller をクリックした。
Object ウインドウで、CTRL+A をクリックして、すべての信号を選択した。
Object ウインドウの信号のところで、右クリックし、右クリックメニューから Add Wave を選択した。
Libero_SoC2_488_241013.png

Run Length ウインドウに 20 us と入力した。
となりの Run ボタンをクリックして、Run した。
Libero_SoC2_490_241013.png

Run が終了した。
Wave ウインドウを示す。
HDMI_TX_SD の HDMI_TX_SD_0 の LANEX_TXD_X 信号が表示されている。これは HDMI 出力の信号だ。
HDMI_TX_C0_0_TMDS_X_O も信号も変化しているのが見える。これは RGB の信号だ。
Libero_SoC2_489_241013.png

Display Contorller の信号を見てみよう。
20 us 程シミュレーションを行うと HSYNC の信号が見えるはずだ。
Zoom Full ボタンをクリックして、波形全体を表示した。
14.4 us 辺りに HSYNC が出力されたのが見えた。
Libero_SoC2_491_241013.png

なお、ModelSim でシミュレーションするためには、Verilog HDL ファイルを出力しているはずということで、プロジェクトのフォルダを .v で検索してみたところ、やはり、Verilog HDL ファイルが生成されていた。
Libero_SoC2_492_241013.png
  1. 2024年10月13日 05:09 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう7

HDMI TX Sample Design をやってみよう6”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、各 IP 間を配線して、root を設定した。更に SmartDesign testbench を作成した。今回は、シミュレーションの設定を行った。

シミュレーションの設定を行う。
Libero SoC の Project メニューから Project Settings... を選択した。
Libero_SoC2_469_241012.png

Project Settings ダイアログが表示された。

Simulation Option -> DO file をクリックした。
Simulation runtime に 17000000ns を入力した。
Generate VCD のチェックボックスにチェックを入れた。
VCD file name に HDMI_TX_SD_tb.vcd を入力した。
Libero_SoC2_470_241012.png

Simulation Option -> Waveforms をクリックした。
Include DO file のチェックボックスをチェックした。
下の欄に c:/Microchip/Project/HDMI_Sample_Design/wave.do を入力した。
Save ボタンをクリックした。
Libero_SoC2_471_241011.png

Simulation Option -> Vsim commands を示す。
デフォルトのままとした。
Libero_SoC2_473_241011.png

Simulation Option -> Timescale を示す。
デフォルトのままとした。
Libero_SoC2_474_241011.png

Close ボタンをクリックした。
Warning ダイアログが表示された。
Save ボタンをクリックした。
Libero_SoC2_475_241011.png

設定を確認するのを忘れたので、もう一度、Libero SoC の Project メニューから Project Settings... を選択した。
Simulation libraries -> PolaFireSoC をクリックした。
Library path を確認した。
Libero_SoC2_476_241011.png

Close ボタンをクリックして、Libero SoCに戻った。
Libero_SoC2_477_241011.png
  1. 2024年10月12日 21:34 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう6

HDMI TX Sample Design をやってみよう5”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、PF_XCVR_REF_CLK と PF_TX_PLL をインスタンスした。今回は、各 IP 間を配線して、root を設定した。更に SmartDesign testbench を作成した。

HDMI_TX_SD Smart Design の配線を行った。
Libero_SoC2_454_241011.png

Design Hierarchy タブをクリックした。デザインの階層が分かる。
Libero_SoC2_455_241011.png

HDMI_TX_SD を右クリックし、右クリックメニューから Set As Root を選択した。
Libero_SoC2_456_241011.png

HDMI_TX_SD を root に設定することができた。
Build Hierarchy ボタンをクリックした。
Libero_SoC2_457_241011.png

階層が生成できた?
Libero_SoC2_458_241011.png

HDMI_TX_SD を右クリックし、右クリックメニューから Create Testbench を選択した。
Libero_SoC2_459_241011.png

Create Component ダイアログが表示され、テストベンチの名前を聞いてくるので、HDMI_TX_SD_tb と入力した。

HDMI_TX_SD_tb Smart Design が生成された。
最初から HDMI_TX_SD のインスタンスが実装されている。
Libero_SoC2_460_241011.png

Catalog タブをクリックした。
IP Catalog の Simulation Mode のチェックボックスをチェックした。
Libero_SoC2_461_241011.png

Clock & Management の Clock_Generator を SmartDesign にドラック・アンド・ドロップした。
Libero_SoC2_462_241011.png

Create Component ダイアログが表示され、テストベンチの名前を聞いてくるので、CLK_GEN_C0 という名前がデフォルトで入っているので、デフォルトのままとした。
Libero_SoC2_463_241011.png

Configurator ダイアログが表示された。
Clock Period (ps) を 20000 とした。 20 ns = 50 MHz
OK ボタンをクリックした。
Libero_SoC2_464_241011.png

CLK_GEN_C0_0 が実装された。
HDMI_TX_SD_0 の LANE 信号をすべて選択して、右クリックし、右クリックメニューから Promote to Top Level を選択した。
Libero_SoC2_465_241011.png

Stimulus Hierarchy タブをクリックした。
クロックの配線を行った。
PATTERN_SEL_I[2:0] に 3'h0 を設定した。
Libero_SoC2_466_241011.png

セーブを行った。
Libero_SoC2_467_241011.png

Build Hierarchy ボタンをクリックした。
Libero_SoC2_468_241011.png

How to Simulate a SmartDesign Project Using Libero® SoC Design Suite”を参考にしています。
  1. 2024年10月11日 08:54 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう5

HDMI TX Sample Design をやってみよう4”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、HDMI_TX と PF_XCVR_ERM をインスタンスした。今回は、PF_XCVR_REF_CLK と PF_TX_PLL をインスタンスした。

Libero SoC で Catalog タブをクリックし、IP Catalog の検索ウインドウに xcvr_ref と入れると Transceiver Reference Clock が表示された。
Transceiver Reference Clock を SmartDesign にドラック・アンド・ドロップした。
Libero_SoC2_448_241010.png

設定ダイアログが表示された。
Reference Clock 0 Mode を LVCOMS に設定した。
Libero_SoC2_449_241010.png

PF_XCVR_REF_CLK_C1_0 がインスタンスされた。
Libero_SoC2_450_241010.png

PF_TX_PLL で IP Catalog の検索ウインドウに入力して検索すると、Transmit PLL が検索できた。
Transmit PLL を SmartDesign にドラック・アンド・ドロップした。

設定ダイアログが表示された。

設定値をどうするかだが。。。
”HDMI TX IP User Guide”の 19 ページの”Table 6-1. PF XCVR, PF TX PLL, and PF CCC Configurations”を引用する。
Libero_SoC2_453_241010.png

”Table 6-1. PF XCVR, PF TX PLL, and PF CCC Configurations”によると、Resolution は 1PXL (1080p60) で良いはずなので、一番上の行で良いはずだ。PF TX PLL Configuration の Desired Output Bit Clock は 5940 Mbps に設定すれば良さそうだ。
Reference Clock Frequency は 50 MHz に設定した。
Libero_SoC2_451_241010.png

PF_TX_PLL_C0_0 がインスタンスされた。
Libero_SoC2_452_241010.png
  1. 2024年10月11日 08:26 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう4

HDMI TX Sample Design をやってみよう3”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、Test Pattern Generator をインスタンスして、BAYER_PATTERM_I[1:0] に 00 を設定した。PATTERN_SEL を外部ピンに接続した。今回は、HDMI_TX と PF_XCVR_ERM をインスタンスした。

HDMI_TX をインスタンスする。
Libero SoC で Catalog タブをクリックし、IP Catalog で HDMI_TX と入力した。
HDMI_TX が表示されるので、HDMI_TX を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択した。

HDMI_TX の設定ダイアログを示す。
Libero_SoC2_442_241009.png

HDMI_TX はデフォルトのままで良さそうだ。
OK ボタンをクリックして、インスタンスを行った。
SmartDesign を示す。
Libero_SoC2_443_241009.png

PF_XCVR_ERM をインスタンスする。
PF_XCVR_ERM の IP 名は Transceiver Interface だ。
Transceiver Interface を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択した。

Transceiver Interface の設定ダイアログが表示された。
最初に左上の PF_XCVR_default_configuration を右クリックし、右クリックメニューから Apply を選択した。
Libero_SoC2_444_241009.png

下の図のように設定を行った。
Libero_SoC2_445_241009.png
Libero_SoC2_446_241009.png

SmartDesign を示す。
なお下の図は、Auto Arrange Layout ボタンをクリックして、IP の配置を自動で整えるようにしてある。
Libero_SoC2_447_241009.png
  1. 2024年10月09日 04:51 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう3

HDMI TX Sample Design をやってみよう2”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、CORERESET_PF のプルアップ、プルダウンを行ってから、Display Controller をインスタンスした。今回は、Test Pattern Generator をインスタンスして、BAYER_PATTERM_I[1:0] に 00 を設定した。PATTERN_SEL を外部ピンに接続した。

Test Pattern Generator をインスタンスする。
Test Pattern Generator はダウンロードされていなかったので、ダウンロードを行った。
Test Pattern Generator を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択して、インスタンスを行った。
Libero_SoC2_428_241008.png

Test_Pattern_Generator_0 がインスタンスされたが、サンプル・デザインの Test Pattern Generator とは違いがある。
その違いは、BAYER_PATTERM_I[1:0] があることだ、IP がバージョンアップされたのかな?
Web で調べると、”Pattern Generator IP User Guide”が見つかって、これには、BAYER_PATTERM_I[1:0] が追加されていた。
Libero_SoC2_429_241008.png

4 ページの”Figure 1-1. Connection between Test Pattern Generator and Display Controller”を見ると、BAYER_PATTERM_I[1:0] は 2'h0 に固定されていたので、こうすることにした。
”Figure 1-1. Connection between Test Pattern Generator and Display Controller”を引用する。
Libero_SoC2_430_241008.png

BAYER_PATTERM_I[1:0] を 2'h0 に固定しよう。
BAYER_PATTERM_I[1:0] を右クリックし、右クリックメニューから Tie Constant... を選択した。
Libero_SoC2_431_241008.png

Tie to Constant ダイアログが開いた。
Enter a HEX Value: 0x に 0 を入力した。
Libero_SoC2_432_241008.png

BAYER_PATTERM_I[1:0] が 2'h0 に設定された。
Libero_SoC2_441_241008.png

Test Pattern Generator の PATTERN_SEL_I[2:0] は 3 ビットだが 8 通りのテスト・パターンを生成できるようだ。
”Pattern Generator IP User Guide”の 2 ページ目から引用する。
• 3’b000 – color boxes pattern
• 3’b001 – only red
• 3’b010 – only green
• 3’b011 – only blue
• 3’b100 – vertical eight color bars
• 3’b101 – horizontal eight color bars
• 3’b110 – vertical graded bars from black to white
• 3’b111 – horizontal graded bars from black to white
テスト・パターンも引用する。
Libero_SoC2_433_241008.png
Libero_SoC2_434_241008.png
Libero_SoC2_435_241008.png
Libero_SoC2_436_241008.png

PATTERN_SEL_I[2:0] は PolarFire SoC Discovery Kit の DIP SW に接続することにしようと思う。
よって、PATTERN_SEL_I[2:0] を外部ピンに接続する。

SmartDesign の Add Port をクリックした。
Libero_SoC2_437_241008.png

Add Port ダイアログが表示された。
Name: に PATTERN_SEL_I[2:0] と入力した。デフォルトのままでは、Input のようだ。
OK ボタンをクリックした。
Libero_SoC2_438_241008.png

PATTERN_SEL_I[2:0] がインスタンスされた。
Libero_SoC2_439_241008.png

PATTERN_SEL_I[2:0] ポートに Test Pattern Generator から配線を行った。
Libero_SoC2_440_241008.png
  1. 2024年10月08日 07:46 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう2

HDMI TX Sample Design をやってみよう1”の続き。

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、前回は、Libero SoC 2024.1 で HDMI_TX_Sample_Design プロジェクトを作成し、HDMI_TX_SD SmartDesign を作成した。SmartDesign 上に PFSOC_INIT_MONITOR と CORERESET_PF をインスタンスした。今回は、CORERESET_PF のプルアップ、プルダウンを行ってから、Display Controller をインスタンスした。

CORERESET_PF のプルアップの処理を行う。
CORERESET_PF の EXT_RST_N を右クリックし、右クリックメニューから Tie High を選択した。
Libero_SoC2_419_241007.png

EXT_RST_N がプルアップされた。
Libero_SoC2_420_241007.png

BANK_x_VDDI_STATUS と BANK_y_VDDI_STATUS を同様にプルアップした。
Libero_SoC2_421_241007.png

SS_BUSY をプルダウンする。
SS_BUSY を右クリックし、右クリックメニューから Tie Low を選択した。
Libero_SoC2_422_241007.png

SS_BUSY がプルダウンされた。
Libero_SoC2_423_241007.png

FF_US_RESTORE も同様にプルダウンした。
PLL_POWERDOWN_B は Unused に設定した。
Libero_SoC2_424_241007.png

Catalog タブで、IP Catalog に DISPLAY と入力し、Display Controller を表示させた。
Display Controller はハイドされていたので、右クリックし、右クリックメニューから Download を選択して、IP をダウンロードした。
Display Controller を SmartDesign にドラック・アンド・ドロップした。
設定ダイアログが表示された。
Video Format を 1920x1080 に変更した。
Pipline Delay compensation を Disable に変更した。
Libero_SoC2_425_241007.png

SmartDesign に Display Controller がインスタンスされた。
Libero_SoC2_426_241007.png

Display Contorller はディスプレイに表示するための水平、垂直同期信号や各種信号を生成するコントローラだ。
UG0649 User Guide Display Controller”の 7 ページの Introduction の翻訳を引用する。

ディスプレイ コントローラは、ディスプレイ解像度に基づいてディスプレイ同期信号を生成します。水平および垂直同期信号、水平および垂直アクティブ信号、フレーム終了信号、およびデータ イネーブル信号を生成します。入力ビデオ データもこれらの同期信号と同期されます。同期信号はビデオ データとともに、ディスプレイ モニタとインターフェイスする DVI、HDMI、または VGA カードに供給できます。


”Figure 1 • Sync Signal Waveforms”を引用する。
Libero_SoC2_427_241007.png
  1. 2024年10月07日 04:35 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

HDMI TX Sample Design をやってみよう1

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX のサンプル・デザインをやってみようということで、今回は、PFSOC_INIT_MONITOR と CORERESET_PF をインスタンスした。

最初に Libero SoC 2024.1 で HDMI_TX_Sample_Design プロジェクトを作成した。

Project の New... をクリックして、新規プロジェクトを作成する。

New Project ダイアログが開いた。
Project details 画面
Project name に HDMI_TX_Sample_Design と入力した。
Project location を設定した。
Preferred HDL typte はデフォルトの Verilog とした。
Next > ボタンをクリックした。

Device Selection 画面
Part Number は MPF5095T-1FCSG325E を指定した。

Device settings 画面
Default I/O technology はデフォルトの LVCMOS 1.8V だった。
Reserve pins for probes のチェックボックスにチェックが入っている。
Finish ボタンをクリックした。

HDMI_TX_Sample_Design プロジェクトを作成された。

Create SmartDesign をダブルクリックして、SmartDesign を作成する。

Create New Design ダイアログが表示された。
HDMI_TX_SD と入力して、OK ボタンをクリックした。

HDMI_TX_SD SmartDesign が生成された。

Catalog タブをクリックし、検索ウインドウに INIT_ と入力し、PolarFireSoC Initialization Monitor を HDMI_TX_SD SmartDesign にドラック・アンド・ドロップして、PolarFireSoC Initialization Monitor をインスタンスする。

Create Component ダイアログが表示された。
OK ボタンをクリックした。
Libero_SoC2_413_241006.png

設定ダイアログが表示された。
Enable Bank1 calibration status pin (BANK_1_CALIB_STATUS) のチェックボックスのチェックを外した。
Libero_SoC2_414_241006.png

PFSOC_INIT_MONITOR_C0_0 がインスタンスされた。
PCIE_INIT_DONE ピンに Mark Unused を設定する。
PCIE_INIT_DONE ピンを右クリックし、右クリックメニューから Mark Unused を選択する。
Libero_SoC2_415_241006.png

使用しないピンを Unused に設定した。
Libero_SoC2_416_241006.png

Catalog タブをクリックし、検索ウインドウに CORERESET と入力して、CoreReset_PF を HDMI_TX_SD SmartDesign にドラック・アンド・ドロップして、CoreReset_PF をインスタンスする。

設定ダイアログが表示された。
設定項目が無いので、そのまま OK ボタンをクリックした。
Libero_SoC2_417_241006.png

線を 2 本配線した。
配線方法はマウスを出力ピンでクリックしてドラックし、入力ピンにポイントすると接続される。
Libero_SoC2_418_241006.png
  1. 2024年10月06日 15:00 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

PolarFire SoC MSS Configurator で作成した CXZ ファイルを Libero SoC 2024.1 に取り込む

PolarFire SoC FPGA で使用するツール”で PolarFire SoC MSS Configurator で作成した CXZ ファイルを Libero Component として、Libero Soc 2024.1 に取り込むことができるようだった。それを確かめてみようと思う。

最初に Libero SoC 2024.1 で MMStest プロジェクトを作成する。

Project の New... をクリックして、新規プロジェクトを作成する。

New Project ダイアログが開いた。
Project details 画面
Project name に MMStest と入力した。
Project location を設定した。
Preferred HDL typte はデフォルトの Verilog とした。
Next > ボタンをクリックした。
Libero_SoC2_403_241005.png

Device Selection 画面
Part Number は MPF5095T-1FCSG325E を指定した。
Libero_SoC2_404_241005.png

Device settings 画面
Default I/O technology はデフォルトの LVCMOS 1.8V だった。
Reserve pins for probes のチェックボックスにチェックが入っている。
Finish ボタンをクリックした。
Libero_SoC2_405_241005.png

MMStest プロジェクトが作成された。
Libero_SoC2_406_241005.png

Create SmartDesign をダブルクリックして、SmartDesign を作成する。

Create New Design ダイアログが表示された。
MMStest と入力して、OK ボタンをクリックした。
Libero_SoC2_410_241005.png

MMStest SmartDesign が生成された。
Libero_SoC2_407_241005.png

Design Hierarchy タブをクリックした。
work -> MMStest を右クリックし、右クリックメニューから Set As Root を選択した。

File メニューから Import -> MMS Components を選択した。(下の図は Set As Root を行う前のものなので、rootを設定しろという黄色の表示が見えているけど、もう見えていないはず)
Libero_SoC2_408_241005.png

Windows 11 で polarfire-soc-discovery-kit-reference-design をやってみよう8(PolarFire SoC MSS Configurator 3)”の MPFS_DISCOVERY_KIT_MSS.cxz ファイルを選択して開いた。
Libero_SoC2_409_241005.png

MPFS_DISCOVERY_KIT_MSS がインポートされた。
Libero_SoC2_411_241005.png

Design Hierarchy タブをクリックする。
Work -> MPFS_DISCOVERY_KIT_MSS を MMStest SmartDesign にドラック・アンド・ドロップすると、シンボルが生成された。
Libero_SoC2_412_241005.png

これで、ハードコア RISC-V の設定を MMS Configurator で設定して、Libero SoC 2024.1 に取り込む方法が分かったけど、Libero SoC 2024.1 で作成した AXI4 インターフェースを持つデバイスをどうやって、SoftConsoleに認識させるのか?はまだ良く分かっていない。。。
  1. 2024年10月05日 15:17 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Libero SoC Design Suite Version 2024.1 の IP を確認する12(VDMA, RGBtoYCbCr, PF_XCVR_ERM)

Libero SoC Design Suite Version 2024.1 の IP を確認する11(MIPI CSI2 RxDecoder PF, CNN Accelerator)”の続き。

今回は、VDMA, RGBtoYCbCr, PF_XCVR_ERM をインスタンスする。

VDMA をインスタンスする。

VDMA の設定ダイアログを示す。
Libero_SoC2_396_241004.png

VDMA_C0_0 がインスタンスされた。
Libero_SoC2_397_241004.png

RGBtoYCbCr をインスタンスする。

RGBtoYCbCr の設定ダイアログを示す。
Data Width は 8, 10, 12, 14, 16 に設定できる。
No of Pixels は 1, 4 に設定できる。
YCbCr Conversion Format は YCbCr444, YCbCr422 に設定できる。
Video Interface は Native, AXI4-Stream に設定できる。
Libero_SoC2_398_241004.png

RGBtoYCbCr_C0_0 がインスタンスされた。
Libero_SoC2_399_241004.png

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”で取り上げた HDMI TX だが、出力が 10 ビットの信号となっていて、HDMI に出力できないので、何らかのシリアライザが必要だと思っていた。
”HDMI TX IP User Guide”の 19 ページの”Figure 6-1. HDMI TX Sample Design”に HDMI TX 用のシリアライザの PF_XCVR_ERM が乗っていたので、それを実装してみよう。
”Figure 6-1. HDMI TX Sample Design”を引用する。
Libero_SoC2_402_241004.png

PF_XCVR_ERM をインスタンスする。

Peripherals -> Transceiver Interface を SmartDesign にドラック&ドロップする。
Transceiver Interface の設定ダイアログが開いた。

最初に左上の PF_XCVR_default_configuration を右クリックし、右クリックメニューから Apply を選択した。
Libero_SoC2_444_241009.png

下の図のように設定を行った。
Libero_SoC2_400_241004.png

PF_XCVR_ERM_C0_0 がインスタンスされた。
Libero_SoC2_401_241004.png
  1. 2024年10月05日 04:22 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Libero SoC Design Suite Version 2024.1 の IP を確認する11(MIPI CSI2 RxDecoder PF, CNN Accelerator)

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)”の続き。

今回は、MIPI CSI2 RxDecoder PF, CNN Accelerator をインスタンスする。

MIPI CSI2 RxDecoder PF をインスタンスする。

設定ダイアログを示す。
Libero_SoC2_392_241003.png

Video Interface を AXI4 Stream にした。
Libero_SoC2_393_241003.png

mipicsi2rxdecoderPF_C0_0 がインスタンスされた。
Libero_SoC2_394_241003.png

CNN Accelerator をインスタンスする。

UG0943 User Guide CNN Accelerator for PolarFire FPGA”が CNN Accelerator のマニュアルとなっている。
8 ページの”Figure 2 • CNN Accelerator IP Internal Structure”を引用する。
Libero_SoC2_395_241003.png

8 ページの説明文を引用する。

Types of layers supported by the CNN engine are as follows:
• Convolution - stride1/stride2, Zero padding (5,5,5,5) or No zero padding
 • Kernel size - 3x3, 5x5, 7x7, 9x9
• 3x3 Max pooling - stride1/stride2 after convolution
• Leaky relu after 3x3 convolution
• Relu and Relu Max
• 3x3 Depth wise convolution - stride1/stride2 with zero padding
• Pointwise convolution
• Fully connected
• Global average pooling -7x7



設定ダイアログを示す。
Libero_SoC2_390_241003.png

CNN_ENGINE_C0_0 がインスタンスされた。
Libero_SoC2_391_241003.png
  1. 2024年10月03日 05:24 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX)

Libero SoC Design Suite Version 2024.1 の IP を確認する9(CoreJTAGDebug, MIV_ESS)”の続き。

最初にハイドされている IP でも右クリックし、右クリックメニューから Download を選ぶと使えるようになることが分かりました。とっても素敵です。リストにあるすべての IP が使えるのかな?
今回は、Mi-V RV32, HDMI TX をインスタンスする。

最初に、MIPI CSI2 RxDecoder PF をダウンロードして、使えるようにしてみよう。
MIPI CSI2 RxDecoder PF はハイドされている。これを右クリックし、右クリックメニューから Download を選択した。
Libero_SoC2_384_241002.png

ダウンロードが始まった。これはだいぶダウンロードが進んだところだ。
Libero_SoC2_385_241002.png

ダウンロードが終了して MIPI CSI2 RxDecoder PF が使えるようになった。
Libero_SoC2_386_241002.png

Mi-V RV32 は最初から使えるようになっていた。
Mi-V RV32 をインスタンスする。

Configuration タブ
AXI Initiator を AXI4 に変更した。
Libero_SoC2_381_241002.png

Memory Map タブ
メモリ・マップが設定できるようだ。
Libero_SoC2_382_241002.png

MIV_RV_C0_0 がインスタンスされた。
Libero_SoC2_383_241002.png

HDMI TX をインスタンスする。HDMI TX はダウンロードした。

Configuration タブ
Interface は Native の状態だ。
Libero_SoC2_387_241002.png

Interface を AXI Stream に変更した。
Libero_SoC2_388_241002.png

Interface を Native に戻して、OK ボタンをクリックし、インスタンスを行った。
Libero_SoC2_389_241002.png
  1. 2024年10月02日 18:39 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0

Libero SoC Design Suite Version 2024.1 の IP を確認する9(CoreJTAGDebug, MIV_ESS)

”Libero SoC Design Suite Version 2024.1 の IP を確認する8(PCI Express, PolarFire Dynamic Reconfiguration Interface)”の続き。

今回は、CoreJTAGDebug, MIV_ESS を見ていこう。

CoreJTAGDebug をインスタンスする。

CoreJTAGDebug Configurator を示す。
General Configuration の Number of DEbug Targets は 1 だった。つまり、JTAG を 1 個インスタンスする。
Libero_SoC2_367_241001.png

CoreJTAGDebug が SmartDesign 上にインスタンスされた。
Libero_SoC2_368_241001.png

さて、JTAG が 2 個になったらどうなるか調べてみよう。
CoreJTAGDebug Configurator で、General Configuration の Number of DEbug Targets を 2 にした。
Target 1 IR Code は 0x57 にしてみた。
Libero_SoC2_369_241001.png

CoreJTAGDebug は DEBUG_TARGET は 2 個に増えたが、JTAG_HEADER は 1 個のままだった。ありがたい。。。

MIV_ESS をインスタンスする。
MIV_ESS はソフトコアの RISC-V のようだ。

General タブ
Peripherals が並んでいる。
uDMA, GPIO, I2C, PLIC, SPI, Timer, UART, Watchdog
Libero_SoC2_371_241001.png

Bootstrap タブ
Libero_SoC2_372_241001.png

APB タブ
Libero_SoC2_373_241001.png

uDMA タブ
Libero_SoC2_374_241001.png

GPIO タブ
Libero_SoC2_375_241001.png

PLIC タブ
Libero_SoC2_376_241001.png

SPI タブ
Libero_SoC2_377_241001.png

Timer タブ
Libero_SoC2_378_241001.png

UART タブ
Libero_SoC2_379_241001.png

MIV_ESS を SmartDesign にインスタンスした。
Libero_SoC2_380_241001.png
  1. 2024年10月01日 04:48 |
  2. Libero SoC
  3. | トラックバック:0
  4. | コメント:0