verilog中的单向开关

verilog中的单向开关,verilog,Verilog,我需要保留一个值,这样一旦它切换到1,它就不会切换回零 我正在尝试为FPGA板制作一个刽子手游戏。为此,我有一个常量onesLetter,它是要显示的正确字母。用户必须猜测字母。一旦正确猜测了onesLetter,我想显示它,并在其他猜测过程中继续显示它(而不是恢复到默认显示) 以下是我的想法: // onesLetter is a constant we are checking against // tempBooleanOnes represents if letter is curren

我需要保留一个值,这样一旦它切换到1,它就不会切换回零

我正在尝试为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
(当已经1或已经猜测时不要覆盖),输出为
booleanOnes
,但这也会引发错误

这是我用来代替
assign
语句的寄存器模块的代码

register regOnes(booleanOnes, tempBooleanOnes, clk, ~booleanOnes, 1'b0);
你不应该这样做:

assign booleanOnes = (booleanOnes) || (tempBooleanOnes);
因为您在同一条导线上进行分配

此代码将
booleanOnes
设置为1,并且永远不会重置

reg booleanOnes = 0; 
always @* begin
   if(boolean && (onesLetter == tempSeg)) begin
       booleanOnes = 1;
   end
end

使用寄存器时会出现什么错误(哪一个是正确的想法)?你能用
tempBoleansOnes
和其他工具以及
register
模块的实现来发布完整的模块吗?这样我们就可以更好地找出你的错误了?用这个表达式你可以创建一个反馈环,即缓冲区,输出连接到它自己的输入。因此,它没有硬件意义。您需要创建一个模型,该模型使用一个执行您所需操作的状态机。这也意味着使用时钟和触发器。