CPLD: mi primer proyecto

2

Primero, publiqué una pregunta similar en el foro de usuarios de CPLD / FPGA, sin embargo, no parecen estar tan activos como StackExchange. Por lo tanto, espero que me ayude a seguir adelante con los CPLD y que también sea una información útil para otros titulares.

Después de una pequeña investigación, me convencí de centrarme en los CPLD de Xilinx porque, en opinión de algunas personas, parece ser más adecuado para los estudiantes y el proveedor ofrece software gratuito. No tengo una placa de desarrollo ni el chip, solo intento simular antes de comprar. Así que, después de descargar el software ISE WebPack , Comencé mi primer tutorial . Me quedé atascado en el paso 5 de "Implementación de un nuevo diseño de nivel superior". No logra "ajustar" el diseño:

Elregistromedalarespuestaamierror,perorealmentenoséquéhaceracontinuación.Aunqueseguítodoslospasosdeltutorial,¿probablementehayalgoquemeestoyperdiendo?IntentéPlanificarpisoIOyasignarpinesIO,peronosirviódenada.¿Algunasideas?¿Algúnotrobuentutorialparaprincipiantesabsolutos?

Aquíestáelscript:

    
pregunta Nazar

2 respuestas

2

No hay nada en la arquitectura de su diseño, por lo que se sintetiza sin puertas. Sin puertas no hay nada para conectar a las señales de salida, por lo que las señales de salida se eliminan. Del mismo modo, las señales de entrada se eliminan porque se conectan a nada. Por lo tanto, no había pasadores ni puertas para encajar en el diseño. Estoy bastante seguro de que las advertencias del paso de síntesis le habrían dicho esto.

    
respondido por el Joe Hass
2

El proyecto de ejemplo debe contener el código correcto.

Esta página indica que se abrirá el proyecto jc2_abl_tutorial_project.htm"> Esta página indica que se abrirá el proyecto ja2_abl_tutorial_project.htm"> Esto se encuentra navegando a su directorio de ejemplos de ISE en su instalación de ISE (lo que sugieren que haga, 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 sí 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;
    
respondido por el stanri

Lea otras preguntas en las etiquetas