README.md
7 Segment display
- But du projet
- I/O utilisées
- Explication de l'algorithme
- Résultats
L'ensemble des codes, images et vidéos sont compris dans ce répertoire.
But du projet
Nous avons décider de nous intéresser à l'affichage 7 segments grâce au but suivant:
- Créer un compteur de 0 à 9999 à l'aide des 4 afficheurs. En cas de dépassement ou d'appuye sur un bouton reset le compteur redémarrera à 0.
I/O utilisées
Tout d'abord, voyons les entrées/sortie que nous avons utilisé.
entity display is
port {
clk_fpga : in STD_LOGIC;
reset : in STD_LOGIC;
aff : out STD_LOGIC_VECTOR{7 downto 0};
an : out STD_LOGIC_VECTOR{3 downto 0}
};
end display;
- clk_fpga : le signal de clock du fpga
Dans le fichier de contrainte :
## Clock signal
set_property -dict { PACKAGE_PIN W5 IOSTANDARD LVCMOS33 } [get_ports clk_fpga]
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk]
- reset : le signal permettant de remettre le compteur à zéro grâce à un bouton
Dans le fichier de contrainte :
## Switches
set_property -dict { PACKAGE_PIN R2 IOSTANDARD LVCMOS33 } [get_ports reset]
- aff : un tableau de 8 bits relier à chaque led d'un segment à afficher (en ajoutant le point de l'afficheur)
Dans le fichier de contrainte :
##7 Segment Display
set_property -dict { PACKAGE_PIN W7 IOSTANDARD LVCMOS33 } [get_ports {aff[0]}]
set_property -dict { PACKAGE_PIN W6 IOSTANDARD LVCMOS33 } [get_ports {aff[1]}]
set_property -dict { PACKAGE_PIN U8 IOSTANDARD LVCMOS33 } [get_ports {aff[2]}]
set_property -dict { PACKAGE_PIN V8 IOSTANDARD LVCMOS33 } [get_ports {aff[3]}]
set_property -dict { PACKAGE_PIN U5 IOSTANDARD LVCMOS33 } [get_ports {aff[4]}]
set_property -dict { PACKAGE_PIN V5 IOSTANDARD LVCMOS33 } [get_ports {aff[5]}]
set_property -dict { PACKAGE_PIN U7 IOSTANDARD LVCMOS33 } [get_ports {aff[6]}]
set_property -dict { PACKAGE_PIN V7 IOSTANDARD LVCMOS33 } [get_ports {aff[7]}]
exemple : aff à "11111110" allumera la led du point de l'afficheur séléctionné.
- an : un tableau comprenant 4 bits permettant de sélectionner l'un des 4 afficheurs 7 segments
Dans le fichier de contrainte :
set_property -dict { PACKAGE_PIN U2 IOSTANDARD LVCMOS33 } [get_ports {an[0]}]
set_property -dict { PACKAGE_PIN U4 IOSTANDARD LVCMOS33 } [get_ports {an[1]}]
set_property -dict { PACKAGE_PIN V4 IOSTANDARD LVCMOS33 } [get_ports {an[2]}]
set_property -dict { PACKAGE_PIN W4 IOSTANDARD LVCMOS33 } [get_ports {an[3]}]
exemple : an à "1110" sélectionnera l'afficheur le plus à droite.
Explication de l'algorithme
Résultats
Nous avons dans un premier temps essayer d'afficher sur les 4 afficheurs sans recouvrement. C'est pour cela qu'il a fallu baisser la clock.