Quarts の Verilog ステート マシン ハードウェア記述言語プログラミングを 3 分で素早く完了

        数学、エレクトロニクス、Verilog を学ぶ学生にとって、ステート マシンの学習は大きな困難です。ステート マシン学習には一連の固定テンプレートがあり、このブログではステート マシン プログラミングをすぐに始める方法を簡単に説明します。(内容はすべてQuartsに依存しています。互換性のない部分があれば適宜修正しますが、考え方は変わりません。)

1. 状態図を描きます。

        ステート マシン プログラミングの利点は、トピックの要件を完了するために必要なのは状態図のみであることです。したがって、最初のステップは間違いなくプログラムの状態図を描くことです。

        回路図による状態図の作成は、1. 出力の種類の判断、2. 励磁方程式、状態遷移方程式、出力方程式の作成、3. 状態テーブルの作成、4. 状態図の作成の 4 つのステップに分かれています。上記のコンテンツには、デジタル チュートリアル、csdn、インターネットに明確で詳細なチュートリアルが含まれています。このブログでは一つ一つ繰り返しません。

        状態図ではなく、特定のケースの場合は、コードを迅速に置き換えてステート マシン プログラミングを実現するという目的を達成するために、クラス状態図を描画することもできます。これは、状態図の重要性を示しています。

        状態図の内容はおおよそ次のとおりです。

 (この図は、以下のコードと特別な関係はありません)。

2. コードテンプレートを適用します。

module Temp1(clk,A,Z);
input clk,A;	//时钟和输入
output reg Z;	//输出
parameter S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;	//四个状态
//状态机第一段///(用于根据输入进入下一个状态)
reg [1:0] current_state, next_state;	//根据需要可更改位数
always@(posedge clk)	//时钟上升沿行动
begin
	current_state <= next_state;	//进入下一个状态
end
/状态机第二段///(用于根据输入和目前状态获得输出和下一个状态)
always@(current_state,A)
begin
	case(current_state)	//case语句进行寻找现状态的具体值
		S0:
		begin
			Z<=0;			//穆尔型不受输入影响,放在if外
			if(A==1)
			begin			//如果为米利型则把Z放在if内,根据状态图赋值
				next_state<=S1;	//根据状态图可修改
			end
			else
			begin
				next_state<=S0;	//根据状态图可修改
			end
		end
		
		S1:						//以下内容修改方式同上
		begin
			Z<=1;
			if(A==1)
			begin
				next_state<=S3;
			end
			else
			begin
				next_state<=S0;
			end
		end
		
		S2:
		begin
			Z<=0;
			if(A==1)
			begin
				next_state<=S3;
			end
			else
			begin
				next_state<=S0;			
			end
		end
		
		S3:
		begin
			Z<=0;
			if(A==1)
			begin
				next_state<=S2;
			end
			else
			begin
				next_state<=S0;
			end
		end
		endcase
end
endmodule

         コードの説明はコメントに記載されているので、ここでは繰り返しません。

       簡単な修正を考慮して、このコード モジュールはリセットを使用しません。リセットを使用する必要がある場合は、インターネットおよび csdn 上の他のブロガーのコンテンツを参照できます。ただ練習してください。

        状態図によれば、コードの内容の一部を直接置き換えることができます。

3. ステートマシンで確認します。

        Quarts のツール バーをクリックし、ネットリスト ビューアーを選択し、下部にあるステート マシン ビューアーを選択してステート マシン バーを開きます。

 大まかな内容は上記の通りですが、ステートマシンを通じて内容が間違っているかどうかを確認することができます。

4. まとめ。

        ステート マシンのハードウェア記述言語プログラミングには、シンプルな汎用テンプレートのセットがあり、学習後は非常に簡単に始めることができます。

        オープンソースの精神を新入生から引き継いでください〜

おすすめ

転載: blog.csdn.net/ChiShangying/article/details/130814603