OpenCores
URL https://opencores.org/ocsvn/single-14-segment-display-driver-w-decoder/single-14-segment-display-driver-w-decoder/trunk

Subversion Repositories single-14-segment-display-driver-w-decoder

[/] [single-14-segment-display-driver-w-decoder/] [trunk/] [Project/] [Sources/] [display_driver_w_decoder.vhd] - Blame information for rev 8

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 liubenoff
--------------------------------------------------------------------------------
2 8 liubenoff
-- Entity: display_driver_w_decoder
3 3 liubenoff
-- Date:2017-01-06  
4
-- Author: GL     
5
--
6
-- Description: Top module for display driver with decoder
7
--! @file
8
--! @brief Display Driver With Decoder Top Level Module
9
--------------------------------------------------------------------------------
10
 
11
library ieee;
12
use ieee.std_logic_1164.all;
13
use ieee.numeric_std.all;
14
 
15 8 liubenoff
--! @brief Top entity of the display driver.
16
--! @details Top entity of the decoder architecture. Module description also goes here.
17
entity display_driver_w_decoder is
18 3 liubenoff
        port  (
19
        clk     : in    std_logic;                                      --! input clock, xx MHz.
20
        reset   : in    std_logic;                                      --! active high
21
 
22 8 liubenoff
        ascii_in: in    std_logic_vector(7 downto 0);                   --! input ASCII code to display
23 5 liubenoff
        wr_en   : in    std_logic;                                      --! active high write enable to store the ASCII code in a register
24 3 liubenoff
 
25
        --! Typically the data fed to display (single or multiple) is provided for single display at a time.
26 5 liubenoff
        --! If multiple displays are required disp_sel signal must be provided (according typical dynamic display indication).
27
        --! 
28
        --! \section disp_data_bit_mapping Display Segment Bit Mapping
29 6 liubenoff
        --! |Bit Number     |   14|   13|   12|   11|   10|    9|    8|    7|    6|    5|    4|    3|    2|    1|0    |
30 5 liubenoff
        --! |:--------:     |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
31 6 liubenoff
        --! |Display Segment|   dp|    m|    l|    k|    j|    i|    h|   g2|   g1|    f|    e|    d|    c|    b|a    |
32 5 liubenoff
        --! Note that there is no standard way to name the segments. 
33 8 liubenoff
        --! Current data bits correspondt to display segments according this picture: @image html https://www.maximintegrated.com/en/images/appnotes/3211/3211Fig02.gif
34
        disp_data_q : out std_logic_vector(14 downto 0);
35 3 liubenoff
 
36
        --! If more displays needs to be fed change disp_sel to vector with length equal to number of displays.
37
        --! Use principles of the standard dynamic indication: provide data then enable the displays sequentially.
38
        --! If brightness control is desired just AND the selector and the PWM controller output.
39
        disp_sel  : out std_logic
40
        );
41 8 liubenoff
end display_driver_w_decoder;
42 3 liubenoff
 
43 8 liubenoff
--! @brief Architecture definition of the display_driver_w_decoder
44
--! @details Architecture describes the structure of the module together with doxygen description for doumentation generatior
45
architecture display_driver_w_decoder_arch of display_driver_w_decoder is
46 3 liubenoff
 
47 5 liubenoff
    signal ascii_reg: std_logic_vector(7 downto 0);
48
 
49
    attribute syn_noprune: boolean;
50
    attribute syn_noprune of ascii_reg: signal is true;
51 3 liubenoff
begin
52
 
53 8 liubenoff
    --! \mainpage 14-segment Display Driver Info
54 5 liubenoff
    --!
55
    --! \section intro_sec Introduction
56
    --!
57 8 liubenoff
    --! The main purpose of this module is to be fed with ASCI symbol codes and it will output word lighting up the exact segments 
58
    --! on the 14-segment display to visualize the ASCII character. Current implementation uses input register to store the input code. 
59 5 liubenoff
    --!
60 8 liubenoff
    --! ASCII symbols are coded in Byte having values from 0x00 to 0x7F. This range covers all the symbols in the decoding table.
61
    --! The range is doubled because the symbols may be lit with DP on or off. More information may be found in MAX6955 datasheet.
62
    --! Follows small revised quote of the most descriptive part related to decoding. Not applicable words are removed.
63
    --!
64
    --! ... includes 104-character ASCII font maps for 14-segment... . The characters follow the standard ASCII font, with the
65
    --! addition of the following common symbols: GBP, EUR, Yen, degree, micro, plus/minus, arrow up, and arrow down. 
66
    --! Seven bits represent the 104-character font map; an 8th bit is used to select whether the decimal point (DP) is lit.
67
    --! source: https://datasheets.maximintegrated.com/en/ds/MAX6955.pdf
68
    --!
69
    --! \section port_disp_data Display Data Out
70
    --!
71
    --! Typically the data fed to display (single or multiple) is provided for single display at a time.
72
    --! If multiple displays are required disp_sel signal must be provided (according typical dynamic display indication) to determine
73
    --! for which display is the data targeted.
74
    --! 
75
    --! \subsection disp_data_bit_mapping Display Segment Bit Mapping
76
    --! |Bit Number     |   14|   13|   12|   11|   10|    9|    8|    7|    6|    5|    4|    3|    2|    1|0    |
77
    --! |:--------:     |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
78
    --! |Display Segment|   dp|    m|    l|    k|    j|    i|    h|   g2|   g1|    f|    e|    d|    c|    b|a    |
79
    --! Note that there is no standard way to name the segments. 
80
    --! Current data bits correspondt to display segments according this picture: @image html https://www.maximintegrated.com/en/images/appnotes/3211/3211Fig02.gif
81
 
82 6 liubenoff
    ascii_decoder_module:entity work.ASCIIDecoder
83
    port map(
84
        clk         => clk,
85
        reset       => reset,
86
        ascii_in    => ascii_in,
87 8 liubenoff
        disp_data_q => disp_data_q
88 6 liubenoff
    );
89 5 liubenoff
 
90
    disp_sel <= '0';                                                    -- TODO: implement this correctly
91 3 liubenoff
 
92 8 liubenoff
end display_driver_w_decoder_arch;
93 3 liubenoff
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.