Estoy tratando de aprender VHDL antes de regresar a la escuela. He estado usando el texto Diseño digital con aplicaciones CPLD y VHDL ISBN-13: 978-1401840303 Otras referencias son: enlace y enlace
Lo que estoy tratando de lograr es crear un proyecto que se usará para programar un cpld para que sea un reloj digital independiente. El pin del reloj del cpld se manejará a una base de tiempo de 2 hz desde un cristal de 32768 hz dividido por un contador de rizado de 14 bits (HC4020). Las salidas de cpld dirigirán siete pantallas de segmento.
Para asegurarme de que estoy aprendiendo conceptos importantes, estoy tratando de implementar este proyecto como múltiples entidades que están conectadas entre sí para que el diagrama de bloques sea esencialmente idéntico al de la Fig. 8-10 en El libro de cocina TTl. Intenté comenzar con un ejemplo directamente del libro de texto de Dueck y no se compilará:
—— bcd_7seg.vhd
—— BCD-to-seven-segment decoder
ENTITY bcd_7seg IS
PORT(
d3, d2, d1, d0 : IN BIT;
a, b, c, d, e, f, g : OUT BIT);
END bcd_7seg;
ARCHITECTURE seven_segment OF bcd_7seg IS
SIGNAL input : BIT_VECTOR (3 downto 0);
SIGNAL output: BIT_VECTOR (6 DOWNTO 0);
BEGIN
input <= d3 & d2 & d1 & d0;
WITH input SELECT
output <= “0000001” WHEN “0000”,
“1001111” WHEN “0001”,
“0010010” WHEN “0010”,
“0000110” WHEN “0011”,
“1001100” WHEN “0100”,
“0100100” WHEN “0101”,
“1100000” WHEN “0110”,
“0001111” WHEN “0111”,
“0000000” WHEN “1000”,
“0001100” WHEN “1001”,
“1111111” WHEN others;
—— Separate the output vector to make individual pin outputs.
a <= output(6);
b <= output(5);
c <= output(4);
d <= output(3);
e <= output(2);
f <= output(1);
g <= output(0);
END seven_segment;
comentarios de texto: ¿Por qué no simplemente definir d como un vector? Si deseamos crear un símbolo gráfico para el decodificador de siete segmentos, el método anterior crea un símbolo que se muestra con cuatro entradas separadas pone, en lugar de una sola línea gruesa para una entrada de bus de 4 bits. El diseño funcionará de cualquier manera.
Estoy usando Altera Quartus II 13.0.1 (una versión anterior) ya que es compatible con el EPM7032slc44, que es barato y abundante de digikey. Tengo un chipmaster 6000xp de dispositivos lógicos para programar partes. He intentado cambiar la configuración del proyecto en el ide para cambiar entre vhdl 87 y vhdl 93 y este ejemplo todavía tiene varios errores de sintaxis. Me resulta desconcertante que el compilador solo ladra en las primeras líneas (14-19) de las declaraciones seleccionadas. Cambié las comas finales a punto y coma sin efecto.
Tengo tres cosas que deseo aclarar aquí: A La sintaxis correcta para definir puertos de entidad. B La sintaxis correcta para hacer declaraciones de arquitectura en esos puertos C ¿Cómo hago para hacer declaraciones de entidad y arquitectura para la entidad A a las que puede acceder la entidad B independientemente de si la entidad B usa el vector std_logic (6 abajo a 0) u ocho líneas discretas, por ejemplo, std_logic, b std_logic, etc.
Gracias por su tiempo para leer y comentar.