2014-02-19 3 views
0

У меня проблема с запутанностью в моей программе. Мне нужна моя программа для сопоставления карты (вызова) компонента. Кроме того, внутри компонента мне нужно выполнить другое сопоставление портов (вызов), которое является незаконным в VHDL. У вас есть альтернативное решение этой проблемы. Вот пример того, что я имел в виду.Вызов компонента внутри другого компонента «Сопоставление портов» (недопустимое заявление) VHDL

Здесь я начинаю свою программу:

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.numeric_std.all; 

entity binary1 is 
port(N: in std_logic; 
    d: out integer); 
end binary1 ; 


Architecture Behavior1 of binary1 is 

Вот это компонент, например:

component binary_integer_1 is 
port (b1: in std_logic; 
    int1: out integer); 
end component; 

Команда для вызова компонента: начинают s0: binary_integer_1 карта порта (п, d); end Behavior1;

Кроме того, здесь основная программа:

library ieee; 
use ieee.std_logic_1164.all; 
entity binary_integer_1 is 
port (b1: in std_logic; 
int1: out integer); 
end binary_integer_1; 
architecture Behavior4 of binary_integer_1 is 
begin 
process(b1) 
begin 
if b1 = '1' then 
    int1 <= 1; 
    else 
    int1 <= 0; 
end if; 
end process; 
end Behavior4; 

Например, если я хочу сделать карту порта внутри верхнего объекта. У меня есть незаконное заявление. Пожалуйста, предоставьте мне другой способ сделать это.

+1

Ваш пример не ясен, вы слишком много обрезали. Ваш язык для описания экземпляра компонента нестандартен. Еще немного кода поможет, как и любые реальные сообщения об ошибках. «Последовательная декомпозиция проектного объекта на компоненты и привязка этих компонентов к другим конструктивным объектам, которые могут быть разложены подобным образом, приводит к иерархии дизайнерских объектов, представляющих полный дизайн. Такая коллекция дизайнерских объектов называется иерархией дизайна. " В LRM, в следующем абзаце, где вы думаете, что это незаконно (это не так). – user1155120

ответ

1

Я сделал небольшой пример трехуровневой иерархии дизайна. Партии объектов и архитектуры перечислены снизу вверх.

entity comp1 is 
    port (
     x:  in  integer; 
     y:  out  integer 
    ); 
end entity; 

architecture foo of comp1 is 
begin 
    y <= x after 2 ns; 
end architecture; 

entity comp2 is 
    port (
     a:  in integer; 
     b:  out integer 
    ); 
end entity; 

architecture fum of comp2 is 
    component comp1 is 
     port (
      x:  in  integer; 
      y:  out  integer 
     ); 
    end component; 

begin 
INST_COMP1: 
    comp1 port map (X => A, Y => B); 
end architecture; 

entity top is 
end entity; 

architecture fum of top is 
    component comp2 is 
     port (
      a:  in integer; 
      b:  out integer 
     ); 
    end component; 

    signal a: integer := 0; 
    signal b: integer; 

begin 
INST_COMP2: 
    comp2 port map (a => a, b => b); 

TEST: 
    process 
    begin 
     wait for 5 ns; 
     a <= 1; 
     wait for 5 ns; 
     a <= 2; 
     wait for 5 ns; 
     a <= 3; 
     wait for 5 ns; 
     wait; 
    end process; 

end architecture; 

ghdl -a component.vhdl

ghdl -e сверху

ghdl -r верхней --wave = top.ghw

(открытое top.ghw с gtkwave, настройка отображения формы сигнала) и:

enter image description here

Итак, у нас есть вершина сущности верхнего уровня, которая, как оказалось, является тестовым стендом (без портов), она создает компонент comp2, который содержит экземпляр comp1 компонента, который обеспечивает задержку 2 нс, назначенную на выход с входа.

Максимальное отрицательное значение для целого числа b является левым значением для целочисленного диапазона и является значением по умолчанию, как и для std_logic, значение слева - «U»; Вывод показывает значение по умолчанию до тех пор, пока время моделирования не перейдет к возникновению x, назначаемому y в comp1 (через 2 нс). Переход к 0 произошел из-за значения по умолчанию для x в верхней части.

Я использовал целые числа, чтобы избежать контекстных предложений (предложение библиотеки и предложение использования). Я мог бы использовать непосредственное создание экземпляра, но вы указали декларацию компонента.

Смежные вопросы