Čo je zlé na to?

T

triggerman

Guest
Napísal som to code.What musím urobiť, je vložiť 4 hodnôt v každom hodinami, ktoré uložím na 2-rozmerné pole a chcem spočítať súčet týchto hodnôt. KNIŽNICA IEEE, použitie IEEE.STD_LOGIC_1164.ALL, použitie IEEE.STD_LOGIC_ARITH.ALL, ENTITY test PORT (x1: IN INTEGER rozsahu od 0 do 255, CLK, zaťaženie: IN std_logic; OUTPUT1: INTEGER z rozsahu 0 až 1020), koniec testu ; ARCHITEKTÚRA správanie testu je typ okna je pole (0 až 1,0 až 1) INTEGER O rozsahu 0 až 255, sa začína proces (CLK, x1) VARIABILNÉ okna: okna, variabilný čiastka: INTEGER rozsah 0 až 1020; BEGIN IF ( clk'EVENT a CLK = '1 '), potom v prípade (load = 1), potom pre i v rozsahu 0 až 1 LOOP pre J v rozsahu 0 až 1 LOOP okna (i, j): = x1; súčet: = súčet + okno (i, j); END LOOP, LOOP END, END IF, END IF; OUTPUT1
 
Ahoj nemožno uložiť 4 hodnôt len ​​jeden hodiny, ako si to robí. Ak chcete urobiť, musíte to urobiť súčasne, bez cyklu. Insted z:
for i in 0 do 1 LOOP pre J v rozsahu 0 až 1 LOOP okna (i, j): = x1; súčet: = súčet + okno (i, j), END LOOP, END LOOP,
by ste mali urobiť niečo takéto: IF (clk'EVENT a CLK = 1) PAK okno (0,0): = x1; okno (0,1): = x1; okno (1,0): = x1, okno (1,1): = x1; súčet: = súčet + okno (0,0) + okno (0,1) + okno (1,0) + okno (1,1); END IF; To nie je "t C programovania. Máte čo do činenia s hardvérom. Pri použití inštrukcie ako "IF (clk'EVENT a CLK = 1) PAK" znamená to, že kód vo vnútri vykoná len raz. "Pre" vykonáva niekoľkokrát, takže ak umiestnite jeden vnútri clk'Event vám predstaví rozpor v kóde. Niektoré kompilátory upozorniť na chybu imediatly. iní ju ignorovať, ale potom sa výsledky vyjdú zle. Dalo by sa urobiť to isté v niekoľkých hodinách, ako by ste používali "pre". Môžete rozhodnúť, čo je najlepšie.
 
Ďalšia vec, ktorá sa chcem opýtať, ako to urobiť: Predstavte si, 20x20 pole s celočíselné hodnoty od 0 do 255.. Chcem oddeliť toto pole v 25 poliach každý z jednej 4x4 a spočíta súčet každého z týchto arrays.So Myslím, že najlepší spôsob, ako to urobiť, je vložiť jednu sústavu (4x4) vypočítať súčet jeho hodnôt, vložte ďalšie polia to isté etc.Do si myslíte, že to je správny spôsob, ako mám na mysli niečo podobné tejto knižnice IEEE;? POUŽITIE IEEE.STD_LOGIC_1164.ALL, použitie IEEE.STD_LOGIC_ARITH.ALL, ENTITY test PORT (x1, x2 , x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16: V INTEGER rozsahu 0 až 255, CLK, zaťaženie: IN std_logic, výkon: INTEGER z rozsahu 0 až 2040), koniec testu, ARCHITEKTÚRA správanie testu je typ filters1 je pole (0 až 24) celého čísla od 0 do 2040, typ filters2 je pole (0 až 24) celého čísla rozsahu 0 až 2040, Signál fil1: filters1; signál fil2 : filters2, začína proces (CLK) variabilný počet: integer: = (0); variabilný sum1_or, sum2_or, sum3_or, sum4_or, sum1_kath, sum2_kath, sum3_kath, sum4_kath: integer rozmedzí 0 až 1020, variabilný filtr1, filtr2: integer rozmedzí 0 až 2040, začína IF (clk'EVENT a CLK = '1 '), potom v prípade (load = 1) PAK IF (počet
 
Áno, myslím, že vaše riešenie bude fungovať. Nemôžem zaručiť, váš kód je úplne pravdu, pretože je ťažké analyzovať tak veľký kód, ale zdá sa mi OK.
 
Som rád, keď počujem, že to bude fungovať z hľadiska spôsobu thinking.Maybe tam sú niektoré syntaktické errors.I len sa spýtať, či existuje lepší spôsob, ako robiť to, čo som opísal v predchádzajúcom post.Thank si moc
 
Áno, existuje. Dalo by sa oddeliť 20x20 poľa do 25 polí 4x4 a urobiť všetky sumy len v jednom hodinovom cykle. Toto riešenie však bude vyžadovať veľa hardvéru, najmä výbavy. Vo vašom prípade budete potrebovať 25 krát viac výbavy s týmto riešením. Ďalšia možnosť spočíva v polovici obdobia riešenia, robia niektoré z týchto operácií paralelne miesto uskutočňovania všetkých. Napríklad môžete vykonávať operácie na 5 polí 4x4 naraz. To dáva pekný podnet k výkonu, bez príliš veľa hardvéru.
 
Vďaka za rýchlu response.Could by ste mi prosím mi dať príklad pochopiť, čo presne máte na mysli?
 

Welcome to EDABoard.com

Sponsor

Back
Top