In this VHDL project, VHDL code for full adder is presented. VHDL code for the adder is implemented by using behavioral and structural models.
The full adder has three inputs X1, X2, Carry-In Cin and two outputs S, Carry-Out Cout as shown in the following figure:
The VHDL code for the full adder using the structural model:
-- fpga4student.com -- FPGA projects, VHDL projects, Verilog projects -- VHDL code for full adder -- Structural code for full adder library ieee; use ieee.std_logic_1164.all; entity Full_Adder_Structural_VHDL is port( X1, X2, Cin : in std_logic; S, Cout : out std_logic ); end Full_Adder_Structural_VHDL; architecture structural of Full_Adder_Structural_VHDL is signal a1, a2, a3: std_logic; begin a1 <= X1 xor X2; a2 <= X1 and X2; a3 <= a1 and Cin; Cout <= a2 or a3; S <= a1 xor Cin; end structural; Library IEEE; USE IEEE.Std_logic_1164.all; -- fpga4student.com -- FPGA projects, VHDL projects, Verilog projects -- VHDL code for full adder -- Testbench code of the structural code for full adder entity Testbench_structural_adder is end Testbench_structural_adder; architecture behavioral of Testbench_structural_adder is component Full_Adder_Structural_VHDL port( X1, X2, Cin : in std_logic; S, Cout : out std_logic ); end component; signal A,B,Cin: std_logic:='0'; signal S,Cout: std_logic; begin structural_adder: Full_Adder_Structural_VHDL port map ( X1 => A, X2 => B, Cin => Cin, S => S, Cout => Cout ); process begin A <= '0'; B <= '0'; Cin <= '0'; wait for 100 ns; A <= '0'; B <= '0'; Cin <= '1'; wait for 100 ns; A <= '0'; B <= '1'; Cin <= '0'; wait for 100 ns; A <= '0'; B <= '1'; Cin <= '1'; wait for 100 ns; A <= '1'; B <= '0'; Cin <= '0'; wait for 100 ns; A <= '1'; B <= '0'; Cin <= '1'; wait for 100 ns; A <= '1'; B <= '1'; Cin <= '0'; wait for 100 ns; A <= '1'; B <= '1'; Cin <= '1'; wait for 100 ns; end process; end behavioral;
Simulation waveform of the structural VHDL code for the full adder:
The VHDL code for the full adder using the behavioral model:
-- fpga4student.com -- FPGA projects, VHDL projects, Verilog projects -- VHDL code for full adder -- Behavioral code for full adder library ieee; use ieee.std_logic_1164.all; use IEEE.STD_LOGIC_unsigned.ALL; use IEEE.NUMERIC_STD.ALL; entity Full_Adder_Behavioral_VHDL is port( X1, X2, Cin : in std_logic; S, Cout : out std_logic ); end Full_Adder_Behavioral_VHDL; architecture Behavioral of Full_Adder_Behavioral_VHDL is signal tmp: std_logic_vector(1 downto 0); begin process(X1,X2,Cin) begin tmp <= ('0'& X1) + ('0'& X2) +('0'& Cin) ; end process; S <= tmp(0); Cout <= tmp(1); end Behavioral; Library IEEE; USE IEEE.Std_logic_1164.all; -- fpga4student.com -- FPGA projects, VHDL projects, Verilog projects -- VHDL code for full adder -- Testbench code of the behavioral code for full adder entity Testbench_behavioral_adder is end Testbench_behavioral_adder; architecture behavioral of Testbench_behavioral_adder is component Full_Adder_Behavioral_VHDL port( X1, X2, Cin : in std_logic; S, Cout : out std_logic ); end component; signal A,B,Cin: std_logic:='0'; signal S,Cout: std_logic; begin behavior_adder: Full_Adder_Behavioral_VHDL port map ( X1 => A, X2 => B, Cin => Cin, S => S, Cout => Cout ); process begin A <= '1'; B <= '1'; Cin <= '1'; wait for 50 ns; A <= '1'; B <= '1'; Cin <= '0'; wait for 50 ns; A <= '1'; B <= '0'; Cin <= '1'; wait for 50 ns; A <= '0'; B <= '0'; Cin <= '0'; wait for 50 ns; A <= '0'; B <= '0'; Cin <= '1'; wait for 50 ns; A <= '0'; B <= '1'; Cin <= '0'; wait for 50 ns; A <= '0'; B <= '1'; Cin <= '1'; wait for 50 ns; A <= '1'; B <= '0'; Cin <= '0'; wait for 50 ns; end process; end behavioral;
Simulation waveform of the behavioral VHDL code for the full adder:
Recommended VHDL projects:
1. What is an FPGA? How VHDL works on FPGA
2. VHDL code for FIFO memory
3. VHDL code for FIR Filter
4. VHDL code for 8-bit Microcontroller
5. VHDL code for Matrix Multiplication
6. VHDL code for Switch Tail Ring Counter
7. VHDL code for digital alarm clock on FPGA
8. VHDL code for 8-bit Comparator
9. How to load a text file into FPGA using VHDL
10. VHDL code for D Flip Flop
11. VHDL code for Full Adder
12. PWM Generator in VHDL with Variable Duty Cycle
13. VHDL code for ALU
14. VHDL code for counters with testbench
15. VHDL code for 16-bit ALU
16. Shifter Design in VHDL
17. Non-linear Lookup Table Implementation in VHDL
18. Cryptographic Coprocessor Design in VHDL
19. Verilog vs VHDL: Explain by Examples
20. VHDL Code for Clock Divider on FPGA
21. How to generate a clock enable signal instead of creating another clock domain
22. VHDL code for debouncing buttons on FPGA
23. VHDL code for Traffic light controller
24. VHDL code for a simple 2-bit comparator
25. VHDL code for a single-port RAM
22. VHDL code for debouncing buttons on FPGA
23. VHDL code for Traffic light controller
24. VHDL code for a simple 2-bit comparator
25. VHDL code for a single-port RAM
26. VHDL code for Car Parking System using FSM
27. VHDL coding vs Software Programming
1. What is an FPGA? How VHDL works on FPGA
2. VHDL code for FIFO memory
3. VHDL code for FIR Filter
4. VHDL code for 8-bit Microcontroller
5. VHDL code for Matrix Multiplication
6. VHDL code for Switch Tail Ring Counter
7. VHDL code for digital alarm clock on FPGA
8. VHDL code for 8-bit Comparator
9. How to load a text file into FPGA using VHDL
10. VHDL code for D Flip Flop
11. VHDL code for Full Adder
12. PWM Generator in VHDL with Variable Duty Cycle
13. VHDL code for ALU
14. VHDL code for counters with testbench
15. VHDL code for 16-bit ALU
16. Shifter Design in VHDL
17. Non-linear Lookup Table Implementation in VHDL
18. Cryptographic Coprocessor Design in VHDL
19. Verilog vs VHDL: Explain by Examples
20. VHDL Code for Clock Divider on FPGA
21. How to generate a clock enable signal instead of creating another clock domain
22. VHDL code for debouncing buttons on FPGA
23. VHDL code for Traffic light controller
24. VHDL code for a simple 2-bit comparator
25. VHDL code for a single-port RAM
22. VHDL code for debouncing buttons on FPGA
23. VHDL code for Traffic light controller
24. VHDL code for a simple 2-bit comparator
25. VHDL code for a single-port RAM
26. VHDL code for Car Parking System using FSM
27. VHDL coding vs Software Programming
No comments:
Post a Comment