Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ISE
- 1. libraryji:
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use IEEE.STD_LOGIC_ARITH.ALL;
- use IEEE.STD_LOGIC_UNSIGNED.ALL;
- 2. SIGNAL <= vrijednost
- VARIJABLA := vrijednost
- 3. entity port primjer:
- LED : out STD_LOGIC_VECTOR (7 DOWNTO 0);
- 4. arhitecture primjer dodatnog signala:
- signal clk_div : STD_LOGIC;
- 5. arhitecture u begin, pozivanje dividera:
- clk_1Hz : entity work.generic_divider generic map (100_000_000) port map (clk_in, clk_1);
- 6. dodatni counter ili temp za nesto:
- VARIABLE temp : STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000" ;
- 7. WHEN-ELSE primjer:
- segment_out <= "00000011" WHEN number_in = "0000" ELSE --0
- "10011111" WHEN number_in = "0001" ELSE --1
- ...
- "01110001"; --F
- 8. FSM primjer:
- TYPE state IS (state0, state1, ...);
- SIGNAL current_state, next_state : state; --u arhitecture prije begin
- ----Lower section of FSM----
- PROCESS(clk_div)
- BEGIN
- IF(clk_div'event and clk_div='1') then
- current_state <= next_state;
- END IF;
- END PROCESS;
- ----Upper section of FSM----
- PROCESS(current_state)
- BEGIN
- --9. primjer
- END PROCESS;
- 9. CASE-IS-WHEN primjer:
- CASE current_state IS
- WHEN state0 =>
- output <= "00000001";
- next_state <= state1;
- WHEN state1 =>
- output <= "00000010";
- next_state <= state2;
- END CASE;
- 10. semafori (nekakve vremenske konstante)
- u arhitecture prije begin:
- CONSTANT timeR : INTEGER := 5;
- SIGNAL time_temp : INTEGER RANGE 0 TO timeMAX;
- u FSM postavimo counter koji broji sekunde od zadnje promjene stanja:
- VARIABLE counter : INTEGER RANGE 0 TO timeMAX;
- 11. primjer spajanja više varijabli u jednu (decoded_data je signal 0 TO 15):
- decoded_data <= "0000" & "0001" & data(0 to 7);
- 12. ucf primjer
- NET display_out<0> LOC=T17;
- 13. implementacija je u iMPACT (configure target device)
- EDK
- 1. kod stvaranja .bit datoteke najjednostavnije je odmah raditi export u sdk, jer XPS odradi sve potrebne korake
- 2. kod dodavanja komponenti iz IP Catalog-a:
- -spojit na sabirnicu
- -generirat adrese
- -spojit portove (tj. make ports external, ako se spajaju izvan čipa-npr gpio);
- ako je unutar sustava često treba mhs datoteku izmijeniti
- primjer(kod interrupta):
- PORT INTERRUPT = microblaze_0_Interrupt (unutar microblaze)
- PORT Irq = microblaze_0_Interrupt (unutar xps_intc)
- -izmijeniti ucf datoteku (ako se spajaju izvan čipa, tj. externi)
- -ako se dodaje interrupt onda treba još i jednostruki klik na komponentu u ports tabu te prebaciti delay za timer (ili push buttone koristiti kao interrupte)
- -ako se koristi ps2 u interrupt načinu treba isto kao i delay dodati interrupt i u mhs datoteci spojiti interrupte
- -za VGA portovi su externi, te je potreban clock generator
- 3. dizajn vlastite ip jezgre (wizard: hardware->create or import peripheral)
- -processor local bus
- -user logic software register
- -generate template driver files to help you implement software interface
- -mpd datoteka (primjer):
- PORT LED = "", DIR = O, VEC = [0:7]
- -izmijeniti vhd datoteke
- SDK
- 1. ako postoji problem da se neke datoteke (library i sl.) ne mogu naći, najbolje zatvoriti SDK i u EDK ponovno generirati bit i export u SDK
- 2. ako nakon exporta još uvijek postoji problem, project->clean
- 3. ako nakon toga još uvijek postoji problem, desni klik na naziv_projekta_bsp; board support package settings; pod drivers odabrati driver za novo-dodanu komponentu
- 4. za gpio:
- -objekt XGpio
- -inicijalizacija
- -setdatadirection
- -descretewrite i read
- 5. kod vlastite ip jezgre:
- -driver funkcije pisati u: \EDK\drivers\my_driver\src\my_driver_ip.c (ili .h za deklaraciju)
- -obavezno project -> clean
- 6. kod implementacije: xilinx tools -> configure jtag settings (odabrati digilent usb cable); xilinx tools -> program fpga (odabrati elf datoteku projekta)
- 7. timer:
- -#define RESET_VALUE 49999998 (ako zelimo 1 sec i ako je 50 MHz bilo odabrano u EDK) (RESET_VALUE + 2)/clk_freq
- -xtmrctr initialize, setoptions, setresetvalue, start, getvalue
- -xintc initialize, connect, start, enable
- -microblaze_enable_interrupts();
- -timems = (ucount + 2)/50000
- 8. gpio interrupti (push buttoni i sl.)
- -xintc initialize, connect, start, enable
- -xgpio interruptenable, interruptglobalenable
- -kod citanja prvo interruptdisable i za intc isto disable
- nakon toga se cita vrijednost sa gpio
- delay (prije enable interrupta zbog vremena da korisnik pusti tipku)
- pa ponovno interruptenable
- te na kraju interruptclear kako bi se prekinuli svi zahtjevi
- 9. ps2 polled
- -xps2 config, lookupconfig, cfginitialize, send, getstatus (za ack da je podatak uspjesno primljen na ps2 uredaj), recv
- -u mainu potrebna while(1) funkcija u kojoj primamo ili saljemo podatke na ps2
- #define KEYBOARD_ACK 0xFA (potvrda od ps2 uredaja da je podatak uspjesno primljen)
- u8 SendCODE = 0xED; (ako saljemo signal za paljene ledica-od 0 do 7)
- 10. ps2 interrupt
- -xps2 config, lookupconfig, cfginitialize, selftest, sethandler, intrenable, intrglobalenable
- -xintc initialize, connect, start, enable
- u intr handleru je potrebno xps2 recv da bi se primili podaci s ps2 uredaja
- 11. vga-tft
- -xtft lookupconfig, cfginitialize, setframebaseaddr, clearscreen, setcolor, write, setpixel (crtanje pixela, moguće linije sa for petljom, ali postoji i funkcija za crtanje linija u xtft lib)
- -#define TFT_FRAME_ADDR XPAR_MICRON_RAM_MEM0_BASEADDR (sprema se u micron ram)
- 12. micron ram
- -XPAR_MICRON_RAM_MEM0_BASEADDR
- -Xil_Out32LE(), Xil_In32LE()
- 13. primanje podataka preko UART-ack
- -XUartLite_RecvByte() -nexys će čekati dok se ne primi podatak na uartu
- 14. delay1s:
- int i;
- for(i=0;i<=66666666/12;i++);
- 15. linker skripta
- -ako se koristi više od jedne memorije (tj. ako smo dodali micron ram u sistem), potrebno je generirati linker skriptu
- -označiti projekt, xilinx tools -> generate linker script (u advanced tabu odabrati u koju memoriju spremamo koje dijelove-code, data, heap, stack)
- 16. libraryji:
- #include <stdio.h>
- #include "platform.h"
- #include "xparameters.h"
- #include "xgpio.h"
- #include "xintc.h"
- #include "xtmrctr.h"
- #include "xps2.h"
- #include "xtft.h"
- #include "xil_types.h"
- #include "xil_exception.h"
- #include "xstatus.h"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement