diff options
Diffstat (limited to 'pb_APP_log_comb.srcs')
-rw-r--r-- | pb_APP_log_comb.srcs/sources_1/imports/src/AppCombi_top.vhd | 161 | ||||
-rw-r--r-- | pb_APP_log_comb.srcs/sources_1/new/Add1BitB.vhd | 65 | ||||
-rw-r--r-- | pb_APP_log_comb.srcs/sources_1/new/Add4Bits.vhd | 89 | ||||
-rw-r--r-- | pb_APP_log_comb.srcs/sources_1/new/full_adder.vhd | 2 |
4 files changed, 211 insertions, 106 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 0f939d4..79209c9 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 @@ -1,13 +1,13 @@ ---------------------------------------------------------------------------------------------
-- Université de Sherbrooke - Département de GEGI
--- Version : 3.0
--- Nomenclature : GRAMS
--- Date : 21 Avril 2020
--- Auteur(s) : Réjean Fontaine, Daniel Dalle, Marc-André Tétrault
--- Technologies : FPGA Zynq (carte ZYBO Z7-10 ZYBO Z7-20)
--- peripheriques: Pmod8LD PmodSSD
+-- Version : 3.0
+-- Nomenclature : GRAMS
+-- Date : 21 Avril 2020
+-- Auteur(s) : Réjean Fontaine, Daniel Dalle, Marc-André Tétrault
+-- Technologies : FPGA Zynq (carte ZYBO Z7-10 ZYBO Z7-20)
+-- peripheriques: Pmod8LD PmodSSD
--
--- Outils : vivado 2019.1 64 bits
+-- Outils : vivado 2019.1 64 bits
---------------------------------------------------------------------------------------------
-- Description:
-- Circuit utilitaire pour le laboratoire et la problématique de logique combinatoire
@@ -15,7 +15,7 @@ ---------------------------------------------------------------------------------------------
-- À faire :
-- Voir le guide de l'APP
--- Insérer les modules additionneurs ("components" et "instances")
+-- Insérer les modules additionneurs ("components" et "instances")
--
---------------------------------------------------------------------------------------------
@@ -26,86 +26,95 @@ library UNISIM; use UNISIM.Vcomponents.ALL;
entity AppCombi_top is
- port (
- i_btn : in std_logic_vector (3 downto 0); -- Boutons de la carte Zybo
- i_sw : in std_logic_vector (3 downto 0); -- Interrupteurs de la carte Zybo
- sysclk : in std_logic; -- horloge systeme
- o_SSD : out std_logic_vector (7 downto 0); -- vers cnnecteur pmod afficheur 7 segments
- o_led : out std_logic_vector (3 downto 0); -- vers DELs de la carte Zybo
- o_led6_r : out std_logic; -- vers DEL rouge de la carte Zybo
- o_pmodled : out std_logic_vector (7 downto 0) -- vers connecteur pmod 8 DELs
- );
+ port (
+ i_btn : in std_logic_vector (3 downto 0); -- Boutons de la carte Zybo
+ i_sw : in std_logic_vector (3 downto 0); -- Interrupteurs de la carte Zybo
+ sysclk : in std_logic; -- horloge systeme
+ o_SSD : out std_logic_vector (7 downto 0); -- vers cnnecteur pmod afficheur 7 segments
+ o_led : out std_logic_vector (3 downto 0); -- vers DELs de la carte Zybo
+ o_led6_r : out std_logic; -- vers DEL rouge de la carte Zybo
+ o_pmodled : out std_logic_vector (7 downto 0) -- vers connecteur pmod 8 DELs
+ );
end AppCombi_top;
-
+
architecture BEHAVIORAL of AppCombi_top is
- constant nbreboutons : integer := 4; -- Carte Zybo Z7
- constant freq_sys_MHz : integer := 125; -- 125 MHz
-
- signal d_s_1Hz : std_logic;
- signal clk_5MHz : std_logic;
+ constant nbreboutons : integer := 4; -- Carte Zybo Z7
+ constant freq_sys_MHz : integer := 125; -- 125 MHz
+
+ signal d_s_1Hz : std_logic;
+ signal clk_5MHz : std_logic;
--
- 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_cout : std_logic := '0'; -- retenue sortie
+ 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_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 (3 downto 0):= "0000";
+ signal d_AFF1 : std_logic_vector (3 downto 0):= "0000";
+
+
+ component Add4Bits is Port (
+ A : in STD_LOGIC_VECTOR (0 to 3);
+ B : in STD_LOGIC_VECTOR (0 to 3);
+ C : in STD_LOGIC;
+ R : out STD_LOGIC_VECTOR (0 to 3);
+ Rc : out STD_LOGIC
+ );
+ end component;
+
component synchro_module_v2 is
generic (const_CLK_syst_MHz: integer := freq_sys_MHz);
- Port (
- clkm : in STD_LOGIC; -- Entrée horloge maitre
- o_CLK_5MHz : out STD_LOGIC; -- horloge divise utilise pour le circuit
- o_S_1Hz : out STD_LOGIC -- Signal temoin 1 Hz
- );
- end component;
+ Port (
+ clkm : in STD_LOGIC; -- Entrée horloge maitre
+ o_CLK_5MHz : out STD_LOGIC; -- horloge divise utilise pour le circuit
+ o_S_1Hz : out STD_LOGIC -- Signal temoin 1 Hz
+ );
+ end component;
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
- o_AFFSSD_Sim : out string(1 to 2);
- o_AFFSSD : out STD_LOGIC_VECTOR (7 downto 0)
- );
+ 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
+ o_AFFSSD_Sim : out string(1 to 2);
+ o_AFFSSD : out STD_LOGIC_VECTOR (7 downto 0)
+ );
end component;
-
+
begin
-
- inst_synch : synchro_module_v2
- generic map (const_CLK_syst_MHz => freq_sys_MHz)
- port map (
- clkm => sysclk,
- o_CLK_5MHz => clk_5MHz,
- o_S_1Hz => d_S_1Hz
- );
-
- inst_aff : septSegments_Top
- port map (
- clk => clk_5MHz,
- -- donnee a afficher definies sur 8 bits : chiffre hexa position 1 et 0
- i_AFF1 => d_AFF1,
- i_AFF0 => d_AFF0,
- o_AFFSSD_Sim => open, -- ne pas modifier le "open". Ligne pour simulations seulement.
- o_AFFSSD => o_SSD -- sorties directement adaptees au connecteur PmodSSD
- );
-
-
- d_opa <= i_sw; -- operande A sur interrupteurs
- 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)
- 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
-
-
+
+ inst_synch : synchro_module_v2
+ generic map (const_CLK_syst_MHz => freq_sys_MHz)
+ port map (
+ clkm => sysclk,
+ o_CLK_5MHz => clk_5MHz,
+ o_S_1Hz => d_S_1Hz
+ );
+
+ inst_aff : septSegments_Top
+ port map (
+ clk => clk_5MHz,
+ -- donnee a afficher definies sur 8 bits : chiffre hexa position 1 et 0
+ i_AFF1 => d_AFF1,
+ i_AFF0 => d_AFF0,
+ o_AFFSSD_Sim => open, -- ne pas modifier le "open". Ligne pour simulations seulement.
+ o_AFFSSD => o_SSD -- sorties directement adaptees au connecteur PmodSSD
+ );
+
+
+ d_opa <= i_sw; -- operande A sur interrupteurs
+ 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)
+ 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
+
+
end BEHAVIORAL;
diff --git a/pb_APP_log_comb.srcs/sources_1/new/Add1BitB.vhd b/pb_APP_log_comb.srcs/sources_1/new/Add1BitB.vhd index b00716e..5f99927 100644 --- a/pb_APP_log_comb.srcs/sources_1/new/Add1BitB.vhd +++ b/pb_APP_log_comb.srcs/sources_1/new/Add1BitB.vhd @@ -1,21 +1,21 @@ ---------------------------------------------------------------------------------- --- Company: --- Engineer: --- +-- Company: +-- Engineer: +-- -- Create Date: 04/30/2025 03:19:19 PM --- Design Name: +-- Design Name: -- Module Name: Add1BitB - Behavioral --- Project Name: --- Target Devices: --- Tool Versions: --- Description: --- --- Dependencies: --- +-- Project Name: +-- Target Devices: +-- Tool Versions: +-- Description: +-- +-- Dependencies: +-- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: --- +-- ---------------------------------------------------------------------------------- @@ -41,7 +41,48 @@ end Add1BitB; architecture Behavioral of Add1BitB is + signal buf: STD_LOGIC_VECTOR(2 downto 0); + +begin + +Adder: process(X, Y, Ci) is begin + buf(0) <= X; + buf(1) <= Y; + buf(2) <= Ci; + + case (buf) is + when "000" => + O <= '0'; + Co <= '0'; + when "001" => + O <= '1'; + Co <= '0'; + when "010" => + O <= '1'; + Co <= '0'; + when "011" => + O <= '0'; + Co <= '1'; + when "100" => + O <= '1'; + Co <= '0'; + when "101" => + O <= '0'; + Co <= '1'; + when "110" => + O <= '0'; + Co <= '1'; + when "111" => + O <= '1'; + Co <= '1'; + when others => + O <= '0'; + Co <= '0'; + end case; + +end process Adder; + end Behavioral; diff --git a/pb_APP_log_comb.srcs/sources_1/new/Add4Bits.vhd b/pb_APP_log_comb.srcs/sources_1/new/Add4Bits.vhd index be2cf13..371d81b 100644 --- a/pb_APP_log_comb.srcs/sources_1/new/Add4Bits.vhd +++ b/pb_APP_log_comb.srcs/sources_1/new/Add4Bits.vhd @@ -1,21 +1,21 @@ ---------------------------------------------------------------------------------- --- Company: --- Engineer: --- +-- Company: +-- Engineer: +-- -- Create Date: 04/30/2025 03:19:19 PM --- Design Name: +-- Design Name: -- Module Name: Add4Bits - Behavioral --- Project Name: --- Target Devices: --- Tool Versions: --- Description: --- --- Dependencies: --- +-- Project Name: +-- Target Devices: +-- Tool Versions: +-- Description: +-- +-- Dependencies: +-- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: --- +-- ---------------------------------------------------------------------------------- @@ -32,16 +32,71 @@ use IEEE.STD_LOGIC_1164.ALL; --use UNISIM.VComponents.all; entity Add4Bits is - Port ( X : in STD_LOGIC_VECTOR (0 to 3); - Y : in STD_LOGIC_VECTOR (0 to 3); - Ci : in STD_LOGIC; - O : out STD_LOGIC_VECTOR (0 to 3); - Co : out STD_LOGIC); + Port ( A : in STD_LOGIC_VECTOR (0 to 3); + B : in STD_LOGIC_VECTOR (0 to 3); + C : in STD_LOGIC; + R : out STD_LOGIC_VECTOR (0 to 3); + Rc : out STD_LOGIC); end Add4Bits; architecture Behavioral of Add4Bits is + signal bufA : STD_LOGIC; + signal bufB : STD_LOGIC; + signal bufC : STD_LOGIC; + + component Add1BitA is + Port ( + X : in STD_LOGIC; + Y : in STD_LOGIC; + Ci: in STD_LOGIC; + O : out STD_LOGIC; + Co: out STD_LOGIC + ); + end component; + + component Add1BitB is + Port ( + X : in STD_LOGIC; + Y : in STD_LOGIC; + Ci: in STD_LOGIC; + O : out STD_LOGIC; + Co: out STD_LOGIC + ); + end component; + begin + first : Add1BitA port map ( + X => A(0), + Y => B(0), + Ci => C, + O => R(0), + Co => bufA + ); + + sec : Add1BitA port map ( + X => A(1), + Y => B(1), + Ci => bufA, + O => R(1), + Co => bufB + ); + + third : Add1BitB port map ( + X => A(2), + Y => B(2), + Ci => bufB, + O => R(2), + Co => bufC + ); + + fourth : Add1BitB port map ( + X => A(3), + Y => B(3), + Ci => bufC, + O => R(3), + Co => Rc + ); end Behavioral; diff --git a/pb_APP_log_comb.srcs/sources_1/new/full_adder.vhd b/pb_APP_log_comb.srcs/sources_1/new/full_adder.vhd index 7f5148d..1ffef11 100644 --- a/pb_APP_log_comb.srcs/sources_1/new/full_adder.vhd +++ b/pb_APP_log_comb.srcs/sources_1/new/full_adder.vhd @@ -1,6 +1,6 @@ ---------------------------------------------------------------------------------- -- Company: --- Engineer: +-- Engineer: BenTheMan -- -- Create Date: 04/30/2025 01:11:03 PM -- Design Name: |