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

 
 
> вопрос по process(VHDL)
jamba1919
сообщение Jan 3 2010, 21:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 3-11-09
Пользователь №: 53 402



Добрый день!
Есть процесс, который по клоку считыввает 8 бит паралельного слова в регистр а затем часть данных перекидывает в промежуточный регистр. Как я представлял ПРОЦЕСС выполняется последовательно и полностью если не изменится список чувствительности(CLK).
Команда out_d <=freq_reg(0 TO 7); --test выводит данные на выход для теста. При моделировании выяснилось что данные на выходе появляются только при 3ем тактовом импульсе CLK, хотя по идее дожны бы сразу. Вобщем все как бы работает но с задержкой на 3 импульса.
В чем причина? такое ощущение что за эти три импульса схема дорабатывает ПРОЦЕСС. Но по описаниям ПРОЦЕСС всегда начинается с начала?. Поясните пожалуйста ситуацию

PROCESS (clk)
BEGIN
IF (clk'EVENT and clk = '1') THEN -- прищел фронт синлала клок
sr(7 DOWNTO 1) <= sr(6 DOWNTO 0); -- сдвигаем 64 разрядный регистр на 8 вверх,sr7>>MSB sr0>>LSB
sr(0) <= in_d; -- в освободившиюся позицыю sr(0) записываем 8 бит
-- проверяем на наличие конца записи 64 bits


--переписываем данные в промежуточный регистр
freq_reg(0 TO 7) <= sr(0);
freq_reg(8 TO 15) <= sr(1);
freq_reg(16 TO 23) <= sr(2);
freq_reg(24 TO 31) <= sr(3);

-

out_d <=freq_reg(8 TO 15); --test
END IF;



END PROCESS;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jamba1919
сообщение Jan 3 2010, 22:16
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 3-11-09
Пользователь №: 53 402



Вы все верно описали. Как я понял моя ошибка в том что я считал ПРОЦЕСС выполняющимся последовательно а он выполняется паралельно?
Написано что процесс это совокупность последовательных операторов. Если не сложно поясните эту ситуацию. В процессе все операторы выполняться тоже параллельно?
Go to the top of the page
 
+Quote Post
dspx
сообщение Jan 3 2010, 22:29
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Цитата(jamba1919 @ Jan 4 2010, 01:16) *
Вы все верно описали. Как я понял моя ошибка в том что я считал ПРОЦЕСС выполняющимся последовательно а он выполняется паралельно?
Написано что процесс это совокупность последовательных операторов. Если не сложно поясните эту ситуацию. В процессе все операторы выполняться тоже параллельно?


Сложно комментровать то что где-то у кого-то написано. Но смысл должен быть такой. Каждая строка в теле процесса вида
a<=b;
-это описание регистра, который по сигналу из списка чувствительности процесса(в данном случае по положительному фронту клока) сохранит на выходе a то что у него было на входе b. Если таких строк несколько, то каждую строку синтезатор заменит регистром. Поэтому конструкция
a1<=a0;
a2<=a1;
a3<=a2;
a4<=a3;
представляет собой 4 регистра соединенных в последовательную цепочку, где выход предыдущего регистра заведен на вход последующего, таким образом сигнал попавший на вход а0 окажется на выходе а4 через 4 такта.
Читайте документацию по VHDL c примерами smile.gif
Go to the top of the page
 
+Quote Post
jamba1919
сообщение Jan 4 2010, 20:01
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 3-11-09
Пользователь №: 53 402



Спасибо за помощь! Мозги прояснились.. Все таки это первый проект на плис а переход с Си требует некоторой ломкиsmile.gif
Go to the top of the page
 
+Quote Post



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

 


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


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