最初のPSプログラムであるVIVADO + ZYNQ7000の作成から運用までの概要

空のプロジェクトを作成するには、前のブログ投稿VIVADO + ZYNQ7000を参照してください
。はじめに1.作成から運用までの最初のPLプログラム

ZYNQシリーズの製品では、Vivadoの開発環境ではPSシステムをIPコアと呼んでいます。次に、シンプルな機能のPSシステムを用意し、このシステムでシリアルポート印刷プログラムを実行してhelloworldを出力します。ストリング。
主な3つの側面があります。1つはARMコアIPコアを定義して単純なインターフェイスを構成すること、もう1つはIPコアをカプセル化して最上位のヘッダーファイルを設定すること、3つ目はVivado統合SDKで単純なシリアルポートプログラムを設計することです。

1つは、IPを定義する

新しいプロジェクトウィンドウの左端で、次の図に示すように、ポップアップウィンドウで1をクリックし、位置2にIPの名前を入力してから、[OK]をクリックします。
ここに写真の説明を挿入
ポップアップする新しいウィンドウで、位置1のアイコンをクリックし、位置2に入力します。 zy検索では、ZYNQプロセッサシステムブロックをダブルクリックして表示できます。
ここに写真の説明を挿入
ちょっと待ってください、zynqモジュールアイコンが私たちの前に表示されます!
ここに写真の説明を挿入
それをダブルクリックします。目的は、いくつかのインターフェイス機能とパラメータをカスタマイズすることです。次のワークロードは少し大きくなります。これは、CPUの機能インターフェイスを構成するのと同じです。まず、クロック構成から始めて、下の図の赤い線をクリックします。
ここに写真の説明を挿入
設定する前に、まず、クロックの機能ブロック図が含まれているザイリンクスの公式ドキュメントUG585を参照できます。CPU内に3つのPLLがあり、外部クリスタルクロックを3つの異なるクロックソースに分割していることがわかります。同時に、ARMコアクロックは、6:3:2:1と4:2:の2つの周波数乗算構成を持つことができます。 2:1。
ここに写真の説明を挿入
基本的には当面はデフォルト設定を使用します。赤い線のボックスに注意してください。現在はシンプルなPSシステムのみを使用しており、クロック出力は不要です。チェックを外してください。
ここに写真の説明を挿入
次に、PL-PS構成を選択し、AXIバスインターフェイスを削除します。この記事は一時的には使用されません。
ここに写真の説明を挿入
次に、CPUから直接派生したMIO機能を設定します。この設定は、主に開発ボードのハードウェア回路図に従って設定します。
ここに写真の説明を挿入
引き続きDDRの構成を行い、ボードで使用されているメモリモデルを選択し、PCB配線遅延補正を構成します。
ここに写真の説明を挿入
各機能の設定が完了したら、自動配線をクリックします。
ここに写真の説明を挿入
次に、検証機能を選択して、設計に問題がないか確認します。
ここに写真の説明を挿入

2.パッケージIP

次の図の手順1、2、3を順番にクリックします。
ここに写真の説明を挿入
ポップアップウィンドウで、[自動]を選択します。
ここに写真の説明を挿入
デザインシステムのアイコンが変更され、名前が「design syswrapper」に変更されたことがわかります。下の図の赤い線を右クリックし、ポップアップウィンドウで[出力製品の生成]を選択します...
ここに写真の説明を挿入
新しいウィンドウが後でポップアップし、パラメータがデフォルトになります。生む。
ここに写真の説明を挿入
ここでエラーが表示されます。これは、ネットワーク信号レベルが正しく設定されていないことです。
ここに写真の説明を挿入
戻って1.8Vに変更します。変更後、[出力製品の生成]を再度選択することを忘れないでください...
ここに写真の説明を挿入
次のステップは、生成されたハードウェア構成をSDK開発環境に出力することです。
File–Export–Exprot Hardware ...
ここに写真の説明を挿入
作業パスがデフォルトです。
ここに写真の説明を挿入
次に、SDK開発環境を開きます。
ここに写真の説明を挿入
3、SDK開発
ここに写真の説明を挿入

2、シリアルポートSDKアプリケーション

次の操作はSDK環境で実行されます。
新しいプロジェクト/新しいCファイル。

ここに写真の説明を挿入
まず、システムに付属の検証プログラムを呼び出して、ハードウェアシステムが実行できるかどうかを確認できます。
ここに写真の説明を挿入
ここに写真の説明を挿入
回路基板の電源を入れ、JTAGに接続して、デバイスが見つかるかどうかをテストします。
ここに写真の説明を挿入
SDKにはシリアルポートレシーバープログラムが付属しています。もちろん、独立したシリアルポートソフトウェアを使用することもできます。私は独立したシリアルポートソフトウェアを使用しています。
ここに写真の説明を挿入
次の操作を実行して、プログラムを実行します。
ここに写真の説明を挿入
正常な場合、シリアルポートはいくつかのインターフェイスチェックプログラムを確認し、PASSEDを出力できます。
ここに写真の説明を挿入
次に、独自のシリアルポートテストプロジェクトを作成します。
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入


#include "xparameters.h"

#include "xuartps.h"


XUartPs Uart_Ps;

int main(void)
{
    
    
	u8 HelloWorld[] = "Hello World";
	int SentCount = 0;

	XUartPs_Config *Config;

	Config = XUartPs_LookupConfig(XPAR_XUARTPS_0_DEVICE_ID);
	XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress);
	XUartPs_SetBaudRate(&Uart_Ps, 115200);

	while (SentCount < (sizeof(HelloWorld) - 1)) {
    
    
			/* Transmit the data */
			SentCount += XUartPs_Send(&Uart_Ps,
						   &HelloWorld[SentCount], 1);
		}

	return SentCount;
}


ここに写真の説明を挿入
実行後、シリアル端末の最終行にハローワールドが印刷されているのがわかります。
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/malcolm_110/article/details/108319966