Вопросы по VHDL процесс

E

EDA_hg81

Guest
Моя программа с двух процессов являются следующие:Процесс (CLK)начинатьесли (CLK'EVENT и CLK = '1 '), тоПочтовый адрес: ADDR = "0000000000000000001";ELSIF (RESET = '1 '), тоПочтовый адрес: = "0000000000000000000";End If;CEN_ADDR <= ADDR;конце процесса;
Процесс (CLK)начинатьесли (CLK'EVENT и CLK = '1 '), тоесли (RESET = '0 '), тоRREG1: = DATA1;RREG2: = DATA2;RREG3: = DATA3;Reg1: = RREG1;Reg2: = RREG2;Reg3: = RREG3;OUT1 <= reg1;OUT2 <= reg2;OUT 3 <= reg3;End If;End If;конце процесса;O_DATA1 <= OUT1;O_DATA2 <= OUT2;O_DATA3 <= OUT3;Я хочу использовать двух частей текущей сделать следующие:

1) в настоящее время процесс CEN_ADDR и O_DATA1, O_DATA2 и O_DATA3.
2) Разошлите CEN_ADDR сразу, без задержек и O_DATA1, O_DATA2 и O_DATA3 с задержкой на два цикла.
Для O_DATA1, O_DATA2 и O_DATA3 может достигать шины данных в то же время, я положил их
от процесса.
Как вы думаете, O_DATA1, O_DATA2, O_DATA3 может быть обновлен правильно с входным data1,
DATA2 и DATA3?
Или O_DATA1, O_DATA2 и O_DATA3 являются отправить сразу, без обновления?Спасибо за вашу помощь.
Последняя редакция EDA_hg81 Май 04 2006 г. 1:47; редактировалось 2 раз в общей сложности

 
Извини приятель, но есть слишком много ошибок в коде, и они заключаются в следующем:

1-Вы Didn't определить переменные (ADDR в первом процессе) (reg1, reg2, reg3 во втором процессе).

2-в первом процессе, если вы внимательно следите за вашим кодом, вы всегда получите

ADDR <= "0000000000000000000", потому что процесс начнется снова на падающем края CLK и будет всегда соответствуют друг Клаус, если заявление.

Процесс (CLK)
начинать
если (CLK'EVENT и CLK = '1 '), то
Почтовый адрес: ADDR = "0000000000000000001";
еще
Почтовый адрес: = "0000000000000000000";
End If;
CEN_ADDR <= ADDR;
конце процесса;

3-переменные самое худшее для использования при работе с VHDL (Alwas использовать сигналы не переменные)

4-во втором и процесс Dont найти какой-либо смысл в первых трех строках после следующих трех линиях будет иметь приоритет над первым трем линиям.жаль, что ваш код, но это совершенно неправильно ... U необходимости Узнайте больше о VHDL и советую вам прочитать ( "VHDL для программируемой логики" Кевин skahil)

удачи

 
Так жаль.

Я могу изменить ее от исходной.

Если я использую только сигнал в процессе, не вопросы, время задержки?

 
Цитата:Процесс (CLK)

начинать

если (CLK'EVENT и CLK = '1 '), то

Почтовый адрес: ADDR = "0000000000000000001";

ELSIF (RESET = '1 '), то

Почтовый адрес: = "0000000000000000000";

End If;

CEN_ADDR <= ADDR;

конце процесса;
 
Сбросить следует '1 'для всех так жалко мою ошибку.

на первом процессе.Если я могу изменить его следующим, она собирается сделать его лучше?

Процесс (CLK)
начинать
если (CLK'EVENT и CLK = '1 '), то
Почтовый адрес: ADDR = "0000000000000000001";
ELSIF (CLK = '1 'и RESET = '1'), то
Почтовый адрес: = "0000000000000000000";
End If;
конце процесса;
CEN_ADDR <= ADDR;

Спасибо.

 
первый электрон у мальчика сказал, что переменные могут быть определены golbally и это неправильно переменные
...... может быть определена только в рамках процесса не за пределамиEDA_hg81 но вы можете изменить код следующим образом на первом процессе

Сигнал Почтовый адрес: std_logic_vector (18 DOWNTO 0) - это определяется после архитектура
- Декларация и прежде чем начать

Процесс (CLK, RESET)
начинать

если (RESET = '1 '), то
ADDR <= (другие => '0 ');
ELSIF (CLK'EVENT и CLK = '1 '), то
ADDR <= ADDR 1;
End If
конце процесса;
CEN_ADDR <= ADDR;

удачи
[/ QUOTE]

 

Welcome to EDABoard.com

Sponsor

Back
Top