В вашем пакете есть дополнительные ошибки, в которых отсутствует условие библиотеки (library ieee;
) в предложении контекста.Процедура parity
имеет объявление переменной после begin
, ваши начальные значения для четности1 и четности2 равны 0 (числовой литерал), декларации для rst_n
или mclk
, par
в par <= ...
нет.сигнал, нет тела для процедуры parity
или функции parity
без параметров.
IEEE Std 1076-2008
12.3 Видимость
Два объявления, которые происходят непосредственно в пределах одной и той же декларативной области, кроме декларативной области блока, подразумеваемой созданием компонента илидекларативная область общего или сопоставленного пакета или подпрограммы, эквивалентная экземпляру пакета или экземпляру подпрограммы, не должна быть гомографами , если только один из них не является неявным объявлением предопределенногооперация или является неявным псевдонимом такого неявного объявления.
(Здесь нет неявного объявления и предопределенной операции, выделение добавлено .)
Также в 12.3
... Каждое из двух объявлений называется гомографией другого, если и только если оба объявления имеют одинаковый указатель, и они обозначают разные именованные объекты, и любая перегрузка допускается дляне более одного из двух, или перегрузка разрешена для обоих объявлений, и они имеют одинаковый параметр и профиль типа результата (см. 4.5.1).
4.5 Перегрузка подпрограммы
4.5.1
Говорят, что два списка формальных параметров имеют одинаковый профиль типа параметра тогда и только тогда, когда они имеют одинаковое количество параметров, и если в каждой позиции параметра соответствующие параметры имеюттот же базовый тип.Говорят, что две подпрограммы имеют один и тот же параметр и профиль типа результата тогда и только тогда, когда оба имеют одинаковый профиль типа параметра, и если оба они являются функциями с одним и тем же базовым типом результата или ни один из них не являетсяfunction.
У вас более одной из этих ошибок.Vcom выйти после первого.Порядок, в котором обнаруживаются ошибки, оставлен для капризов реализации инструмента VHDL с применением семантических правил (другие инструменты могут сначала найти другие ошибки, объясняя, как были найдены ошибки в первом абзаце выше).
У Modelsim естьинструмент verror, предоставляющий дополнительные пояснения:
vcom Сообщение № 1295:
Два объявления, которые происходят непосредственно в пределах одной и той же декларативной области, не должны быть гомографиями, если только одно из них не является объявлением предопределенной операции,Каждое из двух объявлений называется гомографией другого, если оба объявления имеют один и тот же идентификатор, символ оператора или символьный литерал и если перегрузка допустима не более чем для одного из двух.Если для обеих деклараций допустима перегрузка, то каждая из двух является гомографией другой, если они имеют одинаковый идентификатор, символ оператора или символьный литерал, а также один и тот же параметр и профиль типа результата (см. 3.1.1).Перегрузка определяется только для подпрограмм (включая те, чей указатель является символом оператора) и литералов перечисления (включая литералы символов).
[DOC: IEEE Std 1076-1993 VHDL LRM - 10.3 Видимость]
(эти ссылки взяты из редакции стандарта -1993).