【问题标题】:VHDL testbench not changing output ALU 32bitVHDL测试台不改变输出ALU 32bit
【发布时间】:2017-05-16 00:56:08
【问题描述】:

你看,我已经用 modelsim 在 vhdl 上描述了一个 ALU,但是测试台似乎没有更新解决方案,当我看到模拟时,电路 32 位响应总是说 "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU" 我不知道做了什么我在测试台上写错了,编译器上也有关于电路响应的警告,上面写着

** 警告:(vsim-8683) 未初始化的输出端口 /alu_tb/ALU_test/res(32 downto 0) 没有驱动程序。 该端口将为信号网络贡献价值(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)。

这里是测试台代码:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity ALU_tb is        
end ALU_tb;

architecture bhv_ALU_tb of ALU_tb is
component ALU
    port(
        a, b: in std_logic_vector(31 downto 0);
        c: in std_logic;
        s: in std_logic_vector(3 downto 0);
        res: out std_logic_vector(32 downto 0));
end component;

signal a, b: std_logic_vector(31 downto 0);
signal c: std_logic;
signal s: std_logic_vector(3 downto 0);
signal re: std_logic_vector(32 downto 0);

begin 
    ALU_test: ALU port map (a => a, b => b, c => c, s => s, res => re);
process begin
    b <= "00000000000010100111010100011110";
    a <= "00000000011010000100110011101110";
    c <= '0';
    s <= "1111";
    wait for 2 ns;
    b <= "00000000000010100111010100011110";
    a <= "00000000011010000100110011101110";
    c <= '0';
    s <= "0100";
    wait for 2 ns;
    s <= "0000";
    wait for 2 ns;
    s <= "0001";
    wait for 2 ns;
    s <= "0010";
    wait for 2 ns;
    s <= "0011";
    wait for 2 ns;
    s <= "0100";
    wait for 2 ns;
    s <= "0101";
    wait for 2 ns;
    s <= "0110";
    wait for 2 ns;
    s <= "0111";
    wait for 2 ns;
    s <= "1000";
    wait for 2 ns;
    s <= "1001";
    wait for 2 ns;
    s <= "1010";
    wait for 2 ns;
    s <= "1011";
    wait for 2 ns;
    s <= "1100";
    wait for 2 ns;
    s <= "1101";
    wait for 2 ns;
    s <= "1110";
    wait for 2 ns;
    s <= "1111";
    wait for 2 ns;
end process;
end bhv_ALU_tb;

我知道这个错误似乎微不足道“res 没有初始化”,但我已经离开 vhdl 太久了,老实说不知道如何解决它,有什么想法吗?

【问题讨论】:

  • 这个问题的答案在你的组件内部 - res 是价值,所以如果它没有连接到它内部的任何东西,它就不会从模块内部驱动。

标签: vhdl alu test-bench


【解决方案1】:

首先

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

不好..不要使用。您甚至不需要在此文件中使用它们。 如果您需要算术,请使用numeric_std

那么:错误出现在组件ALU 中,因为它应该“驱动”res。但由于您没有发布该代码,我们无法帮助您(目前)。

附言目前您不再需要在 VHDL 中定义组件。你可以写:

ALU_test: entity work.ALU port map

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多