Alternativ for hvis-elsif.

O

oursriharsha

Guest
hej,
Jeg er nødt til at læse fra en hukommelsesplacering sige 10 x8 placering, som jeg udtrykket som
Vektor.

Kan nogen foreslå mig en alternativ metode til at læse dem vektor steder på nogle forskellige ting.

sige på hvert 120μs, 125μs, 130μs, 220μs, 225μs, 250μs ,......på 32 forskellige tidspunkter på døgnet.

for eksempel i koden nedenfor,
Jeg har taget en vektor med 8 steder og initialiseret dem med forskellige værdier.
CLK er 1us / 1MHz.

er der nogen alternativ til hjælp, at mange ikke af, hvis elsif sløjfer.

Som det så rigtigt sagt af en ouf vores medlemmer her, ville det virke som en procedurefejl sprog.Så vær venlig at foreslå nogle synthesiable alternativ.

Ville sætte stor pris på, og også point.
Kode:

-----***** VECTOR initialization *********** -----Vector (0) <= "1001000001";

Vector (1) <= "0001000001";

VECTOR (2) <= "0000000000";

Vektor (3) <= "0000000000";

VECTOR (4) <= "0000000000";

Vektor (5) <= "0000111110";

VECTOR (6) <= "0001111111";

Vector (7) <= "0000000001";

--------------------------------------------------proces (CLK_SEQ, CNTR_SEQ, RST_TOP, Vector (0), Vector (1), Vector (2), Vector (3), Vector (4))begyndif (RST_TOP = '0 ') then

