HDLBits刷题(3_1_1_14)Thermostat

题目:


加热/冷却恒温器控制加热器(冬季)和空调(夏季)。实施一个电路,根据情况打开和关闭加热器、空调和鼓风机。

恒温器可以处于两种模式之一:加热(模式 = 1)和冷却(模式 = 0)。

在制热模式下,当天气太冷(too_cold = 1)时打开加热器,但不要使用空调。

制冷模式下,太热(too_hot = 1)时打开空调,但不要打开暖气。

当暖气或空调打开时,还要打开风扇使空气流通。

此外,即使加热器和空调关闭,用户也可以请求打开风扇(fan_on = 1)。

尝试仅使用赋值语句,看看是否可以将问题描述转换为逻辑门的集合。


思路:

就是根据不同的输入情况去决定输出,风扇的开关可以看作是二级输出,根据输入fan_on以及一级输出heater和aircon的情况共同决定。同样考虑硬件和软件思路。

1.软件思路:使用case,括号内的控制表达式就将所有输入串联起来,但是根据题目描述,例如在加热模式下,too_hot的取值和后面的输出没有任何关系,所以可以考虑使用casez无视无关项。其中不管是空调打开还是加热器启动了都会开启风扇,所以先写这两项,然后剩余的情况,只要fan_on打开了,风扇也打开。

2.硬件思路:写逻辑门时就只要将相关项写进去就行,空调(aircon)打开只与模式(mode)和太热(too_hot)相关,就只写这两项。加热器同理。风扇的打开和一级输出相关,还和输入有关,只要把所有情况想清楚,相或起来就行。


解答:

1软件思路 2.硬件思路: 

3参考解答


总结:

硬件写法和答案不同的地方在于fan的情况,我考虑的再进一步,因为空调加热器只要打开,fan—_on是0或1,fan都得打开。空调加热器都是0时,fan和fan_on取值相关,所以应该是三项直接相或,我的写法多余了,不是最简的写法。其实化简逻辑表达式也是可以得到标准答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值