Simulacion GAL22v10 proteus

#1
Hola buena tarde a todos, vengo ahora aquí de chillón porque siento que necesito ayuda para mis proyectos de electronica digital de la escuela. y tengo muchas dudas pues no nos dieron más que una pequeña intruducción al lenguaje VHDL. :rolleyes:
La idea aquí es que necesito hacer un multiplicador de dos numeros, cada uno de 4 bit. y no conozco el lenguaje, vamos el ejemplo así: 2x3=6 .. (0010)*(0011)=0110 .. pero vaya, sería muy largo hacerlo por medio de tablas de verdad, osea por comportamiento.

entonces:

1) alguien tiene idea de como podría lograrlo ?

2) por otra parte e intantado simular con proteus mi GAL, usando el archivo *.jed que produce el galaxy, inserto la que segùn yo es mi GAL22v10 ..., luego le adjunto el arhivo *.jed , pero al simular me sale en el log muchisimos errores. aquí es mi mayor interés ( por eso el título ) :oops:
adjunto unas imágenes y el codigo que uso para probar. que tal que estoy en un error.. :/.





Y el codigo:


Código:
library ieee;  -- Declaracion del contenedor 
USE ieee.std_logic_1164.all;  -- Declaracion de la libreria. 
--USE work.std_arith.all;
use ieee.numeric_std.all;

Entity Multiplicador is    -- Declaracion de la entidad o caja negra.
port (a,b: in std_logic_vector(3 downto 0);		 
	  --b: in std_logic_vector(3 downto 0);
 	  x: out std_logic_vector(3 downto 0));
	 
end Multiplicador;			-- fin de la entidad
Architecture Multiplicacion of Multiplicador is	         -- iniciar la arquitectura de la entidad
begin      -- inicia la arquitectura
	process (a,b,x)
	begin
		x <= std_logic_vector(UNSIGNED(a) + UNSIGNED(b));
	end process;
--		x <= a or b;
end Multiplicacion;
El galaxy no marca un solo error, ni warning. :unsure::rolleyes: ,.. ahí mismo vienen algunas partes comentadas. eso es porque e estado haciendo pruebas, y bueno ese lo tengo como una suma de vectores. pero es solo para probar el PROTEUS 8.


Agradecería si alguien pudiera ayudarme.
 
#3
El codigo VHDL que pusiste no se que hara, pero multiplicar, seguro que no.

Hay muchas formas de multiplicar. Te cuento dos.

1) Tenes que multiplicar cinco por siete? Haces un lazo que suma siete veces cinco, o cinco veces siete. El problema? Puede tardar mucho tiempo.

2) Haces como nos enseñaron en la escuela. Multiplicas el primer numero por el digito de las unidades del segundo. Luego el primer numero por el digito de las decenas del segundo, etc. etc. En VHDL se hace algo parecido pero en vez de usar multiplicacion decimal, usas binaria.

Te diria que empieces por hacer algo mas simple, como sumas en VHDL y las verifiques. Luego podes implementar el multiplicador.

http://faculty.qu.edu.qa/altaie/vhdl/VHDL4.pdf
 
#4
He usado en simulacion ese modelo exacto de GAL, solamente que programandola con WinCUPL y funciona perfecto. Por el tipo de errores que se ven en ese log, aparenta ser un problema en el archivo generado por galaxy. Desconozco ese programa pero verificaste si el proyecto esta bien configurado para la GAL22v10, etc? (y no otro chip, o, si fuera WinCUPL, hay un "generico" que no sirve)
 
Arriba