HLS 学習 1: FPGA を使用したライトアップ

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 コアの数を指します。
ここに画像の説明を挿入
[ハードウェア マネージャーを開く] を選択してこのインターフェイスを開き、[ターゲットを開く] を選択し、[自動] を選択します。
ここに画像の説明を挿入

燃焼試験

書き込むデバイスをプログラムするを選択します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/u014798590/article/details/126178484