Niko
Gast
|
Erstellt: 07.09.13, 09:22 Betreff: AD-Wandler
drucken
Thema drucken weiterempfehlen
|
|
|
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?
|
|