【问题标题】:VHDL Clock Test BenchVHDL 时钟测试台
【发布时间】:2015-08-05 19:52:27
【问题描述】:


我正在尝试运行我在网上找到的代码,但不知何故,测试台无法在 GHDL 上运行预期的输出。

架构代码 图书馆 IEEE; 使用 IEEE.STD_LOGIC_1164.ALL;

entity clk200Hz is
    Port (
        clk_in : in  STD_LOGIC;
        reset  : in  STD_LOGIC;
        clk_out: out STD_LOGIC
    );
end clk200Hz;

architecture Behavioral of clk200Hz is
    signal temporal: STD_LOGIC;
    signal counter : integer range 0 to 124999 := 0;
begin
    frequency_divider: process (reset, clk_in) begin
        if (reset = '1') then
            temporal <= '0';
            counter <= 0;
        elsif rising_edge(clk_in) then
            if (counter = 124999) then
                temporal <= NOT(temporal);
                counter <= 0;
            else
                counter <= counter + 1;
            end if;
        end if;
    end process;

    clk_out <= temporal;
end Behavioral;

测试台:

  LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;

    ENTITY clk200Hz_tb IS
    END clk200Hz_tb;

    ARCHITECTURE behavior OF clk200Hz_tb IS 
      COMPONENT clk200Hz
      PORT(
        clk_in : IN  std_logic;
        reset  : IN  std_logic;
        clk_out: OUT std_logic
      );
      END COMPONENT;

      -- Inputs
      signal clk_in  : std_logic := '0';
      signal reset   : std_logic := '0';
      -- Outputs
      signal clk_out : std_logic;
      constant clk_in_t : time := 20 ns; 
    BEGIN 
      -- Instance of unit under test.
      uut: clk200Hz PORT MAP (
        clk_in  => clk_in,
        reset   => reset,
        clk_out => clk_out
      );

      -- Clock definition.
      entrada_process :process
        begin
        clk_in <= '0';
        wait for clk_in_t / 2;
        clk_in <= '1';
        wait for clk_in_t / 2;
      end process;

      -- Processing.
      stimuli: process
      begin
        reset <= '1'; -- Initial conditions.
        wait for 100 ns;
        reset <= '0'; -- Down to work!
            wait;
      end process;
    END;

我预计会有一个波会形成一个上下跳动的时钟,但情况似乎并非如此。我想知道设计有什么问题。


我运行了以下命令:

ghdl -s *.vhd
    ghdl -a *.vhd
    ghdl -e clk200Hz_tb
    ghdl -r clk200Hz_tb --vcd=led.vcd 
    gtkwave led.vcd

这是我的输出
,但对于时钟输出,我期望的是上下信号,而不是 0 信号。

谢谢

【问题讨论】:

  • VHDL 代码看起来是对的,你使用的是什么 ghdl 命令。你如何断言有问题?

标签: vhdl ghdl


【解决方案1】:

我已经解决了这个问题,在我的运行命令中,我只是添加了 ghdl -r clk200Hz_tb --vcd=led.vcd --stop-time=100ns。

【讨论】:

  • 这是在 gtkwave 屏幕截图中显示水平滚动条的一个很好的论据。
【解决方案2】:

ghdl -a clk200Hz_tb.vhdl
ghdl -e clk200Hz_tb
ghdl -r clk200Hz_tb --wave=clk200hz_tb.ghw --stop-time=500ns

给:

(可点击)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多