私は基本的には配列の最初の値をインクリメントするunsignedと配列の配列を持っています。これは、配列の要素を0に設定するasynchronosリセットを実装するまでうまくいきました。奇妙なことは、asynchronosリセットのコードに決して到達していなくても、残りのコードはもう動作しなくなります。ここに私のコードは次のとおりです。VHDLの奇妙な行動配列
use work.datentyp.all;
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity vektoruhr is
port (
clk, reset : in std_logic ;
);
end vektoruhr;
architecture v1 of vektoruhr is
signal internal_stamp : vektor := (others => (others => '0'));
begin
process(clk)
begin
if(rising_edge(clk)) then
internal_stamp(0) <= internal_stamp(0) + 1;
end if;
end process;
process(reset)
begin
if(rising_edge(reset)) then
report "reset triggered";
-- internal_stamp <= (others => (others => '0'));
alarm <= '0';
end if;
end process;
end v1;
あなたが見ることができるように、ライン
-- internal_stamp <= (others => (others => '0'));
がコメントアウトされています。このように、すべてうまく動作します。しかし、 - を削除すると、最初の要素の値は最初に00になり、次に最初のインクリメントの後に0xに変更され、2番目のインクリメントの後にxxに変更されます。その後、それはxxにとどまります。リセット入力は最初から「0」に設定され、決して変更されません。
を、あなたが最初にあなたの質問をしたときに、私たちは答えている可能性がすべてこのコードを掲載いましたそれははるかに迅速に。 –
コードは分析されません。ポート宣言では、余分なセミコロン(ポートインターフェイスオブジェクトの宣言の後の宣言区切り記号)があります。 vektorのためのタイプ宣言はありません(たぶんパッケージ 'datentyp'がありません)。信号割当対象の「アラーム」は宣言されていない(質問には必要ない)。かなり[MCVE](http://stackoverflow.com/help/mcve)ではなく、複数のドライバを表示するのに十分です。 IEEE Std 1076-2008を参照してください。14.7.2ドライバ「プロセスステートメントのすべての信号割り当てステートメントは、特定のスカラー信号用のドライバのセットを定義します。 – user1155120
パッケージnumeric_stdのソース([-2008](http://standards.ieee.org/downloads/1076/1076-2008/)、[以前のリビジョン](http://standards.ieee.org/downloads/1076) /1076.2-1996/))は、タイプunsignedが解決されたシグナルのサブタイプまたはタイプであることを示します。 4.6分解能パラ3分解された信号に関連する分解能関数は、複数の供給源からの入力集合の関数として信号の分解された値を決定する。解像度関数 '解決済み 'は、パッケージstd_logic_1164にあります。 – user1155120