|
MicroBlaze + DDR3 + my_IP на AXI, подключение к AXI |
|
|
|
 |
Ответов
|
Jun 14 2013, 10:36
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
то данные из data_in на этом же цикле записываются в fifo.цикле чего?  когда на врайте 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
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|