Zuerst habe ich eine ähnliche Frage im CPLD/FPGA-Benutzerforum gepostet, sie scheinen jedoch nicht so aktiv zu sein wie StackExchange. Ich hoffe also, dass es mir helfen wird, mit CPLDs loszulegen, und dass es auch nützliche Informationen für andere Anfänger sein wird.
Nach ein wenig Recherche war ich überzeugt, mich auf Xilinx CPLDs zu konzentrieren, da es nach Meinung einiger Leute studentenfreundlicher zu sein scheint und der Anbieter kostenlose Software anbietet. Ich habe weder ein Entwicklungsboard noch den Chip - versuche es nur vor dem Kauf erstmal zu simulieren. Nachdem ich also die ISE WebPack- Software heruntergeladen hatte, begann ich mit meinem ersten Tutorial . Ich bin bei Schritt 5 "Implementieren eines neuen Top-Level-Designs" hängen geblieben. Es passt nicht zum Design:
Das Protokoll gibt mir die Antwort auf meinen Fehler, aber ich weiß wirklich nicht, was ich als nächstes tun soll. Obwohl ich alle Schritte aus dem Tutorial befolgt habe, fehlt mir wahrscheinlich etwas? Ich habe versucht, IO im Grundriss zu planen und IO-Pins zuzuweisen, aber es hat nicht geholfen. Irgendwelche Ideen? Irgendwelche anderen guten Tutorials für absolute Anfänger?
Hier ist das Skript:
Es gibt nichts in der Architektur Ihres Designs, also wird es zu keinen Gates synthetisiert. Ohne Gates ist nichts mit den Ausgangssignalen zu verbinden, daher werden die Ausgangssignale gelöscht. Ebenso werden die Eingangssignale gelöscht, weil sie nichts verbinden. Daher gab es keine Stifte und keine Tore, die in das Design passen mussten. Ich bin mir ziemlich sicher, dass die Warnungen aus dem Syntheseschritt Ihnen dies gesagt hätten.
Das Beispielprojekt sollte den richtigen Code enthalten.
Diese Seite weist darauf hin, das Projekt jc2_abl zu öffnen. Dies finden Sie entweder durch Navigieren zu Ihrem ISEExamples-Verzeichnis in Ihrer ISE-Installation (was sie Ihnen empfehlen, finden Sie in <Install Dir>/14.5/ISE_DS/ISE/ISEexamples
) oder durch File -> Open Example
.
Meine spezielle Installation von ISE hatte kein jc2_abl als Beispiel, aber jc2_vhd, das den vhd-Code für das Beispiel enthält, wurde hier kopiert:
library IEEE;
use IEEE.std_logic_1164.all; -- defines std_logic types
entity jc2_top is
port (
left : in std_logic; -- Active-low switch #3 (left)
right : in std_logic; -- Active-low switch #0 (right)
STOP : in std_logic; -- Active-low switch #2
CLK : in std_logic;
Q : out std_logic_vector (3 downto 0) -- Active-low LEDs
);
--To pass pin location constraints from this HDL source file rather than
--through a User Constraints Format (UCF) file, uncomment the six attribute
--declarations below and remove jc2_top.ucf from the project.
-- attribute pin_assign : string;
-- attribute pin_assign of clk : signal is "A7";
-- attribute pin_assign of left : signal is "G7";
-- attribute pin_assign of right : signal is "B2";
-- attribute pin_assign of stop : signal is "F2";
-- attribute pin_assign of q : signal is "G5 F6 C6 B4";
end jc2_top;
architecture jc2_top_arch of jc2_top is
signal DIR : std_logic := '0'; -- Left=1, Right=0
signal RUN : std_logic := '0';
signal Q_int : std_logic_vector (3 downto 0) := "0000"; -- Internal signal driving Q output; Active-low LEDs
begin
process (CLK, right, left, STOP, RUN, DIR, Q_int)
begin
if (CLK'event and CLK = '1') then -- CLK rising edge
-- DIR register:
if (right = '0') then
DIR <= '0';
elsif (left = '0') then
DIR <= '1';
end if;
-- RUN register:
if (STOP = '0') then
RUN <= '0';
elsif (left = '0' or right = '0') then
RUN <= '1';
end if;
-- Counter section:
if (RUN = '1') then
if (DIR = '1') then
Q_int(3 downto 1) <= Q_int(2 downto 0); -- Shift lower bits (Left Shift)
Q_int(0) <= not Q_int(3); -- Circulate inverted MSB to LSB
else
Q_int(2 downto 0) <= Q_int(3 downto 1); -- Shift upper bits (Right Shift)
Q_int(3) <= not Q_int(0); -- Circulate inverted LSB to MSB
end if;
end if;
end if;
Q <= Q_int;
end process;
end jc2_top_arch;
Joe Hass
fru1tbat
Nazar