Commit 025ff1a679d9cab9cf5f29b19dc53e124725f00c
1 parent
a3654f0d
7Segment_display readme
Showing
1 changed file
with
133 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +---------------------------------------------------------------------------------- | ||
2 | +-- Company: | ||
3 | +-- Engineer: | ||
4 | +-- | ||
5 | +-- Create Date: 27.09.2023 17:03:49 | ||
6 | +-- Design Name: | ||
7 | +-- Module Name: display - Behavioral | ||
8 | +-- Project Name: | ||
9 | +-- Target Devices: | ||
10 | +-- Tool Versions: | ||
11 | +-- Description: | ||
12 | +-- | ||
13 | +-- Dependencies: | ||
14 | +-- | ||
15 | +-- Revision: | ||
16 | +-- Revision 0.01 - File Created | ||
17 | +-- Additional Comments: | ||
18 | +-- | ||
19 | +---------------------------------------------------------------------------------- | ||
20 | + | ||
21 | + | ||
22 | +library IEEE; | ||
23 | +use IEEE.STD_LOGIC_1164.ALL; | ||
24 | +use IEEE.STD_LOGIC_ARITH.ALL; | ||
25 | +use IEEE.STD_LOGIC_UNSIGNED.ALL; | ||
26 | + | ||
27 | +-- Uncomment the following library declaration if using | ||
28 | +-- arithmetic functions with Signed or Unsigned values | ||
29 | +--use IEEE.NUMERIC_STD.ALL; | ||
30 | + | ||
31 | +-- Uncomment the following library declaration if instantiating | ||
32 | +-- any Xilinx leaf cells in this code. | ||
33 | +--library UNISIM; | ||
34 | +--use UNISIM.VComponents.all; | ||
35 | + | ||
36 | +entity display is | ||
37 | + port ( | ||
38 | + clk_fpga : in STD_LOGIC; | ||
39 | + reset : in STD_LOGIC; | ||
40 | + aff : out STD_LOGIC_VECTOR(7 downto 0); | ||
41 | + an : out STD_LOGIC_VECTOR(3 downto 0) | ||
42 | + ); | ||
43 | +end display; | ||
44 | + | ||
45 | +architecture Behavioral of display is | ||
46 | + | ||
47 | +signal count_int : integer range 3 downto 0 := 0; | ||
48 | +signal clk_enable : integer range 4999 downto 0 := 0; | ||
49 | +signal clk_counter : integer range 2999999 downto 0 := 0; | ||
50 | +constant nb0 : std_logic_vector(7 downto 0) := "11000000"; | ||
51 | +constant nb1 : std_logic_vector(7 downto 0) := "11111001"; | ||
52 | +constant nb2 : std_logic_vector(7 downto 0) := "10100100"; | ||
53 | +constant nb3 : std_logic_vector(7 downto 0) := "10110000"; | ||
54 | +constant nb4 : std_logic_vector(7 downto 0) := "10011001"; | ||
55 | +constant nb5 : std_logic_vector(7 downto 0) := "10010010"; | ||
56 | +constant nb6 : std_logic_vector(7 downto 0) := "10000010"; | ||
57 | +constant nb7 : std_logic_vector(7 downto 0) := "11111000"; | ||
58 | +constant nb8 : std_logic_vector(7 downto 0) := "10000000"; | ||
59 | +constant nb9 : std_logic_vector(7 downto 0) := "10010000"; | ||
60 | +constant seg0 : std_logic_vector(3 downto 0) := "1110"; | ||
61 | +constant seg1 : std_logic_vector(3 downto 0) := "1101"; | ||
62 | +constant seg2 : std_logic_vector(3 downto 0) := "1011"; | ||
63 | +constant seg3 : std_logic_vector(3 downto 0) := "0111"; | ||
64 | +signal chiffre4 : integer range 9 downto 0 := 0; | ||
65 | +signal chiffre3 : integer range 9 downto 0 := 0; | ||
66 | +signal chiffre2 : integer range 9 downto 0 := 0; | ||
67 | +signal chiffre1 : integer range 9 downto 0 := 0; | ||
68 | + | ||
69 | +type mynumbers is array(9 downto 0) of std_logic_vector(7 downto 0); | ||
70 | +signal numbers : mynumbers := (nb9,nb8,nb7,nb6,nb5,nb4,nb3,nb2,nb1,nb0); | ||
71 | + | ||
72 | +begin | ||
73 | + | ||
74 | +process(clk_fpga) | ||
75 | +begin | ||
76 | + if clk_fpga'event and clk_fpga = '1' then | ||
77 | + -- clock d'affichage | ||
78 | + if clk_enable = 4999 then | ||
79 | + clk_enable <= 0; | ||
80 | + if count_int = 0 then | ||
81 | + aff <= numbers(chiffre4); | ||
82 | + an <= seg0; | ||
83 | + count_int <= count_int + 1; | ||
84 | + elsif count_int = 1 then | ||
85 | + aff <= numbers(chiffre3); | ||
86 | + an <= seg1; | ||
87 | + count_int <= count_int + 1; | ||
88 | + elsif count_int = 2 then | ||
89 | + aff <= numbers(chiffre2); | ||
90 | + an <= seg2; | ||
91 | + count_int <= count_int + 1; | ||
92 | + elsif count_int = 3 then | ||
93 | + aff <= numbers(chiffre1); | ||
94 | + an <= seg3; | ||
95 | + count_int <= 0; | ||
96 | + end if; | ||
97 | + else | ||
98 | + clk_enable <= clk_enable + 1; | ||
99 | + end if; | ||
100 | + -- clock de compteur | ||
101 | + if clk_counter = 2999999 then | ||
102 | + clk_counter <= 0; | ||
103 | + if reset = '1' then | ||
104 | + chiffre1 <= 0; | ||
105 | + chiffre2 <= 0; | ||
106 | + chiffre3 <= 0; | ||
107 | + chiffre4 <= 0; | ||
108 | + else if chiffre4 = 9 then | ||
109 | + chiffre4 <= 0; | ||
110 | + if chiffre3 = 9 then | ||
111 | + chiffre3 <= 0; | ||
112 | + if chiffre2 = 9 then | ||
113 | + chiffre2 <= 0; | ||
114 | + if chiffre1 = 9 then | ||
115 | + chiffre1 <= 0; | ||
116 | + else | ||
117 | + chiffre1 <= chiffre1 + 1; | ||
118 | + end if; | ||
119 | + else | ||
120 | + chiffre2 <= chiffre2 + 1; | ||
121 | + end if; | ||
122 | + else | ||
123 | + chiffre3 <= chiffre3 + 1; | ||
124 | + end if; | ||
125 | + else | ||
126 | + chiffre4 <= chiffre4 + 1; | ||
127 | + end if; | ||
128 | + else | ||
129 | + clk_counter <= clk_counter + 1; | ||
130 | + end if; | ||
131 | + end if; | ||
132 | +end process; | ||
133 | +end Behavioral; |