Добрый день! Есть процесс, который по клоку считыввает 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;
|