菜鸟就是菜鸟,连ISE测试文件都没搞好

2020-02-24 20:39发布

本帖最后由 crjab 于 2013-7-19 16:33 编辑

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity erfen is
port
(
clock:in std_logic;
clkout:out std_logic
);
end erfen;

architecture Behavioral of erfen is
signal clk:std_logic:='0';
begin
process(clock)
begin
if rising_edge(clock) then
clk<=not clk;
end if;
end process;
clkout<=clk;
end Behavioral;
以上是最简单的一个分频电路程序,其测试文件如下:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;

ENTITY erfentest IS
END erfentest;

ARCHITECTURE behavior OF erfentest IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT erfen
    PORT(
         clock : IN  std_logic;
         clkout : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal clock : std_logic;

         --Outputs
   signal clkout : std_logic;

   -- Clock period definitions
   constant clock_period : time := 1us;
   constant clkout_period : time := 1us;

BEGIN

        -- Instantiate the Unit Under Test (UUT)
   uut: erfen PORT MAP (
          clock => clock,
          clkout => clkout
        );
   -- Clock process definitions
   clock_process :process
   begin
                clock <= '0';
                wait for clock_period/2;
                clock <= '1';
                wait for clock_period/2;
   end process;

   clkout_process :process
   begin
                clkout <= '0';
                wait for clkout_period/2;
                clkout <= '1';
                wait for clkout_period/2;
   end process;
END;

得出的波形却是这样:(附件里)
请高手看看怎么回事,,,刚接触这块,连一个小小的仿真都没搞定,打击很大啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
crjab
1楼-- · 2020-02-25 02:32
我去 发个帖子都出问题,,祈求牛人快快出现吧~~
crjab
2楼-- · 2020-02-25 04:28
 精彩回答 2  元偷偷看……
ococ
3楼-- · 2020-02-25 05:55
本帖最后由 ococ 于 2013-7-19 17:11 编辑

testbench里面只需要给激励信号也就是输入信号。
把你的 clkout_process整个删掉。
另外把testbench中定义的clock赋初值:
--Inputs
   signal clock : std_logic:='0';
你的模块里面对clkout赋值,testbench也赋值当然输出波形就是未知状态了。
crjab
4楼-- · 2020-02-25 07:22
本帖最后由 crjab 于 2013-7-20 12:29 编辑
ococ 发表于 2013-7-19 17:07
testbench里面只需要给激励信号也就是输入信号。
把你的 clkout_process整个删掉。
另外把testbench中定义 ...

感谢您的指正,我把测试文件改成了:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;

ENTITY erfentest IS
END erfentest;

ARCHITECTURE behavior OF erfentest IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT erfen
    PORT(
         clock : IN  std_logic;
         clkout : OUT  std_logic
        );
    END COMPONENT;


   --Inputs
   signal clock : std_logic:='0';

        --Outputs
   signal clkout : std_logic;

   -- Clock period definitions
   constant clock_period : time := 1us;

BEGIN

        -- Instantiate the Unit Under Test (UUT)
   uut: erfen PORT MAP (
          clock => clock,
          clkout => clkout
        );
   -- Clock process definitions
   clock_process :process
   begin
                clock <= '0';
                wait for clock_period/2;
                clock <= '1';
                wait for clock_period/2;
   end process;

END;
可是得出的波形clockout还是未知 麻烦您再帮我看看 谢谢你


ococ
5楼-- · 2020-02-25 12:41
我感觉是你的模块和对应的testbench没连接起来吧,你仿真出来的波形只是testbench里面的信号的波形,你应该先综合一下模块,在综合一下testbench。
GoldSunMonkey
6楼-- · 2020-02-25 13:14
ococ 发表于 2013-7-20 14:55
我感觉是你的模块和对应的testbench没连接起来吧,你仿真出来的波形只是testbench里面的信号的波形,你应该 ...

对头啊

一周热门 更多>