MyFPGA Forum
标题:
求助Modelsim仿真问题
[打印本页]
作者:
3539591
时间:
2012-3-12 17:24
标题:
求助Modelsim仿真问题
新手 刚学VHDL
对6分频进行仿真时,如下面testbench
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY freq_dividertb IS
END freq_dividertb;
ARCHITECTURE behavior OF freq_dividertb IS
COMPONENT freq_divider IS
PORT(clk: IN STD_LOGIC;
out1,out2:BUFFER STD_LOGIC
) ;
END COMPONENT freq_divider;
SIGNAL clk:STD_LOGIC:='0';
SIGNAL out1:STD_LOGIC:='0';
SIGNAL out2:STD_LOGIC:='0';
constant clk_period
=50ns;
BEGIN
u0:freq_divider PORT MAP(clk=>clk,out1=>out1,out2=>out2);
PROCESS
BEGIN
clk<='0';
WAIT FOR clk_period/2;
clk<='1';
WAIT FOR clk_period/2;
END PROCESS;
END ARCHITECTURE behavior;
out1和out2都为U红线。
不知道哪里出错了。
作者:
tingtang
时间:
2012-3-13 11:01
我看不懂VHDL.不过我发现
out1和out2如果都为输出的话,为什么还有
out1=>out1,out2=>out2
赋值的语句呢?
作者:
3539591
时间:
2012-3-13 11:22
回复
2#
tingtang
VHDL的testbench就是这样写的,要元件例化。
下面是我的源程序,仿真不出来。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY freq_divider IS
PORT(clk: IN STD_LOGIC;
out1,out2:BUFFER STD_LOGIC);
END freq_divider;
ARCHITECTURE example OF freq_divider IS
SIGNAL count1:INTEGER RANGE 0 TO 7;
BEGIN
PROCESS (clk)
VARIABLE count2:INTEGER RANGE 0 TO 7;
BEGIN
IF(clk'EVENT AND clk='1') THEN
count1<=count1+1;
count2:=count2+1;
IF(count1=6)THEN
out1<=NOT out1;
count1<=0;
END IF;
IF(count2=3)THEN
out2<=NOT out2;
count2:=0;
END IF;
END IF;
END PROCESS;
END example;
作者:
tingtang
时间:
2012-3-13 12:01
我刚刚Google “BUFFER STD_LOGIC”,意思好像说是output reg类型。如果想在Modelsim里看这个信号的话,的确不行(至少我发现 寄存器类型的数据 output到 testbench会报错),希望哪位大神找到解决办法。
我是一般这么解决的:
定义2个wire类型的变量a和b,也就是output,替换掉元件port list的out1和out2,然后再元件的code中吧out1和out2持续赋值给a和b,然后再testbench中观察a和b。就ok啦。
说白了就是reg类型的变量不能直接输出到testbench。
作者:
tingtang
时间:
2012-3-13 12:04
回复
3#
3539591
我刚刚Google “BUFFER STD_LOGIC”,意思好像说是output reg类型。如果想在Modelsim里看这个信号的话,的确不行(至少我发现 寄存器类型的数据 output到 testbench会报错),希望哪位大神找到解决办法。
我是一般这么解决的:
定义2个wire类型的变量a和b,也就是output,替换掉元件port list的out1和out2,然后再元件的code中吧out1和out2持续赋值给a和b,然后再testbench中观察a和b。就ok啦。
说白了就是reg类型的变量不能直接输出到testbench。
作者:
3539591
时间:
2012-3-13 12:05
回复
4#
tingtang
VHDL没有wire这一说哦。只有信号,变量,常量什么的。
作者:
tingtang
时间:
2012-3-13 12:06
回复 tingtang
VHDL的testbench就是这样写的,要元件例化。
下面是我的源程序,仿真不出来。
LIBRARY ie ...
3539591 发表于 2012-3-13 11:22
原来是instance component,不是赋值,哈!!!!!
作者:
tingtang
时间:
2012-3-13 17:36
回复
6#
3539591
那你就在testbench把out1,out2:BUFFER STD_LOGIC改成 output 类型的,不要buffer的特性。。
还是你没有在testbench定义out1,out2啊?我没看见。。
作者:
3539591
时间:
2012-3-14 14:49
回复
8#
tingtang
试过了,不行。
Buffer端口必须与Buffer端口对接,所以书上说谨慎使用buffer端口。
作者:
tingtang
时间:
2012-3-14 20:37
回复
9#
3539591
wo ye bu zhidao le
欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/)
Powered by Discuz! X3