-1

我是一名新生,任务是用测试台构建 3 个组件,然后将它们排列成一个结构。我构建的所有 3 个组件都工作得很好,但是当我将它们放在一起时,其中一个输出保持未定义。我试图跟踪调用的信号dat,这很好,但可能我没有使用正确的语法将dat信号分配给data_out. 这id_led_ind是第二个输出,它工作正常,但data_out未定义。

这是代码(我认为问题出在第 21 车道 - “data_out <= dat”)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity peak_detect is
  port(
    input      : in  std_logic_vector (7 downto 0);
    data_out   : out std_logic_vector (7 downto 0);
    reset      : in  std_logic;
    clock      : in  std_logic;
    enable     : in  std_logic;
    id_led_ind : out std_logic);
end peak_detect;

architecture dataflow of peak_detect is
  signal a_big_b : std_logic;
  signal en      : std_logic;
  signal dat     : std_logic_vector (7 downto 0);
begin
  en       <= (enable or a_big_b);
  data_out <= dat;
end dataflow;

architecture structure of peak_detect is
  signal a_big_b : std_logic;
  signal en      : std_logic;
  signal dat     : std_logic_vector (7 downto 0);

  component comp_8bit is
    port(
      A   : in  std_logic_vector (7 downto 0);
      B   : in  std_logic_vector (7 downto 0);
      res : out std_logic);
  end component;

  component dff is
    port (
      data  : in  std_logic_vector (7 downto 0);
      q     : out std_logic_vector (7 downto 0);
      clk   : in  std_logic;
      reset : in  std_logic;
      en    : in  std_logic);
  end component;

  component id_sens is
    port(
      data_in : in  std_logic_vector (7 downto 0);
      led     : out std_logic);
  end component;

begin
  reg  : dff port map (data => input, q => dat, clk => clock, reset => reset, en => enable);
  comp : comp_8bit port map (A => input, B => dat, res => a_big_b);
  sens : id_sens port map (data_in => dat, led => id_led_ind);
end structure;
4

2 回答 2

1

对于实体 peak_detect 有两种架构(数据流和结构)似乎存在混淆。这两种架构是互斥的,最后分析的是默认的,没有其他配置直接指定其中一种架构。

为了评估组件如何互连以及它们的端口映射连接与 peak_detect 的端口声明相关,可以注释掉第一个架构(数据流)。

当您忽略架构数据流时,我们会发现架构结构中没有 data_out 驱动程序。

如架构数据流中所示,您缺少使用 dat 作为架构结构源的 data_out 分配。复制或复制并发信号赋值语句 data_out <= dat; 进入架构结构。

您不能简单地将 data_out 连接到 dff 的端口映射中的 q,因为 dff 的输出也用作 id_sense 的输入。

于 2013-08-04T23:03:38.583 回答
0

dat由驱动qdff这不是您连接组件的方式。port map应该用于连接不同组件/实体的端口,而不是任何实体的信号到另一个实体的端口。

于 2013-08-04T21:52:19.097 回答