summaryrefslogtreecommitdiff
path: root/testsuite/vests/vhdl-ams/ad-hoc/fromUC/array_tests/test107.ams
blob: 1c9b85e58f29fa51e3c33928755190c1dd2db287 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152

-- Copyright (C) 2001-2002 The University of Cincinnati.  
-- All rights reserved. 

-- This file is part of VESTs (Vhdl tESTs).

-- UC MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
-- SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-- IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
-- OR NON-INFRINGEMENT.  UC SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
-- LICENSEE AS A RESULT OF USING, RESULT OF USING, MODIFYING OR
-- DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

-- By using or copying this Software, Licensee agrees to abide by the
-- intellectual property laws, and all other applicable laws of the U.S.,
-- and the terms of this license.

-- You may modify, distribute, and use the software contained in this
-- package under the terms of the "GNU GENERAL PUBLIC LICENSE" version 2,
-- June 1991. A copy of this license agreement can be found in the file
-- "COPYING", distributed with this archive.

-- You should have received a copy of the GNU General Public License
-- along with VESTs; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

-- ---------------------------------------------------------------------
--
-- $Id: test107.ams,v 1.1 2002-03-27 22:11:16 paw Exp $
-- $Revision: 1.1 $
--
-- ---------------------------------------------------------------------

----------------------------------------------------------------------
-- SIERRA REGRESSION TESTING MODEL
-- Develooped at:
-- Distriburted Processing Laboratory
-- University of cincinnati
-- Cincinnati
----------------------------------------------------------------------
-- File          : test107.ams
-- Author(s)     : Geeta Balarkishnan(gbalakri@ececs.uc.edu)
-- Created       : May 2001
----------------------------------------------------------------------
-- Description :
----------------------------------------------------------------------
-- the test checks for the correct impelmentation of the port terminal
-- decl. signal decl. of type real, type array decl. 
-- the test performs a 4 bit digital to analog conversion.
----------------------------------------------------------------------

PACKAGE electricalsystem IS
  NATURE electrical IS real ACROSS real THROUGH GROUND REFERENCE;
END electricalsystem;

USE work.electricalsystem.all;
ENTITY dac is
  port(inputvector : in bit_vector(3 downto 0); --inputvector is an array of 16 bits
       terminal T1, T2: electrical);	--terminal declarations
END dac;

ARCHITECTURE behavior OF dac IS

  type temp_array is array(0 to 3) of integer; -- temp to store the array values
  quantity vout across T1 to T2;	--output of the dac
  
  signal vout_sig, vcopy : real;	
BEGIN

  dac_process: PROCESS(inputvector) 
    variable a : temp_array := (0,0,0,0);
    variable tmp : real;
    
  BEGIN
    for index in 3 downto 0 loop
      if inputvector(index) = '0' then
	a(index) := 0;			--bit to integer conversion done here
      else a(index) := 1; 
      end if;
    end loop;

    tmp := real(a(3)*8) + real(a(2)*4) + real(a(1)*2 + a(0)); --find the corresponding value of the binary 
    vout_sig <= tmp;		

  END PROCESS dac_process;

  -- digital to analog conversion is done here
  vout == vcopy;

  convert: process(vout_sig)
  begin
    vcopy <= TRANSPORT vout_sig;
  end process;

END behavior;
use work.electricalsystem.all;
ENTITY tb_dac is
end tb_dac;

architecture stimuli of tb_dac is
  signal myinputvector : bit_vector(3 downto 0);
  terminal tout : electrical;
  component dac port( inputvector : in bit_vector(3 downto 0);
                      terminal T1, T2: electrical);
  end component;
  for all: dac use entity work.dac(behavior);
  
BEGIN
  
  unit:dac port map (myinputvector, tout, electrical'reference);

  stimuli_process: process
  BEGIN
    
    myinputvector <= "0000";
    wait for 10 ns;

   myinputvector <= "0001";
    wait for 10 ns;

  myinputvector <= "0010";
    wait for 10 ns;

    myinputvector <= "0100";
    wait for 10 ns;

    myinputvector <= "1000";
    wait for 10 ns;

    myinputvector <= "1100";
    wait for 10 ns;

    myinputvector <= "1110";    
    wait for 10 ns;

    myinputvector <= "1101"; 
    wait for 10 ns;

    myinputvector <= "1111"; 
    wait for 10 ns;
    myinputvector <= "0000";
    wait for 10 ns;
  
    myinputvector <= "1100";
    wait for 10 ns;
    
    myinputvector <= "1010";
    wait for 10 ns;
  
    wait;
  end process;
end stimuli;