EmbDev.net

Forum: FPGA, VHDL & Verilog what is wrong with my code?


Author: aji sydin (aji)
Posted on:
Attached files:

Rate this post
0 useful
not useful
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

Author: bla (Guest)
Posted on:

Rate this post
0 useful
not useful
I took the liberty to format your code a little:
module C2 (switch, clk, heater_on, cooler_on, enable_actual, enable_target);
    input  clk;
    input  enable_actual,
    input  enable_target;
    input  [7:0] switch;
    reg    [7:0] actual;
    reg    [7:0] target;
    output heater_on;
    output 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

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.

Reply

Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [vhdl]VHDL code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]




Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.