В VHDL есть функция, которая обеспечивает нечто похожее на то, что вы просите. Но прежде чем мы пойдем к этому, вы, вероятно, должны послушать Брайана и сделать свой файл регистрации подходящим сущностью в своем дизайне. Это заставит вас точно подумать о том, как части будут взаимодействовать, что вам нужно будет сделать в какой-то момент.
Функция, о которой я говорю, это глобальные сигналы. Они могут быть объявлены в пакетах и использованы на разных объектах. Справедливости ради, я не думаю, что это была бы хорошая идея. Это, вероятно, не сделает ваш проект более ясным, как вы ожидаете; это сделает его более грязным. В любом случае, вы можете попробовать, а затем рассказать нам свои выводы.
Вот небольшой пример, чтобы показать, что я имею в виду. Это не должен делать что-нибудь полезное, но работает нормально в ModelSim и синтезирует нормально в Quartus 12.1:.
package register_file_pkg is
type register_file_type is array (0 to 31) of integer range 0 to 255;
signal register_file: register_file_type;
alias pc is register_file(31);
end;
--------------------------------------------------------------------------------
use work.register_file_pkg.all;
entity alu is
port (
clock: in bit;
zero_flag: out boolean;
last_pc_flag: out boolean
);
end;
architecture rtl of alu is
begin
zero_flag <= (register_file(0) = 0);
last_pc_flag <= (pc = 255);
process (clock) begin
if clock'event and clock = '1' then
register_file(0) <= pc/4;
end if;
end process;
end;
--------------------------------------------------------------------------------
library ieee;
use ieee.numeric_bit.all;
use work.register_file_pkg.all;
entity cpu is
port (
clock: in bit;
address_bus: out integer;
zero_flag: out boolean;
last_pc_flag: out boolean
);
end;
architecture rtl of cpu is
begin
address_bus <= pc;
process (clock) begin
if clock'event and clock = '1' then
pc <= pc + 1;
end if;
end process;
cpu_alu: entity work.alu
port map(
clock => clock,
zero_flag => zero_flag,
last_pc_flag => last_pc_flag
);
end;
Logisim учебники состояние «Logisim будет поддерживать различную информацию о состоянии для всех подсхем, входящих в схему, например, если схема содержит триггер, и эта схема используется в качестве подсхемы несколько раз, тогда каждый триггер каждой подсети будет иметь свое значение при моделировании более крупной схемы ». Я хочу знать, есть ли что-то в этом роде. Если все триггеры могут иметь одинаковое значение. –
Вытяните эту схему и добавьте ее в дизайн верхнего уровня. Подключайте все его пользователи до него явно. Я не могу помочь с деталями, но в этом суть того, что вы должны делать. –
Так нет другого пути? Если я вытащу его, моя схема проектирования верхнего уровня станет намного более перегруженной, поэтому я хотел бы другой способ. Спасибо в любом случае ... –