AlexZabr 0 9 декабря, 2007 Опубликовано 9 декабря, 2007 · Жалоба В проэкте есть немало констатнт которые участвуют в коде. Хоть они и константы в конечно варианте, в процессе разработки/debugа нужно ими играться. Желателен доступ к константам из разных файлов проэкта (VHDL). Подозреваю есть путь определения единого файла в проэкте (опять-же написанном VHDL) в котором можно определить все константы глобально, и затем их употреблять в других sources данного проэкта. (Нечто типа .h файлов в С). Как это делается ? Делается ли просто entity со списком generic параметров (после чего entity закрывается) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 9 декабря, 2007 Опубликовано 9 декабря, 2007 · Жалоба VHDL packages ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 9 декабря, 2007 Опубликовано 9 декабря, 2007 · Жалоба Как это делается ? Это делается с использованием пакетов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nogapok 0 8 января, 2008 Опубликовано 8 января, 2008 · Жалоба В проэкте есть немало констатнт которые участвуют в коде. Хоть они и константы в конечно варианте, в процессе разработки/debugа нужно ими играться. Желателен доступ к константам из разных файлов проэкта (VHDL). Подозреваю есть путь определения единого файла в проэкте (опять-же написанном VHDL) в котором можно определить все константы глобально, и затем их употреблять в других sources данного проэкта. (Нечто типа .h файлов в С). Как это делается ? Делается ли просто entity со списком generic параметров (после чего entity закрывается) ? -- GF_N_pkg.vhd -- -- Purpose: This package defines the global variables to be used by the GF_N project -- It defines: -- K = Galois Field Size -- P = Irreducable Polynomial to be used -- A = Multiplier -- B = Multiplicand library IEEE; use IEEE.STD_LOGIC_1164.all; package GF_N_pkg is -- Declare K, where K is number of bits of Galois Field (i.e. GF(K) ) constant K : integer := 8; -- Declare P, the irreducable Polynomial. -- This will be stored in PTerms --**************************************************************** -- GF4 Polynomial = "0011" -- constant P : std_logic_vector(K-1 downto 0) := "0011"; --**************************************************************** --**************************************************************** -- GF8 Polynomial = 0x1B constant P : std_logic_vector(K-1 downto 0) := "00011011"; --**************************************************************** constant A : std_logic_vector(K-1 downto 0) := "01010111"; constant B : std_logic_vector(K-1 downto 0) := "10000011"; end GF_N_pkg; Например так Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Спасибо, вернулся к проэкту. Определил package констант, сохранил как vhd source файл в одной директории с рабочим VHDL сорсом который будет пользоваться константами из данного package. В рабочем VHDL файле задекларировал вначале use package_name.all Проблема, при компиляции выдается ошибка ignoring use clause - ignoring pcakge_name и ессно вследствии этого не опознания используемых констант. Что я ее не сделал что-бы рабочие сорсы "видели" и принимали мою библиотеку с этим package ? Нужно ли файл содержащий package_name отдельно предварительно компилировать спец. образом ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Спасибо, вернулся к проэкту. Определил package констант, сохранил как vhd source файл в одной директории с рабочим VHDL сорсом который будет пользоваться константами из данного package. В рабочем VHDL файле задекларировал вначале use package_name.all Проблема, при компиляции выдается ошибка ignoring use clause - ignoring pcakge_name и ессно вследствии этого не опознания используемых констант. Что я ее не сделал что-бы рабочие сорсы "видели" и принимали мою библиотеку с этим package ? Нужно ли файл содержащий package_name отдельно предварительно компилировать спец. образом ? Да, файл содержащий описание пакетов необходимо компилировать вместе с остальными файлами проекта. Если не ошибаюсь, то по умолчанию все модули компилируются в библиотеку work, поэтому перед использованием пакетов надо указать откуда эти пакеты берутся: library work; use package_name.all; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Да, файл содержащий описание пакетов необходимо компилировать вместе с остальными файлами проекта. Если не ошибаюсь, то по умолчанию все модули компилируются в библиотеку work, поэтому перед использованием пакетов надо указать откуда эти пакеты берутся: library work; use package_name.all; Спасибо, но проэкт у меня и так определен как состящий из этих 2х файлов: файла содержащего package и рабочего файла кода. Когда пытаюсь его компилировать (среда ispLEVER от Lattice) - и происходит ошибка в не опознании файла package как библиотеки. Так оно у меня и идет в рабочем коде: library work; use package_name.all не помогает. Подозреваю что может быть нужно иметь library которая pre-compiled спец. образом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Спасибо, но проэкт у меня и так определен как состящий из этих 2х файлов: файла содержащего package и рабочего файла кода. Когда пытаюсь его компилировать (среда ispLEVER от Lattice) - и происходит ошибка в не опознании файла package как библиотеки. Так оно у меня и идет в рабочем коде: library work; use package_name.all не помогает. Подозреваю что может быть нужно иметь library которая pre-compiled спец. образом... Возможно причина в том, что файлы компилируются в не той последовательности, т.е. сначала должен компилироваться файл содержащий описание пакетов, а затем файл где они вызываются. Если не ошибаюсь, то в качестве синтезатора среда ispLEVER использует Synplify? Если это так, то попробуйте в явном виде указать, что такой-то файл является библиотекой (Project/Set VHDL library...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Возможно причина в том, что файлы компилируются в не той последовательности, т.е. сначала должен компилироваться файл содержащий описание пакетов, а затем файл где они вызываются. Причина вовсе не в этом. Неправильно задекларировано использование пакета package_name. Во-первых, library work; можно не писать, если пакет компилируется в библиотеку work. Во-вторых, надо указывать библиотеку, в которой пакет находится: use library_name.package_name.all; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Пробовал и library work; use work.package_name.all не помогает. Вообще последовательность следующая: есть 2 vhd файла - один содержит package в котором только константы, второй - рабочий код. В том где рабочий код задекларировано: library work; use work.package_name.all но оба файла находятся в под-директории относительно work (скажем, work/project/...) Оба файла присоединены к проэкту в среде ispLEVER. При вызове синтезатора (Synplify) или Build я обязан указать файл с top entity, т.е. мой рабочий файл. В файле где package, не вообще entity (только константы). Что не пойму - как объяснить среде (синтезатору и симулятору (МодельСиму)) что vhd файл в котором pacakge - он library... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Причина вовсе не в этом. Неправильно задекларировано использование пакета package_name. Во-первых, library work; можно не писать, если пакет компилируется в библиотеку work. Во-вторых, надо указывать библиотеку, в которой пакет находится: use library_name.package_name.all; А что значит компиляция пакета в библиотеку ? этот vhd файл в котором у меня пакет не компилирован предварительно. Я его пытался компилировать (для синтезатора или последством Build) вместе с рабочим vhd файлом...наверно это проблема... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Пробовал и library work; use work.package_name.all не помогает. Я всю жизнь так делаю, у меня работает. Вообще последовательность следующая: есть 2 vhd файла - один содержит package в котором только константы, второй - рабочий код. В том где рабочий код задекларировано: library work; use work.package_name.all Дава1те без этих абстракций. Переходим к конкретике. Как называется файл, в котором находится пакет? Как называется сам пакет? но оба файла находятся в под-директории относительно work (скажем, work/project/...)Абсолютно не важно, где они находятся. Главное, чтобы это знала та тулза, которой эти файлы скармливаются. Оба файла присоединены к проэкту в среде ispLEVER. При вызове синтезатора (Synplify) или Build я обязан указать файл с top entity, т.е. мой рабочий файл. В файле где package, не вообще entity (только константы). Про ispLEVER ничего не скажу... Что не пойму - как объяснить среде (синтезатору и симулятору (МодельСиму)) что vhd файл в котором pacakge - он library... ModelSim: cначала компилируем пакет в библиотеку work, потом файл со схемой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Я всю жизнь так делаю, у меня работает. Дава1те без этих абстракций. Переходим к конкретике. Как называется файл, в котором находится пакет? Как называется сам пакет? Абсолютно не важно, где они находятся. Главное, чтобы это знала та тулза, которой эти файлы скармливаются. Про ispLEVER ничего не скажу... ModelSim: cначала компилируем пакет в библиотеку work, потом файл со схемой. Вот именно это и не пойму - как компилировать пакет в библиотеку... ? Присединил оба файла - ADU_params.vhd - пакет, TFT_TG.vhd - рабочий код. Оба находятся в под-директории workа: /work/NOA/ADU/ Как предварительно компилировать файл пакета в библиотеку ? Спасибо. ADU_params.vhd TFT_TG.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
htla 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба в рабочем файле имеется library work; use ADU_params.all; должно быть library work; use constants.all; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Вот именно это и не пойму - как компилировать пакет в библиотеку... ? Скрипт для ModelSim vlib work vcom -work work ADU_params.vhd vcom -work work TFT_TG.vhd У вас там куча ошибок. Но ваша главная ошибка в том, что вы вместо имени пакета используете имя файла. Это разные и друг с другом не связанные вещи. Надо так: use work.constants.all; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться