思路是先确定heater和aircon的结果,再产生受两者影响的fan的结果。
module top_module (
input too_cold,
input too_hot,
input mode,
input fan_on,
output heater,
output aircon,
output fan
);
assign heater = (too_cold ==1&mode==1)?1:0;
assign aircon = (too_hot ==1&mode==0)?1:0;
assign fan = (fan_on==1|((mode==1&heater==1)|(mode==0&aircon==1)))?1:0;
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