”
Identify を試してみる4 ”の続き。
MACNICA の Identify という資料を見つけたので、Identify を使ってみようということで、前回は、Synplify Pro で論理合成を行って、Synplify Pro を閉じた。Libero SoC に戻って、Place and Route を行った。今回は、FPGA をプログラムしたが、エラーになってしまった。もう一度、FPGA をプログラムしたところ今度は成功した。
FPGA にビットファイルをダウンロードして、プログラムする。
Program Design -> Run PROGRAM Action をダブルクリックした。
エラーが発生した。
エラーを示す。
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 をダブルクリックしたところ、成功した。
ディスプレイにテストパターンが表示された。
FPGA をプログラムしたときに、エラーが出ることがあるんだね。
2024年10月31日 04:30 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 ボタンをクリックした。
Design out of date ダイアログが表示された。
OK ボタンをクリックした。
論理合成が終了した。
Project Status タブの内容を示す。
Synplify Pro を閉じた。
Libero SoC に戻って、Implement Design -> Place and Route をダブルクリックして、Place and Route を行った。
Place and Route が終了した。
4LUT の使用量は 1326 で、Idenfity Instrumentor を入れない時は、300 くらいだったと思うので、1000 くらい増えたようだ。
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 は満たしている。
PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 -> Register to Register をクリックした。
PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 -> Register to Register の右ウインドウのリストから一番上の項目をダブルクリックした。
各パスのディレイが表示されて、グラフィカルに遅延パスを見ることができるようだ。
Max Delay Analysis ボタンをクリックすると元の画面に戻る。
atck -> Register to Register をクリックした。
このクロックは、Identify のクロックのようだ。
atck -> Register to Register の右ウインドウのリストから一番上の項目をダブルクリックした。
pll_clk -> Register to Register には、エントリが何もない。
pll_clk はネット名で制約を掛けているので、インスタンスの PF_CCC_C1_0/PF_CCC_C1_0/pll_inst_0:OUT0 で制約を掛けた方が良さそうだ。
2024年10月30日 05:13 |
Libero SoC
| トラックバック:0
| コメント:0
”
Identify を試してみる2 ”の続き。
MACNICA の Identify という資料を見つけたので、Identify を使ってみようということで、前回は、Identify インプリメンテーションを新規作成して、Idenfity Instrumentor を起動した。今回は、Idenfity Instrumentor の Watchpoint と Breakpoint を設定して、FPGA のメモリ長や Memory Type を設定した。
MACNICA の Identify の
14 ページ目の 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 の Identify の
15 ページ目 には、”CCC(PLL)の出力ネットを Sample Clock に設定不可”と書いてあったが、この信号をクロックに使用しているので、とりあえず Sample Clock に指定してみた。ダメだったら後で BUFG を追加する。
BLUE_O を右クリックし、右クリックメニューから Sample and Trigger を選択して、設定する。
BLUE_O に Sample and Trigger を選択して、設定した。
GREEN_O と RED_O、H_SYNC_O、V_SYNC_O にも同様に、Sample and Trigger を選択して、設定した。
PATTERN_SEL_I[2:0] には、Sample Only を指定する。
PATTERN_SEL_I[2:0] に、Sample Only を指定した。
次に Breakpoint を指定する。
Test Pattern Generator で、赤一面の場合の r_red に値を代入している行を Breakpoint に指定した。
FPGA Memory を指定する。
左のウインドウで Control Panel タブの FPGA Memory をクリックする。
IICE Sampler タブ
Memory Type を URAM に変更し、Sample depth を 1024 に変更した。
IICE Clock タブ
Sample Clock が指定されている。
IICE Controller タブ
IICE Options タブ
OK ボタンをクリックした。
File メニューから Save All を選択して、セーブした。
File メニューから Close を選択して、Idenfity Instrumentor を終了した。
Synplify Pro に戻った。
HDMI_TX_SD.srs (RTL)[d:0] タブをクリックした。
ブロック図が表示された。
2024年10月29日 04:36 |
Libero SoC
| トラックバック:0
| コメント:0
”
Identify を試してみる1 ”の続き。
MACNICA の Identify という資料を見つけたので、Identfy を使ってみようということで、前回は、DIP SW に PATTERM_SEL_I [2:0] を割り当てて、論理合成、Place and Route を行った。今度は DIP SW でテストパターンを変更することができた。今回は、Identify インプリメンテーションを新規作成して、Idenfity Instrumentor を起動した。
Options -> Configure Identify Launch... を選択した。
Synplify Pro (R) ダイアログが表示された。
OK ボタンをクリックした。
Configure Identify Launch ダイアログが表示された。
Where is identify installed? の
... ボタンをクリックして、identify のディレクトリを選択した。
後はデフォルトのまま、OK ボタンをクリックした。
synthesis を右クリックし、右クリックメニューから New Identify Implementation... を選択した。
Add Identity Implementation ダイアログが表示された。
Implementation Name: に
synthesis_1 と入力した。
後は下図のように設定した。デフォルトのままだったと思う。
synthesis_1 が生成された。
synthesis_1 を右クリックし、右クリックメニューから Identify Instrumentor を選択した。
SRS Instrumentation ダイアログが表示された。
SRS Instrumentation Options の 2 つのチェックボックスのチェックを確認して、OK ボタンをクリックした。
Identify Instrumentor が起動した。
2024年10月28日 04:00 |
Libero SoC
| トラックバック:0
| コメント:0
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 を選択した。
Synopsys License Agreement ダイアログが表示された。
YES ボタンをクリックした。
Windows セキュリティ・ダイアログが表示された。(Windows 11 です)
許可ボタンをクリックした。
Synplify Pro (R) ダイアログが表示された。
OK ボタンをクリックした。
Synplify Pro の Do you Know... ダイアログが表示された。
OK ボタンをクリックした。
Synplify Pro が起動した。
2024年10月27日 04:00 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 で表示している。
論理合成、Place and Route を行った。
SmartTime ウインドウを立ち上げて、タイミングを表示した。タイミング制約は満たされている。
Libero SoC 2024.1 の Design Flow ウインドウの Program Design -> Run PROGRAM Action を右クリックし、右クリックメニューから Run を選択して、FPGA をプログラムする。
Libero ダイアログが表示されて、FPGA がプログラムされている。
FPGA のプログラムが終了した。
テストパターンが表示された。
PATTERM_SEL_I [2:0] = 3'b000 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b001 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b010 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b011 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b100 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b101 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b110 にしたときのテストパターンを示す。
PATTERM_SEL_I [2:0] = 3'b111 にしたときのテストパターンを示す。
2024年10月26日 13:02 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 SoC 2024.1 の Design Flow ウインドウの Program Design -> Run PROGRAM Action を右クリックし、右クリックメニューから Run を選択して、FPGA をプログラムする。
Libero ダイアログが表示されて、FPGA がプログラムされている。
FPGA のプログラムが終了した。
テストパターンが表示された。やった~。
テストパターンが表示されたのだが、DIP SW でパターンが変更できない。
I/O Editor を立ち上げて、PATTERN_SEL_I[2:0] を見たところ、配置制約が間違っていた。
正しくは、
PATTERN_SEL_I[0] : DIP_SW[3] : R17 PATTERN_SEL_I[1] : DIP_SW[2] : Y16 PATTERN_SEL_I[2] : DIP_SW[1] : U17
だった。
2024年10月25日 20:24 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 だった。
Place and Route 後のシミュレーションをしてみよう。
Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Simulate を右クリックし、右クリックメニューから Open Interactively を選択する。
ModelSim Pro が起動した。
Wave ウインドウも表示されたが、信号が入っていない。
Object ウインドウの信号をすべて選択して、右クリックし、右クリックメニューから Add Wave を選択して、信号を Wave ウインドウに追加した。
Run Length に 50 us を指定して、Run ボタンをクリックした。
Wave ウインドウでシミュレーション波形が見えたが、HSYNC の間隔が 22 us もある?
PF_CCC_C1_0 を Instance ウインドウからクリックして、Object ウインドウで OUT1 を選択して、Wave ウインドウに追加した。
再度、50 us のシミュレーションをしたところ、OUT1 のクロック周波数は 100 MHz だった。orz
これは、
PF_CCC_C1_0 を変更してトラブルシューティングしていた時 の設定が残ってしまったようだ。
PF_CCC_C1_0 の出力周波数を 148.5 MHz に変更した。
SmartDesign の Generate ボタンをクリックして、生成してから、論理合成、Place and Route を行った。
SmartTime ウインドウを開いて、タイミング制約の満たしているか?を確認したが、問題は無いようだ。
前回と同じ数値だった。
Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Verify Power をダブルクリックして、パワー・レポートを表示した。
Desgin Flow ウインドウで Implement Design -> Verify Post Layout Implementation -> Simulate を右クリックし、右クリックメニューから Open Interactively を選択する。
ModelSim Pro が起動した。
Wave ウインドウに信号を追加した。
50 us のシミュレーションを行った。
HSYNC の間隔は、14.8 us 位になった。
PF_CCC_C1_0 の OUT1 の信号波形を確認したところ、6.734 ns なので、クロック周波数は 148.5 MHz となった。
2024年10月25日 19:40 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 だった。
タイミング制約を作成しよう。
Constraint Manager の Timing タブで Edit の下向き三角をクリックし、Edit Sythesis Contraints を選択した。
ConstraintsEditor ダイアログが開く。
Clock Name の空欄をダブルクリックする。
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 ボタンをクリックした。
Assigned Pins に PF_CCC_C1_0_OUT0_FABCLK_0 が入った。
OK ボタンをクリックした。
Clock Source が入力された。
Clock Name に pll_clk と入力し、Frequency: に 148.5 を入力した。
他はデフォルトで問題ないので、OK ボタンをクリックした。
pll_clk タイミング制約が ConstraintsEditor に入った。
Add のチェックボックスにチェックを入れた。
セーブを行った。
user.sdc を示す。
Implement Design -> Synthesize をクリックして、論理合成を行った。成功した。
Design Flow ウインドウで、Implement Design -> Place and Route をダブルクリックして成功した。
Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックして、SmartTime ウインドウを開いた。
pll_clk のタイミング制約で、Required Frequency (MHz) が 148.500 に設定されていて、これは正しい。
pll_clk の Frequency (MHz) は 188.041 でタイミング制約を満たしている。
Analysis for scenrio timing_analysis で Register to Register を選択した。
ワーストケースのレジスタ間の遅延も 5.270 ns となっていて、問題なさそうだ。
2024年10月23日 04:26 |
Libero SoC
| トラックバック:0
| コメント:0
”
HDMI TX Sample Design をやってみよう14 ”の続き。
前回は、論理合成を行って、ピンの配置と属性を指定した。今回は、タイミング制約を作成した。今回は、論理合成をして、続いて、Place and Route を行った。ピン配置とタイミング・レポートを確認したが、PLL の出力クロックの周波数が想定と違っているようだ?
Design Flow ウインドウで、Implement Design -> Synthesize をダブルクリックして、論理合成を行った。
Design Flow ウインドウで、Implement Design -> Place and Route をダブルクリックして成功した。
Reports タブの HDMI_TX_SD reports -> Place and Route -> HDMI_TX_SD pinrpt name.rpt をクリックすると、Port の情報が出てきた。
問題無さそうだ。
Reports タブの HDMI_TX_SD reports -> Place and Route -> HDMI_TX_SD_layout_log.log を見るとリソース使用量が見えた。
4LUT は 328 個、DFF が 116 個、Logic Element が 346 個だった。
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 より低い。
でもタイミング制約は伝搬していないのか?
PF_CCC_C0_0/PF_CCC_C0_0/pll_inst_0:OUT0 -> Register to Register をクリックした。
Delay は 7.066 ns 程度だった。
PF_CCC_C0_0 の出力周波数を 100 MHz に変更した。
Generate して論理合成、Place and Route を行って、Design Flow ウインドウで、Verify Post Layout Implementation -> Open SmartTime をダブルクリックして、SmartTime ウインドウを開いた。
PF_CCC_C0_0/PF_CCC_C0_0/pll_inst_0:OUT0 は 136.351 MHz ということで、Required Period が N/A になっていて制約がかかっていない。。。
ここのタイミング制約を掛ける必要がある。タイミング制約は PLL を伝搬しないようだ。
2024年10月22日 05:20 |
Libero SoC
| トラックバック:0
| コメント:0
昨日、15 時ころ、信号のない交差点で、一時停止無視してきた車と衝突しました。
突然の出来事で何もできずにブレーキかけるしかできませんでした。衝突して初めてエアバッグの動作を確認できました。
その時は何ともなかったのですが、今朝起きると首が痛いです。むち打ち症状ですね。
今日はブログお休みにして、医者に行ってきます。
2024年10月21日 05:14 |
日記
| トラックバック:0
| コメント:0
”
HDMI TX Sample Design をやってみよう13 ”の続き。
前回は、論理合成を行って、ピンの配置と属性を指定しようとしたが、クロックの配置と属性が指定できなかった。そこで、Smart Design を変更して、PF_XCVR_REF_CLK IP を削除した。その後、論理合成を行って、ピンの配置と属性を指定した。今回は、タイミング制約を作成した。
今回は、タイミング制約を作成しよう。
Constraint Manager の Timing タブで Edit の下向き三角をクリックし、Edit Sythesis Contraints を選択した。
ConstraintsEditor ダイアログが開く。
Clock Name の空欄をダブルクリックすると、Create Clock Constraint ダイアログが開いた。
Clock Source の ... ボタンをクリックした。
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 ボタンをクリックした。
Assigned Pins に REF_CLK_O が入った。
OK ボタンをクリックした。
Clock Source が入力された。
Clock Name に
clk と入力し、Period に
20 ns を入力した。
他はデフォルトで問題ないので、OK ボタンをクリックした。
clk タイミング制約が ConstraintsEditor に入った。
Add のチェックボックスにチェックを入れた。
セーブを行った。
Constraint Manager に戻ると、constraint/user.sdc {Target] の Synthesize のチェックボックスだけチェックが入っているので、他の Place and Route と Timing Verification のチェックボックスにチェックを入れて、セーブ・ボタンをクリックした。
セーブ・ボタンをクリックするとWarning ダイアログが表示された。
OK ボタンをクリックした。
Constraint Manager の Timing タブで Check の下向き三角をクリックし、Check Synthesis Constraints を選択した。
Information ダイアログが開いた。
チェックは成功した。
Constraint Manager の Timing タブで Check の下向き三角をクリックし、Check Place and Route Constraints を選択した。
Information ダイアログが開いた。
チェックは成功した。
Constraint Manager の Timing タブで Check の下向き三角をクリックし、CheckTiming Verification Constraints を選択した。
最初はWarning ダイアログが表示されたが、2度目は Information ダイアログが開いた。
チェックは成功した。
user.sdc を示す。
create_clock -name {clk} -period 20 -waveform {0 10 } -add [ get_ports { REF_CLK_0 } ]
2024年10月20日 05:20 |
Libero SoC
| トラックバック:0
| コメント:0
”
HDMI TX Sample Design をやってみよう12 ”の続き。
前回は、Test Pattern Generator の RGB 出力のビット幅を 4 に変更した。SmartDesign を完成させた。今回は、論理合成を行って、ピンの配置と属性を指定しようとしたが、クロックの配置と属性が指定できなかった。そこで、Smart Design を変更して、PF_XCVR_REF_CLK IP を削除した。その後、論理合成を行って、ピンの配置と属性を指定した。
Smart Design で Generate Component ボタンをクリックした。
Implement Design -> Synthesize をクリックして、論理合成を行った。成功した。
ピンを割り当てて、制約ファイルを生成する。
Design Flow ウインドウで、 Constraints -> Manage Constraints をダブルクリックした。
Constraint Manager ウインドウが開き、 I/O Attributes タブが選択されていた。
Target Devices: の MPFS095TL のチェックボックスをチェックした。
Edit の下向き三角をクリックし、Edit with I/O Editor を選択した。
I/O Editor ダイアログが開いた。
REF_CLK_PAD_0 の I/O Standard や Pin Number が指定できない。
HDMI_TX_SD Smart Design に戻って、PF_XCVR_REF_CLK IP を削除した。
PF_CCC_C0_0 の REF_CLK_0 を外部ピンに接続した。
Generate Component ボタンをクリックした。
HDMI_TX_SD_tb Smart Design も修正した。
Generate Component ボタンをクリックした。
もう一度、論理合成を行って、成功した。
Constraint Manager ウインドウで、Edit の下向き三角をクリックし、Edit with I/O Editor を選択した。
I/O Editor ダイアログが開いた。
クロックピンは REF_CLK_O でピンの配置と属性を指定できる。
REF_CLK_0 を除いた信号の I/O Standard を LVCOMS33 に指定した。
Pin Number を指定した。
セーブを行うと、PF_CCC_C0_0 でエラーが出ているが、とりあえず無視する。
I/O Attributes タブに contraintt\user.pdc が追加された。
user.pdc を開いた。
Raspberry Pi 4 Interfaceコネクタ表にFPGAピン名を追加した。
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 #
2024年10月19日 13:15 |
Libero SoC
| トラックバック:0
| コメント:0
”
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... を選択した。
Edit Slices - RED_O ダイアログが表示された。
最初、8 行表示されていたが、X ボタンで削除し、1 行にした。
Left を 7 に Right を 4 に変更した。Left や Right の項をダブルクリックすると入力できる。
すると、Test_Pattern_Generator _C1_0 に RED_O[7:4] が追加された。
GREEN_O と BLUE_O も同様に 4 ビット幅の信号を作成した。
RED_O[7:4] を外部ピンに接続する。
RED_O[7:4] を右クリックし、右クリックメニューから Promote to Top Level を選択した。
RED_O[7:4] が外部ピンに接続された。
GREEN_O[7:4] と BLUE_O[7:4] も外部ピンに接続した。
Display Contorller の H_SYNC_O と V_SYNC_O も外部ピンに接続した。
他の配線も行って、SmartDesign を完成させた。
2024年10月18日 04:17 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 を削除した。
PLLを実装する必要があるので、Clock Conditioning Circuitry (CCC) を実装する。
Clock Conditioning Circuitry (CCC) を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択した。
Clock Conditioning Circuitry (CCC) の設定ダイアログが表示された。
Clock Option PLL タブ
Input Freqency を 50 MHzに設定した。
Output Clocks タブ
Output Clock 0 の Requested Frequency を 148.5 MHz に設定した。
OK ボタンをクリックした。
Warning ダイアログが表示された。
OK ボタンをクリックした。
Information ダイアログが表示された。
PF_CCC_C0_0 が実装された。
2024年10月17日 12:52 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 をダブルクリックして、論理合成を行った。
論理合成はエラーになった。
エラー内容は、”Error: Number of Transceiver Lanes modules (4) exceeds the limit (2) of the selected device.”ということで、1 IP 当たりのレーン数が 2 個なのだろうか?
2 レーンのトランシーバーを 2 個実装してみる。
Catalog タブをクリックし、Simulation Mode のチェックボックスのチェックを外した。
検索ボックスに PF_XCVR と入力し、Transceiver Interface を SmartDesign ファイルにドラック・アンド・ドロップした。
Transceiver Interface の設定を行った。
Number of lanes は 2 とした。
PR_XCVR_ERM_C1_0 がインスタンスされた。
PR_XCVR_ERM_C0_0 の配線を PR_XCVR_ERM_C1_0 につないでいく。
PR_XCVR_ERM_C2_0 をインスタンスして、配線を行った。
PR_XCVR_ERM_C0_0 を削除した。これで完成だ。
再び、論理合成を行ったが、同様のエラーだった。
HDMI が 4 レーン実装できないと画像出せないので、ここでこのプロジェクトは終了とする。
2024年10月15日 05:09 |
Libero SoC
| トラックバック:0
| コメント:0
”
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”を下に引用する。
40 ピン・コネクタに接続されている FPGA のバンクはBANK-1 と MSSIO-B2 だった。
”
PolarFire SoC Discovery Kit Schematics ”の 7 ページから BANK-1 の回路図を引用する。
40 ピン・コネクタに接続されている FPGA のバンクはBANK-1 と MSSIO-B2 だった。
”
PolarFire SoC Discovery Kit Schematics ”の 7 ページから MSSIO-B2 の回路図を引用する。
これらの情報をもとに、”Raspberry Pi 4 Interface コネクタ対応表”を作成した。
色が付いているのが 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,
2024年10月14日 17:39 |
Libero SoC
| トラックバック:0
| コメント:0
”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 をクリックした。
エラーが発生した。
エラー内容は、”Error: Simulate operation failed. Active stimulus component is not in generated state, regenerate your SmartDesign testbench 'HDMI_TX_SD_tb'”だった。
なんか SmartDesign を generate していないというエラーのようだ。そういえば、generate ボタンがあったのだった。
HDMI_TX_SD_tb SmartDesign の Generate Component ボタンをクリックした。
HDMI_TX_SD SmartDesign の Generate Component ボタンをクリックした。
Simulation Hierarchy タブをクリックした。
HDMI_TX_SD_tb SmartDesign を右クリックし、右クリックメニューから Simulate Pre-Synth Desgin → Run を選択した。
Simulation Completed. が表示された。問題はなさそう。
ModelSim を起動して、シミュレーションをしよう。
Design Flow タブをクリックした。
Create Design -> Verify Pre-Synthesized Design -> Smulate を右クリックし、右クリックメニューから Open Interactively を選択した。
ModelSim が起動した。
信号を Wave ウインドウに入れよう。
sim - Default ウインドウの HDMI_TX_SD_0 をクリックした。
Object ウインドウで、CTRL+A をクリックして、すべての信号を選択した。
Object ウインドウの信号のところで、右クリックし、右クリックメニューから Add Wave を選択した。
選択した信号が Wave ウインドウに表示された。
Display Controller の信号も Wave ウインドウに追加しよう。
sim - Default ウインドウの Display Controller をクリックした。
Object ウインドウで、CTRL+A をクリックして、すべての信号を選択した。
Object ウインドウの信号のところで、右クリックし、右クリックメニューから Add Wave を選択した。
Run Length ウインドウに 20 us と入力した。
となりの Run ボタンをクリックして、Run した。
Run が終了した。
Wave ウインドウを示す。
HDMI_TX_SD の HDMI_TX_SD_0 の LANEX_TXD_X 信号が表示されている。これは HDMI 出力の信号だ。
HDMI_TX_C0_0_TMDS_X_O も信号も変化しているのが見える。これは RGB の信号だ。
Display Contorller の信号を見てみよう。
20 us 程シミュレーションを行うと HSYNC の信号が見えるはずだ。
Zoom Full ボタンをクリックして、波形全体を表示した。
14.4 us 辺りに HSYNC が出力されたのが見えた。
なお、ModelSim でシミュレーションするためには、Verilog HDL ファイルを出力しているはずということで、プロジェクトのフォルダを .v で検索してみたところ、やはり、Verilog HDL ファイルが生成されていた。
2024年10月13日 05:09 |
Libero SoC
| トラックバック:0
| コメント:0
”
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... を選択した。
Project Settings ダイアログが表示された。
Simulation Option -> DO file をクリックした。
Simulation runtime に 17000000ns を入力した。
Generate VCD のチェックボックスにチェックを入れた。
VCD file name に HDMI_TX_SD_tb.vcd を入力した。
Simulation Option -> Waveforms をクリックした。
Include DO file のチェックボックスをチェックした。
下の欄に c:/Microchip/Project/HDMI_Sample_Design/wave.do を入力した。
Save ボタンをクリックした。
Simulation Option -> Vsim commands を示す。
デフォルトのままとした。
Simulation Option -> Timescale を示す。
デフォルトのままとした。
Close ボタンをクリックした。
Warning ダイアログが表示された。
Save ボタンをクリックした。
設定を確認するのを忘れたので、もう一度、Libero SoC の Project メニューから Project Settings... を選択した。
Simulation libraries -> PolaFireSoC をクリックした。
Library path を確認した。
Close ボタンをクリックして、Libero SoCに戻った。
2024年10月12日 21:34 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 の配線を行った。
Design Hierarchy タブをクリックした。デザインの階層が分かる。
HDMI_TX_SD を右クリックし、右クリックメニューから Set As Root を選択した。
HDMI_TX_SD を root に設定することができた。
Build Hierarchy ボタンをクリックした。
階層が生成できた?
HDMI_TX_SD を右クリックし、右クリックメニューから Create Testbench を選択した。
Create Component ダイアログが表示され、テストベンチの名前を聞いてくるので、HDMI_TX_SD_tb と入力した。
HDMI_TX_SD_tb Smart Design が生成された。
最初から HDMI_TX_SD のインスタンスが実装されている。
Catalog タブをクリックした。
IP Catalog の Simulation Mode のチェックボックスをチェックした。
Clock & Management の Clock_Generator を SmartDesign にドラック・アンド・ドロップした。
Create Component ダイアログが表示され、テストベンチの名前を聞いてくるので、CLK_GEN_C0 という名前がデフォルトで入っているので、デフォルトのままとした。
Configurator ダイアログが表示された。
Clock Period (ps) を 20000 とした。 20 ns = 50 MHz
OK ボタンをクリックした。
CLK_GEN_C0_0 が実装された。
HDMI_TX_SD_0 の LANE 信号をすべて選択して、右クリックし、右クリックメニューから Promote to Top Level を選択した。
Stimulus Hierarchy タブをクリックした。
クロックの配線を行った。
PATTERN_SEL_I[2:0] に 3'h0 を設定した。
セーブを行った。
Build Hierarchy ボタンをクリックした。
”
How to Simulate a SmartDesign Project Using Libero® SoC Design Suite ”を参考にしています。
2024年10月11日 08:54 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 にドラック・アンド・ドロップした。
設定ダイアログが表示された。
Reference Clock 0 Mode を LVCOMS に設定した。
PF_XCVR_REF_CLK_C1_0 がインスタンスされた。
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”を引用する。
”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 に設定した。
PF_TX_PLL_C0_0 がインスタンスされた。
2024年10月11日 08:26 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 の設定ダイアログを示す。
HDMI_TX はデフォルトのままで良さそうだ。
OK ボタンをクリックして、インスタンスを行った。
SmartDesign を示す。
PF_XCVR_ERM をインスタンスする。
PF_XCVR_ERM の IP 名は Transceiver Interface だ。
Transceiver Interface を右クリックし、右クリックメニューから Instantiate in HDMI_TX_SD を選択した。
Transceiver Interface の設定ダイアログが表示された。
最初に左上の PF_XCVR_default_configuration を右クリックし、右クリックメニューから Apply を選択した。
下の図のように設定を行った。
SmartDesign を示す。
なお下の図は、Auto Arrange Layout ボタンをクリックして、IP の配置を自動で整えるようにしてある。
2024年10月09日 04:51 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 を選択して、インスタンスを行った。
Test_Pattern_Generator_0 がインスタンスされたが、サンプル・デザインの Test Pattern Generator とは違いがある。
その違いは、BAYER_PATTERM_I[1:0] があることだ、IP がバージョンアップされたのかな?
Web で調べると、
”Pattern Generator IP User Guide ”が見つかって、これには、BAYER_PATTERM_I[1:0] が追加されていた。
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”を引用する。
BAYER_PATTERM_I[1:0] を 2'h0 に固定しよう。
BAYER_PATTERM_I[1:0] を右クリックし、右クリックメニューから Tie Constant... を選択した。
Tie to Constant ダイアログが開いた。
Enter a HEX Value: 0x に 0 を入力した。
BAYER_PATTERM_I[1:0] が 2'h0 に設定された。
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
テスト・パターンも引用する。
PATTERN_SEL_I[2:0] は PolarFire SoC Discovery Kit の DIP SW に接続することにしようと思う。
よって、PATTERN_SEL_I[2:0] を外部ピンに接続する。
SmartDesign の Add Port をクリックした。
Add Port ダイアログが表示された。
Name: に PATTERN_SEL_I[2:0] と入力した。デフォルトのままでは、Input のようだ。
OK ボタンをクリックした。
PATTERN_SEL_I[2:0] がインスタンスされた。
PATTERN_SEL_I[2:0] ポートに Test Pattern Generator から配線を行った。
2024年10月08日 07:46 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 を選択した。
EXT_RST_N がプルアップされた。
BANK_x_VDDI_STATUS と BANK_y_VDDI_STATUS を同様にプルアップした。
SS_BUSY をプルダウンする。
SS_BUSY を右クリックし、右クリックメニューから Tie Low を選択した。
SS_BUSY がプルダウンされた。
FF_US_RESTORE も同様にプルダウンした。
PLL_POWERDOWN_B は Unused に設定した。
Catalog タブで、IP Catalog に DISPLAY と入力し、Display Controller を表示させた。
Display Controller はハイドされていたので、右クリックし、右クリックメニューから Download を選択して、IP をダウンロードした。
Display Controller を SmartDesign にドラック・アンド・ドロップした。
設定ダイアログが表示された。
Video Format を 1920x1080 に変更した。
Pipline Delay compensation を Disable に変更した。
SmartDesign に Display Controller がインスタンスされた。
Display Contorller はディスプレイに表示するための水平、垂直同期信号や各種信号を生成するコントローラだ。
”
UG0649 User Guide Display Controller ”の 7 ページの Introduction の翻訳を引用する。
ディスプレイ コントローラは、ディスプレイ解像度に基づいてディスプレイ同期信号を生成します。水平および垂直同期信号、水平および垂直アクティブ信号、フレーム終了信号、およびデータ イネーブル信号を生成します。入力ビデオ データもこれらの同期信号と同期されます。同期信号はビデオ データとともに、ディスプレイ モニタとインターフェイスする DVI、HDMI、または VGA カードに供給できます。
”Figure 1 • Sync Signal Waveforms”を引用する。
2024年10月07日 04:35 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 ボタンをクリックした。
設定ダイアログが表示された。
Enable Bank1 calibration status pin (BANK_1_CALIB_STATUS) のチェックボックスのチェックを外した。
PFSOC_INIT_MONITOR_C0_0 がインスタンスされた。
PCIE_INIT_DONE ピンに Mark Unused を設定する。
PCIE_INIT_DONE ピンを右クリックし、右クリックメニューから Mark Unused を選択する。
使用しないピンを Unused に設定した。
Catalog タブをクリックし、検索ウインドウに CORERESET と入力して、CoreReset_PF を HDMI_TX_SD SmartDesign にドラック・アンド・ドロップして、CoreReset_PF をインスタンスする。
設定ダイアログが表示された。
設定項目が無いので、そのまま OK ボタンをクリックした。
線を 2 本配線した。
配線方法はマウスを出力ピンでクリックしてドラックし、入力ピンにポイントすると接続される。
2024年10月06日 15:00 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 > ボタンをクリックした。
Device Selection 画面
Part Number は MPF5095T-1FCSG325E を指定した。
Device settings 画面
Default I/O technology はデフォルトの LVCMOS 1.8V だった。
Reserve pins for probes のチェックボックスにチェックが入っている。
Finish ボタンをクリックした。
MMStest プロジェクトが作成された。
Create SmartDesign をダブルクリックして、SmartDesign を作成する。
Create New Design ダイアログが表示された。
MMStest と入力して、OK ボタンをクリックした。
MMStest SmartDesign が生成された。
Design Hierarchy タブをクリックした。
work -> MMStest を右クリックし、右クリックメニューから Set As Root を選択した。
File メニューから Import -> MMS Components を選択した。(下の図は Set As Root を行う前のものなので、rootを設定しろという黄色の表示が見えているけど、もう見えていないはず)
”
Windows 11 で polarfire-soc-discovery-kit-reference-design をやってみよう8(PolarFire SoC MSS Configurator 3) ”の MPFS_DISCOVERY_KIT_MSS.cxz ファイルを選択して開いた。
MPFS_DISCOVERY_KIT_MSS がインポートされた。
Design Hierarchy タブをクリックする。
Work -> MPFS_DISCOVERY_KIT_MSS を MMStest SmartDesign にドラック・アンド・ドロップすると、シンボルが生成された。
これで、ハードコア RISC-V の設定を MMS Configurator で設定して、Libero SoC 2024.1 に取り込む方法が分かったけど、Libero SoC 2024.1 で作成した AXI4 インターフェースを持つデバイスをどうやって、SoftConsoleに認識させるのか?はまだ良く分かっていない。。。
2024年10月05日 15:17 |
Libero SoC
| トラックバック:0
| コメント:0
”
Libero SoC Design Suite Version 2024.1 の IP を確認する11(MIPI CSI2 RxDecoder PF, CNN Accelerator) ”の続き。
今回は、VDMA, RGBtoYCbCr, PF_XCVR_ERM をインスタンスする。
VDMA をインスタンスする。
VDMA の設定ダイアログを示す。
VDMA_C0_0 がインスタンスされた。
RGBtoYCbCr をインスタンスする。
RGBtoYCbCr の設定ダイアログを示す。
Data Width は 8, 10, 12, 14, 16 に設定できる。
No of Pixels は 1, 4 に設定できる。
YCbCr Conversion Format は YCbCr444, YCbCr422 に設定できる。
Video Interface は Native, AXI4-Stream に設定できる。
RGBtoYCbCr_C0_0 がインスタンスされた。
”
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”を引用する。
PF_XCVR_ERM をインスタンスする。
Peripherals -> Transceiver Interface を SmartDesign にドラック&ドロップする。
Transceiver Interface の設定ダイアログが開いた。
最初に左上の PF_XCVR_default_configuration を右クリックし、右クリックメニューから Apply を選択した。
下の図のように設定を行った。
PF_XCVR_ERM_C0_0 がインスタンスされた。
2024年10月05日 04:22 |
Libero SoC
| トラックバック:0
| コメント:0
”
Libero SoC Design Suite Version 2024.1 の IP を確認する10(Mi-V RV32, HDMI TX) ”の続き。
今回は、MIPI CSI2 RxDecoder PF, CNN Accelerator をインスタンスする。
MIPI CSI2 RxDecoder P F をインスタンスする。
設定ダイアログを示す。
Video Interface を AXI4 Stream にした。
mipicsi2rxdecoderPF_C0_0 がインスタンスされた。
CNN Accelerator をインスタンスする。
”
UG0943 User Guide CNN Accelerator for PolarFire FPGA ”が CNN Accelerator のマニュアルとなっている。
8 ページの”Figure 2 • CNN Accelerator IP Internal Structure”を引用する。
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
設定ダイアログを示す。
CNN_ENGINE_C0_0 がインスタンスされた。
2024年10月03日 05:24 |
Libero SoC
| トラックバック:0
| コメント:0
”
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 を選択した。
ダウンロードが始まった。これはだいぶダウンロードが進んだところだ。
ダウンロードが終了して MIPI CSI2 RxDecoder PF が使えるようになった。
Mi-V RV32 は最初から使えるようになっていた。
Mi-V RV32 をインスタンスする。
Configuration タブ
AXI Initiator を AXI4 に変更した。
Memory Map タブ
メモリ・マップが設定できるようだ。
MIV_RV_C0_0 がインスタンスされた。
HDMI TX をインスタンスする。HDMI TX はダウンロードした。
Configuration タブ
Interface は Native の状態だ。
Interface を AXI Stream に変更した。
Interface を Native に戻して、OK ボタンをクリックし、インスタンスを行った。
2024年10月02日 18:39 |
Libero SoC
| トラックバック:0
| コメント:0
”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 個インスタンスする。
CoreJTAGDebug が SmartDesign 上にインスタンスされた。
さて、JTAG が 2 個になったらどうなるか調べてみよう。
CoreJTAGDebug Configurator で、General Configuration の Number of DEbug Targets を 2 にした。
Target 1 IR Code は 0x57 にしてみた。
CoreJTAGDebug は DEBUG_TARGET は 2 個に増えたが、JTAG_HEADER は 1 個のままだった。ありがたい。。。
MIV_ESS をインスタンスする。
MIV_ESS はソフトコアの RISC-V のようだ。 General タブ
Peripherals が並んでいる。
uDMA, GPIO, I2C, PLIC, SPI, Timer, UART, Watchdog
Bootstrap タブ
APB タブ
uDMA タブ
GPIO タブ
PLIC タブ
SPI タブ
Timer タブ
UART タブ
MIV_ESS を SmartDesign にインスタンスした。
2024年10月01日 04:48 |
Libero SoC
| トラックバック:0
| コメント:0