使用d触发器vhdl的循环移位
cyclic shift using d flip flop vhdl
我正在尝试使用 d 触发器作为组件来设计移位器..
触发器工作正常..但是移位器输出仍然未定义,我应该如何解决它?
这是移位代码
entity cyclicSR is -- 3-bit cyclic shift register
port (CLK: in bit; Qout: out bit_vector(1 to 3) ) ;
end cyclicSR;
architecture cyclicSR3 of cyclicSR is
component DFF
port (D, CLK: in bit; Q: out bit);
end component;
signal Q1, Q2, Q3: bit;
begin
FF1: DFF port map (Q3, CLK, Q1);
FF2: DFF port map (Q1, CLK, Q2);
FF3: DFF port map (Q2, CLK, Q3);
Qout <= Q1&Q2&Q3;
end cyclicSR3;
我应该给 q3 赋值吗??我该怎么做?
虽然您没有提供 Minimal, Complete, and Verifiable example 问题在您的代码示例中可见。
您需要提供一个初始值或'set'给至少一个触发器。否则它会愉快地循环移动所有零 - BIT 类型的默认值。
或者,当所有三个都为 0 时,您可以将输入塞入第一个触发器:
architecture jam of cyclicsr is
component dff is
port (
d, clk: in bit;
q: out bit
);
end component;
component or2 is
port (
a: in bit;
b: in bit;
y: out bit
);
end component;
component nor3 is
port (
a: in bit;
b: in bit;
c: in bit;
y: out bit
);
end component;
signal q1, q2, q3: bit;
signal inp: bit; -- added
signal all_zero: bit;
begin
ff1: dff port map (inp, clk, q1); -- was q3
ff2: dff port map (q1, clk, q2);
ff3: dff port map (q2, clk, q3);
qout <= q1 & q2 & q3;
orgate:
or2
port map (
a => all_zero,
b => q3,
y => inp
);
allzero:
nor3
port map (
a => q1,
b => q2,
c => q3,
y => all_zero
);
end architecture;
这给出了:
请注意,您可以使用初始值设置任何您想要的模式,或者使用单个反相器将移位寄存器变成 Johnson counter。
我正在尝试使用 d 触发器作为组件来设计移位器.. 触发器工作正常..但是移位器输出仍然未定义,我应该如何解决它? 这是移位代码
entity cyclicSR is -- 3-bit cyclic shift register
port (CLK: in bit; Qout: out bit_vector(1 to 3) ) ;
end cyclicSR;
architecture cyclicSR3 of cyclicSR is
component DFF
port (D, CLK: in bit; Q: out bit);
end component;
signal Q1, Q2, Q3: bit;
begin
FF1: DFF port map (Q3, CLK, Q1);
FF2: DFF port map (Q1, CLK, Q2);
FF3: DFF port map (Q2, CLK, Q3);
Qout <= Q1&Q2&Q3;
end cyclicSR3;
我应该给 q3 赋值吗??我该怎么做?
虽然您没有提供 Minimal, Complete, and Verifiable example 问题在您的代码示例中可见。
您需要提供一个初始值或'set'给至少一个触发器。否则它会愉快地循环移动所有零 - BIT 类型的默认值。
或者,当所有三个都为 0 时,您可以将输入塞入第一个触发器:
architecture jam of cyclicsr is
component dff is
port (
d, clk: in bit;
q: out bit
);
end component;
component or2 is
port (
a: in bit;
b: in bit;
y: out bit
);
end component;
component nor3 is
port (
a: in bit;
b: in bit;
c: in bit;
y: out bit
);
end component;
signal q1, q2, q3: bit;
signal inp: bit; -- added
signal all_zero: bit;
begin
ff1: dff port map (inp, clk, q1); -- was q3
ff2: dff port map (q1, clk, q2);
ff3: dff port map (q2, clk, q3);
qout <= q1 & q2 & q3;
orgate:
or2
port map (
a => all_zero,
b => q3,
y => inp
);
allzero:
nor3
port map (
a => q1,
b => q2,
c => q3,
y => all_zero
);
end architecture;
这给出了:
请注意,您可以使用初始值设置任何您想要的模式,或者使用单个反相器将移位寄存器变成 Johnson counter。