I AM A NEWBIE IN VERILOG AND JUST DONT KNOW WHAT IS WRONG WITH MY CODE. THIS IS THE CRAZY SIMPLE QUESTION : Develop a Verilog model for a thermostat that has two 8-bit unsigned binary inputs representing the target temperature and the actual temperature in degrees Fahrenheit (˚F). Assume that both temperatures are above freezing (32˚F). The detector has two outputs: one to turn a heater on when the actual temperature is more than 5˚F below target, and one to turn a cooler onwhen the actual temperature is more than 5˚F above target. AND THIS IS MY CODE: module*C2*(switch,clk,heater_on,cooler_on,enable_a ctual,enable_target); input clk; input enable_actual,enable_target; input*[7:0]*switch*; reg [7:0]*actual,target; output* heater_on,*cooler_on; always @(posedge clk) begin if (enable_actual) actual <= switch; else if (enable_target) target <= switch; end assign*heater_on*=*actual*<*target*-*5; assign*cooler_on*=*actual*>*target*+*5; endmodule IT DIDN'T SHOW ANY ERROR DURING COMPILATION.THE PROBLEM IS THAT THE OUTPUT WHICH HEATER_ON AND COOLER_ON DIDN'T ON CORRECTLY.WHAT IS WRONG WITH MY CODE??CAN SOMEBODY PLS HELP ME. PICTURE2 IS THE SIMULATION WHEN I WANT THE HEATER_ON ONLY TO BE ON PICTURE4 IS THE SIMULATION WHEN I WANT THE COOLER_ON ONLY TO BE ON BUT THE SIMULATION WAS NOT WHAT I EXPECTED FOR:HELP PLS
I took the liberty to format your code a little:
1 | module C2 (switch, clk, heater_on, cooler_on, enable_actual, enable_target); |
2 | input clk; |
3 | input enable_actual, |
4 | input enable_target; |
5 | input [7:0] switch; |
6 | reg [7:0] actual; |
7 | reg [7:0] target; |
8 | output heater_on; |
9 | output cooler_on; |
10 | |
11 | always @(posedge clk) |
12 | begin |
13 | if (enable_actual) |
14 | actual <= switch; |
15 | else |
16 | if (enable_target) |
17 | target <= switch; |
18 | end |
19 | |
20 | assign heater_on = actual < (target-5); |
21 | assign cooler_on = actual > (target+5); |
22 | endmodule |
please add the signals "actual" and "target" to your simulation. it also would be nice to see the 8 bit registers as decimals instead of characters. as long as "actual" and "target" are not set to something else than "0", don't wonder "heater_on = actual < (target-5);" is true, as (0-5) = (256-5) = 251 so I would set target first.
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.