Problem set 2 added
This commit is contained in:
@@ -0,0 +1,64 @@
|
|||||||
|
----------------------------- info header [part 1 of the VHDL file]
|
||||||
|
-- Author
|
||||||
|
-- Date
|
||||||
|
-- Project name
|
||||||
|
-- Module name
|
||||||
|
--
|
||||||
|
-- Detailed module description
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- A - initial design
|
||||||
|
-- B -
|
||||||
|
--
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
-- define libraries to be used [part 2 of the VHDL file]
|
||||||
|
library ieee; --always use this library
|
||||||
|
use ieee.std_logic_1164.all; --always use this library
|
||||||
|
use ieee.numeric_std.all; --use this library if arithmetic required
|
||||||
|
|
||||||
|
|
||||||
|
--Entity declaration [part 3 of the VHDL file].
|
||||||
|
entity alu is
|
||||||
|
generic
|
||||||
|
(
|
||||||
|
data_width : integer := 32
|
||||||
|
);
|
||||||
|
port
|
||||||
|
(
|
||||||
|
clk : in std_logic;
|
||||||
|
A : in std_Logic_vector(data_width - 1 downto 0);
|
||||||
|
B : in std_logic_vector(data_width - 1 downto 0);
|
||||||
|
op : in std_logic_vector(3 downto 0);
|
||||||
|
R : out std_logic_vector(data_width - 1 downto 0);
|
||||||
|
flag : out std_logic
|
||||||
|
);
|
||||||
|
end alu;
|
||||||
|
|
||||||
|
--define inside of the module
|
||||||
|
architecture behavioral of alu is
|
||||||
|
--define inside use signals and components [part 4 of the VHDL file]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
--define the operation of the module! [part 5 of the VHDL file]
|
||||||
|
flag <= '0'; --optional
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end behavioral;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
#
|
||||||
|
# Copyright (C) 1991-2015 Altera Corporation. All rights reserved.
|
||||||
|
# Your use of Altera Corporation's design tools, logic functions
|
||||||
|
# and other software and tools, and its AMPP partner logic
|
||||||
|
# functions, and any output files from any of the foregoing
|
||||||
|
# (including device programming or simulation files), and any
|
||||||
|
# associated documentation or information are expressly subject
|
||||||
|
# to the terms and conditions of the Altera Program License
|
||||||
|
# Subscription Agreement, the Altera Quartus II License Agreement,
|
||||||
|
# the Altera MegaCore Function License Agreement, or other
|
||||||
|
# applicable license agreement, including, without limitation,
|
||||||
|
# that your use is for the sole purpose of programming logic
|
||||||
|
# devices manufactured by Altera and sold by Altera or its
|
||||||
|
# authorized distributors. Please refer to the applicable
|
||||||
|
# agreement for further details.
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
#
|
||||||
|
# Quartus II 64-Bit
|
||||||
|
# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition
|
||||||
|
# Date created = 11:44:45 February 25, 2017
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
|
||||||
|
QUARTUS_VERSION = "15.0"
|
||||||
|
DATE = "11:44:45 February 25, 2017"
|
||||||
|
|
||||||
|
# Revisions
|
||||||
|
|
||||||
|
PROJECT_REVISION = "ps02"
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
#
|
||||||
|
# Copyright (C) 1991-2015 Altera Corporation. All rights reserved.
|
||||||
|
# Your use of Altera Corporation's design tools, logic functions
|
||||||
|
# and other software and tools, and its AMPP partner logic
|
||||||
|
# functions, and any output files from any of the foregoing
|
||||||
|
# (including device programming or simulation files), and any
|
||||||
|
# associated documentation or information are expressly subject
|
||||||
|
# to the terms and conditions of the Altera Program License
|
||||||
|
# Subscription Agreement, the Altera Quartus II License Agreement,
|
||||||
|
# the Altera MegaCore Function License Agreement, or other
|
||||||
|
# applicable license agreement, including, without limitation,
|
||||||
|
# that your use is for the sole purpose of programming logic
|
||||||
|
# devices manufactured by Altera and sold by Altera or its
|
||||||
|
# authorized distributors. Please refer to the applicable
|
||||||
|
# agreement for further details.
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
#
|
||||||
|
# Quartus II 64-Bit
|
||||||
|
# Version 15.0.0 Build 145 04/22/2015 SJ Web Edition
|
||||||
|
# Date created = 11:44:46 February 25, 2017
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
# 1) The default values for assignments are stored in the file:
|
||||||
|
# ps02_assignment_defaults.qdf
|
||||||
|
# If this file doesn't exist, see file:
|
||||||
|
# assignment_defaults.qdf
|
||||||
|
#
|
||||||
|
# 2) Altera recommends that you do not modify this file. This
|
||||||
|
# file is updated automatically by the Quartus II software
|
||||||
|
# and any changes you make may be lost or overwritten.
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
|
||||||
|
|
||||||
|
set_global_assignment -name FAMILY "Cyclone V"
|
||||||
|
set_global_assignment -name DEVICE 5CGXFC5C6F27C7
|
||||||
|
set_global_assignment -name TOP_LEVEL_ENTITY ps02
|
||||||
|
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.0.0
|
||||||
|
set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:44:46 FEBRUARY 25, 2017"
|
||||||
|
set_global_assignment -name LAST_QUARTUS_VERSION "18.1.0 Lite Edition"
|
||||||
|
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
|
||||||
|
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256
|
||||||
|
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
|
||||||
|
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
|
||||||
|
set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
|
||||||
|
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation
|
||||||
|
set_global_assignment -name VHDL_FILE alu.vhd
|
||||||
|
set_global_assignment -name VHDL_FILE ps02.vhd
|
||||||
|
set_global_assignment -name VHDL_FILE ps02_siggen.vhd
|
||||||
|
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
|
||||||
|
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
|
||||||
|
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
|
||||||
|
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
-----------------------------
|
||||||
|
-- Author
|
||||||
|
-- Date
|
||||||
|
-- Project name
|
||||||
|
-- Module name
|
||||||
|
--
|
||||||
|
-- Detailed module description
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- A - initial design
|
||||||
|
-- B -
|
||||||
|
--
|
||||||
|
-----------------------------
|
||||||
|
library ieee; --always use this library
|
||||||
|
use ieee.std_logic_1164.all; --always use this library
|
||||||
|
use ieee.numeric_std.all; --use this library if arithmetic required
|
||||||
|
|
||||||
|
|
||||||
|
--define connections to outside
|
||||||
|
entity ps02 is
|
||||||
|
generic
|
||||||
|
(
|
||||||
|
data_width : integer := 32
|
||||||
|
);
|
||||||
|
port
|
||||||
|
(
|
||||||
|
clk : in std_logic;
|
||||||
|
rst : in std_logic;
|
||||||
|
R : out std_logic_vector(data_width - 1 downto 0);
|
||||||
|
flag : out std_logic
|
||||||
|
);
|
||||||
|
end ps02;
|
||||||
|
|
||||||
|
--define inside of the module
|
||||||
|
architecture behavioral of ps02 is
|
||||||
|
--define inside use signals
|
||||||
|
signal A : std_Logic_vector(data_width - 1 downto 0);
|
||||||
|
signal B : std_Logic_vector(data_width - 1 downto 0);
|
||||||
|
signal op : std_logic_vector(3 downto 0);
|
||||||
|
|
||||||
|
--component declaration for A, B, op signal generator
|
||||||
|
component ps02_siggen is
|
||||||
|
generic
|
||||||
|
(
|
||||||
|
data_width : integer := 32
|
||||||
|
);
|
||||||
|
port
|
||||||
|
(
|
||||||
|
clk : in std_logic;
|
||||||
|
rst : in std_logic;
|
||||||
|
A : out std_Logic_vector(data_width - 1 downto 0);
|
||||||
|
B : out std_logic_vector(data_width - 1 downto 0);
|
||||||
|
op : out std_logic_vector(3 downto 0)
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
|
||||||
|
--component declaration for alu (TASK 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
--port map for A, B, op signal generator
|
||||||
|
name_of_unit : ps02_siggen
|
||||||
|
generic map
|
||||||
|
(
|
||||||
|
data_width => data_width
|
||||||
|
)
|
||||||
|
port map
|
||||||
|
(
|
||||||
|
clk => clk,
|
||||||
|
rst => rst,
|
||||||
|
A => A,
|
||||||
|
B => B,
|
||||||
|
op => op
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--port map for ALU (TASK 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end behavioral;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
-----------------------------
|
||||||
|
-- Author - Kriss Osmanis
|
||||||
|
-- Date - 2017-02-25; 2019-02-20
|
||||||
|
-- Project name - PS02
|
||||||
|
-- Module name - PS02 signal generator
|
||||||
|
--
|
||||||
|
-- Detailed module description
|
||||||
|
-- generates values for A, B, op
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- A - initial design
|
||||||
|
-- B - modified op seq
|
||||||
|
--
|
||||||
|
-----------------------------
|
||||||
|
library ieee; --always use this library
|
||||||
|
use ieee.std_logic_1164.all; --always use this library
|
||||||
|
use ieee.numeric_std.all; --use this library if arithmetic required
|
||||||
|
|
||||||
|
|
||||||
|
--define connections to outside
|
||||||
|
entity ps02_siggen is
|
||||||
|
generic
|
||||||
|
(
|
||||||
|
data_width : integer := 32
|
||||||
|
);
|
||||||
|
port
|
||||||
|
(
|
||||||
|
clk : in std_logic;
|
||||||
|
rst : in std_logic;
|
||||||
|
A : out std_Logic_vector(data_width - 1 downto 0);
|
||||||
|
B : out std_logic_vector(data_width - 1 downto 0);
|
||||||
|
op : out std_logic_vector(3 downto 0)
|
||||||
|
);
|
||||||
|
end ps02_siggen;
|
||||||
|
|
||||||
|
--define inside of the module
|
||||||
|
architecture behavioral of ps02_siggen is
|
||||||
|
--define inside use signals
|
||||||
|
|
||||||
|
signal op_cnt : unsigned(3 downto 0) := x"0";
|
||||||
|
|
||||||
|
type A_B_value_array is array (0 to 15) of std_logic_vector(data_width - 1 downto 0);
|
||||||
|
signal A_list : A_B_value_array :=
|
||||||
|
(
|
||||||
|
std_logic_vector(to_signed(-15,data_width)), --sub
|
||||||
|
std_logic_vector(to_signed(-14,data_width)), --add
|
||||||
|
x"0000DEAD", --nand
|
||||||
|
x"0000BEEF", --and
|
||||||
|
x"0000ABCD", --or
|
||||||
|
x"0000EFAD", --nor
|
||||||
|
x"00001279", --xor
|
||||||
|
x"00000310", --not a
|
||||||
|
x"00003010", --not b
|
||||||
|
std_logic_vector(to_signed(-1,data_width)),--incr B
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--incr A
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--sub A
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--sub B
|
||||||
|
x"00000F0F",--sll A
|
||||||
|
x"00000000",--sll B
|
||||||
|
x"00001234"--noop
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
signal B_list : A_B_value_array :=
|
||||||
|
(
|
||||||
|
std_logic_vector(to_signed(37,data_width)), --sub
|
||||||
|
std_logic_vector(to_signed(-999,data_width)), --add
|
||||||
|
x"00001221", --nand
|
||||||
|
x"00000FF0", --and
|
||||||
|
x"0000F00F", --or
|
||||||
|
x"00008754", --nor
|
||||||
|
x"0000ADBF", --xor
|
||||||
|
x"0000FECD", --not a
|
||||||
|
x"0000CCDC", --not b
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--incr B
|
||||||
|
std_logic_vector(to_signed(-1,data_width)),--incr A
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--sub A
|
||||||
|
std_logic_vector(to_signed(0,data_width)),--sub B
|
||||||
|
x"0000F0F0",--sll A
|
||||||
|
x"0000ABAB",--sll B
|
||||||
|
x"00004321"--noop
|
||||||
|
);
|
||||||
|
|
||||||
|
begin
|
||||||
|
--define the operation of the module!
|
||||||
|
|
||||||
|
A <= A_list(to_integer(op_cnt));
|
||||||
|
b <= B_list(to_integer(op_cnt));
|
||||||
|
|
||||||
|
process(clk)
|
||||||
|
begin
|
||||||
|
if rising_edge(clk) then
|
||||||
|
if rst = '1' then
|
||||||
|
op_cnt <= (others => '0'); --zero counter on rst
|
||||||
|
else
|
||||||
|
op_cnt <= op_cnt + 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
|
||||||
|
end behavioral;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user