| |
DDRIII+HPCII глюки или руки? |
|
|
|
|
Feb 23 2011, 05:51
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Всех с праздником, мужики. Уже неделю сижу с проблемой:: есть код (примерный): Код ... ... write_data_in : in std_logic_vector(63 downto 0); ... read_data_out : out std_logic_vector(63 downto 0); rdata_valid_out : out std_logic := '0'; ... ...
local_size <= "010";
process( phy_clk ) variable var_local_address : std_logic_vector(23 downto 0) := ( others => '0' ); variable counter_write : integer := 0; variable counter_read_req : integer := 0; variable counter_read_data : integer := 0; begin
case( step ) is --- when step_pre => if( start_write == '1' ) then counter_write := 100; step := step_write_first; end if; if( start_read == '1' ) then counter_read_req := 100; counter_read_data := 100; step := step_read; end if; local_burstbegin <= '0'; local_write_req <= '0'; local_read_req <= '0'; local_address <= ( others => '0' ); --начинаю с 0-го адреса var_local_address <= ( others => '0' ); --начинаю с 0-го адреса --- when step_write_first => if( counter_write = 0 ) then local_address <= ( others => '0' ); local_write_req <= '0'; local_burstbegin <= '0'; step := step_pre; else if( local_ready = '1' ) then local_address <= var_local_address; local_write_req <= '1'; local_burstbegin <= '1'; local_write_data(63 downto 0) <= write_data_in(63 downto 0); step := step_write_second; end if; end if; --- when step_write_second => local_burstbegin <= '0'; counter_write := counter_write - 1; var_local_address <= (инкремент var_local_address) step := step_write_first; --- when step_read => if( counter_read_req = 0 ) then local_address <= ( others => '0' ); local_read_req <= '0'; local_burstbegin <= '0'; step := step_pre; else if( local_ready = '1' ) then local_address <= var_local_address; local_read_req <= '1'; local_burstbegin <= '1'; var_local_address <= (инкремент var_local_address) counter_read_req := counter_read_req - 1; end if; end if; if( counter_read_data = 0 ) then rdata_valid_out <= '0'; step := step_pre; else if( local_rdata_valid = '1' ) then rdata_valid_out <= '1'; read_data_out(63 downto 0) <= local_rdata(63 downto 0); counter_read_data := counter_read_data - 1; else rdata_valid_out <= '0'; end if; end if; end case;
end process; На железе (Stratix IV) получаю данные read_data_out правильные процентов на 99, а 1% битые. Почему так??? Не совсем вник в то, когда менять адрес относительно сигнала local_burstbegin, по фронту или по спаду бурста.
|
|
|
|
|
|
|
 |
Ответов
|
|
Mar 3 2011, 13:34
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата(warrior-2001 @ Mar 2 2011, 18:35)  При генерации контроллера отключите precharge. Данная опция подробно описана в мануале. Сегодня пробовал отключить эту галочку при насчтройке контроллера DDR3. В результате данные записываются битые на 50 процентов. Вернул обратно - все ок.
|
|
|
|
|
|
|
|
Mar 4 2011, 12:36
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(billidean @ Mar 3 2011, 16:34)  Сегодня пробовал отключить эту галочку при насчтройке контроллера DDR3. В результате данные записываются битые на 50 процентов. Вернул обратно - все ок. Думаю, что после отключения "галочки" поменялась времянка. Вообще основные мучения с ddr/ddr2 у меня были связаны с шиной Avalon. Как только выяснилось это - http://www.alteraforum.com/forum/showthrea....oss=burstbegin , и ещё ряд глюков был устранён Альтерой - всё проблемы ушли. Физический интерфейс не может так глючить - обычно проблемы либо в таймингах либо в локальной шине. При наличии свободного места в ПЛИС контроллеры памяти обычно без проблем запускаются на максимальных скоростях.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
|
|
|
Mar 18 2011, 14:46
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата(warrior-2001 @ Mar 4 2011, 16:36)  ... и ещё ряд глюков был устранён Альтерой - всё проблемы ушли. А можете уточнить, какие именно глюки и кто именно устранял???
|
|
|
|
|
|
|
|
Mar 21 2011, 12:53
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(billidean @ Mar 18 2011, 17:46)  А можете уточнить, какие именно глюки и кто именно устранял??? Конкретные глюки описаны в err data на ddr/dd2/dd3 контроллеры. Устраняет разработчик - Altera. Проверил свои проекты - local_size меняется от 1 до 32. 64 пока не использовал. Если при отключении чего-то появляются ошибки - я бы копал в эту сторону. Повторюсь, при генерации оставляю precharge на откуп Altera.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
|
Сообщений в этой теме
billidean DDRIII+HPCII глюки или руки? Feb 23 2011, 05:51 billidean Подскажите плз, правильно ли я представляю себе ци... Feb 23 2011, 16:04 billidean Спасибо ОГРОМНОЕ замечательному форуму за такую пл... Feb 24 2011, 14:31 dinam Сочувствую, сам не могу понять в чем проблема в мо... Feb 25 2011, 03:11 dvladim Цитата(billidean @ Feb 24 2011, 17:31) Сп... Feb 25 2011, 17:44 billidean В документации на HPCII говорится, что использоват... Mar 2 2011, 13:48 billidean при local_size=4 и манипулированием сигналами prec... Mar 19 2011, 13:03 novartis У меня коллега на работе тоже с такой проблемой му... Mar 19 2011, 14:58 nmurzin Объясните пожалуйста,
а зачем вобще задирать local... Mar 22 2011, 15:46 warrior-2001 Цитата(nmurzin @ Mar 22 2011, 18:46) ...
... Mar 23 2011, 08:48 nmurzin В DataSheet на HPC2 на странице 12 есть таблица ... Mar 23 2011, 09:28 billidean Цитата(warrior-2001 @ Mar 21 2011, 16... Mar 23 2011, 13:57 warrior-2001 Цитата(billidean @ Mar 23 2011, 16:57) ..... Mar 23 2011, 14:55 Sergeyrtf У меня с DDR2 тоже подобные проблемы - в тестовом ... Apr 1 2011, 08:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|