OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [ip/] [DMA/] [dma.IP] - Diff between revs 34 and 38

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 34 Rev 38
Line 1... Line 1...
#######################################################################
#######################################################################
##      File: dma.IP
##      File: dma.IP
##
##
##      Copyright (C) 2014-2016  Alireza Monemi
##      Copyright (C) 2014-2016  Alireza Monemi
##
##
##      This file is part of ProNoC 1.7.0
##      This file is part of ProNoC 1.8.0
##
##
##      WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
##      WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
##      MAY CAUSE UNEXPECTED BEHAIVOR.
##      MAY CAUSE UNEXPECTED BEHAIVOR.
################################################################################
################################################################################
 
 
$dma_multi_chan_wb = bless( {
$ipgen = bless( {
                              'parameters_order' => [
                  'description' => 'A wishbone bus round robin-based  multi channel DMA (no byte enable is supported yet). The DMA supports burst data transaction.',
                                                      'CHANNEL',
                  'modules' => {
                                                      'MAX_TRANSACTION_WIDTH',
                                 'dma_multi_chan_wb' => {},
                                                      'MAX_BURST_SIZE',
                                 'shared_mem_fifos' => {},
                                                      'FIFO_B',
                                 'dma_single_wb' => {}
                                                      'DEBUG_EN',
                               },
                                                      'Dw',
                  'plugs' => {
                                                      'S_Aw',
                               'clk' => {
                                                      'M_Aw',
                                          'type' => 'num',
                                                      'TAGw',
                                          'value' => 1,
                                                      'SELw'
                                          '0' => {
                                                    ],
                                                   'name' => 'clk'
 
                                                 },
 
                                          'clk' => {}
 
                                        },
 
                               'wb_slave' => {
 
                                               'value' => 1,
 
                                               'wb_slave' => {},
 
                                               'type' => 'num',
 
                                               '0' => {
 
                                                        'width' => 10,
 
                                                        'addr' => '0x9300_0000  0x93ff_ffff             Memory Controller',
 
                                                        'name' => 'wb_slave'
 
                                                      }
 
                                             },
 
                               'interrupt_peripheral' => {
 
                                                           'value' => 1,
 
                                                           'interrupt_peripheral' => {},
 
                                                           'type' => 'num',
 
                                                           '0' => {
 
                                                                    'name' => 'interrupt_peripheral'
 
                                                                  }
 
                                                         },
 
                               'wb_master' => {
 
                                                '1' => {
 
                                                         'name' => 'wb_wr'
 
                                                       },
 
                                                'wb_master' => {},
 
                                                'value' => 2,
 
                                                'type' => 'num',
 
                                                '0' => {
 
                                                         'name' => 'wb_rd'
 
                                                       }
 
                                              },
 
                               'reset' => {
 
                                            'type' => 'num',
 
                                            'reset' => {},
 
                                            'value' => 1,
 
                                            '0' => {
 
                                                     'name' => 'reset'
 
                                                   }
 
                                          }
 
                             },
                              'ports_order' => [
                              'ports_order' => [
                                                 'reset',
                                                 'reset',
                                                 'clk',
                                                 'clk',
                                                 's_dat_i',
                                                 's_dat_i',
                                                 's_sel_i',
                                                 's_sel_i',
Line 50... Line 91...
                                                 'm_wr_cyc_o',
                                                 'm_wr_cyc_o',
                                                 'm_wr_we_o',
                                                 'm_wr_we_o',
                                                 'm_wr_ack_i',
                                                 'm_wr_ack_i',
                                                 'irq'
                                                 'irq'
                                               ],
                                               ],
                              'module_name' => 'dma_multi_chan_wb',
                  'parameters_order' => [
                              'unused' => {
                                          'CHANNEL',
                                            'plug:wb_master[0]' => [
                                          'MAX_TRANSACTION_WIDTH',
                                                                     'dat_o',
                                          'MAX_BURST_SIZE',
                                                                     'bte_o',
                                          'FIFO_B',
                                                                     'rty_i',
                                          'DEBUG_EN',
                                                                     'err_i',
                                          'Dw',
                                                                     'tag_o'
                                          'S_Aw',
                                                                   ],
                                          'M_Aw',
                                            'plug:wb_master[1]' => [
                                          'TAGw',
                                                                     'bte_o',
                                          'SELw'
                                                                     'rty_i',
 
                                                                     'err_i',
 
                                                                     'tag_o',
 
                                                                     'dat_i'
 
                                                                   ],
                                                                   ],
                                            'plug:wb_slave[0]' => [
                  'ip_name' => 'dma',
                                                                    'bte_i',
                  'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/DMA/dma_multi_channel_wb.v',
                                                                    'rty_o',
 
                                                                    'tag_i',
 
                                                                    'err_o'
 
                                                                  ]
 
                                          },
 
                              'hdl_files' => [
                              'hdl_files' => [
                                               '/mpsoc/src_noc/main_comp.v',
                                               '/mpsoc/src_noc/main_comp.v',
                                               '/mpsoc/src_noc/arbiter.v',
                                               '/mpsoc/src_noc/arbiter.v',
                                               '/mpsoc/src_peripheral/DMA/dma_multi_channel_wb.v',
                                               '/mpsoc/src_peripheral/DMA/dma_multi_channel_wb.v',
                                               '/mpsoc/src_noc/flit_buffer.v'
                                               '/mpsoc/src_noc/flit_buffer.v'
                                             ],
                                             ],
                              'modules' => {
                  'version' => 4,
                                             'shared_mem_fifos' => {},
                  'category' => 'DMA',
                                             'dma_single_wb' => {},
                  'module_name' => 'dma_multi_chan_wb',
                                             'dma_multi_chan_wb' => {}
                  'parameters' => {
 
                                    'M_Aw' => {
 
                                                'redefine_param' => 1,
 
                                                'type' => 'Fixed',
 
                                                'default' => '32',
 
                                                'content' => '',
 
                                                'info' => 'Parameter',
 
                                                'global_param' => 'Parameter'
 
                                              },
 
                                    'CHANNEL' => {
 
                                                   'global_param' => 'Parameter',
 
                                                   'info' => 'Number of DMA channels.
 
In case there are multiple active DMA channels,  Each time one single active DMA channel get access to the wishbone bus using round robin arbiter. The Wishbone bus is granted for the winter channel until its FIFO is not full and the number of sent data is smaller than the burst size.',
 
                                                   'redefine_param' => 1,
 
                                                   'type' => 'Spin-button',
 
                                                   'default' => '1',
 
                                                   'content' => '1,32,1'
 
                                                 },
 
                                    'SELw' => {
 
                                                'info' => 'Parameter',
 
                                                'global_param' => 'Parameter',
 
                                                'redefine_param' => 1,
 
                                                'default' => '4',
 
                                                'type' => 'Fixed',
 
                                                'content' => ''
 
                                              },
 
                                    'Dw' => {
 
                                              'global_param' => 'Parameter',
 
                                              'info' => 'Wishbone bus Data size in bit',
 
                                              'redefine_param' => 1,
 
                                              'type' => 'Spin-button',
 
                                              'default' => '32',
 
                                              'content' => '8,1024,8'
 
                                            },
 
                                    'FIFO_B' => {
 
                                                  'global_param' => 'Parameter',
 
                                                  'info' => 'Channel  FIFO size in words.
 
All channels will share same FPGA block RAM. Hence, the total needed Block RAM words is the multiplication of channel num in channel FIFO size.
 
 
 
',
 
                                                  'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
 
                                                  'default' => '4',
 
                                                  'type' => 'Combo-box',
 
                                                  'redefine_param' => 1
 
                                                },
 
                                    'MAX_BURST_SIZE' => {
 
                                                          'global_param' => 'Parameter',
 
                                                          'info' => 'Maximum burst size in words.
 
The wishbone bus will be released each time one burst is completed or when the internal FIFO becomes full.  The bus will be released for one clock cycle. Then in case, there are other active channels, another active channel will get access to the bus using round robin arbiter.  This process will be continued until all desired data is transferred. ',
 
                                                          'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
 
                                                          'redefine_param' => 1,
 
                                                          'type' => 'Combo-box',
 
                                                          'default' => '256'
 
                                                        },
 
                                    'DEBUG_EN' => {
 
                                                    'content' => '',
 
                                                    'redefine_param' => 1,
 
                                                    'type' => 'Fixed',
 
                                                    'default' => '1',
 
                                                    'global_param' => 'Parameter',
 
                                                    'info' => 'Parameter'
 
                                                  },
 
                                    'TAGw' => {
 
                                                'default' => '3',
 
                                                'type' => 'Fixed',
 
                                                'redefine_param' => 1,
 
                                                'content' => '',
 
                                                'info' => 'Parameter',
 
                                                'global_param' => 'Parameter'
 
                                              },
 
                                    'S_Aw' => {
 
                                                'info' => 'Parameter',
 
                                                'global_param' => 'Parameter',
 
                                                'type' => 'Fixed',
 
                                                'default' => '8',
 
                                                'redefine_param' => 1,
 
                                                'content' => ''
 
                                              },
 
                                    'MAX_TRANSACTION_WIDTH' => {
 
                                                                 'default' => '10',
 
                                                                 'type' => 'Spin-button',
 
                                                                 'redefine_param' => 1,
 
                                                                 'content' => '2,32,1',
 
                                                                 'info' => 'The width of maximum transaction size in words.
 
The maximum data that can be sent via one DMA channel will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
 
                                                                 'global_param' => 'Parameter'
 
                                                               }
                                           },
                                           },
                              'gui_status' => {
                              'gui_status' => {
                                                'status' => 'ideal',
                                    'timeout' => 0,
                                                'timeout' => 0
                                    'status' => 'ideal'
                                              },
                                              },
                              'ports' => {
                              'ports' => {
 
                               'm_rd_sel_o' => {
 
                                                 'intfc_name' => 'plug:wb_master[0]',
 
                                                 'intfc_port' => 'sel_o',
 
                                                 'range' => 'SELw-1          :   0',
 
                                                 'type' => 'output'
 
                                               },
 
                               'm_rd_stb_o' => {
 
                                                 'intfc_name' => 'plug:wb_master[0]',
 
                                                 'intfc_port' => 'stb_o',
 
                                                 'range' => '',
 
                                                 'type' => 'output'
 
                                               },
 
                               'irq' => {
 
                                          'type' => 'output',
 
                                          'range' => '',
 
                                          'intfc_port' => 'int_o',
 
                                          'intfc_name' => 'plug:interrupt_peripheral[0]'
 
                                        },
 
                               'm_rd_ack_i' => {
 
                                                 'range' => '',
 
                                                 'type' => 'input',
 
                                                 'intfc_name' => 'plug:wb_master[0]',
 
                                                 'intfc_port' => 'ack_i'
 
                                               },
                                           's_cti_i' => {
                                           's_cti_i' => {
                                                          'intfc_name' => 'plug:wb_slave[0]',
 
                                                          'intfc_port' => 'cti_i',
                                                          'intfc_port' => 'cti_i',
 
                                              'intfc_name' => 'plug:wb_slave[0]',
                                                          'type' => 'input',
                                                          'type' => 'input',
                                                          'range' => 'TAGw-1     :   0'
                                                          'range' => 'TAGw-1     :   0'
                                                        },
                                                        },
                                           's_we_i' => {
                               'm_wr_we_o' => {
 
                                                'intfc_name' => 'plug:wb_master[1]',
 
                                                'intfc_port' => 'we_o',
                                                         'range' => '',
                                                         'range' => '',
                                                         'intfc_port' => 'we_i',
                                                'type' => 'output'
                                                         'type' => 'input',
 
                                                         'intfc_name' => 'plug:wb_slave[0]'
 
                                                       },
                                                       },
                                           's_cyc_i' => {
                               'm_rd_cyc_o' => {
                                                          'range' => '',
                                                          'range' => '',
                                                          'intfc_port' => 'cyc_i',
                                                 'type' => 'output',
                                                          'type' => 'input',
                                                 'intfc_name' => 'plug:wb_master[0]',
                                                          'intfc_name' => 'plug:wb_slave[0]'
                                                 'intfc_port' => 'cyc_o'
                                                        },
                                                        },
                                           's_dat_o' => {
                               'm_wr_dat_o' => {
                                                          'range' => 'Dw-1       :   0',
 
                                                          'intfc_port' => 'dat_o',
                                                          'intfc_port' => 'dat_o',
 
                                                 'intfc_name' => 'plug:wb_master[1]',
                                                          'type' => 'output',
                                                          'type' => 'output',
                                                          'intfc_name' => 'plug:wb_slave[0]'
                                                 'range' => 'Dw-1            :   0'
                                                        },
                                                        },
                                           's_addr_i' => {
                               's_cyc_i' => {
                                                           'range' => 'S_Aw-1     :   0',
                                              'range' => '',
                                                           'intfc_name' => 'plug:wb_slave[0]',
 
                                                           'type' => 'input',
                                                           'type' => 'input',
                                                           'intfc_port' => 'adr_i'
                                              'intfc_name' => 'plug:wb_slave[0]',
 
                                              'intfc_port' => 'cyc_i'
                                                         },
                                                         },
                                           'm_wr_cyc_o' => {
                               'm_wr_ack_i' => {
                                                             'type' => 'output',
                                                 'range' => '',
                                                             'intfc_port' => 'cyc_o',
                                                 'type' => 'input',
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'range' => ''
                                                 'intfc_port' => 'ack_i'
                                                           },
                                                           },
                                           'm_rd_dat_i' => {
                               'clk' => {
                                                             'range' => 'Dw-1           :  0',
                                          'intfc_port' => 'clk_i',
 
                                          'intfc_name' => 'plug:clk[0]',
                                                             'type' => 'input',
                                                             'type' => 'input',
                                                             'intfc_port' => 'dat_i',
                                          'range' => ''
                                                             'intfc_name' => 'plug:wb_master[0]'
 
                                                           },
                                                           },
                                           'm_rd_cti_o' => {
                                           'm_rd_cti_o' => {
                                                             'intfc_name' => 'plug:wb_master[0]',
                                                 'range' => 'TAGw-1          :   0',
                                                             'intfc_port' => 'cti_o',
 
                                                             'type' => 'output',
                                                             'type' => 'output',
                                                             'range' => 'TAGw-1          :   0'
                                                 'intfc_name' => 'plug:wb_master[0]',
 
                                                 'intfc_port' => 'cti_o'
                                                           },
                                                           },
                                           's_ack_o' => {
                               's_dat_o' => {
                                                          'range' => '',
 
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'intfc_port' => 'ack_o',
                                              'intfc_port' => 'dat_o',
 
                                              'range' => 'Dw-1       :   0',
                                                          'type' => 'output'
                                                          'type' => 'output'
                                                        },
                                                        },
                                           'clk' => {
                               's_sel_i' => {
                                                      'range' => '',
                                              'intfc_name' => 'plug:wb_slave[0]',
                                                      'intfc_name' => 'plug:clk[0]',
                                              'intfc_port' => 'sel_i',
 
                                              'range' => 'SELw-1     :   0',
 
                                              'type' => 'input'
 
                                            },
 
                               's_we_i' => {
                                                      'type' => 'input',
                                                      'type' => 'input',
                                                      'intfc_port' => 'clk_i'
                                             'range' => '',
 
                                             'intfc_port' => 'we_i',
 
                                             'intfc_name' => 'plug:wb_slave[0]'
 
                                           },
 
                               'm_wr_cyc_o' => {
 
                                                 'intfc_name' => 'plug:wb_master[1]',
 
                                                 'intfc_port' => 'cyc_o',
 
                                                 'range' => '',
 
                                                 'type' => 'output'
                                                    },
                                                    },
                                           'm_wr_cti_o' => {
                                           'm_wr_cti_o' => {
                                                             'range' => 'TAGw-1          :   0',
 
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'type' => 'output',
                                                 'intfc_port' => 'cti_o',
                                                             'intfc_port' => 'cti_o'
                                                 'range' => 'TAGw-1          :   0',
 
                                                 'type' => 'output'
                                                           },
                                                           },
                                           's_dat_i' => {
                               'reset' => {
                                                          'range' => 'Dw-1       :   0',
                                            'intfc_port' => 'reset_i',
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                            'intfc_name' => 'plug:reset[0]',
                                                          'type' => 'input',
                                                          'type' => 'input',
                                                          'intfc_port' => 'dat_i'
 
                                                        },
 
                                           'm_rd_stb_o' => {
 
                                                             'intfc_name' => 'plug:wb_master[0]',
 
                                                             'intfc_port' => 'stb_o',
 
                                                             'type' => 'output',
 
                                                             'range' => ''
                                                             'range' => ''
                                                           },
                                                           },
                                           's_sel_i' => {
                               'm_rd_dat_i' => {
                                                          'type' => 'input',
                                                          'type' => 'input',
                                                          'intfc_port' => 'sel_i',
                                                 'range' => 'Dw-1           :  0',
 
                                                 'intfc_port' => 'dat_i',
 
                                                 'intfc_name' => 'plug:wb_master[0]'
 
                                               },
 
                               's_stb_i' => {
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'range' => 'SELw-1     :   0'
                                              'intfc_port' => 'stb_i',
 
                                              'range' => '',
 
                                              'type' => 'input'
                                                        },
                                                        },
                                           'm_rd_we_o' => {
                               's_addr_i' => {
 
                                               'type' => 'input',
 
                                               'range' => 'S_Aw-1     :   0',
 
                                               'intfc_port' => 'adr_i',
 
                                               'intfc_name' => 'plug:wb_slave[0]'
 
                                             },
 
                               'm_rd_addr_o' => {
 
                                                  'range' => 'M_Aw-1          :   0',
                                                            'type' => 'output',
                                                            'type' => 'output',
                                                            'intfc_port' => 'we_o',
 
                                                            'intfc_name' => 'plug:wb_master[0]',
                                                            'intfc_name' => 'plug:wb_master[0]',
                                                            'range' => ''
                                                  'intfc_port' => 'adr_o'
                                                          },
                                                          },
                                           'm_wr_dat_o' => {
                               's_dat_i' => {
                                                             'range' => 'Dw-1            :   0',
                                                             'range' => 'Dw-1            :   0',
                                                             'intfc_name' => 'plug:wb_master[1]',
                                              'type' => 'input',
                                                             'type' => 'output',
                                              'intfc_name' => 'plug:wb_slave[0]',
                                                             'intfc_port' => 'dat_o'
                                              'intfc_port' => 'dat_i'
                                                           },
                                                           },
                                           'm_wr_stb_o' => {
                                           'm_wr_stb_o' => {
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'intfc_name' => 'plug:wb_master[1]',
                                                             'type' => 'output',
 
                                                             'intfc_port' => 'stb_o',
                                                             'intfc_port' => 'stb_o',
                                                             'range' => ''
 
                                                           },
 
                                           'reset' => {
 
                                                        'range' => '',
                                                        'range' => '',
                                                        'intfc_name' => 'plug:reset[0]',
                                                 'type' => 'output'
                                                        'type' => 'input',
 
                                                        'intfc_port' => 'reset_i'
 
                                                      },
                                                      },
                                           'm_wr_addr_o' => {
                                           'm_wr_addr_o' => {
                                                              'range' => 'M_Aw-1          :   0',
 
                                                              'intfc_port' => 'adr_o',
                                                              'intfc_port' => 'adr_o',
 
                                                  'intfc_name' => 'plug:wb_master[1]',
                                                              'type' => 'output',
                                                              'type' => 'output',
                                                              'intfc_name' => 'plug:wb_master[1]'
 
                                                            },
 
                                           'm_rd_addr_o' => {
 
                                                              'intfc_name' => 'plug:wb_master[0]',
 
                                                              'type' => 'output',
 
                                                              'intfc_port' => 'adr_o',
 
                                                              'range' => 'M_Aw-1          :   0'
                                                              'range' => 'M_Aw-1          :   0'
                                                            },
                                                            },
                                           'm_wr_sel_o' => {
                               'm_rd_we_o' => {
                                                             'range' => 'SELw-1          :   0',
 
                                                             'intfc_name' => 'plug:wb_master[1]',
 
                                                             'type' => 'output',
                                                             'type' => 'output',
                                                             'intfc_port' => 'sel_o'
 
                                                           },
 
                                           'm_wr_ack_i' => {
 
                                                             'range' => '',
                                                             'range' => '',
                                                             'intfc_port' => 'ack_i',
                                                'intfc_port' => 'we_o',
                                                             'type' => 'input',
                                                'intfc_name' => 'plug:wb_master[0]'
                                                             'intfc_name' => 'plug:wb_master[1]'
 
                                                           },
                                                           },
                                           's_stb_i' => {
                               's_ack_o' => {
 
                                              'intfc_port' => 'ack_o',
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'intfc_name' => 'plug:wb_slave[0]',
                                                          'intfc_port' => 'stb_i',
                                              'type' => 'output',
                                                          'type' => 'input',
 
                                                          'range' => ''
                                                          'range' => ''
                                                        },
                                                        },
                                           'm_wr_we_o' => {
                               'm_wr_sel_o' => {
                                                            'range' => '',
 
                                                            'intfc_name' => 'plug:wb_master[1]',
                                                            'intfc_name' => 'plug:wb_master[1]',
                                                            'type' => 'output',
 
                                                            'intfc_port' => 'we_o'
 
                                                          },
 
                                           'm_rd_cyc_o' => {
 
                                                             'range' => '',
 
                                                             'intfc_port' => 'cyc_o',
 
                                                             'type' => 'output',
 
                                                             'intfc_name' => 'plug:wb_master[0]'
 
                                                           },
 
                                           'm_rd_sel_o' => {
 
                                                             'range' => 'SELw-1          :   0',
 
                                                             'intfc_port' => 'sel_o',
                                                             'intfc_port' => 'sel_o',
                                                             'type' => 'output',
                                                 'range' => 'SELw-1          :   0',
                                                             'intfc_name' => 'plug:wb_master[0]'
                                                 'type' => 'output'
                                                           },
 
                                           'irq' => {
 
                                                      'type' => 'output',
 
                                                      'intfc_port' => 'int_o',
 
                                                      'intfc_name' => 'plug:interrupt_peripheral[0]',
 
                                                      'range' => ''
 
                                                    },
 
                                           'm_rd_ack_i' => {
 
                                                             'range' => '',
 
                                                             'type' => 'input',
 
                                                             'intfc_port' => 'ack_i',
 
                                                             'intfc_name' => 'plug:wb_master[0]'
 
                                                           }
 
                                         },
 
                              'parameters' => {
 
                                                'DEBUG_EN' => {
 
                                                                'info' => 'Parameter',
 
                                                                'content' => '',
 
                                                                'type' => 'Fixed',
 
                                                                'deafult' => '1',
 
                                                                'global_param' => 'Parameter',
 
                                                                'redefine_param' => 1
 
                                                              },
 
                                                'MAX_BURST_SIZE' => {
 
                                                                      'redefine_param' => 1,
 
                                                                      'type' => 'Combo-box',
 
                                                                      'content' => '\'2,4,8,16,32,64,128,256,512,1024,2048\'',
 
                                                                      'info' => 'Maximum burst size in words.
 
The wishbone bus will be released each time one burst is completed or when the internal FIFO becomes full.  The bus will be released for one clock cycle. Then in case, there are other active channels, another active channel will get access to the bus using round robin arbiter.  This process will be continued until all desired data is transferred. ',
 
                                                                      'global_param' => 'Parameter',
 
                                                                      'deafult' => '256'
 
                                                                    },
 
                                                'MAX_TRANSACTION_WIDTH' => {
 
                                                                             'global_param' => 'Parameter',
 
                                                                             'deafult' => '10',
 
                                                                             'content' => '2,32,1',
 
                                                                             'info' => 'The width of maximum transaction size in words.
 
The maximum data that can be sent via one DMA channel will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
 
                                                                             'type' => 'Spin-button',
 
                                                                             'redefine_param' => 1
 
                                                                           },
 
                                                'FIFO_B' => {
 
                                                              'redefine_param' => 1,
 
                                                              'global_param' => 'Parameter',
 
                                                              'deafult' => '4',
 
                                                              'info' => 'Channel  FIFO size in words.
 
All channels will share same FPGA block RAM. Hence, the total needed Block RAM words is the multiplication of channel num in channel FIFO size.
 
 
 
',
 
                                                              'content' => '\'2,4,8,16,32,64,128,256,512,1024,2048\'',
 
                                                              'type' => 'Combo-box'
 
                                                            },
 
                                                'Dw' => {
 
                                                          'redefine_param' => 1,
 
                                                          'deafult' => '32',
 
                                                          'global_param' => 'Parameter',
 
                                                          'info' => 'Wishbone bus Data size in bit',
 
                                                          'content' => '8,1024,8',
 
                                                          'type' => 'Spin-button'
 
                                                        },
 
                                                'TAGw' => {
 
                                                            'redefine_param' => 1,
 
                                                            'content' => '',
 
                                                            'info' => 'Parameter',
 
                                                            'type' => 'Fixed',
 
                                                            'deafult' => '3',
 
                                                            'global_param' => 'Parameter'
 
                                                          },
 
                                                'M_Aw' => {
 
                                                            'type' => 'Fixed',
 
                                                            'info' => 'Parameter',
 
                                                            'content' => '',
 
                                                            'global_param' => 'Parameter',
 
                                                            'deafult' => '32',
 
                                                            'redefine_param' => 1
 
                                                          },
 
                                                'CHANNEL' => {
 
                                                               'redefine_param' => 1,
 
                                                               'info' => 'Number of DMA channels.
 
In case there are multiple active DMA channels,  Each time one single active DMA channel get access to the wishbone bus using round robin arbiter. The Wishbone bus is granted for the winter channel until its FIFO is not full and the number od sent data is smaller than the burst size.',
 
                                                               'content' => '1,32,1',
 
                                                               'type' => 'Spin-button',
 
                                                               'global_param' => 'Parameter',
 
                                                               'deafult' => '1'
 
                                                             },
 
                                                'S_Aw' => {
 
                                                            'redefine_param' => 1,
 
                                                            'content' => '',
 
                                                            'info' => 'Parameter',
 
                                                            'type' => 'Fixed',
 
                                                            'global_param' => 'Parameter',
 
                                                            'deafult' => '8'
 
                                                          },
 
                                                'SELw' => {
 
                                                            'type' => 'Fixed',
 
                                                            'content' => '',
 
                                                            'info' => 'Parameter',
 
                                                            'global_param' => 'Parameter',
 
                                                            'deafult' => '4',
 
                                                            'redefine_param' => 1
 
                                                          }
 
                                              },
 
                              'plugs' => {
 
                                           'clk' => {
 
                                                      'clk' => {},
 
                                                      'type' => 'num',
 
                                                      '0' => {
 
                                                               'name' => 'clk'
 
                                                             },
 
                                                      'value' => 1
 
                                                    },
 
                                           'wb_master' => {
 
                                                            'value' => 2,
 
                                                            '0' => {
 
                                                                     'name' => 'wb_rd'
 
                                                                   },
 
                                                            '1' => {
 
                                                                     'name' => 'wb_wr'
 
                                                                   },
 
                                                            'wb_master' => {},
 
                                                            'type' => 'num'
 
                                                          },
 
                                           'interrupt_peripheral' => {
 
                                                                       'type' => 'num',
 
                                                                       'interrupt_peripheral' => {},
 
                                                                       '0' => {
 
                                                                                'name' => 'interrupt_peripheral'
 
                                                                              },
 
                                                                       'value' => 1
 
                                                                     },
 
                                           'wb_slave' => {
 
                                                           'type' => 'num',
 
                                                           'value' => 1,
 
                                                           'wb_slave' => {},
 
                                                           '0' => {
 
                                                                    'addr' => '0x9300_0000      0x93ff_ffff             Memory Controller',
 
                                                                    'name' => 'wb_slave',
 
                                                                    'width' => 10
 
                                                                  }
 
                                                         },
 
                                           'reset' => {
 
                                                        '0' => {
 
                                                                 'name' => 'reset'
 
                                                               },
 
                                                        'value' => 1,
 
                                                        'reset' => {},
 
                                                        'type' => 'num'
 
                                                      }
                                                      }
                                         },
                                         },
                              'description' => 'A round robin based  multi channel DMA (no byte enable). support burst data transaction.',
 
                              'ip_name' => 'dma',
 
                              'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/DMA/dma_multi_channel_wb.v',
 
                              'category' => 'DMA',
 
                              'system_h' => '#define ${IP}_STATUS_REG   (*((volatile unsigned int *) ($BASE)))
                              'system_h' => '#define ${IP}_STATUS_REG   (*((volatile unsigned int *) ($BASE)))
#define ${IP}_BURST_SIZE_ADDR_REG  (*((volatile unsigned int *) ($BASE+4)))
#define ${IP}_BURST_SIZE_ADDR_REG  (*((volatile unsigned int *) ($BASE+4)))
 
 
 
 
#define ${IP}_CHANNEL   ${CHANNEL}
#define ${IP}_CHANNEL   ${CHANNEL}
Line 422... Line 401...
void ${IP}_transfer (unsigned int channel, unsigned int read_start_addr,  unsigned int data_size, unsigned int write_start_addr){
void ${IP}_transfer (unsigned int channel, unsigned int read_start_addr,  unsigned int data_size, unsigned int write_start_addr){
        while ( ${IP}_channel_is_busy(channel)); // wait until DMA  channel is busy
        while ( ${IP}_channel_is_busy(channel)); // wait until DMA  channel is busy
         ${IP}_RD_START_ADDR_REG(channel)  = read_start_addr;
         ${IP}_RD_START_ADDR_REG(channel)  = read_start_addr;
         ${IP}_DATA_SIZE_ADDR_REG(channel)  =  data_size;
         ${IP}_DATA_SIZE_ADDR_REG(channel)  =  data_size;
         ${IP}_WR_START_ADDR_REG(channel)  = write_start_addr;
         ${IP}_WR_START_ADDR_REG(channel)  = write_start_addr;
}'
}',
 
                  'description_pdf' => '/mpsoc/src_peripheral/DMA/DMA.pdf',
 
                  'unused' => {
 
                                'plug:wb_slave[0]' => [
 
                                                        'rty_o',
 
                                                        'bte_i',
 
                                                        'err_o',
 
                                                        'tag_i'
 
                                                      ],
 
                                'plug:wb_master[0]' => [
 
                                                         'err_i',
 
                                                         'dat_o',
 
                                                         'rty_i',
 
                                                         'bte_o',
 
                                                         'tag_o'
 
                                                       ],
 
                                'plug:wb_master[1]' => [
 
                                                         'err_i',
 
                                                         'dat_i',
 
                                                         'rty_i',
 
                                                         'bte_o',
 
                                                         'tag_o'
 
                                                       ]
 
                              }
                            }, 'ip_gen' );
                            }, 'ip_gen' );

powered by: WebSVN 2.1.0

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