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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [adm/] [dio64/] [trd_admdio64_in_v6.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
---------------------------------------------------------------------------------------------------
2
--
3
-- Title       : trd_admdio64_in_v6
4
-- Author      : Ilya Ivanov
5
-- Company     : Instrumental System
6
--
7
-- Version     : 1.2
8
---------------------------------------------------------------------------------------------------
9
--
10
-- Description :        Приём цифрового потока
11
--
12
---------------------------------------------------------------------------------------------------
13
--
14
--   Version 1.2  17.07.2007
15
--                Добавлены выходы регистров MODE0, MODE1, MODE2, MODE3
16
--                                Добавлен выход счётчика слов
17
--
18
---------------------------------------------------------------------------------------------------
19
--
20
--   Version 1.1  18.08.2006
21
--                Используется FIFO cl_fifo1024x64_v2                          
22
--
23
---------------------------------------------------------------------------------------------------
24
 
25
library ieee;
26
use ieee.std_logic_1164.all;
27
 
28
 
29
 
30
 
31
 
32
library work;
33
use work.cl_chn_v3_pkg.all;
34
use work.adm2_pkg.all;
35
 
36
package trd_admdio64_in_v6_pkg is
37
 
38
constant  ID_DIO_IN                     : std_logic_vector( 15 downto 0 ):=x"0013"; -- идентификатор тетрады
39
constant  ID_MODE_DIO_IN        : std_logic_vector( 15 downto 0 ):=x"0006"; -- модификатор тетрады
40
constant  VER_DIO_IN            : std_logic_vector( 15 downto 0 ):=x"0102";      -- версия тетрады
41
constant  RES_DIO_IN            : std_logic_vector( 15 downto 0 ):=x"0010";      -- ресурсы тетрады
42
constant  FIFO_DIO_IN           : std_logic_vector( 15 downto 0 ):=x"0400"; -- размер FIFO
43
constant  FTYPE_DIO_IN          : std_logic_vector( 15 downto 0 ):=x"0040"; -- ширина FIFO
44
 
45
component trd_admdio64_in_v6 is
46
        port(
47
                -- GLOBAL
48
                reset                           : in std_logic;         -- 0 - сброс
49
                clk                                     : in std_logic;         -- тактовая частота
50
 
51
                -- Управление тетрадой
52
                data_out                        : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход через буфер
53
                data_out2                       : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход без буфера
54
                cmd_data_in                     : in std_logic_vector( 15 downto 0 ); -- шина данных CMD_DATA
55
                cmd                                     : in bl_cmd;            -- сигналы управления
56
 
57
                cmd_data_out            : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход через буфер
58
                cmd_data_out2           : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход без буфера
59
 
60
                bx_irq                          : out std_logic;        -- 1 - прерывание от тетрады
61
                bx_drq                          : out bl_drq;           -- управление DMA
62
 
63
                mode0                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE0
64
                mode1                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE1
65
                mode2                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE2
66
                mode3                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE3
67
 
68
                fifo_rst_in                     : in  std_logic:='1';                   -- 0 - сброс FIFO (вход)
69
                fifo_rst                        : out std_logic;                                -- 0 - сброс FIFO (выход)
70
 
71
                start                           : out std_logic;        --  1 - разрешение работы (MODE0[5])
72
 
73
                -- Запись FIFO                                  
74
                data_in             : in std_logic_vector(63 downto 0);  -- данные для записи в FIFO
75
                data_wr             : in std_logic;             -- 1 - строб записи
76
                flag_wr                         : out bl_fifo_flag;     -- флаги FIFO, синхронно с clk_wr
77
                flag_rd                         : out bl_fifo_flag;     -- флаги FIFO, синхронно с clk
78
                clk_wr                          : in std_logic;         -- тактовая частота записи в FIFO
79
                fifo_cnt_wr                     : out std_logic_vector( 9 downto 0 ); -- число слов в FIFO, синхронно с clk_wr            
80
                fifo_cnt_rd                     : out std_logic_vector( 9 downto 0 )  -- число слов в FIFO, синхронно с clk               
81
 
82
                --------------------------------------------
83
            );
84
end component;
85
 
86
end trd_admdio64_in_v6_pkg;
87
 
88
library ieee;
89
use ieee.std_logic_1164.all;
90
 
91
library unisim;
92
use unisim.vcomponents.all;
93
 
94
library work;
95
use work.cl_chn_v3_pkg.all;
96
use work.adm2_pkg.all;
97
use work.cl_fifo1024x65_v5_pkg.all;
98
 
99
entity trd_admdio64_in_v6 is
100
        port(
101
                -- GLOBAL
102
                reset                           : in std_logic;         -- 0 - сброс
103
                clk                                     : in std_logic;         -- тактовая частота
104
 
105
                -- Управление тетрадой
106
                data_out                        : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход через буфер
107
                data_out2                       : out std_logic_vector( 63 downto 0 ); -- шина данных DATA, выход без буфера
108
                cmd_data_in                     : in std_logic_vector( 15 downto 0 ); -- шина данных CMD_DATA
109
                cmd                                     : in bl_cmd;            -- сигналы управления
110
 
111
                cmd_data_out            : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход через буфер
112
                cmd_data_out2           : out std_logic_vector( 15 downto 0 ); -- выходы регистров, выход без буфера
113
 
114
                bx_irq                          : out std_logic;        -- 1 - прерывание от тетрады
115
                bx_drq                          : out bl_drq;           -- управление DMA
116
 
117
                mode0                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE0
118
                mode1                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE1
119
                mode2                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE2
120
                mode3                           : out std_logic_vector( 15 downto 0 );   -- регистр MODE3
121
 
122
                fifo_rst_in                     : in  std_logic:='1';                   -- 0 - сброс FIFO (вход)
123
                fifo_rst                        : out std_logic;                                -- 0 - сброс FIFO (выход)
124
 
125
                start                           : out std_logic;        --  1 - разрешение работы (MODE0[5])
126
 
127
                -- Запись FIFO                                  
128
                data_in             : in std_logic_vector(63 downto 0);  -- данные для записи в FIFO
129
                data_wr             : in std_logic;             -- 1 - строб записи
130
                flag_wr                         : out bl_fifo_flag;     -- флаги FIFO, синхронно с clk_wr
131
                flag_rd                         : out bl_fifo_flag;     -- флаги FIFO, синхронно с clk
132
                clk_wr                          : in std_logic;         -- тактовая частота записи в FIFO
133
                fifo_cnt_wr                     : out std_logic_vector( 9 downto 0 ); -- число слов в FIFO, синхронно с clk_wr            
134
                fifo_cnt_rd                     : out std_logic_vector( 9 downto 0 )  -- число слов в FIFO, синхронно с clk               
135
 
136
                --------------------------------------------
137
            );
138
end trd_admdio64_in_v6;
139
 
140
architecture trd_admdio64_in_v6 of trd_admdio64_in_v6 is
141
 
142
 
143
signal rst,fifo_rst0            : std_logic;
144
signal flag_rdi                 : bl_fifo_flag;
145
signal cmode0                           : std_logic_vector(15 downto 0);
146
signal status,sflag                     : std_logic_vector(15 downto 0);
147
signal do                                       : std_logic_vector(63 downto 0);
148
signal fifo_rst1                        : std_logic;
149
 
150
begin
151
 
152
xstatus: ctrl_buft16 port map(
153
        t => cmd.status_cs,
154
        i =>  status,
155
        o => cmd_data_out );
156
 
157
cmd_data_out2 <= status;
158
 
159
xdata: ctrl_buft64 port map(
160
        t => cmd.data_oe,
161
        i  => do,
162
        o => data_out );
163
 
164
data_out2 <= do;
165
 
166
chn: cl_chn_v3
167
        generic map(
168
          -- 2 - out - для тетрады вывода
169
          -- 1 - in  - для тетрады ввода
170
          chn_type                      => 1
171
        )
172
        port map (
173
                reset                   => reset,
174
                clk                     => clk,
175
                -- Флаги
176
                cmd_rdy                 => '1',
177
                rdy                             => flag_rdi.ef,
178
                fifo_flag               => flag_rdi,
179
                -- Тетрада      
180
                data_in                 => cmd_data_in,
181
                cmd                             => cmd,
182
                bx_irq                  => bx_irq,
183
                bx_drq                  => bx_drq,
184
                status                  => status,
185
                -- Управление
186
                mode0                   => cmode0,
187
                mode1                   => mode1,
188
                mode2                   => mode2,
189
                mode3                   => mode3,
190
                sflag                   => sflag,
191
                rst                             => rst,
192
                fifo_rst                => fifo_rst0
193
        );
194
 
195
x_fifo: cl_fifo1024x65_v5
196
        port map(
197
                -- сброс
198
                 reset                  => fifo_rst1,
199
                -- запись
200
                 clk_wr                 => clk_wr,
201
                 data_in                => data_in,
202
                 data_en                => data_wr,
203
                 flag_wr                => flag_wr,
204
                 --cnt_wr                       => fifo_cnt_wr,
205
 
206
                 -- чтение
207
                 clk_rd                 => clk,
208
                 data_out               => do,
209
                 data_cs                => cmd.data_cs,
210
                 flag_rd                => flag_rdi
211
                 --cnt_rd                       => fifo_cnt_rd
212
 
213
            );
214
 
215
flag_rd <= flag_rdi;
216
 
217
fifo_rst1 <= fifo_rst0 and fifo_rst_in;
218
fifo_rst<=fifo_rst1;
219
 
220
start <= cmode0(5);
221
mode0 <= cmode0;
222
 
223
end trd_admdio64_in_v6;

powered by: WebSVN 2.1.0

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