我试图在重置信号开始时重置电路中输入的值。
我正在用Xilinx在VHLD中编写Vivado。
signal Xin : signed(4 downto 0) := (others => '0');
...
stim_process: process
begin
Xin <= to_signed(1030,5); wait for clk_period;
Xin <= to_signed(1050,5); wait for clk_period;
Xin <= to_signed(1040,5); wait for clk_period;
Xin <= to_signed(1080,5); wait for clk_period;
Xin <= to_signed(1100,5); wait for clk_period;
Xin <= to_signed(0,5); wait until Rst= '1';
Xin <= to_signed(1030,5); wait for clk_period;
Xin <= to_signed(1050,5); wait for clk_period;
Xin <= to_signed(1040,5); wait for clk_period;
Xin <= to_signed(1080,5); wait for clk_period;
Xin <= to_signed(1100,5); wait for clk_period;
Xin <= to_signed(0,5);
wait;
end process;
通过这种方式,在分配完所有输入后发送复位信号,即可获得所需的结果。
问题是:
我找不到一种方法可以随时重置输入信号的顺序以及需要多少次。
答案 0 :(得分:1)
重写它以将序列中有关位置的信息保留为状态信息,例如:
process (rst, clk) is
begin
if rst = '1' then
State <= 0;
Xin <= to_signed(1030,5);
elsif rising_edge(clk) then
case State is
when 0 => Xin <= to_signed(1030,5);
when 1 => Xin <= to_signed(1050,5);
when 2 => Xin <= to_signed(1040,5);
when 3 => Xin <= to_signed(1080,5);
when 4 => Xin <= to_signed(1100,5);
when others => Xin <= to_signed(0,5);
end case;
State <= State + 1;
end if;
end process;
在rst
中进行的重置可以立即生效并重复执行。
根据您希望的时间,可能需要对上述内容进行较小的更新,但是按照上面的代码进行工作即可。
顺便说一句。将值1030转换为5位to_signed
的过程Xin
看起来很奇怪,因为1030的值至少需要12位才能用于带符号表示。