modelsim仿真遇到问题 激励全有但是输出没有是红线
时间:10-02
整理:3721RD
点击:
测试文件
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ex1_vhd_tst IS
END ex1_vhd_tst;
ARCHITECTURE ex1_arch OF ex1_vhd_tst IS
-- constants
-- signals
SIGNAL aa : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL clk : STD_LOGIC;
SIGNAL clr : STD_LOGIC;
SIGNAL cp : STD_LOGIC;
SIGNAL data_rst : STD_LOGIC;
SIGNAL en : STD_LOGIC;
SIGNAL key : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL key_out : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL load : STD_LOGIC;
SIGNAL rst : STD_LOGIC;
SIGNAL sequ_out : STD_LOGIC_VECTOR(15 DOWNTO 0);
COMPONENT ex1
PORT (
aa : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
clk : IN STD_LOGIC;
clr : IN STD_LOGIC;
cp : IN STD_LOGIC;
data_rst : IN STD_LOGIC;
en : IN STD_LOGIC;
key : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
key_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
load : IN STD_LOGIC;
rst : IN STD_LOGIC;
sequ_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
);
END COMPONENT;
BEGIN
i1 : ex1
PORT MAP (
-- list connections between master ports and signals
aa => aa,
clk => clk,
clr => clr,
cp => cp,
data_rst => data_rst,
en => en,
key => key,
key_out => key_out,
load => load,
rst => rst,
sequ_out => sequ_out
);
init: PROCESS
BEGIN
clk '0'); --复位清零
elsif cp'event and cp='1' then
if load='1'then
key_out '0'); --复位清零
elsif data_rst='1' then sequ_out '0');
elsif clk'event and clk='1' then
if en='1'then
sequ_out<=key xor aa;
end if;
end if;
end process;
end a;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ex1_vhd_tst IS
END ex1_vhd_tst;
ARCHITECTURE ex1_arch OF ex1_vhd_tst IS
-- constants
-- signals
SIGNAL aa : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL clk : STD_LOGIC;
SIGNAL clr : STD_LOGIC;
SIGNAL cp : STD_LOGIC;
SIGNAL data_rst : STD_LOGIC;
SIGNAL en : STD_LOGIC;
SIGNAL key : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL key_out : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL load : STD_LOGIC;
SIGNAL rst : STD_LOGIC;
SIGNAL sequ_out : STD_LOGIC_VECTOR(15 DOWNTO 0);
COMPONENT ex1
PORT (
aa : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
clk : IN STD_LOGIC;
clr : IN STD_LOGIC;
cp : IN STD_LOGIC;
data_rst : IN STD_LOGIC;
en : IN STD_LOGIC;
key : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
key_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
load : IN STD_LOGIC;
rst : IN STD_LOGIC;
sequ_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
);
END COMPONENT;
BEGIN
i1 : ex1
PORT MAP (
-- list connections between master ports and signals
aa => aa,
clk => clk,
clr => clr,
cp => cp,
data_rst => data_rst,
en => en,
key => key,
key_out => key_out,
load => load,
rst => rst,
sequ_out => sequ_out
);
init: PROCESS
BEGIN
clk '0'); --复位清零
elsif cp'event and cp='1' then
if load='1'then
key_out '0'); --复位清零
elsif data_rst='1' then sequ_out '0');
elsif clk'event and clk='1' then
if en='1'then
sequ_out<=key xor aa;
end if;
end if;
end process;
end a;
上面是两个模块的程序
求大神帮助啊aaaaaaaaaaaaaa
一般用modelsim仿真是编译的时候把所有模块文件和tb一起编译,然后simulation的时候只选中tb即可,估计小编是在仿真的时候选了顶层文件而不是tb?
不太明白 。我是用QUARTUS ii直接调用modelsim 而且激励信号都能出来。就是输出信号是UUUUUU红线
谢谢分享学习一下
可以参考明德扬的视频,我记得有这方面的讲解。
遇到同样的问题了,不是怎么解决
怎么解决的啊,我也遇到了同样的问题啊
modelsim默认未初始化的值为未知值(即红线),一般出现在sum <= sum + 1'b1 //sum为输出值
而sum <= 0;则不会; modelsim会把第一种情况认为sum未知,而第二中认为初始化。 对与Verilog中输出端口可在被测试文件中用initial begin 。end进行初始化,输入端口可在testbench中初始化。
