Question

1. In VHDL, create a component for each of the operations in table1 and any other...

1. In VHDL, create a component for each of the operations in table1 and any other components you may need to implement the ALU.

2. Create the top‐level VHDL file that instantiates the components to create the 4‐bit five function ALU

3. Write a self‐checking testbench to exhaustively test your ALU

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Part 1 :

library ieee;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

//Creating OR GATE

entity or_21 is

port (a : in STD_LOGIC;

b : in STD_LOGIC;

y: out STD_LOGIC);

end or_21;

architecture Behavioural of or_21 is

begin

y <= a or b;

end Behavioural;

// Creating AND GATE

entity and_21 is

port (a : in STD_LOGIC;

b : in STD_LOGIC;

y: out STD_LOGIC);

end and_21;

architecture Behavioural of and_21 is

begin

y <= a and b;

end Behavioural;

// creating XOR gate

entity xor_21 is

port (a : in STD_LOGIC;

b : in STD_LOGIC;

y: out STD_LOGIC);

end xor_21;

architecture Behavioural of xor_21 is

begin

y <= a xor b;

end Behavioural;

//Creating Shift Right Logical

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

//extra package for shifts

entity right_shift is

end right_shift;

architecture shift of right_shift is

signal r_Shift1 : std_logic_vector(3 downto 0) := "1000";

signal r_Unsigned_R : unsigned(3 downto 0) := "0000";

signal r_Signed_R : unsigned(3 downto 0) := "0000";

begin

process is

begin

r_Unsigned_R <= shift_right(unsigned(r_Shift1), 2);

r_Signed_R <= shift_right(unsigned(r_Shift1), 2);

wait for 100 ns;

end process;

end architecture shift;

-- Creating Shift Right Arithmetic

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

//extra package for shifts

entity right_shift_arith is

end right_shift _arith;

architecture shift_arithmetic of right_shift_arith is

signal r_Shift1 : std_logic_vector(3 downto 0) := "1000";

signal r_Unsigned_R : signed(3 downto 0) := "0000";

signal r_Signed_R : signed(3 downto 0) := "0000";

begin

process is

begin

r_Unsigned_R <= shift_right(signed(r_Shift1), 2);

r_Signed_R <= shift_right(signed(r_Shift1), 2);

wait for 100 ns;

end process;

end architecture shift_arithemetic;

_______________________________________________________________________________

2nd part :

ALU consists AND OR NOT GATES

But we will implement them logically here.

Alu can perform 8 possible logic operation

Control Signals Operations

000 A + B

001 A - B

010 A - 1

011

A + 1

100 A and B

101 A or B

110 not A

111 A xor B

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.NUMERIC_STD.ALL;

entity alu is

Port ( a : in signed(3 downto 0);

b : in signed(3 downto 0);

con : in STD_LOGIC_VECTOR (2 downto 0);

out : out signed(3 downto 0));

end alu;

architecture Behavioral of alu is

begin

process(a, b, con)

begin

case con is

when "000" =>

out<= a + b; --addition

when "001" =>

out<= a - b; --subtraction

when "010" =>

out <= a - 1; --sub 1

when "011" =>

out<= a + 1; --add 1

when "100" =>

out <= a and b; --AND gate

when "101" =>

out<= a or b; --OR gate

when "110" =>

out <= not a ; --NOT gate

when "111" =>

out <= a xor b; --XOR gate

when others =>

NULL;

end case;

end process;

end Behavioral;

________________________________________________________________________________

3rd Part :

TestBench Code for Testing the ALU :

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

ENTITY Test_alu IS

END Test_alu;

ARCHITECTURE behavior OF Test_alu IS

-- Component Declaration for the Unit Under Test (UUT)

COMPONENT alu

PORT(

a : IN signed(3 downto 0);

b : IN signed(3 downto 0);

con : IN std_logic_vector(2 downto 0);

out : OUT signed(3 downto 0)

);

END COMPONENT;

--Inputs

signal a : signed(3 downto 0) := (others => '0');

signal b : signed(3 downto 0) := (others => '0');

signal con : std_logic_vector(2 downto 0) := (others => '0');

--Outputs

signal out : signed(3 downto 0);

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: alu PORT MAP (

a => a,

b => b,

con => con,

out => out

);

-- Stimulus process

proc: process

begin

wait for 100 ns;

a <= "1001";

b <= "1111";

con<= "000";

wait for 100 ns;

con<= "001";

wait for 100 ns;

con<= "010";

wait for 100 ns;

con<= "011";

wait for 100 ns;

con<= "100";

wait for 100 ns;

con<= "101";

