求教一个理想adc veriloga模型问题
时间:10-02
整理:3721RD
点击:
仿真有很多数字控制位,需要用理想adc控制方便仿真有个adc veriloga模型, 是需要clock的
module adc (out, in, clk);
parameter integer bits = 8 from [1:24];
// resolution (bits)
parameter real vmin = 0.0;
// minimum input voltage (V)
parameter real vmax = 1.0 from (vmin:inf);
// maximum input voltage (V)
parameter real td = 0 from [0:inf);
// delay from clock edge to output (s)
parameter real tt = 0 from [0:inf);
// transition time of output (s)
parameter real vdd = 5;
// voltage level of logic 1 (V)
parameter real vss = 0;
// voltage level of logic 0 (V)
parameter real thresh = (vdd+vss)/2;
// logic threshold level (V)
parameter integer dir = +1 from [-1:1] exclude 0;
// 1 for trigger on rising edge
// -1 for falling
localparam integer levels = 1<<bits;
input in, clk;
output [bits-1:0] out;
voltage in, clk;
voltage [bits-1:0] out;
integer result;
genvar i;
analog begin
@(cross(V(clk)-thresh, dir) or initial_step) begin
result = levels*((V(in) - vmin))/(vmax - vmin);
if (result > levels-1)
result = levels-1;
else if (result < 0)
result = 0;
else
end
for (i=0; i<bits; i=i+1)
V(out) <+ transition(result & (1<<i) ? vdd : vss, td, tt);
end
endmodule
触发条件是 clk上升沿,这样电路里需要给adc一个clock,影响仿真速度。
还有问题就是,在dc仿真的时候因为也没有clock,输出不正确
对veriloga语法了解少,有没有dc下就工作的模型,或者不需要clock,输出根据输入电压实时变化
module adc (out, in, clk);
parameter integer bits = 8 from [1:24];
// resolution (bits)
parameter real vmin = 0.0;
// minimum input voltage (V)
parameter real vmax = 1.0 from (vmin:inf);
// maximum input voltage (V)
parameter real td = 0 from [0:inf);
// delay from clock edge to output (s)
parameter real tt = 0 from [0:inf);
// transition time of output (s)
parameter real vdd = 5;
// voltage level of logic 1 (V)
parameter real vss = 0;
// voltage level of logic 0 (V)
parameter real thresh = (vdd+vss)/2;
// logic threshold level (V)
parameter integer dir = +1 from [-1:1] exclude 0;
// 1 for trigger on rising edge
// -1 for falling
localparam integer levels = 1<<bits;
input in, clk;
output [bits-1:0] out;
voltage in, clk;
voltage [bits-1:0] out;
integer result;
genvar i;
analog begin
@(cross(V(clk)-thresh, dir) or initial_step) begin
result = levels*((V(in) - vmin))/(vmax - vmin);
if (result > levels-1)
result = levels-1;
else if (result < 0)
result = 0;
else
end
for (i=0; i<bits; i=i+1)
V(out) <+ transition(result & (1<<i) ? vdd : vss, td, tt);
end
endmodule
触发条件是 clk上升沿,这样电路里需要给adc一个clock,影响仿真速度。
还有问题就是,在dc仿真的时候因为也没有clock,输出不正确
对veriloga语法了解少,有没有dc下就工作的模型,或者不需要clock,输出根据输入电压实时变化
简单说,需要一个随输入实时变化的adc,不需要clock,DC仿真的时候也能工作
再顶一次,希望高手帮忙
同样的问题,怎样用veriloga的语句表示时钟上升沿啊,就像verilog中的always@(posedge clk),好像veriloga中没有posedge 这么一个词,报有语法错误!
用cross语句可以实现边沿检测。
请问找到解决办法了吗?我现在也遇到这个问题
找到解决办法了吗?遇到同样问题