0 まえがき
このブログシリーズは主に学習過程の記録を目的としておりますので、間違い等ございましたらご指摘をお願いいたします。
チップ: xc7z020clg400-1;
開発ボード: Red Panda 7020 開発ボード;
開発環境: Vivado 18.3;
システム環境: Windows 11;
1、HLS
新築
名前は自由に選択できますが、パスは覚えておく必要があります
追加ファイル
HLS 言語で記述された cpp ファイルを追加します。追加が完了したら、ファイルを参照して、Top Function ファイル (ここでのファイル名はその後の IP 名に対応します) を抽出し、TestBench ファイル (前者のテストと呼び出しに使用されます) を追加します
。CPP ファイル)を追加する必要はありませんが、包括的にパッケージ化することもできます
チップを選択
コード
#include "stdio.h"
#include "ap_int.h"
#define CLK_FREQ 1
void hls_01_fpga_led_stream_ip(ap_int<4> &led)
{
#pragma HLS interface ap_none port=led
#pragma HLS interface ap_ctrl_none port=return
static int led_number=0;
static long cnt_reg=0;
if(cnt_reg<CLK_FREQ)cnt_reg++;
else
{
cnt_reg=0;
if(led_number<3)led_number++;
else led_number=0;
}
if(led_number==0)
{
led=0x1;
}
else if(led_number==1)
{
led=0x2;
}
else if(led_number==2)
{
led=0x4;
}
else if(led_number==3)
{
led=0x8;
}
}
合成
デフォルトでは、上部のメニュー バーにある合成ボタン (C Synthesis)を選択します。最初の
合成が完了した後、問題がなければ、自動的に合成レポートインターフェイスにジャンプし、ポートとリソースの使用状況を確認できます。
IP のパック (RTL のエクスポート)
エクスポートするには、メニュー バーのこのアイコンをクリックします。
表示されるダイアログ ボックスはデフォルトで
エクスポートできます。
テスト・シミュレーションを行う(Simulation)
この手順は必須ではありませんが、後のコードを実際に展開する場合に明らかな利点があり、この方法でコードをテストできます。
IP コードがファンクション ブロック/関数の場合、tb ファイルが IP を呼び出すメイン関数になります。
#include "stdio.h"
#include "ap_int.h"
extern void hls_01_fpga_led_stream_ip(ap_int<4> &led);
int main(void)
{
int i=0;
unsigned int tmp_print_data=0;
ap_int<4> led=7;
for(i=0;i<1000;i++)
{
hls_01_fpga_led_stream_ip(led);
tmp_print_data=led&0xf;
printf("i=%d,led=%d\r\n",i,tmp_print_data);
}
return 0;
}
次に、アイコンをクリックしてシミュレーションを実行します。
ログ ファイルまたはコンソール ウィンドウの出力情報を参照して、プログラムが正しく実行されているかどうかを確認します。
2、リビング
プロジェクトを作成する
次に、ここで独自のチップ xc7z020clg400-1 を選択します (これは間違っています。IP が正しくロードされなくなります。この選択はソフトウェアで 2 回変更できます)。
IPのインポート
左側の [設定] をクリックします (ここでチップ モデルを変更できます)
[IP] --> [リポジトリ] --> [追加] --> HLS プロジェクト パスを選択して [
OK] をクリックすると、追加が完了します (ここで、IP 名の前にアイコンが表示されていることに注意してください)黄色でなければなりません) OK、灰色の場合は、その後の作業はできませんので、チップが一致していないか確認してください。OK をクリックして
インターフェースを閉じます。
ブロックデザインの作成
右側のプラス記号をクリックして、
インポートしたばかりの IP を追加します
接続して設定する
実現したいのはシンプルなランニングライト機能であるため、必要なクロック信号とリセット信号は外部ピンから提供され、LED も回路図を参照して構成する必要があるため、ブロック設計で次のことを行う必要があります。すべてのポートを設定に入れます。
対応するピンを選択し、Ctrl+T のショートカット キーを使用してポートをすばやく生成します。
配線が完了したら、ブロックデザインをHDL Wrapperに変換し
て作成する必要があります。
ピンの割り当て
左側のメニューで [Open Elaborated Design] をクリックすると、表示されるダイアログ ボックスはデフォルトで OK です。
ページが表示されるので、
以下の図に従ってピンを設定し、Ctrl+S を押して名前を付けて保存します。
ビットファイルの生成
ここで 14 はコンピュータの CPU コアの数を指します。
[ハードウェア マネージャーを開く] を選択してこのインターフェイスを開き、[ターゲットを開く] を選択し、[自動] を選択します。
燃焼試験
書き込むデバイスをプログラムするを選択します。