2016-02-24 2 views
-2

Я хотел бы создать структурный файл VHDL, который реализует «главную» функцию. Файл верхнего уровня будет проектироваться, а программа, которая запускает код, будет прог. Предполагая, что fulladd_pack содержит компонент fulladd, как мне «связывать» два файла VHDL?struct vhdl: создание «основной функции»

* У меня также нет аргументов в основном, чтобы это работало.

-- design.vhdl 
library ieee; 
use ieee.std_logic_1164.all; 
use work.fulladd_pack.all; 

ENTITY design IS 
    port(Cin  : IN STD_LOGIC; 
      X,Y  : IN STD_LOGIC_VECTOR(15 DOWNTO 0); 
      S  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); 
      Cout, Over : OUT STD_LOGIC); 
END design; 

ARCHITECTURE struct OF design IS 
SIGNAL C,temp : STD_LOGIC_VECTOR(1 TO 15); 
BEGIN 
      main: prog PORT MAP(Cin,X,Y,S,C,Cin); 
END struct; 

-- prog.vhdl 
library ieee; 
use ieee.std_logic_1164.all; 
use work.fulladd_pack.all; 

ENTITY prog IS 
    port(Cin  : IN STD_LOGIC; 
      X,Y  : IN STD_LOGIC_VECTOR(15 DOWNTO 0); 
      S  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); 
      Cout, Over : OUT STD_LOGIC); 
END prog; 

ARCHITECTURE struct OF prog IS 
SIGNAL C,temp : STD_LOGIC_VECTOR(1 TO 15); 
BEGIN 
      instance0: fulladd PORT MAP(Cin,X,Y,S,C,Cin); 
      output: fulladd PORT MAP(Cin,X,Y,S,C,Cin); 


END struct; 
+0

Ваш код не является [минимальным, полным и проверяемым примером] (http://stackoverflow.com/help/mcve), отсутствует декларация пакета, есть семантические ошибки, назначающие входные сигналы на выходы (где находятся Over используются сигналы?). дизайн не выглядит, если использует fulladd_pack, если там нет декларации компонента для prog (иначе отсутствует). Существуют конфликты дисков на S, Cout и Over в двух экземплярах full_add, которые просто подключены параллельно. c не объявляется, поскольку он используется, temp не используется. Связывание - это разработка, после того, как все анализируется (компилируется). Какой инструмент VHDL? – user1155120

+0

Я думаю, что по ссылке вы хотите создать экземпляр 'prog' в архитектуре' design'. Вы на правильном пути. Но для чего нужны сигналы 'C' и' temp'? Почему вы не просто передали входные/выходные сигналы 'design' в экземпляр' main'? И чтобы получить помощь по 'prog', вам нужно либо опубликовать декларацию компонента« fulladd »из пакета, либо просто назначить некоторые (случайные) значения для вывода, чтобы« prog »мог быть скомпилирован. –

+0

Я редактирую свой вопрос и объясняю, что хочу делать –

ответ

0

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

На «верхнем уровне» вы пишете тестовый стенд, который создает экземпляр модели, и вы применяете стимул (путем подачи сигналов, которые являются входами в модель). Стимул усиливает данные вокруг модели. Это продолжается до тех пор, пока вы не прекратите предоставление стимула, и в этот момент все остальное (должно) прекратится.

Итак, нет основного. Напишите тестовый стенд. «Связывание» - это внутренняя концепция симулятора; забудь это. Просто имитируйте исходные файлы вместе.

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