реклама на сайте
подробности

 
 
> MicroBlaze + DDR3 + my_IP на AXI, подключение к AXI
zuuuuk
сообщение May 5 2013, 15:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Добрый день.
У меня система на SPARTAN6 Mbz + MCB_DDR3 на шине AXI.
Я хочу подключить свой IP блок ко второму порту MCB и получить доступ к DDR3.
т.е. мой IP блок должен быть мастером. Для чтения данных из DDR3.

Подскажите,пожалуйста, какой-нибудь пример подключения своего IP к шине AXI.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jun 14 2013, 10:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



то данные из data_in на этом же цикле записываются в fifo.
цикле чего?sm.gif когда на врайте 1, то каждый такт клока данные записываются, и произойдет это по переднему фронту.

Вот что-то такое и было на тестовом проекте.
да я тоже планирую подразогнать, но сильно усугубляет ЛвИП, все же он много чего еще делает кроме передачи данных...

Зачем нужны регистры, если речь идет о прокачке 2 MB/sec ?
для удобства пользования.

я сделал модуль у которого с одной стороны доступ через акси, через регистры, пишеш в регистр, данные в фифо проваливаются, с другой стороны уже контакты к исполняемым устройствам и автомат управления.


мне когда я генерю такую штуку получаю такой файл, это уже помененный мной,
по умолчанию он регистрам дает имена reg_0 reg_1 ....
и адреса
00001
00010
00100
....

