XAPP380 / Dynamische Bits zusammen setzen

Gast #1644748
Lesenswert?

Hallo, ich würde gerne 16 Eingangssignale freiwählbar in ein 8 Bit 
Register schreiben. Nach einigem suchen hab ich die XAPP380 von Xilinx 
gefunden, aber es ist ein bisschen zu aufgebläht. Die Selektierten Bits 
müssten auch von LSB nach MSB sortiert werden. Hier ein Beispiel


Eingang:
Bit 0    =  1
Bit 1    =  0
Bit 2    =  1
Bit 3    =  1
Bit 4    =  1
Bit 5    =  0
Bit 6    =  1
Bit 7    =  1
Bit 8    =  1
Bit 9    =  0
Bit 10   =  1
Bit 11   =  1
Bit 12   =  1
Bit 13   =  0
Bit 14   =  1
Bit 15   =  1

Selektierregister :
Bit 11, Bit 13, Bit 14, Bit 15 werden ausgewählt
Hex = E8 00

Speicherregister (8Bit):

Bit 0 = 1
Bit 1 = 0
Bit 2 = 1
Bit 4 = 1
Bit 5 = x
Bit 6 = x
Bit 7 = x

Geht es vielleicht etwas einfacher als die Xapp380 ?
Gast #1644962
Lesenswert?

wo bekommst du denn die Info welche Bits genutzt werden her und vor 
allem : wie schnell muss das umgesetzt werden ?


bsp : du bekommst von außen eine bitposition pro takt.

dann würde ich einfach jeden takt über einen pointer ein bit des vektors 
auswählen und in speicherregister reinschieben.

etwa so :

if new_order='1' then
  save_reg <= save_reg(7 downto 1) & input_reg(to_integer(reg_to_get));
end if;


bei einer steuerung von außen musst du so zwar immer alle 8 bits 
durchlaufen, dafür dürfte sich der hardwareaufwand in grenzen halten. 
(ein großer mux halt...)


wenn zeit keine rolle spielt : das input_reg entsprechend 
"durchschieben" und immer die gleiche position (z.b. LSB) abgreifen.
Gast #1645183
Lesenswert?

Hallo Iulius, die Vorgabe gibt der User über USB und wird nach jeder 
Konfigurationsänderung neu eingestelllt. Schnell muss es in dem Fall 
nicht sein, weil es nur zur Konfigurationszeit eingestellt wird.

if new_order='1' then
  save_reg <= save_reg(7 downto 1) & input_reg(to_integer(reg_to_get));
end if;

Ist eine schoene Lösung. Sollte es aber nicht so lauten ??

if new_order='1' then
  save_reg <= save_reg(7 downto 0) & input_reg(to_integer(reg_to_get));
end if;
Gast #1646088
Lesenswert?

Das wird dir der synthesizer nicht abnehmen, da (7 downto 0) bereits 8 
bit sind und der zielvektor auch 8 bit groß ist.

Das Ziel ist jedoch ein schieberegister welches 7 alte bits übernimmt 
und ein neues, 8tes bit reinschiebt.

Eventuell nochmal das "&" und seine Bedeutung(konkatenation) anschauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren