我需要保持一个值,这样一旦切换到1,它就不会切换回零。
我正在尝试为FPGA板制作一个Hangman游戏。为此,我有一个常量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)
,其中enable为~booleanOnes
(当已经为1时已被覆盖,或已经猜到),输出为booleanOnes
,但是这也会引发错误。
这是我试过的寄存器模块的代码,而不是assign
语句。
register regOnes(booleanOnes, tempBooleanOnes, clk, ~booleanOnes, 1'b0);
答案 0 :(得分:1)
你不应该这样做:
assign booleanOnes = (booleanOnes) || (tempBooleanOnes);
因为你要分配到同一条线路。
此代码将booleanOnes
设置为1,永远不会重置。
reg booleanOnes = 0;
always @* begin
if(boolean && (onesLetter == tempSeg)) begin
booleanOnes = 1;
end
end