DS_DMA
pcie_src/pcie_core64_m1/pcie_ctrl/core64_type_pkg.vhd
00001 -------------------------------------------------------------------------------
00002 --
00003 -- Title       : core64_type_pkg
00004 -- Author      : Dmitry Smekhov
00005 -- Company     : Instrumental Systems
00006 -- E-mail      : dsmv@insys.ru
00007 --
00008 -- Version     : 1.0
00009 --
00010 -------------------------------------------------------------------------------
00011 --
00012 -- Description : Определения типов для проекта DS_DMA64 
00013 --
00014 -------------------------------------------------------------------------------
00015 
00016 
00017 library ieee;
00018 use ieee.std_logic_1164.all;
00019 
00020 --! Определение типов для проекта DS_DMA64 
00021 package core64_type_pkg is
00022 
00023 --! Передача данных в узел PCIE 
00024 type type_trn_tx is record
00025         
00026     trn_td                      : std_logic_vector((64 - 1) downto 0);
00027     trn_trem_n          : std_logic_vector (7 downto 0);
00028     trn_tsof_n          : std_logic;
00029     trn_teof_n          : std_logic;
00030     trn_tsrc_dsc_n      : std_logic;
00031     trn_tsrc_rdy_n      : std_logic;
00032     trn_terrfwd_n       : std_logic ;
00033         
00034 end record;
00035 
00036 --! Готовность к передачи данных в узел PCIE 
00037 type type_trn_tx_back is record
00038         
00039     trn_tdst_dsc_n      : std_logic;
00040     trn_tdst_rdy_n      : std_logic;
00041     trn_tbuf_av         : std_logic_vector ( 5 downto 0 );
00042         cfg_dcommand    : std_logic_vector( 15 downto 0 );                      -- регистр Device Control Register
00043         
00044 end record;
00045 
00046 --! Приём данных из узла PCIE 
00047 type type_trn_rx is record
00048 
00049     trn_rd                      : std_logic_vector((64 - 1) downto 0);
00050     trn_rrem_n          : std_logic_vector (7 downto 0);
00051     trn_rsof_n          : std_logic;
00052     trn_reof_n          : std_logic; 
00053     trn_rsrc_dsc_n      : std_logic; 
00054     trn_rsrc_rdy_n      : std_logic; 
00055     trn_rbar_hit_n      : std_logic_vector ( 6 downto 0 );
00056     trn_rerrfwd_n       : std_logic; 
00057     trn_rfc_npd_av      : std_logic_vector ( 11 downto 0 ); 
00058     trn_rfc_nph_av      : std_logic_vector ( 7 downto 0 ); 
00059     trn_rfc_pd_av       : std_logic_vector ( 11 downto 0 ); 
00060     trn_rfc_ph_av       : std_logic_vector ( 7 downto 0 );
00061         
00062 end record;
00063 
00064 
00065 --! Готовность к приёму данных из узла PCIE 
00066 type type_trn_rx_back is record
00067         
00068     trn_rdst_rdy_n                      : std_logic; 
00069     trn_rnp_ok_n                        : std_logic; 
00070     trn_rcpl_streaming_n    : std_logic;
00071         
00072 end record;
00073 
00074 --! Передача данных в узел PCIE. Интерфейс AXI
00075 type type_axi_tx is record
00076         
00077 --    trn_td                    : std_logic_vector((64 - 1) downto 0);
00078 --    trn_trem_n                : std_logic_vector (7 downto 0);
00079 --    trn_tsof_n                : std_logic;
00080 --    trn_teof_n                : std_logic;
00081 --    trn_tsrc_dsc_n    : std_logic;
00082 --    trn_tsrc_rdy_n    : std_logic;
00083 --    trn_terrfwd_n     : std_logic ;              
00084         
00085         s_axis_tx_tdata   : std_logic_vector(63 downto 0);
00086         s_axis_tx_tstrb   : std_logic_vector(7 downto 0);
00087         s_axis_tx_tuser   : std_logic_vector(3 downto 0);
00088         s_axis_tx_tlast   : std_logic;
00089         s_axis_tx_tvalid  : std_logic;
00090     tx_cfg_gnt        : std_logic;
00091     fc_sel                : std_logic_vector(2 downto 0);
00092                 
00093         
00094 end record;
00095 
00096 --! Готовность к передачи данных в узел PCIE. Интерфейс AXI
00097 type type_axi_tx_back is record
00098         
00099     tx_cfg_req       : std_logic;
00100     tx_err_drop      : std_logic;
00101         s_axis_tx_tready : std_logic;
00102 --    trn_tdst_dsc_n    : std_logic;
00103 --    trn_tdst_rdy_n    : std_logic;
00104     trn_tbuf_av         : std_logic_vector ( 5 downto 0 );
00105         cfg_dcommand    : std_logic_vector( 15 downto 0 );                      -- регистр Device Control Register
00106         
00107       fc_cpld       : std_logic_vector(11 downto 0);
00108       fc_cplh       : std_logic_vector(7 downto 0);
00109       fc_npd        : std_logic_vector(11 downto 0);
00110       fc_nph        : std_logic_vector(7 downto 0);
00111       fc_pd         : std_logic_vector(11 downto 0);
00112       fc_ph         : std_logic_vector(7 downto 0);
00113         
00114 end record;
00115 
00116 
00117 --! Приём данных из узла PCIE. Интерфейс AXI 
00118 type type_axi_rx is record
00119 
00120 --    trn_rd                    : std_logic_vector((64 - 1) downto 0);
00121 --    trn_rrem_n                : std_logic_vector (7 downto 0);
00122 --    trn_rsof_n                : std_logic;
00123 --    trn_reof_n                : std_logic; 
00124 --    trn_rsrc_dsc_n    : std_logic; 
00125 --    trn_rsrc_rdy_n    : std_logic; 
00126 --    trn_rbar_hit_n    : std_logic_vector ( 6 downto 0 );
00127 --    trn_rerrfwd_n     : std_logic; 
00128 --    trn_rfc_npd_av    : std_logic_vector ( 11 downto 0 ); 
00129 --    trn_rfc_nph_av    : std_logic_vector ( 7 downto 0 ); 
00130 --    trn_rfc_pd_av     : std_logic_vector ( 11 downto 0 ); 
00131 --    trn_rfc_ph_av     : std_logic_vector ( 7 downto 0 );               
00132 
00133       m_axis_rx_tdata     : std_logic_vector(63 downto 0);
00134       m_axis_rx_tstrb     : std_logic_vector(7 downto 0);
00135       m_axis_rx_tlast     : std_logic;
00136       m_axis_rx_tvalid    : std_logic;
00137       m_axis_rx_tuser     : std_logic_vector(21 downto 0);
00138 
00139         
00140 end record;
00141 
00142 
00143 --! Готовность к приёму данных из узла PCIE. Интерфейс AXI 
00144 type type_axi_rx_back is record
00145         
00146 --    trn_rdst_rdy_n                    : std_logic; 
00147 --    trn_rnp_ok_n                      : std_logic; 
00148 --    trn_rcpl_streaming_n    : std_logic;
00149 
00150       m_axis_rx_tready     : std_logic;
00151       rx_np_ok             : std_logic;
00152 
00153 end record;
00154 
00155 --! Доступ к регистрам 
00156 type type_reg_access is record
00157         
00158         adr                                             : std_logic_vector( 31 downto 0 );      --! адрес регистра
00159         data                                    : std_logic_vector( 31 downto 0 );      --! данные для записи в регистр
00160         req_wr                                  : std_logic_vector( 1 downto 0 );       --! 1 - требование записи в регистр
00161         req_rd                                  : std_logic_vector( 1 downto 0 );       --! 1 - требование чтения из регистра
00162         
00163 end record;
00164 
00165 --! Доступ к регистрам - ответный пакет 
00166 type type_reg_access_back is record
00167         
00168         data                                    : std_logic_vector( 31 downto 0 );      --! данные для записи в регистр
00169         data_we                                 : std_logic;    --! 1 - строб данных 
00170         complete                                : std_logic;    --! 1 - операция завершена 
00171         
00172 end record;
00173 
00174 --! RX->TX
00175 type type_rx_tx_engine  is record
00176         
00177         request_reg_wr                  : std_logic;    --! 1 - запрос на запись в регистр 
00178         request_reg_rd                  : std_logic;    --! 1 - запрос на чтение из регистра 
00179         request_tag                             : std_logic_vector( 7 downto 0 );       --! идентификатор запроса
00180         request_tc                              : std_logic_vector( 2 downto 0 );       --! Traffic class
00181         request_attr                    : std_logic_vector( 3 downto 0 );       --! атрибуты
00182         request_id                              : std_logic_vector( 15 downto 0 );  --! ID получателя запроса 
00183         
00184         complete_we                             : std_logic;    --! 1 - запись ответа на запрос 
00185         lower_adr                               : std_logic_vector( 6 downto 2 );       --! младшие разряды адреса
00186         
00187 end record;
00188 
00189 --! TX->RX
00190 type type_tx_rx_engine  is record
00191         
00192         complete_reg                    : std_logic;    --! 1 - завершение доступа к регистру 
00193         
00194 end record;
00195 
00196 --! RX->EXT_FIFO 
00197 type type_rx_ext_fifo is record
00198         
00199         adr                                             : std_logic_vector( 8 downto 0 );       --! адрес 
00200         data                                    : std_logic_vector( 63 downto 0 );      --! данные
00201         data_we                                 : std_logic;    --! 1 - запись данных 
00202         
00203 end record;
00204 
00205 --! TX->EXT_FIFO 
00206 type type_tx_ext_fifo is record
00207         
00208         adr                                             : std_logic_vector( 8 downto 0 );       --! адрес 
00209         
00210         complete_ok                             : std_logic;    --! 1 - успешное завершение операции 
00211         complete_error                  : std_logic;    --! 1 - операция завершена с ошибкой
00212         
00213 end record;
00214 
00215 --! TX->EXT_FIFO_BACK
00216 type type_tx_ext_fifo_back is record
00217         
00218         data                                    : std_logic_vector( 63 downto 0 );      --! данные
00219         
00220         req_wr                                  : std_logic;    --! 1 - требование записи блока 4 кБ
00221         req_rd                                  : std_logic;    --! 1 - требование чтения
00222         rd_size                                 : std_logic;    --! 0 - 512 байт, 1 - 4 кБ
00223         pci_adr                                 : std_logic_vector( 39 downto 8 );      --! адрес на шине PCI 
00224         
00225 end record;
00226 
00227 --! REG->DISP 
00228 type type_reg_disp is record
00229         
00230         adr                                             : std_logic_vector( 31 downto 0 );      --! адрес 
00231         data                                    : std_logic_vector( 31 downto 0 );      --! данные 
00232         request_reg_wr                  : std_logic;    --! 1 - запрос на запись в регистр 
00233         request_reg_rd                  : std_logic;    --! 1 - запрос на чтение из регистра 
00234         
00235 end record;
00236 
00237 
00238 --! REG->DISP BACK 
00239 type type_reg_disp_back is record
00240         
00241         data                                    : std_logic_vector( 31 downto 0 );      --! данные 
00242         data_we                                 : std_logic;    --! 1 - строб записи данных 
00243         complete                                : std_logic;    --! 1 - операция завершена 
00244         
00245 end record;
00246 
00247 
00248 --! REG->EXT_FIFO 
00249 type type_reg_ext_fifo is record
00250         
00251         adr                                             : std_logic_vector( 6 downto 0 );       --! адрес 
00252         data                                    : std_logic_vector( 31 downto 0 );      --! данные 
00253         data_we                                 : std_logic;    --! 1 - запись в регистры 
00254         
00255 end record;
00256 
00257 --! REG->EXT_FIFO BACK 
00258 type type_reg_ext_fifo_back is record
00259         
00260         data                                    : std_logic_vector( 31 downto 0 );      --! данные 
00261         
00262 end record;
00263 
00264 
00265 --! PB_DATA_MASTER  
00266 type type_pb_master is record
00267         
00268         stb0                                    : std_logic;    --! 1 - строб команды и адреса 
00269         stb1                                    : std_logic;    --! 1 - строб данных 
00270         cmd                                             : std_logic_vector( 2 downto 0 );       --! команда       
00271         adr                                             : std_logic_vector( 31 downto 0 );      --! адрес
00272         data                                    : std_logic_vector( 63 downto 0 );      --! данные 
00273         
00274 end record;
00275 
00276 --! PB_DATA_SLAVE 
00277 type type_pb_slave is record
00278         
00279         stb0                                    : std_logic;    --! 1 - строб команды и адреса 
00280         stb1                                    : std_logic;    --! 1 - строб данных 
00281         data                                    : std_logic_vector( 63 downto 0 );      --! данные 
00282         dmar                                    : std_logic_vector( 1 downto 0 );       --! 1 - запрос DMA 
00283         irq                                             : std_logic;    --! 1 - запрос прерывания 
00284         
00285 end record;
00286 
00287 --! EXT_FIFO -> DISP
00288 type type_ext_fifo_disp is record
00289         
00290         adr                                             : std_logic_vector( 31 downto 0 );      --! адрес 
00291         data                                    : std_logic_vector( 63 downto 0 );      --! данные 
00292         data_we                                 : std_logic;    --! 1 - запись 
00293         request_wr                              : std_logic;    --! 1 - запрос на запись в регистр 
00294         request_rd                              : std_logic;    --! 1 - запрос на чтение из регистра 
00295         
00296 end record;
00297 
00298 --! EXT_FIFO -> DISP BACK 
00299 type type_ext_fifo_disp_back is record
00300         
00301         data                                    : std_logic_vector( 63 downto 0 );      --! данные 
00302         data_we                             : std_logic;        --! 1 - запись
00303         dmar                                    : std_logic_vector( 1 downto 0 );       --! 1 - запрос DMA 
00304         allow_wr                                : std_logic;    --! 1 - разрешение записи 
00305         irq                                             : std_logic;    --! 1 - запрос прерывания 
00306         
00307 end record;
00308 
00309 
00310 end package;