Librería Mod Display

[fusion_builder_container hundred_percent=”no” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” overlay_color=”” overlay_opacity=”0.5″ video_preview_image=”” border_size=”” border_color=”” border_style=”solid” padding_top=”” padding_bottom=”” padding_left=”” padding_right=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” border_position=”all” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” center_content=”no” last=”no” min_height=”” hover_type=”none” link=””][fusion_text]

El display de 7 segmentos es un dispositivo muy común y es usado en una gran cantidad de aplicaciones. Cuando se utilizan más de 1 display, normalmente se usa un sólo bus de datos por cada segmento y se hace un multiplexeo para encender a cada display durante un tiempo corto (que puede variar entre 1 y 10 milisegundos). Esta librería permite controlar hasta 8 displays usando 8 bits para conectar los segmentos de todos los displays incluyendo el punto decimal y 8 bits para controlar los transistores.

 

La librería contiene los siguientes puertos:

FPGA_CLK:Puerto genérico de tipo INTEGER donde se especificará la frecuencia de reloj del FPGA.

NUM_DISPLAY: Puerto genérico de tipo INTEGER que indica el número de displays que se utilizarán. La librería soporta máximo 8 displays.

SEL_ANODO_CATODO: Puerto genérico de un bit para seleccionar la configuración del display, si es de ánodo (‘0’) o cátodo (‘1’) común. El segmento se activa con un ‘0’ cuando se conecta en ánodo común y se activa con un ‘1’ cuando se conecta en cátodo común.

SEL_TRANSISTOR: Puerto genérico de un bit para indicar si el transistor se activa en alto (‘1’) o en bajo (‘0’).

CLK: Puerto de entrada de la señal de reloj.

NUM_BIN: Puerto de entrada de 27 bits, es el número binario que se convertirá a decimal y se mostrará en los displays. El valor máximo a convertir es 99,999,999 (b’101111101011110000011111111′).

PUNTOS: Puerto de 8 bits que activa los puntos decimales siendo el LSb el display de las unidades.

DISPLAY: Puerto de 8 bits conectado al bus de los displays. El MSb se conecta al segmento “A” y el LSb se conecta al punto decimal.

T: Puerto de 8 bits conectado a los transistores que controlan a los Displays.

BINARIO_A_DECIMAL: Componente que contiene un código que divide el número binario de entrada en unidades, decenas, centenas, etc. utilizando ciclos for.

Modo de uso

El primer paso es identificar el tipo de display que se está utilizando, si es de ánodo o de cátodo común.

Después se debe configurar la librería dependidendo de las conexiones con las que se esté trabajando.

INSTANCIA

Ejemplo de instancia utilizando un reloj de 100MHz, 5 displays conectados en ánodo común y los transistores activos en bajo.

component LIB_DISPLAY7SEG_RevB is

GENERIC( FPGA_CLK         : INTEGER   := 100_000_000;
         NUM_DISPLAY      : INTEGER   := 5;
         SEL_ANODO_CATODO : STD_LOGIC := '0';
         SEL_TRANSISTOR   : STD_LOGIC := '0' );

PORT( CLK     : IN  STD_LOGIC;
      NUM_BIN : IN  STD_LOGIC_VECTOR(26 DOWNTO 0);
      PUNTOS  : IN  STD_LOGIC_VECTOR(7  DOWNTO 0);
      DISPLAY : OUT STD_LOGIC_VECTOR(7  DOWNTO 0);
      T       : OUT STD_LOGIC_VECTOR(7  DOWNTO 0) );

end component LIB_DISPLAY7SEG_RevB;
Menú