SD Gr2 Lara Alexander Preparatorio#9
SD Gr2 Lara Alexander Preparatorio#9
SD Gr2 Lara Alexander Preparatorio#9
Alexander Lara
Facultad de Ingeniería Eléctrica y Electrónica
Laboratorio de Sistemas Digitales
[email protected]
En la arquitectura se especifica la funcionalidad de una entidad donde se debe definir el flujo de información a través de cada
puerta. Principalmente se utiliza declaraciones de asignación de señales concurrentes y declaraciones de bloque en el modelo
de flujo de datos. [2] La mayoría de la descripción de flujo de datos tienen una correspondencia casi directa con su
implementación hardware correspondiente. Ya que los sistemas digitales tienen múltiples unidades funcionales que trabajan
simultáneamente, todos los lenguajes que pretendan describir hardware deben ser como mínimo concurrentes. [3]
B. ¿Qué es una sentencia concurrente? (200 palabras).
Las sentencias concurrentes son sentencias condicionales que tienen al menos un valor por defecto para cuando no se cumplen
ninguna de las condiciones. En esta sentencia siempre modificamos el valor de una misma señal, pero las condiciones pueden
ser independientes (actuar sobre distintas señales cada una), dónde la colocación de las condiciones indica la preferencia de
unas sobre otras, es decir, la condición 1 tiene preferencia sobre el resto, la condición 2 sobre todas menos la 1 y así
sucesivamente. Posee las siguientes características: [4]
Se ejecutan de forma asíncrona unas respecto de las otras en el mismo tiempo de simulación.
El orden en que se escriban es indiferente ya que no siguen un orden de ejecución predefinido. No obstante, conviene
escribir el código en el orden que mejor se pueda entender y mejor documente el programa.
Las sentencias concurrentes se ejecutan en “paralelo”, de manera simultánea y no importa el orden en que se
escriban dentro de la arquitectura.
Las sentencias concurrentes equivalen a procesos.
Los resultados independientes del orden en el que se ejecutan.
Es una forma compacta de describir un proceso que asigna a una señal una onda seleccionada por un conjunto de
condiciones.
Por otro lado, las sentencias concurrentes sirven para especificar los siguientes casos: [4]
Interconexiones entre componentes.
Estructuras jerárquicas.
Estructuras regulares.
Transferencias entre registros.
C. Consultar cuál es la estructura básica y función de las siguientes sentencias concurrentes en VHDL:
1. When-Else
Sentencia de selección múltiple. En hardware es necesario incluir todas las opciones posibles. En este caso es obligatorio
siempre acabar la expresión con un ELSE.
Fig. 1 Estructura de When-Else en VHDL
Siempre es obligatorio asignar algo, aunque es posible no realizar ninguna acción, para ello se utiliza la palabra reservada
UNAFFECTED. De esta forma se asignará el mismo valor que tenía la señal. [5]
2. With-Select-When
En este caso se modificará el valor de una señal dependiendo de los valores de una señal condición, aparecerán como máximo
tantas líneas como valores posibles pueda tener la señal condición. Es similar a las sentencias CASE o SWITCH de C. La
asignación se hace según el contenido de un objeto o resultado de cierta expresión. [5]
entity mux_4to1 is
port(
A,B,C,D : in STD_LOGIC;
S0,S1: in STD_LOGIC;
Z: out STD_LOGIC
);
end mux_4to1;
end process;
end bhv;
E. Utilizando una sentencia concurrente realizar un programa en VHDL que permita convertir un numero binario de 4
bits en su correspondiente número BCD. Emplee una variable de 4 bits para las unidades y una variable de 4 bits para
las decenas. Presentar el código implementado y la simulación del correcto funcionamiento utilizando el Universal
Program VWF con formato de variables unsigned decimal.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Conv_Bin_BCD is
Port ( Bin : in STD_LOGIC_VECTOR (3 downto 0);
Dec : out STD_LOGIC_VECTOR (3 downto 0);
Uni : out STD_LOGIC_VECTOR (3 downto 0));
end Conv_Bin_BCD;
begin
Process(Bin)
variable Z: STD_LOGIC_VECTOR (15 downto 0);
begin
for i in 0 to 15 loop
Z(i) := '0';
end loop;
for i in 0 to 4 loop
III. REFERENCIAS
[1] «Chapter 5. Dataflow Modelling - VHDL [Book]».
https://www.oreilly.com/library/view/vhdl/9788131732113/xhtml/chapter005.xhtml (accedido feb. 21,
2021).
[2] D. Joshi, «Dataflow modeling architecture in VHDL», Technobyte, abr. 11, 2020.
https://technobyte.org/vhdl-dataflow-modeling-architecture-style/ (accedido feb. 21, 2021).
[3] «GUÍA BÁSICA DEL VHDL». Instituto Tecnológico de Querétaro, [En línea]. Disponible en:
http://www.itq.edu.mx/carreras/IngElectronica/archivos_contenido/Apuntes%20de
%20materias/Apuntes_VHDL_2016.pdf.
[4] Agustín Álvarez Marquina Marquina, «Descripción de VHDL». [En línea]. Disponible en:
https://www.ele.uva.es/~sduenas/ASIC/VHDL2B.pdf.
[5] Fernando Nuño García, «Introducción al lenguaje VHDL». [En línea]. Disponible en: Fernando
Nuño García.