VHDL中有一項功能提供了類似於您所要求的功能。但在我們進入之前,您應該聽取Brian的意見,並讓您的註冊文件成爲您設計中的適當實體。這將迫使你想清楚這些部件是如何相互作用的,你必須在某個時候做到這一點。
我正在談論的功能是全局信號。它們可以在包裝中聲明並用於各種實體之間。公平地說,我認爲這不是一個好主意。如您所料,這可能不會讓您的設計更清晰;它會使它更神祕。無論如何,你可以自由嘗試,然後告訴我們你的結論。
這裏有一個小例子來展示我的意思。它不應該做任何有用的事情,但它的ModelSim運行正常,並在的Quartus 12.1合成OK:
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將保持出現在電路中的所有子電路的不同狀態信息。例如,如果電路包含一個觸發器,並且該電路多次用作一個子電路,那麼當模擬較大的電路時,每個子電路的觸發器都將擁有自己的值。「我想知道是否有任何解決方法。如果所有觸發器都可以具有相同的值。 –
拉出電路並將其添加到頂層設計。明確地將所有用戶連接起來。我無法理解細節,但這是你必須做的事情的本質。 –
那麼沒有其他辦法了?如果我把它拉出來,我的頂級設計電路將會變得更加擁擠,所以我想要另一種方式。無論如何感謝... –