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

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

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

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

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

Погнали:


// VerilogA for TBSarge, Comparator, veriloga

`include "constants.vams"
`include "disciplines.vams"

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) <+ transition(comptrig ? Vdd:0, 0, Front);

end

endmodule

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

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

Гистерезис присутствует! 🙂

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

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.