Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A VEREM MŰKÖDÉSE FPGA-N Készítette: Labancz Anita.

Hasonló előadás


Az előadások a következő témára: "A VEREM MŰKÖDÉSE FPGA-N Készítette: Labancz Anita."— Előadás másolata:

1 A VEREM MŰKÖDÉSE FPGA-N Készítette: Labancz Anita

2 A verem fogalma és működése A verem egy olyan memória terület, ahol átmenetileg adatokat tudunk tárolni. A vermet tekinthetjük egy speciális „listának”, amelynek legfőbb jellemzője, hogy az utoljára beírt adatokat lehet először kiolvasni. Az adatforgalom a bemeneti sorrenddel ellenkező kimeneti sorrendű. LIFO (Last In First Out) szervezésűnek is hívjuk.

3 A system stack(SS) és stack pointer(SP)fogalma SYSTEM STACK Minden mikrokontrollernek van egy rendszer verme (system stack) Alkalmazása Ide tároljuk le azt a visszatérési memóriacímet, ahová vissza akarunk térni a szubrutin befejezése után Más állapot információk tárolása interrupt bekövetkezésekor STACK POINTER A stack pointer = veremmutató regiszter A verem legfelső elemére mutat.

4 A verem műveletei Két műveletét különböztetjük meg PUSH: Ezzel teszünk be új értékeket a verembe ( beolvasás) POP: Ezzel törlünk a veremből régi értékeket (kiírás) Ha új értéket teszünk be a verembe (PUSH), akkor az SP értékét csökkentem eggyel Ha értéket törlök a veremből (POP), akkor az SP értékét megnövelem eggyel.

5 A stack32x16 module bemutatása stack32x16 d[15:0 ] clr push pop clk q[15:0 ] full empty Az FPGA-ban megosztott memóriát használunk a verem implementálásához 16-bite szavakat tudunk tárolni benne és a verem kapacitása 32 lesz. Ha push=1, akkor a verembe helyezett érték d[15:0] (órajel 0-ból 1-be áll) Ha pop=1, akkor a veremből kiolvasott érték q[15:0] (órajel 0-ból 1-be áll) A verem tetejéről írjuk ki az értéket. Ha a pop=push=0, akkor nem történik változás (az órajel nem áll 0  1) Ha a pop=push=1, ekkor a d[15:0] értéket úgy tárolom el a verem tetején (0  1), hogy az SP értéke nem változik (nem csökken) Ha a verem üres, akkor empty = 1 Ha a verem tele van, akkor a full = 1

6 A stack32x16 module bemutatása 32x16 megosztott RAM (Core Generator) Az SP tartalmazza a verem tetején elhelyezett érték címét. Hova mutasson az SP? A verem tetején tárolt elem címére A következő elem címére, ami üres még Az előző részben azt állítottuk, hogy az SP értékét csökkenteni kell eggyel és azután tároljuk el az érték új címét. Előnye: A verem tetejére mutat az SP ( amit ki tudunk venni belőle; q[15:0)] Hátránya: Kettő órajel ciklus kell ennek a megvalósításához 1 lépés: SP értékét csökkentjük 2. lépés: érték új címének elmentése

7 A stack32x16 module bemutatása A második lehetőséget mellett maradjunk( az üres helyre mutasson az SP) 1. lépésben betesszük az SP által mutatott üres címre az új értéket 2. lépésben csökkentjük az SP-t Előnye: Egy órajel alatt elvégezhetjük a két lépést Hátránya: Üres memória címre mutat az SP Dual-port RAM alkalmazása wr_addr : beleteszünk a verembe egy értékét és annak a címét letároljuk ebben, majd csökkentjük a wr_addr és az rd_addr-t Mindig igaz lesz: wr_addr = rd_addr+1 rd_addr : ebben tároljuk annak az elemnek a címét, amit éppen kiolvastunk (q[15:0]), majd növeljük az rd_addr és a wr_addr-t wr_addr rd_addr

8 A stack32x16 module bemutatása stack32x16 d[15:0] clr clk push pop clk we 0 1 wr_addr rd_addr wr2_addr a[4:0] asmel dpra[4:0] full empty dpo[15:0] q[15:0] spo[15:0] open

9 A dpram32x16 module beállítása Elérési útvonala ISE Desing Siute 14.3 New project… IP(Core Generator &Architecture Wizard) View by Name fül Distributed Memory generator

10 A stack32x16 module bemutatása Ha a we=1, akkor az órajel(clk) 0  1, az érték d[15:0], és a címe: a[4:0] Kimenet: spo[15:0] ez az az érték ami a[4:0] van tárolva a címe, dpo[15:0] pedig az az érték, aminek a címe a dpra[4:0] van. Multiplexer wr_addr és az rd_addr: vagy az egyik vagy a másik tárolja a write címét. Ez függ: Ha push=1  wr_addr Ha push = 1 és pop = 1  rd_addr

11 A dpram32x16 module beállítása

12

13

14 A push és pop műveletek Operationpushpopasmelwe No operation0000 pop value from stack0100 push value on stack1001 Write to top of stack1111


Letölteni ppt "A VEREM MŰKÖDÉSE FPGA-N Készítette: Labancz Anita."

Hasonló előadás


Google Hirdetések