Tình hình là em làm một chương trình giải mã bằng thuật toán viterbi.
Khi e mô phỏng bằng cách tạo một file test bench, thì nó cho kết quả mong muốn
nhưng khi mô phỏng theo cách tạo simulation trực tiếp, rồi điền các giá trị trên mô phỏng thì nó lại không ra đúng kết quả, mọi người xem giúp e lỗi ở đây là gì với.
đây là đoạn code test bech
"
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test_decode IS
END test_decode;
ARCHITECTURE behavior OF test_decode IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT decode_viterbi
PORT(
CLOCK_50 : IN std_logic;
SW : IN std_logic_vector(15 downto 0);
KEY : IN std_logic;
LEDR : OUT std_logic_vector(7 downto 0);
START_II : IN std_logic;
RESET_I : IN std_logic
);
END COMPONENT;
--Inputs
signal CLOCK_50 : std_logic := '0';
signal SW : std_logic_vector(15 downto 0) := (others => '0');
signal KEY : std_logic := '0';
signal START_II : std_logic := '0';
signal RESET_I : std_logic := '0';
--Outputs
signal LEDR : std_logic_vector(7 downto 0);
-- Clock period definitions
constant CLOCK_50_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: decode_viterbi PORT MAP (
CLOCK_50 => CLOCK_50,
SW => SW,
KEY => KEY,
LEDR => LEDR,
START_II => START_II,
RESET_I => RESET_I
);
-- Clock process definitions
CLOCK_50_process rocess
begin
CLOCK_50 <= '0';
wait for CLOCK_50_period/2;
CLOCK_50 <= '1';
wait for CLOCK_50_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
wait for CLOCK_50_period*10;
-- insert stimulus here
SW <="0011100001100100";
KEY <='1';
START_II <='1';
RESET_I <='1';
wait;
end process;
END;"
Thank mọi người trước nhé
Khi e mô phỏng bằng cách tạo một file test bench, thì nó cho kết quả mong muốn
nhưng khi mô phỏng theo cách tạo simulation trực tiếp, rồi điền các giá trị trên mô phỏng thì nó lại không ra đúng kết quả, mọi người xem giúp e lỗi ở đây là gì với.
đây là đoạn code test bech
"
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test_decode IS
END test_decode;
ARCHITECTURE behavior OF test_decode IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT decode_viterbi
PORT(
CLOCK_50 : IN std_logic;
SW : IN std_logic_vector(15 downto 0);
KEY : IN std_logic;
LEDR : OUT std_logic_vector(7 downto 0);
START_II : IN std_logic;
RESET_I : IN std_logic
);
END COMPONENT;
--Inputs
signal CLOCK_50 : std_logic := '0';
signal SW : std_logic_vector(15 downto 0) := (others => '0');
signal KEY : std_logic := '0';
signal START_II : std_logic := '0';
signal RESET_I : std_logic := '0';
--Outputs
signal LEDR : std_logic_vector(7 downto 0);
-- Clock period definitions
constant CLOCK_50_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: decode_viterbi PORT MAP (
CLOCK_50 => CLOCK_50,
SW => SW,
KEY => KEY,
LEDR => LEDR,
START_II => START_II,
RESET_I => RESET_I
);
-- Clock process definitions
CLOCK_50_process rocess
begin
CLOCK_50 <= '0';
wait for CLOCK_50_period/2;
CLOCK_50 <= '1';
wait for CLOCK_50_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
wait for CLOCK_50_period*10;
-- insert stimulus here
SW <="0011100001100100";
KEY <='1';
START_II <='1';
RESET_I <='1';
wait;
end process;
END;"
Thank mọi người trước nhé
Comment