|
Как посмотреть диаграмму работы при больших задержках от начала работы?, Значение счетчика тактов больше тысячи |
|
|
|
May 23 2006, 13:19
|
Частый гость
 
Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289

|
Хочу посмотреть на диаграмме работы значения сигналов, а значения счетчика тактов при этом довольно большие, отсчитывая от начального нуля (подачи питания) - на экране не помещаются такие значения. Что вы делаете в таком случае? Привожу отрывок кода, чтобы было понятней: Код process(reset,clk_counter) begin if (reset = '0') then lcd_rs_sig <= '0'; lcd_rw_sig <= '0'; lcd_e_sig <= '0'; lcd_data_sig <= X"00"; else case clk_counter(31 downto 0) is -- clear screen command (3 times sequentially) -- 15 ms is gone after reset when X"000F1B30" => lcd_rs_sig <= '0'; lcd_rw_sig <= '0'; lcd_e_sig <= '0'; lcd_data_sig <= X"30"; -- 1 us is gone after data setting when X"000F1B72" => lcd_rs_sig <= '0'; lcd_rw_sig <= '0'; lcd_e_sig <= '1'; lcd_data_sig <= X"30"; -- 2 us for data latching when X"000F1BF6" => lcd_rs_sig <= '0'; lcd_rw_sig <= '0'; lcd_e_sig <= '0'; lcd_data_sig <= X"30"; -- 5 ms delay after each clear screen command when X"00142506" => lcd_rs_sig <= '0'; lcd_rw_sig <= '0'; lcd_e_sig <= '1'; lcd_data_sig <= X"30"; end case; end if; end process;
|
|
|
|
|
 |
Ответов
|
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 23 2006, 13:19 iosifk Цитата(Гвоздик @ May 23 2006, 17:19) Хочу... May 23 2006, 13:28 des00 Самопроверяющийся тест бенч, спасет отца руской де... May 23 2006, 13:32 TailWind ЦитатаХочу посмотреть на диаграмме работы значения... May 23 2006, 13:35 Гвоздик Возможно я ввел кого-то в заблуждение, никакой тес... May 23 2006, 15:20 ishergin Цитата(Гвоздик @ May 23 2006, 21:20) Возм... May 23 2006, 17:29 bsp Тоже использую очень длинные последовательности пр... May 23 2006, 18:38 dxp Цитата(bsp @ May 24 2006, 01:38) Тоже исп... May 24 2006, 04:37 sazh Все правильно. Только не надо обижать Квартус. Это... May 24 2006, 06:24 Гвоздик To bsp: Спасибо огромное, стало моделироваться, хо... May 24 2006, 10:56 Jools Цитата(Гвоздик @ May 24 2006, 14:56) зака... May 24 2006, 11:07 ishergin Цитата(Гвоздик @ May 24 2006, 16:56) To b... May 24 2006, 15:24 Гвоздик Тогда еще с компилятором-синтезатором непонятное д... May 24 2006, 12:03 vetal 1. Ввести перед case(...) clk'event and clk =... May 24 2006, 12:19 Гвоздик Ух-ты, действительно предупреждения исчезли! В... May 25 2006, 08:01 vetal ЦитатаА вдруг он еще не успеет измениться, а я уже... May 25 2006, 08:16 vetal ЦитатаНасколько я понимаю такие действия должны ко... May 25 2006, 20:07 ishergin Цитата(vetal @ May 26 2006, 02:07) Цитата... May 25 2006, 20:22 Гвоздик Спасибо всем большое за науку, теперь все стало яс... May 29 2006, 16:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|