VHDLコンポーネントをテストしようとしていますが、この 1 つの inout ポートで動作を確認できません。ポートを '1' から '-' までのすべてに設定しようとしましたが、シミュレーションではまだ 'U' として表示されます。何が間違っているのでしょうか?
34555 次
4 に答える
19
Inout ポートの場合 (RAM など):
....
port(
data :inout std_logic_vector (DATA_WIDTH-1 downto 0);
....
-- Memory Write Block
-- Write Operation : When we = 1, cs = 1
MEM_WRITE: process (address, cs, we, data, address_1, cs_1, we_1, data_1) begin
if (cs = '1' and we = '1') then
mem(conv_integer(address)) <= data;
end if;
end process;
-- Tri-State Buffer control
data <= data_out when (cs = '1' and oe = '1' and we = '0') else (others=>'Z');
-- Memory Read Block
MEM_READ: process (address, cs, we, oe, mem) begin
if (cs = '1' and we = '0' and oe = '1') then
data_out <= mem(conv_integer(address));
else
data_out <= (others=>'0');
end if;
end process;
条件付きの inout にデータの読み取りと書き込みを割り当てます。データが読み取られると、別のモジュールによって駆動されます。書き込み時は内部で駆動されます。
- 別のモジュールによって (信号のように) 駆動されると、データはすべて「Z」とベクトル「0101010」の間で解決されます。データは「0101010」として駆動されます。
- 他の場合: 他のモジュールはすべて「Z」でデータをドライブする必要があり、内部信号はその値をデータに入れることができます。
于 2012-07-04T04:44:04.323 に答える
7
「Z」への明示的なドライバーが必要です。
于 2009-10-02T17:30:14.110 に答える