dragonfury
Member level 4

This is a code for a comparator
"
module comparator(sigin, sigref, sigout);
input sigin, sigref;
output sigout;
electrical sigin, sigref, sigout;
parameter real sigout_high = 2.5;
parameter real sigout_low = 0;
parameter real sigin_offset = 0;
parameter real comp_slope =1;
analog begin
@ ( initial_step ) begin
if (sigout_high <= sigout_low) begin
$display("Range specification error. sigout_high = (%E) less than sigout_low = (%E).\n", sigout_high, sigout_low );
$finish;
end
end
V(sigout) <+ 0.5 * (sigout_high - sigout_low)
* tanh(comp_slope*(V(sigin, sigref)- sigin_offset))
+ (sigout_high + sigout_low)/2;
"
I need to understand the following part of the code.
V(sigout) <+ 0.5 * (sigout_high - sigout_low)
* tanh(comp_slope*(V(sigin, sigref)- sigin_offset))
+ (sigout_high + sigout_low)/2;
Just want to know what it is this part doing exactly
Regards
"
module comparator(sigin, sigref, sigout);
input sigin, sigref;
output sigout;
electrical sigin, sigref, sigout;
parameter real sigout_high = 2.5;
parameter real sigout_low = 0;
parameter real sigin_offset = 0;
parameter real comp_slope =1;
analog begin
@ ( initial_step ) begin
if (sigout_high <= sigout_low) begin
$display("Range specification error. sigout_high = (%E) less than sigout_low = (%E).\n", sigout_high, sigout_low );
$finish;
end
end
V(sigout) <+ 0.5 * (sigout_high - sigout_low)
* tanh(comp_slope*(V(sigin, sigref)- sigin_offset))
+ (sigout_high + sigout_low)/2;
"
I need to understand the following part of the code.
V(sigout) <+ 0.5 * (sigout_high - sigout_low)
* tanh(comp_slope*(V(sigin, sigref)- sigin_offset))
+ (sigout_high + sigout_low)/2;
Just want to know what it is this part doing exactly
Regards