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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как посмотреть диаграмму работы при больших задержках от начала работы?, Значение счетчика тактов больше тысячи
vetal
сообщение May 25 2006, 08:16
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
А вдруг он еще не успеет измениться, а я уже его обрабатывать начну?


quartus timing analyzer укажет максимальное значение для частоты clk, в пределах которой ваша система будет работать стабильно.
Go to the top of the page
 
+Quote Post
Гвоздик
сообщение May 25 2006, 17:24
Сообщение #17


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

Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289



Спасибо, это я посмотрел, все в порядке. Однако, меня интересует другое: в первом (начиная сверху) процессе по фронту клока увеличивается счетчик, и во втором процессе мы тоже по фронту клока смотрим значение этого-же счетчика. Весь вопрос-то в том, что получается, что в один и тотже момент времени (фронт клока) мы приращаем и читаем счетчик. Не может ли так получиться, что мы будем читать его именно в момент его приращения (либо до или после)?

Код
architecture behavioural of lcd_controller is
signal lcd_rs_sig, lcd_rw_sig, lcd_e_sig : std_logic;
signal lcd_data_sig : std_logic_vector(7 downto 0);
signal clk_counter : std_logic_vector(31 downto 0) := X"00000000";
constant lcd_state_0 : std_logic_vector(31 downto 0) := X"00000000";
constant lcd_state_1 : std_logic_vector(31 downto 0) := X"0007A120";

begin
    process(reset, clk)
    begin
        if (reset = '0') then
            clk_counter <= X"00000000";
        else
            if (clk'event and clk = '1') then
                clk_counter <= clk_counter + X"00000001";
            end if;
        end if;
    end process;
    
    process(clk, clk_counter)
    begin
        if (clk'event and clk = '1') then
            case clk_counter(31 downto 0) is
                when lcd_state_0 =>                
                when lcd_state_1 =>                
                when others =>
            end case;
        end if;
    end process;
    
    lcd_rs <= lcd_rs_sig;
    lcd_rw <= lcd_rw_sig;
    lcd_e <= lcd_e_sig;
    lcd_data(7 downto 0) <= lcd_data_sig(7 downto 0);
end architecture behavioural;
Go to the top of the page
 
+Quote Post
ishergin
сообщение May 25 2006, 19:00
Сообщение #18


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

Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039



Цитата(Гвоздик @ May 25 2006, 23:24) *
Спасибо, это я посмотрел, все в порядке. Однако, меня интересует другое: в первом (начиная сверху) процессе по фронту клока увеличивается счетчик, и во втором процессе мы тоже по фронту клока смотрим значение этого-же счетчика. Весь вопрос-то в том, что получается, что в один и тотже момент времени (фронт клока) мы приращаем и читаем счетчик. Не может ли так получиться, что мы будем читать его именно в момент его приращения (либо до или после)?

Код
architecture behavioural of lcd_controller is
signal lcd_rs_sig, lcd_rw_sig, lcd_e_sig : std_logic;
signal lcd_data_sig : std_logic_vector(7 downto 0);
signal clk_counter : std_logic_vector(31 downto 0) := X"00000000";
constant lcd_state_0 : std_logic_vector(31 downto 0) := X"00000000";
constant lcd_state_1 : std_logic_vector(31 downto 0) := X"0007A120";

begin
    process(reset, clk)
    begin
        if (reset = '0') then
            clk_counter <= X"00000000";
        else
            if (clk'event and clk = '1') then
                clk_counter <= clk_counter + X"00000001";
            end if;
        end if;
    end process;
    
    process(clk, clk_counter)
    begin
        if (clk'event and clk = '1') then
            case clk_counter(31 downto 0) is
                when lcd_state_0 =>                
                when lcd_state_1 =>                
                when others =>
            end case;
        end if;
    end process;
    
    lcd_rs <= lcd_rs_sig;
    lcd_rw <= lcd_rw_sig;
    lcd_e <= lcd_e_sig;
    lcd_data(7 downto 0) <= lcd_data_sig(7 downto 0);
end architecture behavioural;


Насколько я понимаю такие действия должны конвейеризироваться (тьфу, выговорить не могу huh.gif ), тоесть для второго процесса значение счетчика будет запаздывать на один такт CLK

Сообщение отредактировал ishergin - May 25 2006, 19:01


--------------------
Программа выполнила невыполнимое и допустила недопустимое
Go to the top of the page
 
+Quote Post
vetal
сообщение May 25 2006, 20:07
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
Насколько я понимаю такие действия должны конвейеризироваться (тьфу, выговорить не могу (IMG:style_emoticons/default/huh.gif) ),

Это и есть конвейер(1 ступень - счетчик, 2 ступень- анализ значения).
Для упрожения восприятия достаточно представить тактовый сигнал периодической последовательностью дельта импульсов.
Go to the top of the page
 
+Quote Post
ishergin
сообщение May 25 2006, 20:22
Сообщение #20


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

Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039



Цитата(vetal @ May 26 2006, 02:07) *
Цитата
Насколько я понимаю такие действия должны конвейеризироваться (тьфу, выговорить не могу (IMG:style_emoticons/default/huh.gif) ),

Это и есть конвейер(1 ступень - счетчик, 2 ступень- анализ значения).
Для упрожения восприятия достаточно представить тактовый сигнал периодической последовательностью дельта импульсов.

Я обычно смотрю RTL схему в Симплифай, достаточно наглядно, правда УГО элементов буржуйское, непривык еще smile.gif


--------------------
Программа выполнила невыполнимое и допустила недопустимое
Go to the top of the page
 
+Quote Post
Гвоздик
сообщение May 29 2006, 16:46
Сообщение #21


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

Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289



Спасибо всем большое за науку, теперь все стало ясно и понятно!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:23
Рейтинг@Mail.ru


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