VHDL-Forum - Simulation mit VHDL-AMS

AD-Wandler

AD-Wandler

Hello World =)
Vielleicht kennt sich jemand besser aus mit AMS, als ich! Aufgabe ist, einen AD-Wandler zu schreiben, der für eine Eingangsspannung zwischen 0 und 5 V 8 digitale Werte ausgibt. Hier mein Code:
--library ieee;
--use ieee.electrical_systems.all;
LIBRARY DISCIPLINES; -- Ich benutze hAMSter
USE DISCIPLINES.ELECTROMAGNETIC_SYSTEM.ALL;

entity a2d is
generic (vthreshold : real := 0.625);
port (D_output : out bit_vector (2 downto 0);
terminal a_input, electrical_ref : electrical);
end entity a2d;

architecture behavioral of a2d is
quantity vin ACROSS a_input to electrical_ref;
begin
process (vin) is

begin
IF (vin'above(vthreshold)) then -- 0 - 0,625 V
d_output <= '000';
ELSE IF (vin'above(vthreshold*2)) then -- 0,626 - 1,25 V
d_output <= '001';
ELSE IF (vin'above(vthreshold*3)) then -- ... - 1,875 V
d_output <= '010';
ELSE IF (vin'above(vthreshold*4)) then -- ... - 2,5 V
d_output <= '011';
ELSE IF (vin'above(vthreshold*5)) then -- ... - 3,125 V
d_output <= '100';
ELSE IF (vin'above(vthreshold*6)) then -- ... - 3,75 V
d_output <= '101';
ELSE IF (vin'above(vthreshold*7)) then -- ... - 4,375 V
d_output <= '110';
ELSE -- (vin'above(vthreshold*8)) then -- ... - 5 V
d_output <= '111';
end process;
end architecture behavioral;

begin
vin == sin(2.0 * math_pi * f * NOW);
end;

Ich müsste unbedingt noch abgrenzen, also z.B. '001' bei (not (vin'above(vthreshold)) && vin'above(vthreshold*2)) oder so...
Hat jemand eine Idee?

Re: AD-Wandler

cheshmgir
cheshmgir
cheshmgir
cheshmgir
cheshmgir