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

 
 
> DDRIII+HPCII глюки или руки?
billidean
сообщение Feb 23 2011, 05:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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, по фронту или по спаду бурста.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - warrior-2001   При генерации контроллера отключите precharge. Дан...   Mar 2 2011, 15:35
|- - billidean   Цитата(warrior-2001 @ Mar 2 2011, 18...   Mar 3 2011, 13:34
|- - warrior-2001   Цитата(billidean @ Mar 3 2011, 16:34) Сег...   Mar 4 2011, 12:36
|- - billidean   Цитата(warrior-2001 @ Mar 4 2011, 16...   Mar 18 2011, 14:46
|- - warrior-2001   Цитата(billidean @ Mar 18 2011, 17:46) А ...   Mar 21 2011, 12:53
- - 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


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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 10:38
Рейтинг@Mail.ru


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