Examen unidad 4
programar sumadores con lenguaje
HDL
.
En esta entrega veremos un circuito de suma más (que también resta), pero en esta
ocasión haremos uso de los operadores aritméticos que VHDL pone a nuestra
disposición. Sin más introducción, empecemos con nuestro proyecto.
Creamos un nuevo proyecto en ISE Project Navigator, lo nombramos SumaResta HDL,
el módulo principal será de tipo HDL.
Ahora, agregamos un nuevo fuente, ya sea con el botón a la izquierda de la ventana
Design o mediante el menú que aparece tras hacer clic derecho sobre el nombre de
nuestro proyecto, el módulo será de tipo VHDL y por nombre le pondremos SumaResta
Nuestro sumador/restador será de 4 bits, por lo que tiene dos entradas de 4 bits y una
salida también de 4 bits, en VHDL podemos declarar puertos de varios bits a los que se
denominan buses, el asistente para agregar un nuevo archivo fuente nos permite
indicar los puertos que son buses de esta forma:
Marcamos la casilla en la columna Bus para indicar que el puerto es un bus, además, el número de bits del bus lo indicamos mediante un par de números en las columnas MSB
(Most Significant Bit – bit más significativo) y LSB (Least Significant Bit – bit menos
significativo), esto es, el número de bit que corresponde a los bits más y menos
significativos. Recordemos, en electrónica digital los buses, registros o demás
elementos compuestos por más de un bit generalmente se numeran del bit más a la
derecha (el menos significativo) hacia la izquierda iniciando en cero, por ejemplo, un
elemento de cuatro bits podría ser:
# bit 3
2
1
0
Valor X
X
X
X
El bit menos significativo es el 0, mientras que el más signicativo es el bit 3, que son los
que indicamos en el asistente para nuestro nuevo módulo. En cuanto terminemos de
agregar el módulo usando el asistente veremos cómo se declara un bus en código
VHDL.
Quizá alguien se haya preguntado para qué se utilizará la entrada denominada Sel.
Recordemos que nuestro módulo debe sumar y restar, pero solo puede realizar una
operación a la vez (solo tiene una salida), así que ¿cómo le indicamos si debe sumar o
restar las entradas? La entrada Sel nos permitirá seleccionar la operación a realizar, si
su valor es 1, la salida corresponderá a la resta (A – B), mientras que, cuando Sel
tenga un valor de 0, la salida corresponderá a la suma (A + B), una vez aclarada la
función de la entrada Sel finalicemos con el asistente y pongamos atención a la sintaxis
para declarar un bus en VHDL: A : in std_logic_vector( 3 downto 0 );
La diferencia contra las declaraciones que hasta el momento habíamos utilizado
(puertos de 1 bit), es la utilización del tipo STD_LOGIC_VECTOR en lugar de
STD_LOGIC, seguido de la indicación de los bits más y menos significativos indicados
entre paréntesis (separados por la instrucción downto. VHDL nos permite numerar los
bits de un bus del modo que nosotros deseemos, ya sea empezando por el menos
significativo y aumentando hacia el más significativo o al revés, que el más significativo
sea el bit 0 por ejemplo y el menos significativo el bit número 3 (para el caso de un bus
de cuatro bits), para lo que se usaría la instrucción to en lugar de downto, o incluso
empezar a numerar de un valor mayor a 0, a continuación pondremos algunos
ejemplos de declaraciones de un puerto de cuatro bits:
puerto1 : in std_logic_vector( 3 downto 0 );
puerto2 : in std_logic_vector( 0 to 3 );
puerto3 : in std_logic_vector( 1 to 4 );
puerto4 : in std_logic_vector( 10 downto 7 );
Todas las instrucciones anteriores declaran puertos de entrada de cuatro bits, la ...
Regístrate para leer el documento completo.