diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2025-05-04 15:41:34 -0400 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2025-05-04 15:41:34 -0400 |
commit | 382a44aac8457c3ced7d13e5b2517ce54e308891 (patch) | |
tree | 1f55c86798ecd325f5904f0f77db1816d1115d45 /pb_APP_log_comb.srcs/sources_1 | |
parent | dbcea96aadb0ee7addcdb0bd0a5bfda6f5cd93e8 (diff) |
1.3.7 new 7Segment symbols
Diffstat (limited to 'pb_APP_log_comb.srcs/sources_1')
3 files changed, 101 insertions, 104 deletions
diff --git a/pb_APP_log_comb.srcs/sources_1/imports/src/AppCombi_top.vhd b/pb_APP_log_comb.srcs/sources_1/imports/src/AppCombi_top.vhd index c5145de..2b2c8e3 100644 --- a/pb_APP_log_comb.srcs/sources_1/imports/src/AppCombi_top.vhd +++ b/pb_APP_log_comb.srcs/sources_1/imports/src/AppCombi_top.vhd @@ -48,11 +48,11 @@ architecture BEHAVIORAL of AppCombi_top is signal d_opa : std_logic_vector (3 downto 0):= "0000"; -- operande A
signal d_opb : std_logic_vector (3 downto 0):= "0000"; -- operande B
signal d_cin : std_logic := '0'; -- retenue entree
- signal d_sum : std_logic_vector (3 downto 0):= "0000"; -- somme
+ signal d_sum : std_logic_vector (4 downto 0):= "00000"; -- somme
signal d_cout : std_logic := '0'; -- retenue sortie
--
- signal d_AFF0 : std_logic_vector (3 downto 0):= "0000";
- signal d_AFF1 : std_logic_vector (3 downto 0):= "0000";
+ signal d_AFF0 : std_logic_vector (4 downto 0):= "00000";
+ signal d_AFF1 : std_logic_vector (4 downto 0):= "00000";
component Add4Bits is Port (
@@ -74,8 +74,8 @@ architecture BEHAVIORAL of AppCombi_top is component septSegments_Top is Port (
clk : in STD_LOGIC; -- horloge systeme, typique 100 MHz (preciser par le constante)
- i_AFF0 : in STD_LOGIC_VECTOR (3 downto 0); -- donnee a afficher sur 8 bits : chiffre hexa position 1 et 0
- i_AFF1 : in STD_LOGIC_VECTOR (3 downto 0); -- donnee a afficher sur 8 bits : chiffre hexa position 1 et 0
+ i_AFF0 : in STD_LOGIC_VECTOR (4 downto 0); -- donnee a afficher sur 8 bits : chiffre hexa position 1 et 0
+ i_AFF1 : in STD_LOGIC_VECTOR (4 downto 0); -- donnee a afficher sur 8 bits : chiffre hexa position 1 et 0
o_AFFSSD_Sim : out string(1 to 2);
o_AFFSSD : out STD_LOGIC_VECTOR (7 downto 0)
);
@@ -109,12 +109,12 @@ begin A => d_opa,
B => d_opb,
C => d_cin,
- R => d_sum,
+ R => d_sum(3 downto 0),
Rc => d_cout
);
-
+
led_test_btn <= i_btn(2 downto 0);
-
+
ledTest : Decodeur_3_8 port map (
control_bits => led_test_btn,
bus_out => o_pmodled
@@ -124,8 +124,8 @@ begin d_opb <= i_btn; -- operande B sur boutons
d_cin <= '0'; -- la retenue d'entrée alterne 0 1 a 1 Hz
- d_AFF0 <= d_sum(3 downto 0); -- Le resultat de votre additionneur affiché sur PmodSSD(0)
- d_AFF1 <= '0' & '0' & '0' & d_Cout; -- La retenue de sortie affichée sur PmodSSD(1) (0 ou 1)
+ d_AFF0 <= d_sum(4 downto 0); -- Le resultat de votre additionneur affiché sur PmodSSD(0)
+ d_AFF1 <= '0' & '0' & '0' & '0' & d_Cout; -- La retenue de sortie affichée sur PmodSSD(1) (0 ou 1)
o_led6_r <= d_Cout; -- La led couleur représente aussi la retenue en sortie Cout
--o_pmodled <= d_opa & d_opb; -- Les opérandes d'entrés reproduits combinés sur Pmod8LD
o_led (3 downto 0) <= '0' & '0' & '0' & d_S_1Hz; -- La LED0 sur la carte représente la retenue d'entrée
diff --git a/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_Top.vhd b/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_Top.vhd index 3f72b23..369248c 100644 --- a/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_Top.vhd +++ b/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_Top.vhd @@ -11,9 +11,9 @@ -- Outils : vivado 2016.1 64 bits, vivado 2018.2
---------------------------------------------------------------------------------------------
-- Description:
--- Affichage sur module de 2 chiffes (7 segments) sur PmodSSD
--- reference https://reference.digilentinc.com/reference/pmod/pmodssd/start
--- PmodSSD™ Reference Manual Doc: 502-126 Digilent, Inc.
+-- Affichage sur module de 2 chiffes (7 segments) sur PmodSSD
+-- reference https://reference.digilentinc.com/reference/pmod/pmodssd/start
+-- PmodSSD Reference Manual Doc: 502-126 Digilent, Inc.
--
-- Revisions
-- mise a jour D Dalle 22 octobre 2018 corrections, simplifications
@@ -26,16 +26,16 @@ -- Daniel Dalle 30 juillet 2018:
-- revision pour une seule entre sur 8 bits affichee sur les deux chiffres Hexa
--
--- Creation selon affhex7segx4v3.vhd
+-- Creation selon affhex7segx4v3.vhd
-- (Daniel Dalle, Réjean Fontaine Universite de Sherbrooke, Departement GEGI)
-- 26 septembre 2011, revision 12 juin 2012, 25 janvier 2013, 7 mai 2015
-- Contrôle de l'afficheur a sept segment (BASYS2 - NEXYS2)
-- horloge 100MHz et diviseur interne
---------------------------------------------------------------------------------------------
-- À faire :
---
---
---
+--
+--
+--
---------------------------------------------------------------------------------------------
library IEEE;
@@ -44,12 +44,12 @@ use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity septSegments_Top is
-generic (const_CLK_MHz: integer := 100); -- horloge en MHz, typique 100 MHz
+generic (const_CLK_MHz: integer := 100); -- horloge en MHz, typique 100 MHz
Port ( clk : in STD_LOGIC; -- horloge systeme, typique 100 MHz (preciser par le constante)
- i_AFF0 : in STD_LOGIC_VECTOR (3 downto 0); -- donnee a afficher sur 4 bits : chiffre hexa position 0
- i_AFF1 : in STD_LOGIC_VECTOR (3 downto 0); -- donnee a afficher sur 4 bits : chiffre hexa position 1
+ i_AFF0 : in STD_LOGIC_VECTOR (4 downto 0); -- donnee a afficher sur 4 bits : chiffre hexa position 0
+ i_AFF1 : in STD_LOGIC_VECTOR (4 downto 0); -- donnee a afficher sur 4 bits : chiffre hexa position 1
o_AFFSSD_Sim : out string(2 downto 1);
- o_AFFSSD : out STD_LOGIC_VECTOR (7 downto 0)
+ o_AFFSSD : out STD_LOGIC_VECTOR (7 downto 0)
);
end septSegments_Top; -- sorties directement adaptees au connecteur PmodSSD
@@ -57,18 +57,18 @@ architecture Behavioral of septSegments_Top is component septSegments_encodeur is
Port(
- i_AFF : in STD_LOGIC_VECTOR(3 downto 0); -- caractère à afficher
+ i_AFF : in STD_LOGIC_VECTOR(4 downto 0); -- caractère à afficher
o_CharacterePourSim : out string(1 to 1); -- pour simulation seulement
o_Seg : out STD_LOGIC_VECTOR(6 downto 0) -- encodage 7-segments
);
end component;
component septSegments_refreshPmod is
-generic(const_CLK_MHz : integer := 100); -- horloge en MHz, typique 100 MHz
+generic(const_CLK_MHz : integer := 100); -- horloge en MHz, typique 100 MHz
Port(
clk : in STD_LOGIC; -- horloge systeme, typique 100 MHz (preciser par le constante)
i_SSD0 : in STD_LOGIC_VECTOR(6 downto 0); -- donnee a afficher sur 1er chiffre
- i_SSD1 : in STD_LOGIC_VECTOR(6 downto 0); -- donnee a afficher sur 2e chiffre
+ i_SSD1 : in STD_LOGIC_VECTOR(6 downto 0); -- donnee a afficher sur 2e chiffre
JPmod : out STD_LOGIC_VECTOR(7 downto 0) -- sorties directement adaptees au connecteur PmodSSD
);
end component;
@@ -95,7 +95,7 @@ Port map( );
inst_refresh : septSegments_refreshPmod
---generic(const_CLK_MHz : integer := 100); -- horloge en MHz, typique 100 MHz
+--generic(const_CLK_MHz : integer := 100); -- horloge en MHz, typique 100 MHz
Port map(
clk => clk,
i_SSD0 => s_segment_lsb,
diff --git a/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_encodeur.vhd b/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_encodeur.vhd index 5419a0c..13f4ca0 100644 --- a/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_encodeur.vhd +++ b/pb_APP_log_comb.srcs/sources_1/imports/src/septSegments_encodeur.vhd @@ -2,18 +2,18 @@ -- circuit affhex_pmodssd.vhd
---------------------------------------------------------------------------------------------
-- Université de Sherbrooke - Département de GEGI
--- Version : 2.0
--- Nomenclature : 0.8 GRAMS
--- Date : revision 23 octobre 2018
--- Auteur(s) : Réjean Fontaine, Daniel Dalle
--- Technologies : FPGA Zynq (carte ZYBO Z7-10 ZYBO Z7-20)
+-- Version : 2.0
+-- Nomenclature : 0.8 GRAMS
+-- Date : revision 23 octobre 2018
+-- Auteur(s) : Réjean Fontaine, Daniel Dalle
+-- Technologies : FPGA Zynq (carte ZYBO Z7-10 ZYBO Z7-20)
--
--- Outils : vivado 2016.1 64 bits, vivado 2018.2
+-- Outils : vivado 2016.1 64 bits, vivado 2018.2
---------------------------------------------------------------------------------------------
-- Description:
--- Affichage sur module de 2 chiffes (7 o_Segents) sur PmodSSD
--- reference https://reference.digilentinc.com/reference/pmod/pmodssd/start
--- PmodSSD™ Reference Manual Doc: 502-126 Digilent, Inc.
+-- Affichage sur module de 2 chiffes (7 o_Segents) sur PmodSSD
+-- reference https://reference.digilentinc.com/reference/pmod/pmodssd/start
+-- PmodSSD Reference Manual Doc: 502-126 Digilent, Inc.
--
-- Revisions
-- mise a jour D Dalle 22 octobre 2018 corrections, simplifications
@@ -26,95 +26,92 @@ -- Daniel Dalle 30 juillet 2018:
-- revision pour une seule entre sur 8 bits affichee sur les deux chiffres Hexa
--
--- Creation selon affhex7segx4v3.vhd
+-- Creation selon affhex7segx4v3.vhd
-- (Daniel Dalle, Réjean Fontaine Universite de Sherbrooke, Departement GEGI)
-- 26 septembre 2011, revision 12 juin 2012, 25 janvier 2013, 7 mai 2015
-- Contrôle de l'afficheur a sept o_Segent (BASYS2 - NEXYS2)
-- horloge 100MHz et diviseur interne
---------------------------------------------------------------------------------------------
-- À faire :
---
---
---
+--
+--
+--
---------------------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-entity septSegments_encodeur is
- Port(
- i_AFF : in STD_LOGIC_VECTOR(3 downto 0); -- caractère à afficher
- o_CharacterePourSim : out string(1 to 1); -- pour simulation seulement
- o_Seg : out STD_LOGIC_VECTOR(6 downto 0) -- encodage 7-segments
- );
+entity septSegments_encodeur is Port(
+ i_AFF : in STD_LOGIC_VECTOR(4 downto 0); -- caractère à afficher
+ o_CharacterePourSim : out string(1 to 1); -- pour simulation seulement
+ o_Seg : out STD_LOGIC_VECTOR(6 downto 0)); -- encodage 7-segments
end septSegments_encodeur;
architecture Behavioral of septSegments_encodeur is
+ -- fonction réservée pour l'affichage en simulation seulement
+ function segment2String(display : std_logic_vector( 6 downto 0))
+ return string is variable v_ReturnString : string(1 to 1);
+ begin
+ case display is
+ when "0111111" => v_ReturnString := "0"; -- 0
+ when "0000110" => v_ReturnString := "1"; -- 1
+ when "1011011" => v_ReturnString := "2"; -- 2
+ when "1001111" => v_ReturnString := "3"; -- 3
+ when "1100110" => v_ReturnString := "4"; -- 4
+ when "1101101" => v_ReturnString := "5"; -- 5
+ when "1111101" => v_ReturnString := "6"; -- 6
+ when "0000111" => v_ReturnString := "7"; -- 7
+ when "1111111" => v_ReturnString := "8"; -- 8
+ when "1101111" => v_ReturnString := "9"; -- 9
+ when "1110111" => v_ReturnString := "A"; -- A
+ when "1111100" => v_ReturnString := "B"; -- b
+ when "0111001" => v_ReturnString := "C"; -- C
+ when "1011110" => v_ReturnString := "D"; -- d
+ when "1111001" => v_ReturnString := "E"; -- E
+ when "1110001" => v_ReturnString := "F"; -- F
+ when "1000000" => v_ReturnString := "-"; -- négatif
+ when "1010000" => v_ReturnString := "r"; -- r pour erreur
+ when others => v_ReturnString := "_"; -- code non reconnu
+ end case;
+ return v_ReturnString;
+ end segment2String;
--- fonction réservée pour l'affichage en simulation seulement
-function segment2String(display : std_logic_vector( 6 downto 0))
- return string is
- variable v_ReturnString : string(1 to 1);
- begin
- case display is
- when "0111111" => v_ReturnString := "0"; -- 0
- when "0000110" => v_ReturnString := "1"; -- 1
- when "1011011" => v_ReturnString := "2"; -- 2
- when "1001111" => v_ReturnString := "3"; -- 3
- when "1100110" => v_ReturnString := "4"; -- 4
- when "1101101" => v_ReturnString := "5"; -- 5
- when "1111101" => v_ReturnString := "6"; -- 6
- when "0000111" => v_ReturnString := "7"; -- 7
- when "1111111" => v_ReturnString := "8"; -- 8
- when "1101111" => v_ReturnString := "9"; -- 9
- when "1110111" => v_ReturnString := "A"; -- A
- when "1111100" => v_ReturnString := "B"; -- b
- when "0111001" => v_ReturnString := "C"; -- C
- when "1011110" => v_ReturnString := "D"; -- d
- when "1111001" => v_ReturnString := "E"; -- E
- when "1110001" => v_ReturnString := "F"; -- F
- when "1000000" => v_ReturnString := "-"; -- négatif
- when "1010000" => v_ReturnString := "r"; -- r pour erreur
- when others => v_ReturnString := "_"; -- code non reconnu
- end case;
- return v_ReturnString;
- end segment2String;
- -- fin de la fonction
-
-
- signal s_Seg : STD_LOGIC_VECTOR(6 downto 0);
+ signal s_Seg : STD_LOGIC_VECTOR(6 downto 0);
begin
--- correspondance des o_Segents des afficheurs
-o_Segent: process (i_AFF)
- begin
- case i_AFF is
- -- "gfedcba"
- when "0000" => s_Seg <= "0111111"; -- 0
- when "0001" => s_Seg <= "0000110"; -- 1
- when "0010" => s_Seg <= "1011011"; -- 2
- when "0011" => s_Seg <= "1001111"; -- 3
- when "0100" => s_Seg <= "1100110"; -- 4
- when "0101" => s_Seg <= "1101101"; -- 5
- when "0110" => s_Seg <= "1111101"; -- 6
- when "0111" => s_Seg <= "0000111"; -- 7
- when "1000" => s_Seg <= "1111111"; -- 8
- when "1001" => s_Seg <= "1101111"; -- 9
- when "1010" => s_Seg <= "1110111"; -- A
- when "1011" => s_Seg <= "1111100"; -- B
- when "1100" => s_Seg <= "0111001"; -- C
- when "1101" => s_Seg <= "1011110"; -- D
- when "1110" => s_Seg <= "1111001"; -- E
- when "1111" => s_Seg <= "1110001"; -- F
- when others => s_Seg <= "0000000";
- end case;
- end process;
-
-
- o_CharacterePourSim <= segment2String(s_Seg);
- o_Seg <= s_Seg ;
+ -- correspondance des o_Segents des afficheurs
+ o_Segent: process (i_AFF)
+ begin
+ case i_AFF is
+ -- "gfedcba"
+ when "00000" => s_Seg <= "0111111"; -- 0
+ when "00001" => s_Seg <= "0000110"; -- 1
+ when "00010" => s_Seg <= "1011011"; -- 2
+ when "00011" => s_Seg <= "1001111"; -- 3
+ when "00100" => s_Seg <= "1100110"; -- 4
+ when "00101" => s_Seg <= "1101101"; -- 5
+ when "00110" => s_Seg <= "1111101"; -- 6
+ when "00111" => s_Seg <= "0000111"; -- 7
+ when "01000" => s_Seg <= "1111111"; -- 8
+ when "01001" => s_Seg <= "1101111"; -- 9
+ when "01010" => s_Seg <= "1110111"; -- A
+ when "01011" => s_Seg <= "1111100"; -- B
+ when "01100" => s_Seg <= "0111001"; -- C
+ when "01101" => s_Seg <= "1011110"; -- D
+ when "01110" => s_Seg <= "1111001"; -- E
+ when "01111" => s_Seg <= "1110001"; -- F
+ when "10000" => s_Seg <= "1000000"; -- neg. (-)
+ when "10001" => s_Seg <= "1010000"; -- Err. (r)
+ when "10010" => s_Seg <= "0001000"; -- invalid (_)
+ when others => s_Seg <= "0000000";
+ end case;
+ end process;
+
+
+ o_CharacterePourSim <= segment2String(s_Seg);
+ o_Seg <= s_Seg ;
end Behavioral;
|