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 ?
Hier der Link zur Appnote XAPP380: http://www.xilinx.com/support/documentation/application_notes/xapp380.pdf
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.
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;
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.