OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [adm/] [main/] [cl_test0_v4.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
---------------------------------------------------------------------------------------------------
2
--
3
-- Title       : cl_test0_v4
4
-- Author      : Dmitry Smekhov
5
-- Company     : Instrumental Systems
6
-- E-mail      : dsmv@insys.ru
7
--
8
-- Version     : 1.1
9
--
10
---------------------------------------------------------------------------------------------------
11
--
12
-- Description : Модуль начального тестирования.
13
--               Модификация 4 - шина данных 64 разряда, шина адреса 7 разрядов
14
--                           Есть отдельный сброс тестового регистра
15
--
16
---------------------------------------------------------------------------------------------------
17
--
18
--   Version 1.1        10.06.2010
19
--                                      Добавлен режим формирования псевдослучайной последовательности
20
--
21
---------------------------------------------------------------------------------------------------
22
 
23
library ieee;
24
use ieee.std_logic_1164.all;
25
 
26
package cl_test0_v4_pkg is
27
 
28
component cl_test0_v4 is
29
        port(
30
                reset                   : in std_logic;                 -- 0 - общий сброс, переход в режим по test_mode_init
31
                reset_reg               : in std_logic;                 -- 0 - сброс сдвигового регистра
32
                clk                             : in std_logic;                 -- Тактовая частота
33
                reg_test_mode   : in std_logic:='0';     -- 1 - формирование псевдослучайной последовательности
34
 
35
                adr_in                  : in std_logic_vector( 6 downto 0 );     -- шина адреса
36
                data_in                 : in std_logic_vector( 63 downto 0 );    -- шина данных, вход
37
                data_en                 : in std_logic;                 -- 1 - запись в регистр
38
                data_cs                 : in std_logic;                 -- 0 - чтение
39
 
40
                data_out                : out std_logic_vector( 63 downto 0 );   -- шина данных, выход
41
                test_mode_init  : in std_logic;                 -- начальное состояние
42
                test_mode               : out std_logic                 -- 1 - тестовый режим
43
        );
44
 
45
end component;
46
 
47
end package;
48
 
49
 
50
library ieee;
51
use ieee.std_logic_1164.all;
52
 
53
entity cl_test0_v4 is
54
        port(
55
                reset                   : in std_logic;                 -- 0 - общий сброс, переход в режим по test_mode_init
56
                reset_reg               : in std_logic;                 -- 0 - сброс сдвигового регистра
57
                clk                             : in std_logic;                 -- Тактовая частота
58
                reg_test_mode   : in std_logic:='0';     -- 1 - формирование псевдослучайной последовательности
59
 
60
                adr_in                  : in std_logic_vector( 6 downto 0 );     -- шина адреса
61
                data_in                 : in std_logic_vector( 63 downto 0 );    -- шина данных, вход
62
                data_en                 : in std_logic;                 -- 1 - запись в регистр
63
                data_cs                 : in std_logic;                 -- 0 - чтение
64
 
65
                data_out                : out std_logic_vector( 63 downto 0 );   -- шина данных, выход
66
                test_mode_init  : in std_logic;                 -- начальное состояние
67
                test_mode               : out std_logic                 -- 1 - тестовый режим
68
        );
69
 
70
end cl_test0_v4;
71
 
72
 
73
architecture cl_test0_v4 of cl_test0_v4 is
74
 
75
signal reg: std_logic_vector( 63 downto 0 );
76
 
77
signal reg_en2, reg_sen: std_logic;
78
signal tmode, tmode1: std_logic;    -- 1 - режим тестирования
79
signal reg_clr: std_logic;                      -- 1 - сброс регистра
80
 
81
begin
82
 
83
 
84
 
85
 
86
 
87
 
88
pr_tmode: process( reset, clk ) begin
89
        if( reset='0' ) then
90
                tmode<=test_mode_init;
91
        elsif( rising_edge( clk ) ) then
92
                if( tmode='1' ) then
93
                        if( data_en='1' )  then
94
                                tmode <= not data_in(0);
95
                        end if;
96
                else
97
                        if( data_en='1' )  then
98
                                tmode<= data_in(1);
99
                        end if;
100
                end if;
101
        end if;
102
end process;
103
 
104
 
105
test_mode<=tmode;
106
 
107
pr_reg: process( reset, reset_reg, tmode, clk ) begin
108
        if( reset='0' or reset_reg='0' or reg_clr='1' ) then
109
                reg<=( 1=>reg_test_mode, others=>'0' );
110
        elsif( rising_edge( clk ) ) then
111
                if( data_en='1' ) then
112
                        reg( 6 downto 0 )<=adr_in( 6 downto 0 ) after 1 ns;
113
                        reg( 63 downto 7 )<=data_in( 63 downto 7 ) after 1 ns;
114
                elsif( reg_sen='1' ) then
115
                        for i in 63 downto 1 loop
116
                                reg( i )<=reg(i-1);
117
                        end loop;
118
                        if( reg_test_mode='0' ) then
119
                                reg( 0 )<= not reg( 63 ) after 1 ns;
120
                        else
121
                                reg(0) <= reg(63) xor reg(62) xor reg(60) xor reg(59) after 1 ns;
122
                        end if;
123
                end if;
124
        end if;
125
end process;
126
 
127
reg_sen<=data_cs;
128
 
129
pr_tmode1: process( clk ) begin
130
        if( rising_edge( clk ) ) then
131
                tmode1<=tmode;
132
        end if;
133
end process;
134
 
135
reg_clr<=tmode xor tmode1;
136
 
137
 
138
data_out<=reg;
139
 
140
 
141
 
142
end cl_test0_v4;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.