wait for 100 ns;

con<= "110";

wait for 100 ns;

con <= "111";

end process;

END;

Add a comment
Know the answer?
Add Answer to:
1. In VHDL, create a component for each of the operations in table1 and any other...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • FIRST ACTIVITY: (100/100) . SIMPLE 4-BIT ARITHMETIC LOGIC UNIT (ALU): This circuit selects between arithmetic (absolute...

    FIRST ACTIVITY: (100/100) . SIMPLE 4-BIT ARITHMETIC LOGIC UNIT (ALU): This circuit selects between arithmetic (absolute value, addition) and logical (XOR, AND) operations. Only one result (hexadecimal value) can be shown on the 7-segment display This is selected by the input sel (1..0) B A-BI A+B A xnor B A nand B Input EN: If EN-1result appears on the 7 segment display. If EN=0 → all LEDs in the 7 segment display are off Arithmetic operations: The 4-bit inputs A...

  • Create an algorithm to count the number of 1’s in a 32-bit number. Implement the program in a high level language like...

    Create an algorithm to count the number of 1’s in a 32-bit number. Implement the program in a high level language like C or Java. It does not need to run for me, but the code should be included in a text document called FirstnameLastnameHLA3.txt along with your assignment submission. Implement the program in MIPSzy Assembly language. Use the high level code as comments to the right of the Assembly code as the textbook does. If you write that MIPSzy...

  • Write a set of C++ programs to implement the following operations listed in the menu function...

    Write a set of C++ programs to implement the following operations listed in the menu function below. a. File: main.cpp - contains the main function b. File: arrayhw.cpp – contains the 1D array function implementations c. File: arrayhw.h – contains the 1D array function prototyped declarations d. May create other files to implement any other needed function The main menu function should display the following: Main Menu, 1D Array Functions Enter a number to choose one of the following actions:...

  • Any little bit of information will be helpful. Thank you. Problem Statement You are to develop a program to read Mo...

    Any little bit of information will be helpful. Thank you. Problem Statement You are to develop a program to read MotoGP rider information from an input file. You will need a MotoGpRider class whose instances will be used to store the statistics for a MotoGP motorcycle racer. The Rider class will have attributes for last name, first name, racing number, nation, motorcycle make, world championship points, world championship position, and an array that stores the number of top finishes (number...

  • Using C Please comment Part 1: BST Create a link based Binary Search tree composed of a Node and a Tree struct. You should have a header file, BST.h, with the following: o Node struct containing...

    Using C Please comment Part 1: BST Create a link based Binary Search tree composed of a Node and a Tree struct. You should have a header file, BST.h, with the following: o Node struct containing left, right, and parent pointers, in addition to holding an Data struct value Tree struct containing a pointer to the root of the tree A function declaration for a function that allocates a tree, and initializes the root to NULL o o o A...

  • 1) Write a segment of code (application level) to perform each of the following operations. Assume...

    1) Write a segment of code (application level) to perform each of the following operations. Assume myStack is an object of the class ArrayStack. You may call any of the public methods of ArrayStack. You may declare additional stack objects. a) Set secondElement to the second element from the top of myStack, leaving myStack without its original top two elements. b) Set bottom equal to the bottom element in myStack, leaving myStack empty. c) Set bottom equal to the bottom...

  • Purpose: Demonstrate the ability to create and manipulate classes, data members, and member functions. This assignment...

    Purpose: Demonstrate the ability to create and manipulate classes, data members, and member functions. This assignment also aims at creating a C++ project to handle multiple files (one header file and two .cpp files) at the same time. Remember to follow documentation and variable name guidelines. Create a C++ project to implement a simplified banking system. Your bank is small, so it can have a maximum of 100 accounts. Use an array of pointers to objects for this. However, your...

  • in C++, please help. Not only do we need to create an ADT but create a...

    in C++, please help. Not only do we need to create an ADT but create a main file as well to implement everything. For this program you will be creating a stack ADT to allow the client program to pick up treasures for a Star Wars scavenger game to get everyone ready for the opening of Galaxy’s Edge in 2020. Each treasure should have a (a) name, (b) description, (c) category, (d) what it is used for, and (e)if this...

  • Problem 3: A Connect Four Player Class In this problem, you will create a Player class...

    Problem 3: A Connect Four Player Class In this problem, you will create a Player class to represent a player of the Connect Four game. In combination with the Board class that you wrote in Problem 2 and some code that you will write in the next problem set, this will enable you to play a game of Connect Four with a friend! Getting started Begin by downloading the file ps11pr3.py and opening it in Sypder or your editor of...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT