Advertisement
Guest User

Srd

a guest
Jan 22nd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1. ISE
  2. 1. libraryji:
  3. library IEEE;
  4. use IEEE.STD_LOGIC_1164.ALL;
  5. use IEEE.STD_LOGIC_ARITH.ALL;
  6. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  7.  
  8. 2. SIGNAL <= vrijednost
  9. VARIJABLA := vrijednost
  10.  
  11. 3. entity port primjer:
  12. LED : out STD_LOGIC_VECTOR (7 DOWNTO 0);
  13.  
  14. 4. arhitecture primjer dodatnog signala:
  15. signal clk_div : STD_LOGIC;
  16.  
  17. 5. arhitecture u begin, pozivanje dividera:
  18. clk_1Hz : entity work.generic_divider generic map (100_000_000) port map (clk_in, clk_1);
  19.  
  20. 6. dodatni counter ili temp za nesto:
  21. VARIABLE temp : STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000" ;
  22.  
  23. 7. WHEN-ELSE primjer:
  24. segment_out <= "00000011" WHEN number_in = "0000" ELSE --0
  25. "10011111" WHEN number_in = "0001" ELSE --1
  26. ...
  27. "01110001"; --F
  28.  
  29. 8. FSM primjer:
  30. TYPE state IS (state0, state1, ...);
  31. SIGNAL current_state, next_state : state; --u arhitecture prije begin
  32.  
  33. ----Lower section of FSM----
  34. PROCESS(clk_div)
  35. BEGIN
  36. IF(clk_div'event and clk_div='1') then
  37. current_state <= next_state;
  38. END IF;
  39. END PROCESS;
  40.  
  41. ----Upper section of FSM----
  42. PROCESS(current_state)
  43. BEGIN
  44. --9. primjer
  45. END PROCESS;
  46.  
  47. 9. CASE-IS-WHEN primjer:
  48. CASE current_state IS
  49. WHEN state0 =>
  50. output <= "00000001";
  51. next_state <= state1;
  52. WHEN state1 =>
  53. output <= "00000010";
  54. next_state <= state2;
  55. END CASE;
  56.  
  57. 10. semafori (nekakve vremenske konstante)
  58. u arhitecture prije begin:
  59. CONSTANT timeR : INTEGER := 5;
  60. SIGNAL time_temp : INTEGER RANGE 0 TO timeMAX;
  61. u FSM postavimo counter koji broji sekunde od zadnje promjene stanja:
  62. VARIABLE counter : INTEGER RANGE 0 TO timeMAX;
  63.  
  64. 11. primjer spajanja više varijabli u jednu (decoded_data je signal 0 TO 15):
  65. decoded_data <= "0000" & "0001" & data(0 to 7);
  66.  
  67. 12. ucf primjer
  68. NET display_out<0> LOC=T17;
  69.  
  70. 13. implementacija je u iMPACT (configure target device)
  71.  
  72.  
  73. EDK
  74. 1. kod stvaranja .bit datoteke najjednostavnije je odmah raditi export u sdk, jer XPS odradi sve potrebne korake
  75.  
  76. 2. kod dodavanja komponenti iz IP Catalog-a:
  77. -spojit na sabirnicu
  78. -generirat adrese
  79. -spojit portove (tj. make ports external, ako se spajaju izvan čipa-npr gpio);
  80. ako je unutar sustava često treba mhs datoteku izmijeniti
  81. primjer(kod interrupta):
  82. PORT INTERRUPT = microblaze_0_Interrupt (unutar microblaze)
  83. PORT Irq = microblaze_0_Interrupt (unutar xps_intc)
  84. -izmijeniti ucf datoteku (ako se spajaju izvan čipa, tj. externi)
  85. -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)
  86. -ako se koristi ps2 u interrupt načinu treba isto kao i delay dodati interrupt i u mhs datoteci spojiti interrupte
  87. -za VGA portovi su externi, te je potreban clock generator
  88.  
  89. 3. dizajn vlastite ip jezgre (wizard: hardware->create or import peripheral)
  90. -processor local bus
  91. -user logic software register
  92. -generate template driver files to help you implement software interface
  93. -mpd datoteka (primjer):
  94. PORT LED = "", DIR = O, VEC = [0:7]
  95. -izmijeniti vhd datoteke
  96.  
  97.  
  98. SDK
  99. 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
  100.  
  101. 2. ako nakon exporta još uvijek postoji problem, project->clean
  102.  
  103. 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
  104.  
  105. 4. za gpio:
  106. -objekt XGpio
  107. -inicijalizacija
  108. -setdatadirection
  109. -descretewrite i read
  110.  
  111. 5. kod vlastite ip jezgre:
  112. -driver funkcije pisati u: \EDK\drivers\my_driver\src\my_driver_ip.c (ili .h za deklaraciju)
  113. -obavezno project -> clean
  114.  
  115. 6. kod implementacije: xilinx tools -> configure jtag settings (odabrati digilent usb cable); xilinx tools -> program fpga (odabrati elf datoteku projekta)
  116.  
  117. 7. timer:
  118. -#define RESET_VALUE 49999998 (ako zelimo 1 sec i ako je 50 MHz bilo odabrano u EDK) (RESET_VALUE + 2)/clk_freq
  119. -xtmrctr initialize, setoptions, setresetvalue, start, getvalue
  120. -xintc initialize, connect, start, enable
  121. -microblaze_enable_interrupts();
  122. -timems = (ucount + 2)/50000
  123.  
  124. 8. gpio interrupti (push buttoni i sl.)
  125. -xintc initialize, connect, start, enable
  126. -xgpio interruptenable, interruptglobalenable
  127. -kod citanja prvo interruptdisable i za intc isto disable
  128. nakon toga se cita vrijednost sa gpio
  129. delay (prije enable interrupta zbog vremena da korisnik pusti tipku)
  130. pa ponovno interruptenable
  131. te na kraju interruptclear kako bi se prekinuli svi zahtjevi
  132.  
  133. 9. ps2 polled
  134. -xps2 config, lookupconfig, cfginitialize, send, getstatus (za ack da je podatak uspjesno primljen na ps2 uredaj), recv
  135. -u mainu potrebna while(1) funkcija u kojoj primamo ili saljemo podatke na ps2
  136. #define KEYBOARD_ACK 0xFA (potvrda od ps2 uredaja da je podatak uspjesno primljen)
  137. u8 SendCODE = 0xED; (ako saljemo signal za paljene ledica-od 0 do 7)
  138.  
  139. 10. ps2 interrupt
  140. -xps2 config, lookupconfig, cfginitialize, selftest, sethandler, intrenable, intrglobalenable
  141. -xintc initialize, connect, start, enable
  142. u intr handleru je potrebno xps2 recv da bi se primili podaci s ps2 uredaja
  143.  
  144. 11. vga-tft
  145. -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)
  146. -#define TFT_FRAME_ADDR XPAR_MICRON_RAM_MEM0_BASEADDR (sprema se u micron ram)
  147.  
  148. 12. micron ram
  149. -XPAR_MICRON_RAM_MEM0_BASEADDR
  150. -Xil_Out32LE(), Xil_In32LE()
  151.  
  152. 13. primanje podataka preko UART-ack
  153. -XUartLite_RecvByte() -nexys će čekati dok se ne primi podatak na uartu
  154.  
  155. 14. delay1s:
  156. int i;
  157. for(i=0;i<=66666666/12;i++);
  158.  
  159. 15. linker skripta
  160. -ako se koristi više od jedne memorije (tj. ako smo dodali micron ram u sistem), potrebno je generirati linker skriptu
  161. -označiti projekt, xilinx tools -> generate linker script (u advanced tabu odabrati u koju memoriju spremamo koje dijelove-code, data, heap, stack)
  162.  
  163. 16. libraryji:
  164. #include <stdio.h>
  165. #include "platform.h"
  166. #include "xparameters.h"
  167. #include "xgpio.h"
  168. #include "xintc.h"
  169. #include "xtmrctr.h"
  170. #include "xps2.h"
  171. #include "xtft.h"
  172. #include "xil_types.h"
  173. #include "xil_exception.h"
  174. #include "xstatus.h"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement