-
Notifications
You must be signed in to change notification settings - Fork 0
/
dac_output_pio.vhd
69 lines (55 loc) · 2.59 KB
/
dac_output_pio.vhd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
--Legal Notice: (C)2011 Altera Corporation. All rights reserved. Your
--use of Altera Corporation's design tools, logic functions and other
--software and tools, and its AMPP partner logic functions, and any
--output files any of the foregoing (including device programming or
--simulation files), and any associated documentation or information are
--expressly subject to the terms and conditions of the Altera Program
--License Subscription Agreement or other applicable license agreement,
--including, without limitation, that your use is for the sole purpose
--of programming logic devices manufactured by Altera and sold by Altera
--or its authorized distributors. Please refer to the applicable
--agreement for further details.
-- turn off superfluous VHDL processor warnings
-- altera message_level Level1
-- altera message_off 10034 10035 10036 10037 10230 10240 10030
library altera;
use altera.altera_europa_support_lib.all;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity dac_output_pio is
port (
-- inputs:
signal address : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
signal chipselect : IN STD_LOGIC;
signal clk : IN STD_LOGIC;
signal reset_n : IN STD_LOGIC;
signal write_n : IN STD_LOGIC;
signal writedata : IN STD_LOGIC_VECTOR (11 DOWNTO 0);
-- outputs:
signal out_port : OUT STD_LOGIC_VECTOR (11 DOWNTO 0);
signal readdata : OUT STD_LOGIC_VECTOR (11 DOWNTO 0)
);
end entity dac_output_pio;
architecture europa of dac_output_pio is
signal clk_en : STD_LOGIC;
signal data_out : STD_LOGIC_VECTOR (11 DOWNTO 0);
signal read_mux_out : STD_LOGIC_VECTOR (11 DOWNTO 0);
begin
clk_en <= std_logic'('1');
--s1, which is an e_avalon_slave
read_mux_out <= A_REP(to_std_logic((((std_logic_vector'("000000000000000000000000000000") & (address)) = std_logic_vector'("00000000000000000000000000000000")))), 12) AND data_out;
process (clk, reset_n)
begin
if reset_n = '0' then
data_out <= std_logic_vector'("000000000000");
elsif clk'event and clk = '1' then
if std_logic'(((chipselect AND NOT write_n) AND to_std_logic((((std_logic_vector'("000000000000000000000000000000") & (address)) = std_logic_vector'("00000000000000000000000000000000")))))) = '1' then
data_out <= writedata(11 DOWNTO 0);
end if;
end if;
end process;
readdata <= read_mux_out;
out_port <= data_out;
end europa;