|
Как посмотреть диаграмму работы при больших задержках от начала работы?, Значение счетчика тактов больше тысячи |
|
|
|
May 25 2006, 17:24
|
Частый гость
 
Группа: Свой
Сообщений: 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;
|
|
|
|
|
May 25 2006, 19:00
|
Частый гость
 
Группа: Свой
Сообщений: 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; Насколько я понимаю такие действия должны конвейеризироваться (тьфу, выговорить не могу  ), тоесть для второго процесса значение счетчика будет запаздывать на один такт CLK
Сообщение отредактировал ishergin - May 25 2006, 19:01
--------------------
Программа выполнила невыполнимое и допустила недопустимое
|
|
|
|
|
May 25 2006, 20:22
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039

|
Цитата(vetal @ May 26 2006, 02:07)  Цитата Насколько я понимаю такие действия должны конвейеризироваться (тьфу, выговорить не могу (IMG:style_emoticons/default/huh.gif) ), Это и есть конвейер(1 ступень - счетчик, 2 ступень- анализ значения). Для упрожения восприятия достаточно представить тактовый сигнал периодической последовательностью дельта импульсов. Я обычно смотрю RTL схему в Симплифай, достаточно наглядно, правда УГО элементов буржуйское, непривык еще
--------------------
Программа выполнила невыполнимое и допустила недопустимое
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|