
I need help with this problem, and an explanation for the solution is described below (Fundamentals of Computer Engineering: ModelSim - standard edition). I need help fixing errors on the VHDL so that the counter counts up from 1 to 7 of both files, as the attached image shows when compiled.
Counter_1_to_7.vhdl:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Counter_1_to_7 is
Port (
clk : in STD_LOGIC; -- Clock input
reset : in STD_LOGIC; -- Asynchronous reset
count : out STD_LOGIC_VECTOR (2 downto 0) -- 3-bit output (1 to 7)
);
end Counter_1_to_7;
architecture Behavioral of Counter_1_to_7 is
signal counter_reg : STD_LOGIC_VECTOR (2 downto 0) := "001"; -- Start at 1
begin
process(clk, reset)
begin
if reset = '1' then
counter_reg <= "001"; -- Reset to 1
elsif rising_edge(clk) then
if counter_reg = "111" then
counter_reg <= "001"; -- Wrap around to 1 after 7
else
counter_reg <= counter_reg + 1; -- Increment counter
end if;
end if;
end process;
count <= counter_reg; -- Assign internal counter to output
end Behavioral;
Counter_1_to_7_tb.vhdl:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Counter_1_to_7_tb is
end Counter_1_to_7_tb;
architecture Behavioral of Counter_1_to_7_tb is
-- Component declaration for the Unit Under Test (UUT)
component Counter_1_to_7 is
Port (
clk : in STD_LOGIC;
reset : in STD_LOGIC;
count : out STD_LOGIC_VECTOR (2 downto 0)
);
end component;
-- Testbench signals
signal clk : STD_LOGIC := '0';
signal reset : STD_LOGIC := '0';
signal count : STD_LOGIC_VECTOR (2 downto 0);
-- Clock period
constant clk_period : time := 10 ns;
begin
-- Instantiate the Unit Under Test (UUT)
uut: Counter_1_to_7 Port map (
clk => clk,
reset => reset,
count => count
);
-- Clock process
clk_process: process
begin
while True loop
clk <= '0';
wait for clk_period / 2;
clk <= '1';
wait for clk_period / 2;
end loop;
end process;
-- Test process
stim_proc: process
begin
-- Test case 1: Reset the counter
reset <= '1';
wait for 20 ns;
reset <= '0';
wait for 80 ns;
-- Test case 2: Let the counter run
wait for 100 ns;
-- Test case 3: Assert reset mid-operation
reset <= '1';
wait for 20 ns;
reset <= '0';
wait for 100 ns;
-- End simulation
wait;
end process;
end Behavioral;


Step by stepSolved in 2 steps

- Computer Networking: A Top-Down Approach (7th Edi...Computer EngineeringISBN:9780133594140Author:James Kurose, Keith RossPublisher:PEARSONComputer Organization and Design MIPS Edition, Fi...Computer EngineeringISBN:9780124077263Author:David A. Patterson, John L. HennessyPublisher:Elsevier ScienceNetwork+ Guide to Networks (MindTap Course List)Computer EngineeringISBN:9781337569330Author:Jill West, Tamara Dean, Jean AndrewsPublisher:Cengage Learning
- Concepts of Database ManagementComputer EngineeringISBN:9781337093422Author:Joy L. Starks, Philip J. Pratt, Mary Z. LastPublisher:Cengage LearningPrelude to ProgrammingComputer EngineeringISBN:9780133750423Author:VENIT, StewartPublisher:Pearson EducationSc Business Data Communications and Networking, T...Computer EngineeringISBN:9781119368830Author:FITZGERALDPublisher:WILEY





