There's a bouncing ball example at: http://www.eda.org/verilog-ams/models/ball.va Is this the one you mean, Peter? (It needs $ in front of discontinuity, and perhaps some clean-up of the disciplines.) What's not clear to me is this line: Vel(v) <+ idt(af,-Vel(v),mode); where mode==1 when the position goes below zero, as detected by the cross function. When mode==1 (the assert is true), then it seems the contribution becomes Vel(v) <+ -Vel(v); and the only solution is Vel(v) == 0, instead of reversing the velocity. To reverse the velocity, I think you need to have the RHS mean the value of Vel(v) at the previous timestep, which I think violates what Ken believes idt() should do. -Geoffrey -----------------Original message--------------- From: Peter Liebmann <peterl_at_.....> Date: Sat Oct 07 2006 - 08:08:54 PDT I remember a few years ago at Antrim, I used idt with assert to model a bouncing ball. This was a very good test of the implementation. I sent the module to the committee - I will try to find it if no one has it. In any case, I used across signal flow to describe position, velocity and acceleration. The position was the integral of velocity with an initial position (the height above the ground). The velocity was the integral of the acceleration with a DC initial condition which changes during transient (ic is dynamic). The assert is set to 1 when the position is 0 (the ball hits the ground - I used "cross" for this) and the assert value (ic) is the negative of the velocity (the ball changes direction, thus bounces). If assert is implemented correctly, the ball will bounce - if not, the balls distance will go negative and never return to the surface (a highly improbable example of Quantum tunneling). PeterL -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Tue Feb 5 05:35:40 2008
This archive was generated by hypermail 2.1.8 : Tue Feb 05 2008 - 05:35:42 PST