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
|
-------------------------------------------------------------------------------
-- walter d. gallegos
-- www.waltergallegos.com
-- Programable Logic & Software
-- Consultoria y Diseno
--
-- Este archivo y documentacion son propiedad intelectual de Walter D. Gallegos
--
-------------------------------------------------------------------------------
-- Autor : WDG
-- Fecha : 2018-09-21
-- Archivo : SPITb.vhd
-- Notas :
--
--
-------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL, IEEE.NUMERIC_STD.ALL;
ENTITY SQRTb IS
END SQRTb;
ARCHITECTURE TB OF SQRTb IS
CONSTANT tCyc : TIME := 50 ns;
COMPONENT SQR
PORT (
CLOCK : IN std_logic;
DIN : IN std_logic_vector(31 downto 0);
VIN : IN std_logic;
DOUT : OUT std_logic_vector(31 downto 0);
VOUT : OUT std_logic
);
END COMPONENT SQR;
SIGNAL clock, vIn, vOut : STD_LOGIC;
SIGNAL dIn, dOut : STD_LOGIC_VECTOR (31 DOWNTO 0);
PROCEDURE Transfer(
d : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL clock : IN STD_LOGIC;
SIGNAL di : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL vOut : IN STD_LOGIC;
SIGNAL vIn : OUT STD_LOGIC) IS
BEGIN
WAIT UNTIL rising_edge(CLOCK);
WAIT FOR 1 ns; di <= d;
WAIT FOR 1 ns; Vin <= '1';
WAIT FOR tCyc; vIn <= '0';
WAIT FOR 1 ns;
WAIT UNTIL vOut = '1';
END PROCEDURE Transfer;
BEGIN
ClockGen : PROCESS
BEGIN
clock <= '0'; WAIT FOR tCyc/2;
clock <= '1'; WAIT FOR tCyc/2;
END PROCESS ClockGen;
A0 : SQR
PORT MAP (
CLOCK => clock,
DIN => dIn,
VIN => vIn,
DOUT => dOut,
VOUT => vOut
);
Stim : PROCESS
BEGIN
vIn <= '0';
WAIT FOR 100 ns; Transfer(x"00002000", clock, dIn, vOut, vIn );
WAIT FOR 200 ns; Transfer(x"00003000", clock, dIn, vOut, vIn );
WAIT FOR 100 ns; Transfer(x"00004000", clock, dIn, vOut, vIn );
WAIT FOR 100 ns; Transfer(x"08004000", clock, dIn, vOut, vIn );
WAIT;
END PROCESS Stim;
END TB;
CONFIGURATION Default OF SQRTb IS
FOR TB
FOR A0 : SQR
USE ENTITY work.SQR(REV0);
END FOR;
END FOR;
END Default;
|