2017-12-02 1 views
1

値を保持して一度切り替えるとゼロに戻らないようにする必要があります。Verilogの片方向スイッチ

私はFPGAボード用のハングマンゲームを作ろうとしています。これを行うには、表示する正しい文字である定数onesLetterがあります。ユーザーは手紙を推測する必要があります。 onesLetterが正しく推測されたら、それを表示して他の推測の間に表示し続けたい(デフォルトの表示に戻さない)。私が実装する必要がある表現である

// onesLetter is a constant we are checking against 
// tempBooleanOnes represents if letter is currently being guessed 
// tempSeg is input to check against onesLetter 
// boolean is an input bit 
wire tempBooleanOnes = (boolean && (onesLetter == tempSeg)); 

// Represent whether letter has been guessed or not 
wire booleanOnes; 

// Whether letter has been guessed or is being guessed 
assign booleanOnes = (booleanOnes) || (tempBooleanOnes); 

:私が出ているものをここで

です。しかし、割り当てられたワイヤと式の両方にbooleanOnesを使用できないというエラーが表示されます。私は実現したregister (output, input, clock, enable, reset)モジュールを使用しようとしましたが、~booleanOnes(すでに1のとき、または既に推測されている場合は上書きしないでください)と出力はbooleanOnesですが、エラーも発生します。

これは、assignステートメントの代わりに試したレジスタモジュールのコードです。

register regOnes(booleanOnes, tempBooleanOnes, clk, ~booleanOnes, 1'b0); 
+0

登録時にエラーが表示されます(これは正しい考えです)。 'tempBoleansOnes'やその他のモジュール、' register'モジュールの実装を投稿することができますので、エラーをより正確に突き止めることができますか? – Unn

+1

この式では、フィードバックループbufferを作成しています。この出力は、独自の入力に接続されています。したがって、ハードウェアには意味がありません。必要なものを実行するステートマシンを使用するモデルを作成する必要があります。これは、クロックとフロップを使用することも意味します。 – Serge

答えて

1

あなたはこれを行うべきではありません:あなたは同じ線にしてから代入しているので

assign booleanOnes = (booleanOnes) || (tempBooleanOnes); 

を。

このコードではbooleanOnesが1に設定され、リセットされません。

reg booleanOnes = 0; 
always @* begin 
    if(boolean && (onesLetter == tempSeg)) begin 
     booleanOnes = 1; 
    end 
end 
関連する問題