blob: a6546f6c2cf97b368bd437f788f37fc14a01f9f9 (
plain)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
-------------------------------------------------------------------------------
-- Module : de1_matlab_dds_adda
-------------------------------------------------------------------------------
-- Author : Matthias Kamuf
-- Company : University of Applied Sciences Augsburg
-------------------------------------------------------------------------------
-- Description: Top-level of module de1_matlab_dds_adda
--
-------------------------------------------------------------------------------
-- Revisions : see end of file
-------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY de1_matlab_dds_adda IS
PORT (
CLOCK_50 : IN std_ulogic;
KEY0 : IN std_ulogic;
DAC_MODE : OUT std_ulogic;
DAC_WRT_A : OUT std_ulogic;
DAC_WRT_B : OUT std_ulogic;
DAC_CLK_A : OUT std_ulogic;
DAC_CLK_B : OUT std_ulogic;
DAC_DA : OUT std_ulogic_vector(13 DOWNTO 0);
DAC_DB : OUT std_ulogic_vector(13 DOWNTO 0);
POWER_ON : OUT std_ulogic;
ADC_CLK_A : OUT std_ulogic;
ADC_CLK_B : OUT std_ulogic;
ADC_OEB_A : OUT std_ulogic;
ADC_OEB_B : OUT std_ulogic;
LEDR : OUT std_ulogic);
END de1_matlab_dds_adda;
ARCHITECTURE structure OF de1_matlab_dds_adda IS
-- Matlab-generated toplevel
COMPONENT ml_dds_adda IS
PORT (
clk : IN std_ulogic;
rst_n : IN std_ulogic;
valid_o : OUT std_ulogic;
sample_o : OUT std_ulogic_vector(13 DOWNTO 0));
END COMPONENT ml_dds_adda;
-- component ports
SIGNAL clk : std_ulogic;
SIGNAL rst_n : std_ulogic;
SIGNAL valid : std_ulogic;
SIGNAL sample : std_ulogic_vector(13 DOWNTO 0);
BEGIN
sinegen : ml_dds_adda
PORT MAP (
clk_ => clk,
rst_n => rst_n,
valid_o => valid,
sample_o => sample);
-- clock and reset signal
clk <= CLOCK_50;
rst_n <= KEY0;
-- valid indicator
LEDR <= valid;
-- DAC in dual-port mode
DAC_MODE <= '1';
DAC_WRT_A <= clk;
DAC_WRT_B <= clk;
DAC_CLK_A <= clk;
DAC_CLK_B <= clk;
-- DAC on board has 00000000000000 as minimum value
-- and 11111111111111 as maximum value
-- therefore the conversion has to look like this
-- input signed value output DAC value
-- minimum 10000000000000 00000000000000
-- zero 00000000000000 10000000000000
-- maximum 01111111111111 11111111111111
-- assign to DAC channels
DAC_DA <= "10000000000000" WHEN rst_n = '0' ELSE (NOT(sample(13)) & sample(12 DOWNTO 0)) WHEN falling_edge(clk);
DAC_DB <= "10000000000000" WHEN rst_n = '0' ELSE "10000000000000" WHEN falling_edge(clk);
-- ADC section all off!
ADC_CLK_A <= '0';
ADC_CLK_B <= '0';
ADC_OEB_A <= '0';
ADC_OEB_B <= '0';
-- switch on DAC/ADC
POWER_ON <= '1';
END structure;
-------------------------------------------------------------------------------
-- Revisions:
-- ----------
-- $Id:$
-------------------------------------------------------------------------------
|