![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Как в VHDL тестбенче сформировать непериодическую (но не случайную, а вполне определённую) последовательность импульсов?..
Метод "в лоб"
не работает - на выходе сразу получается последняя заданная константа (в данном случае - нуль)
[x]
Метод "в лоб"
TestPin <= '0' after 65ns;
TestPin <= '1' after 100ns;
TestPin <= '0' after 135ns;
не работает - на выходе сразу получается последняя заданная константа (в данном случае - нуль)
[x]
no subject
Date: 2012-01-19 02:20 pm (UTC)-> цикл + задержку через генератор случайных чисел (пардон за терминологию, я на такие темы думаю только по аглицки)
no subject
Date: 2012-01-19 02:25 pm (UTC)wait for 10 ns;
PSeg <= "011";
wait for 20 ns;
PSeg <= "000";
?
Я не могу воспользоваться ЭТИМ подходом, потому что в одном и том же блоке.. ээ.. впрочем, может и не в одном. Короче, надо сформировать последовательность битов, пропихнуть их в некую машинку - но сама машинка тоже в разные моменты времени получает разные константы. И чтоб в этом не зарыться, я думал сначала описать битовую последовательность, а ниже её саму машинку. Ан нет, не получается... в VHDL я, скажем так, не слишком силён. Но надо.
no subject
Date: 2012-01-19 02:28 pm (UTC)no subject
Date: 2012-01-19 05:19 pm (UTC)Если вам нужно, например, три сигнала, то можно поступить так (как вариант):
signal s1,s2,s3 : std_logic;
...
s1 <= '0';
wait for 10 ns;
s1 <= '1';
wait for 50 ns;
s1 < = '0';
s2 <= '1';
wait for 10 ns;
s2 <= '0';
wait for 50 ns;
s2 < = '1';
s3 <= '0';
wait for 10 ns;
s3 <= '1';
wait for 50 ns;
s3 < = '0';
Или, например, вот так:
signal Bit_field : std_logic_vector(2 downto 0);
signal s1,s2,s3 : std_logic;
...
Bit_field <= "000";
wait for 20 ns;
Bit_field <= "010";
wait for 10 ns;
Bit_field <= "110";
s1 <= Bit_field(0);
s2 <= Bit_field(1);
s3 <= Bit_field(2);
no subject
Date: 2012-01-19 05:24 pm (UTC)no subject
Date: 2012-01-19 05:20 pm (UTC)G: process
begin
G0 <= '1' after 5 ns,
'0' after 10 ns,
'1' after 15 ns,
'0' after 20 ns;
G1 <= '1' after 5 ns,
'0' after 15 ns;
wait;
end process G;
no subject
Date: 2012-01-19 05:22 pm (UTC)