2017-10-02 5 views
-1

基本的にVerilogの新機能であり、構文がどのように機能し、このようなことがわかりません。アルテラ・ボードを使用したVerilogインクリメント・デクリメント・カウンタ

下に4ビットカウンタをインクリメントまたはデクリメントするアルテラボード上の押しボタンスイッチを使用しよう

割り当てがあります。オンボードLEDを使用してカウンタの値を表示する必要があります。スイッチを使用してカウンタの方向を制御し、プッシュボタンを押してカウンタ値を変更します。

これは私が今までに得たことですが、私はそれが正しいかどうか分かりません。ボードに入力と出力を割り当てる方法を知っていますが、コンパイルするコードを取得できません。私は次のことを続けます:

エラー(10043):Lab2pt2.v(11)でVerilog HDLサポートされていない機能エラーが発生しました:登録への手順の継続的な割り当てはサポートされていません。以下は

コードです:

module counter(A,B,F); 
input A,B; 
output reg [3:0] F; 

always @(A or B) 

begin 
if (A == 1 & B==1) 

assign F = F+1; 

else(A == 0 & B==1) 

assign F = F-1; 

end 
endmodule 
+1

[Verilogプロシージャで連続割り当てを使用する]の可能な複製(https://stackoverflow.com/questions/23687172/using-a-continous-assignment-in-a-verilog-procedure) – Qiu

答えて

0

あなたは今日、手続き割り当て(むしろあいまいな言語機能)を使用しようとする第二の人です!

クイックアンサーは、あなたの割り当て内に「割り当て」をドロップするだけです。物事はもっと幸せになります。この構造はシミュレータでは機能しますが、物理的なハードウェアでは珍しいロジックを暗示します。これは実際にテストベンチのために意味されます(その場合)。

ここには何か問題があります。 if/else式の条件の前に 'if'がありません。

より一般的には、Verilogをハードウェアの記述として考える必要があります。増分/減分ステートメントは、RHSでFを使用します。 Fは何の前ですか?この文脈で「前」とは何を意味するのでしょうか? Fの最初の値は何でしたか? 回路はある状態から次の状態に移行するタイミングをどのように知っていますか?あなたがこれらの質問に答えることができれば、あなたは解決策へと向かいます。

関連する問題