Revision 364
Added by markw over 10 years ago
aeon_lite/dac.vhd | ||
---|---|---|
library ieee;
|
||
use ieee.std_logic_1164.all;
|
||
|
||
entity dac is
|
||
|
||
generic (
|
||
msbi_g : integer := 15
|
||
);
|
||
port (
|
||
clk_i : in std_logic;
|
||
res_n_i : in std_logic;
|
||
dac_i : in std_logic_vector(msbi_g downto 0);
|
||
dac_o : out std_logic
|
||
);
|
||
|
||
end dac;
|
||
|
||
library ieee;
|
||
use ieee.numeric_std.all;
|
||
|
||
architecture rtl of dac is
|
||
|
||
signal DACout_q : std_logic;
|
||
signal DeltaAdder_s,
|
||
SigmaAdder_s,
|
||
SigmaLatch_q,
|
||
DeltaB_s : unsigned(msbi_g+2 downto 0);
|
||
|
||
begin
|
||
|
||
DeltaB_s(msbi_g+2 downto msbi_g+1) <= SigmaLatch_q(msbi_g+2) &
|
||
SigmaLatch_q(msbi_g+2);
|
||
DeltaB_s(msbi_g downto 0) <= (others => '0');
|
||
|
||
DeltaAdder_s <= unsigned('0' & '0' & dac_i) + DeltaB_s;
|
||
|
||
SigmaAdder_s <= DeltaAdder_s + SigmaLatch_q;
|
||
|
||
seq: process (clk_i, res_n_i)
|
||
begin
|
||
if res_n_i = '0' then
|
||
SigmaLatch_q <= to_unsigned(2**(msbi_g+1), SigmaLatch_q'length);
|
||
DACout_q <= '0';
|
||
|
||
elsif clk_i'event and clk_i = '1' then
|
||
SigmaLatch_q <= SigmaAdder_s;
|
||
DACout_q <= SigmaLatch_q(msbi_g+2);
|
||
end if;
|
||
end process seq;
|
||
|
||
dac_o <= DACout_q;
|
||
|
||
end rtl;
|
Also available in: Unified diff
Removed this version, the other one sounds better