CNTR_SEQ <= "00000000000";elsif (RST_TOP = '1 ') thenif (CLK_SEQ'event og CLK_SEQ = '1 ') then- ALE_TOP <= '1 ';

RW_SEQ <= TEMP_VECTOR (9);

STRB_SEQ <= TEMP_VECTOR (8 downto 6);

ADDR_SEQ <= TEMP_VECTOR (5 downto 0);CNTR_SEQ <= CNTR_SEQ 1;if (CNTR_SEQ = "00001111000") derefter - optælling af 120

TEMP_VECTOR <= Vector (0);elsif (CNTR_SEQ = "00001111110") derefter - optælling af 126

TEMP_VECTOR <= Vector (1);elsif (CNTR_SEQ = "00010000010") then

TEMP_VECTOR <= Vector (2);elsif (CNTR_SEQ = "00010000100") then

TEMP_VECTOR <= Vector (3);elsif (CNTR_SEQ = "00011110000") then

CNTR_SEQ <= "00000000000";end if;

end if;

end if;if (RST_SEQ = '0 ') thenDatabus <= "00000000";elsif (CLK_SEQ'event og CLK_SEQ = '1 ') then

if (RW_SEQ = '0 ') thenDatabus <= DATABUS_TEMP1;end if; - rw_seq looopend if; - reset looop.end process;

 
oursriharsha skrev:

hej,

Jeg er nødt til at læse fra en hukommelsesplacering sige 10 x8 placering, som jeg udtrykket som

Vektor.Kan nogen foreslå mig en alternativ metode til at læse dem vektor steder på nogle forskellige ting.sige på hvert 120μs, 125μs, 130μs, 220μs, 225μs, 250μs ,......
på 32 forskellige tidspunkter på døgnet.for eksempel i koden nedenfor,

Jeg har taget en vektor med 8 steder og initialiseret dem med forskellige værdier.

CLK er 1us / 1MHz.er der nogen alternativ til hjælp, at mange ikke af, hvis elsif sløjfer.Som det så rigtigt sagt af en ouf vores medlemmer her, ville det virke som en procedurefejl sprog.Så vær venlig at foreslå nogle synthesiable alternativ.Ville sætte stor pris på, og også point.Kode:

-----***** VECTOR initialization *********** -----Vector (0) <= "1001000001";

Vector (1) <= "0001000001";

VECTOR (2) <= "0000000000";

Vektor (3) <= "0000000000";

VECTOR (4) <= "0000000000";

Vektor (5) <= "0000111110";

VECTOR (6) <= "0001111111";

Vector (7) <= "0000000001";

--------------------------------------------------proces (CLK_SEQ, CNTR_SEQ, RST_TOP, Vector (0), Vector (1), Vector (2), Vector (3), Vector (4))begyndif (RST_TOP = '0 ') then

CNTR_SEQ <= "00000000000";elsif (RST_TOP = '1 ') thenif (CLK_SEQ'event og CLK_SEQ = '1 ') then- ALE_TOP <= '1 ';

RW_SEQ <= TEMP_VECTOR (9);

STRB_SEQ <= TEMP_VECTOR (8 downto 6);

ADDR_SEQ <= TEMP_VECTOR (5 downto 0);CNTR_SEQ <= CNTR_SEQ 1;if (CNTR_SEQ = "00001111000") derefter - optælling af 120

TEMP_VECTOR <= Vector (0);elsif (CNTR_SEQ = "00001111110") derefter - optælling af 126

TEMP_VECTOR <= Vector (1);elsif (CNTR_SEQ = "00010000010") then

TEMP_VECTOR <= Vector (2);elsif (CNTR_SEQ = "00010000100") then

TEMP_VECTOR <= Vector (3);elsif (CNTR_SEQ = "00011110000") then

CNTR_SEQ <= "00000000000";end if;

end if;

end if;if (RST_SEQ = '0 ') thenDatabus <= "00000000";elsif (CLK_SEQ'event og CLK_SEQ = '1 ') then

if (RW_SEQ = '0 ') thenDatabus <= DATABUS_TEMP1;end if; - rw_seq looopend if; - reset looop.end process;

 
hi Tan,
tak for svaret, men hvis du bemærker, im koden forsøger at afkode de data, jeg har hentet fra vektorer.
Jeg er helt enig med at skabe 2 LUT som i mit tidligere prob, vil det bare være nyttigt i modularitet.(korrigere mig, hvis im wrong.) / kode håndtering.

hvad lave u sige?

 
oursriharsha skrev:

hi Tan,

tak for svaret, men hvis du bemærker, im koden forsøger at afkode de data, jeg har hentet fra vektorer.

Jeg er helt enig med at skabe 2 LUT som i mit tidligere prob, vil det bare være nyttigt i modularitet.
(korrigere mig, hvis im wrong.) / kode håndtering.hvad lave u sige?
 
Flytning til at skrive dem til flash-ROM og læse.
Jeg tror, jeg har brug for hjælp igen

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Meget glad" border="0" />

.

 
Du kan prøve følgende kode ... og lad mig vide, hvis det virker for dig ..

Kode:-----***** VECTOR initialization *********** -----Vector (0) <= "1001000001";

Vector (1) <= "0001000001";

VECTOR (2) <= "0000000000";

Vektor (3) <= "0000000000";

VECTOR (4) <= "0000000000";

Vektor (5) <= "0000111110";

VECTOR (6) <= "0001111111";

Vector (7) <= "0000000001";

--------------------------------------------------

- Separat proces for clocket begivenheder og

- Opgaver baseret på Ur Edge

Processen (CLK_SEQ, RST_TOP)

Begynd

If (RST_TOP = '0 ') Then

CNTR_SEQ <= "00000000000";

Elsif (CLK_SEQ'Event OG CLK_SEQ = '1 ') Then

RW_SEQ <= TEMP_VECTOR (9);

STRB_SEQ <= TEMP_VECTOR (8 downto 6);

ADDR_SEQ <= TEMP_VECTOR (5 downto 0);

CNTR_SEQ <= CNTR_SEQ 1;

End If;

End-processen;- Multikombinerbare Process blokere for

- Tildeling af midlertidig variabler

- Kan TEMP_VECTOR erklæres globalt (SIGNAL) eller

- Inde i processen som en VARIABBLE type

Proces (CNTR_SEQ)

Begynd

Sag CNTR_SEQ Is

Når "00001111000" => TEMP_VECTOR <= Vector (0);

Når "00001111110" => TEMP_VECTOR <= Vector (1);

Når "00010000010" => TEMP_VECTOR <= Vector (2);

Når "00010000100" => TEMP_VECTOR <= Vector (3);

Når "00011110000" => TEMP_VECTOR <= "00000000000";

Når OTHERS => ?????; - Brug denne andre klausul at undgå Underforstået låsene

- I dit design.

End sag;

End-processen;- Enten Tildel-udgang her output <= TEMP_VECTOR

- Eller brug registreret output ved hjælp af en anden proces

- Baseret på CLK_SEQ og tildele output på

- Ur kantProcessen (CLK_SEQ, RST_SEQ)

Begynd

If (RST_SEQ = '0 ') Then

Databus <= "00000000";

Elsif (CLK_SEQ'Event OG CLK_SEQ = '1 ') Then

If (RW_SEQ = '0 ') Then

Databus <= DATABUS_TEMP1;

End If;

End If;

End-processen;
 
Kudos !!!!!!!!for svaret ..
Jeg vil tjekke det ud nu ...

 

Welcome to EDABoard.com

Sponsor

Back
Top