[Xiaoyue Electronics] Anlu国産FPGA開発ボードシステム学習チュートリアル-LESSON5デジタルチューブダイナミックスキャンディスプレイ

デジタル管ダイナミックスキャン表示ルーチンの説明

このブログに付属するビデオ チュートリアルを表示するには、このリンクをクリックしてください

ここに画像の説明を挿入します
長年の実務経験に基づいて、FPGA の設計プロセスは上記の 12 ステップにまとめられていますが、プロジェクトの難易度に応じて一部のステップを省略することもできます。たとえば、非常に単純なプロジェクトの場合は、点線のボックス内のステップを省略できますが、入門コースでは、どんなに単純であっても、この 12 のステップに従って説明します。

1. 要件の解釈

1.1 要件

6桁デジタル管で123456を安定表示

1.2 知識の背景

デジタル管は、複数の LED 発光ダイオードで構成される「8」の字型のデバイスです。極性の違いに応じて、コモン アノードとコモン カソードに分かれています。当社の開発ボードはコモン アノード デジタル チューブを使用しています。デジタル管の内部構造は次のとおりです。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

図からわかるように、コモンアノードとコモンカソードの違い。共通アノードの共通端子は電源の正端子に接続され、共通カソードの共通端子はグランドに接続される。共通陽極デジタル管を選択する場合、対応する abcdefgdq をローレベルに設定して、対応するデジタル管を点灯するだけです。逆に、共通陰極は、対応するデジタル管を点灯させるために、abcdefgdq を電源の正極に接続する必要があります。デジタル管の概略図は次のとおりです。
ここに画像の説明を挿入します


今回選んだ開発ボードはアノードコモンデジタル管を使用しているので、2を表示したい場合はA、B、G、E、DのLEDを点灯させなければなりません。5を表示したい場合、どのセグメントを点灯させるべきかを自分で解析することで、一般的な陽デジタル管の0から9までのコードを取得できます。皆さんの時間を節約するために、以下に示すように、直接呼び出すことができる一般的なヤン デジタル チューブに対応するコードを整理しました。一般的な陰極デジタル管のコーディングには、ビット単位の反転のみが必要です。
開発ボードの共通ヤンデジタルチューブセグメント選択コーディングテーブルは次のとおりです。
ここに画像の説明を挿入します

1.3 ハードウェア設計

ここに画像の説明を挿入します
ここに画像の説明を挿入します

開発ボードはPNPトランジスタを使用しており、トランジスタのベースにローレベルを入力すると、トランジスタのコレクタとエミッタが接続され、デジタル管のビット選択ピンに3.3Vの電圧が印加されます。最初のデジタル管を点灯するには、SMG_W0 にローレベルを入力し、デジタル管コーディングテーブルに従ってデジタル管のセグメント選択に値を割り当てる必要があります。原則をマスターしたので、コードを書き始めることができます

1.4 インターフェースの説明

信号名 方向 FPGAのピン番号 説明する
SMG_W0 出力 E12 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_W1 出力 B15 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_W2 出力 E15 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_W3 出力 H11 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_W4 出力 K16 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_W5 出力 K14 ビット選択制御信号、低レベルはトランジスタをオンにしてデジタル管のビット選択に電力を供給します
SMG_A 出力 F13 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_B 出力 B16 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_C 出力 J16 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_D 出力 J13 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_E 出力 G14 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_F 出力 E13 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_G 出力 G12 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯
SMG_DP 出力 J14 デジタル管セグメント選択制御信号、ローレベルでセグメントが点灯

要約: 上記の説明により、要件は次のように解釈できます: 最初のデジタル チューブが点灯しているとき、ビット選択は 6'h1f であり、デジタル チューブ セグメントに対して選択されたコードは 8'h9f であり、2 番目のデジタル チューブが点灯しているときは、点灯、 、ビット選択は 6'h2f、デジタル チューブ セグメント用に選択されたコードは 8'h25、3 番目のデジタル チューブが点灯すると、ビット選択は 6'h37、デジタル チューブ セグメント用に選択されたコードは 8'h0d; 4 番目のデジタル チューブが点灯しているとき、5 番目のデジタル チューブが点灯しているとき、ビット選択は 6'h3b で、デジタル チューブ セグメントに選択されたコードは 8'h99 です。5 番目のデジタル チューブが点灯しているとき、ビット選択は 6'h3d、デジタル チューブ セグメント用に選択されたコードは 8'h49、6 番目のデジタル チューブが点灯している場合、ビット選択は 6'h3e、デジタル チューブ セグメント用に選択されたコードは 8 です。 'h41;

2. 理論上の波形図を描く

ここに画像の説明を挿入します

ここに画像の説明を挿入します

3. 新しいTDプロジェクト

