После первого прочтения появилось несколько вопросов.
1) для чего в списке чувствительности указан сигнал A, если для него в последствии в теле оператора process не заданы условия?
"… process (clk20Mhz,reset,A) --процесс со списком чувствительности сигналов ..."
2) Если я провильно понимаю, то в компоненте с vhdl-кодом №1 присутствует точно такая же проблема, как и в статье «Элемент задержки на VHDL», как то: если фронт сигнала А придет раньше фронта сигнала clk20Mhz, то задержка будет немного больше, чем запланировано. И чем раньше придет фронт А, тем больше будет отклонение от заданной задержки — в большую сторону.
Но, тем не менее, огромный плюс вашего решения по сравнению с моим — это конечно простота. Обязательно им воспользуюсь.
Без временных диаграмм, действительно, сложно разобраться. В настоящий момент как раз осваиваю моделирование в ISE Webpack временных диаграмм. Но устройство испытано на отладочной плате Digilent Spartan 3, и задержка была ровно 100 нс с погрешностью измерения времени цифровым осциллографом (т.е. очень небольшой).
Эта задержка мне потребовалась для контроллера последовательного управления. Между временем установки данных на выходе и подачей синхросигнала как раз должно быть не менее 20 нс. Я выбрал 100 нс (почему бы и нет). И, недолго думая, разработал такую вот конструкцию. Но, совершенно очевидно, что в ней есть свои недостатки (хотя на практике она меня совершенно устроила).
Сейчас пытаюсь поближе рассмотреть конструкцию, предложенную nckma
1) для чего в списке чувствительности указан сигнал A, если для него в последствии в теле оператора process не заданы условия?
"… process (clk20Mhz,reset,A) --процесс со списком чувствительности сигналов ..."
2) Если я провильно понимаю, то в компоненте с vhdl-кодом №1 присутствует точно такая же проблема, как и в статье «Элемент задержки на VHDL», как то: если фронт сигнала А придет раньше фронта сигнала clk20Mhz, то задержка будет немного больше, чем запланировано. И чем раньше придет фронт А, тем больше будет отклонение от заданной задержки — в большую сторону.
Но, тем не менее, огромный плюс вашего решения по сравнению с моим — это конечно простота. Обязательно им воспользуюсь.
Эта задержка мне потребовалась для контроллера последовательного управления. Между временем установки данных на выходе и подачей синхросигнала как раз должно быть не менее 20 нс. Я выбрал 100 нс (почему бы и нет). И, недолго думая, разработал такую вот конструкцию. Но, совершенно очевидно, что в ней есть свои недостатки (хотя на практике она меня совершенно устроила).
Сейчас пытаюсь поближе рассмотреть конструкцию, предложенную nckma