HDLBits (57) — 恒温器
2022-02-28 17:58 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Thermostat
加热/冷却恒温器控制加热器(冬季)和空调(夏季)。执行一个电路,根据需要打开和关闭加热器、空调和鼓风机风扇。
恒温器可以分为两种模式: 加热(mode = 1)和冷却(mode = 0)。在加热模式下,当加热器太冷(too_cold = 1)时打开加热器,但不要使用空调。在冷却模式下,当空调太热(too_hot = 1)时打开空调,但不要打开加热器。当加热器或空调打开时,也打开风扇使空气循环。此外,即使加热器和空调关闭,用户也可以要求风扇打开(fan_on = 1)。
尝试仅使用assign语句,以查看是否可以将问题描述转换为逻辑门集合。
预期解决方案长度:大约3行。

题目
提示:
在设计电路时,人们常常不得不考虑“向后”的问题,从输出开始,然后向后工作到输入。参见ringer。

答案

输出波形
冬天

夏天


按位操作符包括:取反(~),与(&),或(|),异或(^),同或(~^)。
按位操作符对 2 个操作数的每 1bit 数据进行按位操作。
如果 2 个操作数位宽不相等,则用 0 向左扩展补充较短的操作数。
取反操作符只有一个操作数,它对操作数的每 1bit 数据进行取反操作。
下图给出了按位操作符的逻辑规则。

条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。
条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。
条件语句使用结构说明如下:
参考内容:
2.4 Verilog 表达式 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-expression.html