Код
// ------------------------------------------------------
  // Example code to read/write user logic slave model s/w accessible registers
  //
  // Note:
  // The example code presented here is to show you one way of reading/writing
  // software accessible registers implemented in the user logic slave model.
  // Each bit of the Bus2IP_WrCE/Bus2IP_RdCE signals is configured to correspond
  // to one software accessible register by the top level template. For example,
  // if you have four 32 bit software accessible registers in the user logic,
  // you are basically operating on the following memory mapped registers:
  //
  //    Bus2IP_WrCE/Bus2IP_RdCE   Memory Mapped Register
  //                     "1000"   C_BASEADDR + 0x0
  //                     "0100"   C_BASEADDR + 0x4
  //                     "0010"   C_BASEADDR + 0x8
  //                     "0001"   C_BASEADDR + 0xC
  //
  // ------------------------------------------------------

  assign
    slv_reg_write_sel = Bus2IP_WrCE[10:0],
    slv_reg_read_sel  = Bus2IP_RdCE[10:0],
    slv_write_ack     = Bus2IP_WrCE[0] || Bus2IP_WrCE[1] || Bus2IP_WrCE[2] || Bus2IP_WrCE[3] || Bus2IP_WrCE[4] || Bus2IP_WrCE[5] || Bus2IP_WrCE[6] || Bus2IP_WrCE[7] || Bus2IP_WrCE[8] || Bus2IP_WrCE[9]  || Bus2IP_WrCE[10],
    slv_read_ack      = Bus2IP_RdCE[0] || Bus2IP_RdCE[1] || Bus2IP_RdCE[2] || Bus2IP_RdCE[3] || Bus2IP_RdCE[4] || Bus2IP_RdCE[5] || Bus2IP_RdCE[6] || Bus2IP_RdCE[7] || Bus2IP_RdCE[8] || Bus2IP_RdCE[9]  || Bus2IP_RdCE[10];

  // implement slave model register(s)
  always @( posedge Bus2IP_Clk )
    begin

      if ( Bus2IP_Resetn == 1'b0 )
        begin
                    fifo_write_signal <= 0;
          command_reg <= 0;
          path_data_reg <= 0;
          start_step_time_reg <= 0;
          max_step_time_reg <= 0;
          min_step_time_reg <= 0;
          step_time_plus_reg <= 0;
          step_time_minus_reg <= 0;
          stop_path_length <= 0;
          step_len <= 0;
                    dir_len <= 0;
                    STATUS_ADDR <= MAIN_STATUS;
        end
      else
                begin
                    //сбрасываем флаг если нет сигнала записи в данные пути
                    if(slv_reg_write_sel !=  11'b0000000010)
                        fifo_write_signal <= 2'b00;    

                    case ( slv_reg_write_sel )
                        STATUS_REG_CE : //запись в регистр статуса - выбор регистра
                            begin
                                if ( Bus2IP_BE[0] == 1 ) //только младший байт
                                    STATUS_ADDR <=  Bus2IP_Data[STATUS_ADR_SIZE - 1 : 0];
                            end
                        COMMAND_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    command_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        PATH_DATA_REG_CE :
                            begin
                                for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                    if ( Bus2IP_BE[byte_index] == 1 )
                                        path_data_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                                
                                //по клоку надо выдать строб на запись в фифо
                                if(fifo_write_signal == 0)
                                    fifo_write_signal <= 2'b01;
                                //по следующему клоку надо снять строб, но не поставить заново если будет еще клок
                                else if (fifo_write_signal == 2'b01)
                                    fifo_write_signal <= 2'b10;
                                //когда убиреться разрешение на запись, флаг сброситься в 0    
                            end            
                        START_STEP_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    start_step_time_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        MAX_STEP_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    max_step_time_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        MIN_STEP_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    min_step_time_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        PLUS_STEP_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    step_time_plus_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        MINUS_STEP_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    step_time_minus_reg[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        STOP_PATH_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    stop_path_length[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        STEP_LEN_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    step_len[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        STEP_DIR_REG_CE :
                            for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 )
                                if ( Bus2IP_BE[byte_index] == 1 )
                                    dir_len[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8];
                        default :
                            begin
                            end
                    endcase
                end    
    end // SLAVE_REG_WRITE_PROC

  // implement slave model register read mux
  always @( slv_reg_read_sel or status_reg or command_reg or path_data_reg or start_step_time_reg or max_step_time_reg or min_step_time_reg or step_time_plus_reg or step_time_minus_reg or stop_path_length or step_len or dir_len)
    begin
      case ( slv_reg_read_sel )
        STATUS_REG_CE : slv_ip2bus_data <= status_reg;
        COMMAND_REG_CE : slv_ip2bus_data <= command_reg;
        PATH_DATA_REG_CE : slv_ip2bus_data <= path_data_reg;
        START_STEP_REG_CE : slv_ip2bus_data <= start_step_time_reg;
        MAX_STEP_REG_CE : slv_ip2bus_data <= max_step_time_reg;
        MIN_STEP_REG_CE : slv_ip2bus_data <= min_step_time_reg;
        PLUS_STEP_REG_CE : slv_ip2bus_data <= step_time_plus_reg;
        MINUS_STEP_REG_CE : slv_ip2bus_data <= step_time_minus_reg;
        STOP_PATH_REG_CE : slv_ip2bus_data <= stop_path_length;
        STEP_LEN_REG_CE : slv_ip2bus_data <= step_len;
                STEP_DIR_REG_CE : slv_ip2bus_data <= dir_len;
        default : slv_ip2bus_data <= 0;
      endcase

    end // SLAVE_REG_READ_PROC
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zuuuuk   MicroBlaze + DDR3 + my_IP на AXI   May 5 2013, 15:44
- - akorud   Цитата(zuuuuk @ May 5 2013, 17:44) Добрый...   May 5 2013, 18:47
|- - serg_k1   Цитата(akorud @ May 5 2013, 22:47) Лучше ...   Jun 7 2013, 10:11
|- - aabmail   Цитата(serg_k1 @ Jun 7 2013, 14:11) если ...   Jun 7 2013, 12:19
|- - serg_k1   Цитата(aabmail @ Jun 7 2013, 16:19) Могу ...   Jun 10 2013, 06:33
|- - aabmail   Цитата(serg_k1 @ Jun 10 2013, 10:33) было...   Jun 11 2013, 08:01
|- - serg_k1   Цитата(aabmail @ Jun 11 2013, 12:01) Откр...   Jun 11 2013, 09:35
|- - aabmail   Цитата(serg_k1 @ Jun 11 2013, 13:35) все ...   Jun 11 2013, 09:54
|- - akorud   Цитата(aabmail @ Jun 11 2013, 11:54) Ваш ...   Jun 11 2013, 10:52
||- - aabmail   Цитата(akorud @ Jun 11 2013, 14:52) Подде...   Jun 11 2013, 16:42
||- - serg_k1   Цитата500 слов раз в секунду или чаще? 32р 400 сло...   Jun 13 2013, 05:36
||- - aabmail   Цитата(serg_k1 @ Jun 13 2013, 09:36) 32р ...   Jun 13 2013, 09:56
||- - serg_k1   Цитата(aabmail @ Jun 13 2013, 13:56) Разъ...   Jun 13 2013, 11:52
||- - aabmail   Цитата(serg_k1 @ Jun 13 2013, 15:52) 32р ...   Jun 13 2013, 15:34
||- - serg_k1   Цитата(aabmail @ Jun 13 2013, 19:34) 3. к...   Jun 14 2013, 06:42
|- - serg_k1   Цитата(aabmail @ Jun 11 2013, 13:54) Ваш ...   Jun 11 2013, 12:11
- - Golikov A.   А что если так. Делаете микроблайз в нем включае...   Jun 10 2013, 10:44
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 14:44) А...   Jun 10 2013, 12:24
- - Golikov A.   так вы что хотите написать свой акси конектор что ...   Jun 10 2013, 14:07
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 18:07) т...   Jun 11 2013, 06:43
- - Golikov A.   я делаю визардом из XPS компонент, обычно с верило...   Jun 12 2013, 07:42
- - Golikov A.   на гигабитном езернете, в крайне не оптимальном ре...   Jun 13 2013, 17:19
- - Golikov A.   такс... ФИФО это компонент с входом и выходом пар...   Jun 14 2013, 07:00
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 11:00) Д...   Jun 14 2013, 07:54
|- - akorud   Цитата(serg_k1 @ Jun 14 2013, 09:54) созд...   Jun 16 2013, 20:54
|- - aabmail   Цитата(akorud @ Jun 17 2013, 00:54) Ну та...   Jun 17 2013, 10:09
|- - akorud   Цитата(aabmail @ Jun 17 2013, 12:09) Обыч...   Jun 17 2013, 13:26
- - aabmail   ЦитатаКогда на входе строба записи появляется един...   Jun 14 2013, 08:04
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 14:36) я...   Jun 14 2013, 12:53
- - Golikov A.   сдается мне у кого-то полная путаница в голове.. ...   Jun 14 2013, 13:59
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) ...   Jun 14 2013, 14:11
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 17 2013, 13:25
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 19 2013, 12:21
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 14:21) помо...   Jun 19 2013, 13:25
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 17:25) Если ...   Jun 19 2013, 14:05
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 16:05) т.е....   Jun 19 2013, 14:27
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 18:27) BE - ...   Jun 20 2013, 13:53
|- - akorud   Не соглашусь, ну на то тут и форум чтобы можно был...   Jun 20 2013, 15:51
||- - TimeToSleep   Цитата(akorud @ Jun 20 2013, 16:51) Зачем...   Feb 12 2016, 07:16
||- - akorud   Цитата(TimeToSleep @ Feb 12 2016, 08:16) ...   Feb 13 2016, 15:45
||- - TimeToSleep   Цитата(akorud @ Feb 13 2016, 16:45) Если ...   Feb 17 2016, 14:34
||- - TimeToSleep   Цитата(akorud @ Jun 19 2013, 15:27) BE - ...   Feb 18 2016, 07:40
||- - akorud   Цитата(TimeToSleep @ Feb 18 2016, 08:40) ...   Feb 22 2016, 10:43
||- - TimeToSleep   Цитата(akorud @ Feb 22 2016, 11:43) 1. По...   Feb 25 2016, 07:00
||- - akorud   Цитата(TimeToSleep @ Feb 25 2016, 08:00) ...   Feb 25 2016, 09:48
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 10:48) Если ...   Feb 25 2016, 12:40
|||- - akorud   Да, оно.   Feb 25 2016, 18:58
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 12:48) Далее...   Feb 26 2016, 07:11
||- - akorud   Цитата(TimeToSleep @ Feb 26 2016, 08:11) ...   Feb 26 2016, 10:17
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 9 2016, 06:04
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 11 2016, 06:13
|- - akorud   Цитата(serg_k1 @ Jun 20 2013, 15:53) спас...   Jun 21 2013, 06:58
- - Golikov A.   да ничего там не условно. В модуль входит шина АК...   Jun 17 2013, 19:47
- - Golikov A.   чет я не понимаю. вроде бы 2 задачи 1. У вас модул...   Jun 20 2013, 05:01
|- - akorud   Цитата(Golikov A. @ Jun 20 2013, 07:01) ....   Jun 20 2013, 08:18
- - Golikov A.   каким мастером? как можно управлять мастером? я т...   Jun 20 2013, 10:13
- - Golikov A.   вообщем это делается так. Есть микроблайз с ДДР, ...   Jun 20 2013, 15:02
- - Golikov A.   Да я что-то уже путаюсь. Мне кажется что топикстар...   Jun 20 2013, 18:41
|- - serg_k1   Цитата(Golikov A. @ Jun 20 2013, 22:41) Д...   Jun 24 2013, 05:43
|- - akorud   Как то все очень запутано - кажется ТС пробует ...   Jun 24 2013, 10:03
|- - serg_k1   Цитата(akorud @ Jun 24 2013, 14:03) Как т...   Jun 24 2013, 14:03
||- - akorud   Цитата(serg_k1 @ Jun 24 2013, 16:03) я на...   Jun 24 2013, 14:38
||- - serg_k1   Цитата(akorud @ Jun 24 2013, 18:38) Да, о...   Jun 25 2013, 11:14
||- - serg_k1   Цитата(serg_k1 @ Jun 25 2013, 15:14) или ...   Jun 25 2013, 12:29
||- - akorud   Цитата(serg_k1 @ Jun 25 2013, 13:14) .tx_...   Jun 25 2013, 13:28
|- - TimeToSleep   Цитата(akorud @ Jun 24 2013, 11:03) Я бы ...   Feb 19 2016, 12:55
- - TimeToSleep   Здравствуйте, akorud . Тема достаточно забытая, н...   Feb 11 2016, 14:20
- - TimeToSleep   Подскажите, пожалуйста, сталкивался ли кто-то с те...   Mar 18 2016, 06:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01923 секунд с 7
ELECTRONIX ©2004-2016