39 lines
1.3 KiB
VHDL
39 lines
1.3 KiB
VHDL
|
library ieee;
|
||
|
use ieee.math_real.all;
|
||
|
|
||
|
ARCHITECTURE test OF DAC_tester IS
|
||
|
|
||
|
constant clockPeriod: time := (1.0/clockFrequency) * 1 sec;
|
||
|
signal sClock: std_uLogic := '1';
|
||
|
|
||
|
signal sineFrequency: real := 20.0E3;
|
||
|
signal tReal: real := 0.0;
|
||
|
signal outAmplitude: real := 1.0;
|
||
|
signal outReal: real := 0.0;
|
||
|
signal outUnsigned: unsigned(parallelIn'range);
|
||
|
|
||
|
BEGIN
|
||
|
------------------------------------------------------------------------------
|
||
|
-- clock and reset
|
||
|
sClock <= not sClock after clockPeriod/2;
|
||
|
clock <= transport sClock after clockPeriod*9/10;
|
||
|
reset <= '1', '0' after 2*clockPeriod;
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
-- time signals
|
||
|
process(sClock)
|
||
|
begin
|
||
|
if rising_edge(sClock) then
|
||
|
tReal <= tReal + 1.0/clockFrequency;
|
||
|
end if;
|
||
|
end process;
|
||
|
|
||
|
outReal <= outAmplitude * ( sin(2.0*math_pi*sineFrequency*tReal) + 1.0) / 2.0;
|
||
|
|
||
|
outUnsigned <= to_unsigned(integer(outReal * real(2**(outUnsigned'length)-1)), outUnsigned'length);
|
||
|
parallelIn <= outUnsigned;
|
||
|
-- parallelIn <= shift_left(to_unsigned(1, parallelIn'length), parallelIn'length-1);
|
||
|
-- parallelIn <= shift_left(to_unsigned(3, parallelIn'length), parallelIn'length-2);
|
||
|
|
||
|
END ARCHITECTURE test;
|