Primero, publiqué una pregunta similar en el foro de usuarios de CPLD/FPGA, sin embargo, no parecen ser tan activos como StackExchange. Por lo tanto, espero que me ayude a ponerme en marcha con los CPLD y que también sea información útil para otros principiantes.
Después de investigar un poco, me convencí de centrarme en los CPLD de Xilinx porque, en opinión de algunas personas, parece ser más amigable para los estudiantes y el proveedor ofrece software gratuito. No tengo una placa de desarrollo o el chip, solo trato de simular primero antes de comprar. Entonces, después de descargar el software ISE WebPack , comencé mi primer tutorial . Me quedé atascado en el paso 5 "Implementación de un nuevo diseño de nivel superior". No "encaja" en el diseño:
El registro me da la respuesta a mi error, pero realmente no sé qué hacer a continuación. Aunque seguí todos los pasos del tutorial, probablemente hay algo que me estoy perdiendo. Intenté Floor Plan IO y asigné pines IO, pero no funcionó. ¿Algunas ideas? ¿Algún otro buen tutorial para principiantes absolutos?
Aquí está el guión:
No hay nada en la arquitectura de su diseño, por lo que se sintetiza sin puertas. Sin puertas, no hay nada que conectar a las señales de salida, por lo que las señales de salida se eliminan. Asimismo, las señales de entrada se eliminan porque no se conectan a nada. Por lo tanto, no había pasadores ni puertas que encajaran en el diseño. Estoy bastante seguro de que las advertencias del paso de síntesis le habrían dicho esto.
El proyecto de ejemplo debe contener el código correcto.
Esta página indica abrir el proyecto jc2_abl. Esto se encuentra navegando a su directorio ISEExamples en su instalación de ISE (lo que le sugieren que haga, que se encuentra en <Install Dir>/14.5/ISE_DS/ISE/ISEexamples
), o por File -> Open Example
.
Mi instalación particular de ISE no tenía jc2_abl como ejemplo, pero tenía jc2_vhd, que contiene el código vhd para el ejemplo, copiado aquí:
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
frut1tbat
nazar