题目描述:夏天 -> mode0 -> 只要too_hot=1 -> aircon=1 -> fan =1 <-fan_on=1
冬天 -> mode1 -> 只要too_cool=1 -> heater=1 -> fan =1 <-fan_on=1
warning:考虑所有输入(四个输入), 十六个状态考虑完全
module top_module (
input too_cold,
input too_hot,
input mode,
input fan_on,
output heater,
output aircon,
output fan
);
assign aircon = ~mode&~too_cold&too_hot&~fan_on|~mode&~too_cold&too_hot&fan_on|
~mode&too_cold&too_hot&~fan_on|~mode&too_cold&too_hot&fan_on;
assign heater = mode&too_cold&~too_hot&~fan_on| mode&too_cold&~too_hot&fan_on|
mode&too_cold&too_hot&~fan_on| mode&too_cold&too_hot&fan_on;
assign fan =mode&too_cold&~too_hot&~fan_on|mode&too_cold&~too_hot&fan_on|
mode&too_cold&too_hot&fan_on| mode&~too_cold&too_hot&fan_on|
mode&~too_cold&~too_hot&fan_on| ~mode&~too_cold&too_hot&~fan_on|
~mode&~too_cold&too_hot&fan_on| ~mode&~too_cold&~too_hot&fan_on|
~mode&too_cold&~too_hot&fan_on|~mode&too_cold&too_hot&fan_on|
mode&too_cold&too_hot&~fan_on| ~mode&too_cold&too_hot&~fan_on;
endmodule
简单点:
module top_module(
input too_cold,
input too_hot,
input mode,
input fan_on,
output heater,
output aircon,
output fan
);
// Reminder: The order in which you write assign statements doesn't matter.
// assign statements describe circuits, so you get the same circuit in the end
// regardless of which portion you describe first.
// Fan should be on when either heater or aircon is on, and also when requested to do so (fan_on = 1).
assign fan = heater | aircon | fan_on;
// Heater is on when it's too cold and mode is "heating".
assign heater = (mode & too_cold);
// Aircon is on when it's too hot and mode is not "heating".
assign aircon = (~mode & too_hot);
// * Unlike real thermostats, there is no "off" mode here.
endmodule