Strukturelle 4 bit-ring-Zähler mit D-flip-flop. VHDL / GHDL
Ich weiß nicht, wie dies mit den strukturellen Programmierung...
"Ein binärer Zähler (mit reset-signal) von 4-bits aus 4 D-flip-flops."
Wie die Verbindung in/outs?
Hier ist die entity-Deklarationen. Der Kern des Problems liegt in den letzten Zeilen.
--FFD
entity FFD is
port( CLK, D, reset : in STD_LOGIC;
Q : out STD_LOGIC
);
end FFD;
architecture behaviour of FFD is
begin
process(CLK, reset)
begin
if reset='1' then Q<='0';
elsif (clk'event and clk='1') then Q<=D;
else null;
end if;
end process;
end behaviour;
----------------------------------------------------------
--counter
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity counter is
port(clk : in std_logic;
reset : in std_logic;
count : out std_logic_vector(3 downto 0));
end entity counter;
architecture rtl of counter is
--
component FFD
port (CLK, D, reset : in STD_LOGIC;
Q : out STD_LOGIC);
end component;
signal q0,q1,q2: std_logic:='0';
signal q3: std_logic:='1';
begin
--
---
inst1: FFD port map (CLK=>clk, D=>q3, reset=>reset, Q=>q0);
inst2: FFD port map (CLK=>clk, D=>q0, reset=>reset, Q=>q1);
inst3: FFD port map (CLK=>clk, D=>q1, reset=>reset, Q=>q2);
inst4: FFD port map (CLK=>clk, D=>q2, reset=>reset, Q=>q3);
inst5: count<=q3&q2&q1&q0;
end architecture rtl;
Mein problem ist, in diesen letzten Zeilen.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es kein Problem mit den verbindungen (korrekt bilden einen ring-Zähler), aber du wirst nicht viel passieren. Nach dem reset, werden alle flip-flops enthalten, die null, die man in Umlauf um den ring mit jedem clock-Puls, aber nie tatsächlich dazu führen, eine änderung in den Ausgängen. Die Zuordnung eines default-Wert '1' für q3, wenn Sie deklarieren, wird das signal nicht durch den eigentlichen Ausgang des flip-flop über, sobald die Schaltung läuft (oder zu simulieren), und ist generell der falsche Weg zum initialisieren der hardware.
Die Sie benötigen, um sicherzustellen, dass wenn Sie behaupten das reset-signal, die hardware-übergänge in einem geeigneten Zustand sein (dh: ein bit setzen, alle anderen deaktivieren). Ein Weg dies zu tun wäre, um eine FF mit set Eingang für Q3. Wenn Sie nicht über eine flip-flop mit einem set (anstelle des reset -) signal, können Sie simulieren ein, indem Wechselrichter am ein-und Ausgang, die eine '1' zu werden getaktet, um Ihre ring-Zähler, wenn Sie "zurücksetzen". Sie kann auch einige fortgeschrittene Signale und Handwerk einen multiplexer für die D-Eingänge zu bauen, einen ladbaren Zähler, oder eine Vielzahl von anderen Lösungen...
Ich denke, das problem ist irgendwo anders.
Ich denke, die D-flip-flop-Ausgang Q haben sollte Anschluss Richtung als inout(oder Puffer) und nicht aus. Dies ist, da der Ausgang auch als Eingang. ich denke, das muss sorgfältig beobachtete, während Sie strukturelle Modellierung.
port (CLK, D, reset : in STD_LOGIC;
Q : inout STD_LOGIC);
aber bitte überprüfen, ich bin mir nicht sicher,
johnson-Zähler ist auch ring-Zähler finden Sie auf dieser VHDL-code für den Johnson-Zähler, die mit strukturellen Modellierung Stil