2


我正在尝试运行我在网上获取的代码,但不知何故,测试台无法在 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 信号。

谢谢

4

2 回答 2

0

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

于 2015-05-24T04:22:36.690 回答
0

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

给:

clk200hz_tb.png (可点击)

于 2015-05-24T04:48:43.363 回答