Verilog-A компаратор

Продолжаю обновлять коллекцию блоков на Verilog-A.

Сейчас мне понадобился компаратор

Что нам нужно от компаратора обычно?

  • Уровень лог единицы
  • Скорость спада/нарастания (Slew Rate)
  • Гистерезис

Погнали:


// VerilogA for TBSarge, Comparator, veriloga

<code>include &quot;constants.vams&quot;
</code>include &quot;disciplines.vams&quot;

module Comparator(InP, InN, Out, gnd);
input InP, InN;
output Out;
inout gnd;

electrical InP, InN, gnd;
electrical Out;

parameter real Vdd = 3.3;
parameter real Hist = 0.05;
parameter real Front = 1;

integer comptrig;

analog begin

@(cross(V(InP)-V(InN), +1))
 comptrig = 1;

@(cross(V(InP)-V(InN)-Hist, -1))
 comptrig = 0;

V(Out,gnd) &lt;+ transition(comptrig ? Vdd:0, 0, Front);

end

endmodule

Со Slew Rate я решил не парится, а просто задавать время нарастания спада, для примера, пусть у нас Vdd = 3.3 В, фронт 600 нс, гистерезис 500 мВ

И в обратную сторону:

Гистерезис присутствует! :)

Вводим в привычку, блок можно слить в репе.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">