Hardware Reference
In-Depth Information
procedure GenSin( signal T:std_logic; signal y: out tSigned;
A:natural; tpsim:delay_length; phi:real) is
variable r:real;
begin
assert A < 2 **(y'length- 1 ) report "A ist zu gross"
severity error;
if rising_edge(T) then
r := 2.0 *math_pi*real(now/fs)/real(tPsim/fs)+phi;
y <= to_tSigned(integer(real(A)*sin(r)), y'length);
end if ;
end procedure ;
)WEB-Projekt:P3.5/GenSin_pack.vhdl
6.4 Vom Transistor zur Schaltung
6.4.1 Entwurf und Modellierung von CMOS-Gattern
Lösung zu Aufgabe 4.1
Für den Übergabeparameter der Auflösungsfunktion ist in Anlehnung an Ab-
schnitt 4.1.3 zuerst ein Vektortyp mit »tZ01« als Elementtyp zu definieren:
type tZ01_vector is array (natural range <>) of tZ01;
In der nachfolgenden Lösung wird eine mit dem Wert der ersten Quelle initia-
lisierte Variable »tmp« angelegt. In einer Schleife für alle anderen Quellen-
werte wird ihr Wert, wenn er »Z« und der andere Quellenwert »0« oder »1«
ist, durch den anderen Quellenwert ersetzt. Wenn beide Werte ungleich »Z«
sind, beendet eine Assert-Anweisung die Simulation mit »severity failure«.
Anderenfalls ist der Rückgabewert der Wert in »tmp« nach Abarbeitung der
Schleife:
function AufloesZ01(x: tZ01_vector) return tZ01 is
variable tmp: tZ01:=x(x'low);
begin
for idx in x'low+ 1 to x'high loop
if x(idx)/= 'Z' then
assert tmp= 'Z' report "Mehrere aktive Quellen"
severity failure;
tmp := x(idx);
end if ;
end loop ;
return tmp;
end function ;
 
Search WWH ::




Custom Search