Gast
#1690584
Hallo,
habe folgendes Problem. Ich lese den Register-Wert tx_regRead ein (der
sich bei jedem Programmdurchlauf ändert).
Wenn dieser vollständig eingelesen ist, bei index = 16, konvertiere ich
diesen in einen Integer und will schauen ob sein Wert der dez. Zahl
110*10**3 entspricht.
Wenn ja soll der Wert tx_regRead bleiben, -> für weitere Bearbeitung
(egal).
Wenn nein, dann soll ein konstanter Bitstring constTxData in einen
Integer
konvertiert werden bei jedem Durchlauf dekrementiert werden, also
constTxData -1, constTxData-2, constTxData-3 usw...und das solange bis
der Wert counts_n = 110K entspricht. Anschließend (wenn counts_n = 110K)
soll der newIF_reg Wert wieder in einen Bitvector revIF_reg konvertiert
werden.
Ich bin mir nicht ganz sicher ob das da so stimmt wie ich es realisiert
habe. Zudem bekomme ich immer Warnings "Iteration limit falure". Danke
für
die Hilfe.
Hier mein Programmausschnitt:
...
signal IF_reg : integer:=0;
signal newIF_reg : integer:=0;
signal counts_n : integer:=0;
signal revIF_reg std_ulogic_vector;
signal constTxData ist ein Bitstring aus einem Array
signal tx_regRead std_ulogic_vector;
...
counts_n <= (TO_INTEGER(unsigned(tx_regRead)))when (index =
16)else 0;
process (counts_n, newIF_reg, reset)
begin
if (reset = '0') then
IF_reg <= 0;
newIF_reg <= 0;
else
newIF_reg <= TO_INTEGER(unsigned(constTxData(4)(10 downto 0)));
if (counts_n = 11*10**3) then
else
if(counts_n /= 11*10**3)then
newIF_reg <= newIF_reg - 1;
end if;
end if;
end if;
revIF_reg <= "00110" &
To_StdULogicVector(std_logic_vector(to_unsigned(newIF_reg, 11)));
end process;
...