プロジェクトをきれいに見せ、プロジェクトの移植を容易にするため。Project、Source、Sim、Doc という 4 つの新しいフォルダーを作成します。
Project — TD プロジェクトが含まれるプロジェクト フォルダー
Source — プロジェクトのソース コード (.v ファイルまたは .vhd ファイル) が含まれるソース コード フォルダー
Sim — シミュレーション関連ファイルが含まれるシミュレーション フォルダー
Doc — 関連するファイルが保存されますデータマニュアル、要件文書などの情報

4. コードを書く

///
//QQ:3181961725
//TEL/WX:13540738439
//工程师:Mr Wang
//模块介绍:数据管动态扫描,显示123456
module smg_drv(
	input	clk					,
	input	rst_n				,
	output	reg	[5:0]	smg_bit	,
	output	reg	[7:0]	smg_seg
	);
	parameter	refresh_time=50000;
	reg	[3:0]	cnt;
	reg	[19:0]	refresh_cnt;
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)
			refresh_cnt<=0;
		else if(refresh_cnt==refresh_time-1)
			refresh_cnt<=0;
		else
			refresh_cnt<=refresh_cnt+1;
	end
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)
			cnt<=4'hf;
		else if(refresh_cnt==0)begin
			if(cnt==5)
				cnt<=0;
			else
				cnt<=cnt+1;
		end else;
	end
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			smg_bit<=0;
			smg_seg<=0;
		end else case(cnt)
			0:begin smg_bit<=8'h3e; smg_seg<=8'h9f;end 
			1:begin smg_bit<=8'h3d; smg_seg<=8'h25;end 
			2:begin smg_bit<=8'h3b; smg_seg<=8'h0d;end 
			3:begin smg_bit<=8'h37; smg_seg<=8'h99;end 
			4:begin smg_bit<=8'h2f; smg_seg<=8'h49;end 
			5:begin smg_bit<=8'h1f; smg_seg<=8'h41;end 
			default:;
		endcase
	end 
endmodule

5. シミュレーション テスト スティミュラス ファイルの書き込み

`timescale 1ns/1ns
module smg_drv_tb;
	reg					clk		;
	reg					rst_n	;
initial
begin
	clk = 0;
	rst_n=0;
	#1000
	rst_n=1;
end
always #10 clk=~clk;
smg_drv Usmg_drv(
	.clk		(clk),
	.rst_n		(rst_n),
	.smg_bit	(),
	.smg_seg    ()
	);
endmodule

6.Modelsimシミュレーション

Modelsim シミュレーションには通常 2 つの方法があります。

  1. グラフィカル インターフェイス シミュレーションとは、すべての操作が Modelsim ソフトウェア インターフェイス上で完了することを意味します。この方法の利点は、習得が容易で単純なプロジェクトに適していることです。欠点は、操作手順が煩雑であることです。

  2. バッチ シミュレーションでは、シミュレーション前に対応するスクリプト ファイルを作成する必要があります。この方法の利点は、シミュレーションが 1 クリックで完了し、時間と労力を節約できることです。欠点は、初期段階でスクリプト ファイルを作成する必要があることです。最初の 2 つの講義ではグラフィカル インターフェイス シミュレーションを使用しましたが、エンジニアリングの現実に近づけるために、この講義からはバッチ処理シミュレーションを使用します。具体的な操作手順については、ビデオチュートリアルを参照してください。
    シミュレートされた波形は次のとおりです。
    ここに画像の説明を挿入します

7. 波形を比較する

2 番目のステップで作成した理論上の波形図と、6 番目のステップで Modelsim でシミュレーションした波形図を比較すると、結果は一致しており、論理設計が正しいことがわかります。比較結果が矛盾していることが判明した場合は、その矛盾の理由を見つけて、最終的には比較結果が一貫していることを確認する必要があります。比較すると、理論上の波形はシミュレートされた波形と一致しており、機能が設計要件を満たしていることを示しています。

8.vファイルを追加します

ここに画像の説明を挿入します

9 ピンをバインドし、制約ファイル (.adc) を保存します。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

10 BIT ファイルをコンパイルおよび合成する

ここに画像の説明を挿入します

11.BITファイルをダウンロードする

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ダウンロードが成功すると、開発ボード上の実験現象を観察できます。実験現象が設計要件と一致する場合、設計に問題がないことを意味し、構成ファイルを確定する次のステップに進むことができます。 。

12 固化設定ファイル

FPGAは停電するとコンフィグレーション情報が失われる特性があるため、コンフィグレーションチップ(FLASH)にコンフィグレーション情報を保存する必要があり、開発ボードの電源投入後、FPGAはコンフィグレーションチップ内のコンフィグレーション情報を読み取ります。 、そのため、開発 電源をオフにして再度オンにしても、ボードは引き続き正常に動作します。
ここに画像の説明を挿入します

硬化が成功したら、開発ボードの電源をオフにして、再度電源をオンにすると、開発ボードが今までの機能を引き続き実行できることがわかります。

おすすめ

転載: blog.csdn.net/Moon_3181961725/article/details/126818715