<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bak+B%C3%A1lint</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bak+B%C3%A1lint"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Bak_B%C3%A1lint"/>
	<updated>2026-04-10T12:11:20Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Laborat%C3%B3rium_1_-_10._M%C3%A9r%C3%A9s:_Sorrendi_h%C3%A1l%C3%B3zat_vizsg%C3%A1lata&amp;diff=199788</id>
		<title>Laboratórium 1 - 10. Mérés: Sorrendi hálózat vizsgálata</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Laborat%C3%B3rium_1_-_10._M%C3%A9r%C3%A9s:_Sorrendi_h%C3%A1l%C3%B3zat_vizsg%C3%A1lata&amp;diff=199788"/>
		<updated>2020-11-07T11:54:07Z</updated>

		<summary type="html">&lt;p&gt;Bak Bálint: /* Házihoz segítség */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vissza|Laboratórium 1}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== A mérésről ==&lt;br /&gt;
&lt;br /&gt;
*Megismerkedtetek egy összetettebb tervvel és a ChipScope programmal&lt;br /&gt;
*Írtatok egy házit, amiben gyakoroltátok a dolgokat. Ilyen szintű feladat lehet gyakorlati mérésen.&lt;br /&gt;
*&#039;&#039;&#039;Milyen feladatok voltak:&#039;&#039;&#039;&lt;br /&gt;
**Blokkvázlat alapján hétszegmenses kijelző megvalósítása. Rategen, számláló, shiftregiszter, multiplexer. Nem sok új.&lt;br /&gt;
**ChipScope. Na ez az, amitől sokan tartotok, pedig nem rossz dolog.&lt;br /&gt;
*&#039;&#039;&#039;ChipScope&#039;&#039;&#039; - Két részből állt a mérésnek ez a része:&lt;br /&gt;
**Hozzáadtátok a ChipScope modult a tervhez (új forrásfileként), beállítottátok azt, hogy milyen jeleket akartok vizsgálni, hány mintát akartok venni, majd újrageneráltátok a programozófilet.&lt;br /&gt;
**Használtátok a ChipScope Analyzer-t, amivel megvizsgáltátok a rendszer jeleit.&lt;br /&gt;
*&#039;&#039;&#039;Miket tanultatok meg:&#039;&#039;&#039;&lt;br /&gt;
**Különféle triggerfeltételek: szint és élérzékeny triggerfeltételek, trigger sequence, egyes elborult csapatok storage qualificationt is. &lt;br /&gt;
*&#039;&#039;&#039;Miket szoktatok elrontani:&#039;&#039;&#039;&lt;br /&gt;
**Rögtön az elején feladjátok, ha ilyen feladatot kaptok :(&lt;br /&gt;
**Rosszul állítod be a ChipScope-ot, rossz jeleket köttök be, különös tekintettel az órajelre!&lt;br /&gt;
**Elfelejtitek, hogy milyen triggerfeltételt lehet beállítani a felfutó, lefutó, változó élre.&lt;br /&gt;
*&#039;&#039;&#039;Tipikus laborbeugró kérdések voltak:&#039;&#039;&#039;&lt;br /&gt;
**ChipScope-ról ez-az.&lt;br /&gt;
**Verilog modulok (&amp;quot;rategen&amp;quot; és testbench) írása&lt;br /&gt;
**Mintavételi frekvencia számítása&lt;br /&gt;
**Latch-ról mindenféle (okok, elkerülés, ezek) - [http://www.velocityreviews.com/forums/t371968-what-is-the-problem-with-latch-inference.html Leírás] - &#039;&#039;&#039;EZT GYAKRAN ELRONTOTTÁTOK BEUGRÓN!&#039;&#039;&#039;&lt;br /&gt;
**Miért nem használunk több órajelet egy FPGA-terven belül? &#039;&#039;&#039;EZT IS GYAKRAN ELRONTOTTÁTOK!&#039;&#039;&#039;&lt;br /&gt;
**(utóbbi két kérdésről: volt olyan verzió is, hogy ismerd fel, ez a Verilog-kód miért működhet hibásan FPGA-n belül, és akkor rámutathatsz, hogy latch, vagy több órajelet használsz).&lt;br /&gt;
*&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Fontos megjegyzések:&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** Az itteni segédletek (főleg a megoldott házipéldák) elavultak, nektek már nem kell állapottáblázni meg ilyenek. Mérésvezetők jókat szoktak mosolyogni, ha valaki ilyet ad be...&lt;br /&gt;
** A beugrókérdések SEM ezek, és nem feltétlen az ellenőrző kérdések. A segédlet megértésével, készüléskor a mérés fejben végigpörgetésével teljesíthetőek. Nem szoktatok bukni rajta.&lt;br /&gt;
&lt;br /&gt;
== Házihoz segítség ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Media:labor1_10mérés_házi.pdf‎|Kidolgozott házi feladat]]&lt;br /&gt;
&lt;br /&gt;
A fenti házi jó kiindulópont, de nem egészen helyes, mert a kimenetnek azonnal 1-be kell váltania ha teljesül a specifikációban leírt feltétel (lásd a példának megadott 7-el oszthatóságnál). A kódban a kimenet állításánál tehát a feltételek közé vegyétek be a bemenet aktuális értékét is, hogy a kimenet annak megérkezésével egyidőben váltson!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2020 őszi házi amit el is fogadtak:&#039;&#039;&#039;&lt;br /&gt;
[[Fájl:Labor10 HFkidolgozás.pdf|2020_meres10_hf]]&lt;br /&gt;
&lt;br /&gt;
Régi házik:&lt;br /&gt;
&lt;br /&gt;
A mérés 2011 óta nagyot változott, már nem a Digitális technika 1 anyagát kéri számon (állapottábla és egyebek). Most már a magasabb szintű (számláló, shift regiszter, stb.) tervezést tekintjük célnak.&lt;br /&gt;
Ha már ide jutottál, hogy nagyon elakadtál, egy olyan jótanács: ne állapottáblázz, meg Karnaugh-táblázz. A fél órás feladatot három napra hosszabbítod (tapasztalatból mondom). Inkább kérdezz a tárgy listáján és/vagy a mérésvezetőktől, segítünk.&lt;br /&gt;
&lt;br /&gt;
*[[Media:Labor1_mérés10_házi1.pdf‎|Kidolgozott házi feladat 1]]&lt;br /&gt;
** Megjegyzés: a mérésvezető szerint hiányzott a hasonló házimból a restart bemenet. A feladat nem írja, de digitális áramkörökbe tényleg illik tenni.&lt;br /&gt;
** Figyelmeztetés: ez a házi már elavult és abból a célból nagyon &amp;quot;hasznos&amp;quot;, hogy lebukjanak azok, akik ez alapján csinálták meg a házijukat, súlyos elvi hibák vannak benne, egyáltalán nem érdemes ebből dolgozni!&lt;br /&gt;
*[[Media:Labor1_mérés10_házi2.pdf‎|kidolgozott házi feladat 2]]&lt;br /&gt;
&lt;br /&gt;
== Beugró kérdések kidolgozása ==&lt;br /&gt;
&lt;br /&gt;
=== Ellenörző kérdések 2018 ===&lt;br /&gt;
[[:File:Verilog beugrók.pdf| Nem hivatalos kidolgozás]]&lt;br /&gt;
&lt;br /&gt;
Ezek eléggé elavult kidolgozások.&lt;br /&gt;
*[[Media:Labor1 mérés10 ellkérd.pdf|Ellenörző kérdések kidolgozva]]&lt;br /&gt;
&lt;br /&gt;
Néhány mérésvezetőknek van egy rossz szokása: a segédletben levő kérdést teszi fel, csak megváltoztat benne valamit. Vagy esetenként ugyanarra kérdez rá, csak másik irányból, más szavakkal. Tehát érdemes értve tanulni, nem bevágni.&lt;br /&gt;
&lt;br /&gt;
=== Régi beugrókérdések ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt; Ezt a részt még aktualizálni kell. Nem biztos, hogy még mindig ezek a beugrókérdések! &amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Mi a különbség a logikai analizátor állapotanalízis és időzítésanalízis üzemmódja közt? Mindkét üzemmódra alkalmas a ChipScope?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Állapotanalízis üzemmódban a bemenő jeleket a vizsgált hálózat órajelével szinkron mintavételezzük, így a vizsgált sorrendi hálózat (állapotgép) egymás utáni állapotai kerülnek az állapottárba.  Időzítésanalízis üzemmódban a mintavételt egy nagypontosságú belső óra időzíti, így a vizsgált hálózat jeleinek időviszonyai is vizsgálhatók. A ChipScope CSAK állapotanalízisre alkalmas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Mi a szerepe a triggerjelnek ill. a triggerszónak a közönséges analóg oszcilloszkópnál ill. a logikai állapotanalizátornál?&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Az analóg oszcilloszkópban a triggerjel az időeltérítést indítja, ezért az analóg oszcilloszkóp gyakorlatilag csak a triggerjel utáni jeltartományt jeleníti meg. &lt;br /&gt;
&lt;br /&gt;
A logikai analizátorban a triggerszó a mintavételezés/mintatárolás leállítását vezérli, a beállítástól függően az analizátor a triggeresemény előtti és utáni állapotokat is tárolni, megjeleníteni tudja. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. A vizsgált szekvenciális hálózat egymás utáni állapotait akarjuk meghatározni. Milyen üzemmód ajánlott ebben az esetben, és mi legyen a mintavételező jel forrása?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Állapotanalízis üzemmód az ajánlott ebben az esetben. A mintavételezéshez a vizsgált hálózat órajelének azt az élét válasszuk, amelynél az állapotjelek már stabilak. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Egy hálózat terjedési késleltetését (Td) akarjuk meghatározni logikai analizátorral. Milyen üzemmódot használjunk ebben az esetben, mi legyen a mintavételező jel forrása, mekkora legyen a frekvenciája?&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Időzítésanalízis üzemmódot használjunk, ebben az esetben a mintavételezést az analizátor belső órajele vezérli. A mintavételi frekvencia legyen az f = 1/Td érték többszöröse. Az, hogy legalább hányszorosa, a megkívánt mérési pontosságtól függ. A mért időszakasznak be kell férnie a mintatárba, ez (és az analizátor működési sebessége) korlátozza a maximális frekvenciát. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. A logikai analizátorral vizsgált CMOS hálózat tápfeszültsége 3 V. Mekkora az ajánlott komparálási feszültség az analizátor bemenetén?&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
A CMOS logikai áramkörök komparálási feszültsége általában a tápfeszültség fele, ami a jelen esetben 1,5 V. A logikai analizátor bemenetein is ezt az értéket célszerű beállítani komparálási feszültségként.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Logikai analizátorral egy periodikus négyszögjelet vizsgálunk, melyről előzetesen azt tudjuk, hogy frekvenciája 5 kHz - 10 kHz, kitöltési tényezője pedig 20% és 50% közé esik. Mekkora legyen a mintavételi frekvencia minimális értéke, ha a jel L és H értékének időtartamát egyaránt legalább 5% pontossággal kívánjuk meghatározni. A számításnál tételezze fel, hogy csak egyetlen periódust mérünk az analizátorral és az analizátor belső mintavételi frekvenciájának bizonytalansága elhanyagolható.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A mintavételi frekvencia meghatározásánál a mérendő legkisebb időtartamból kell kiindulni. Ebben a példában ez a H állapot hossza, 20% kitöltési tényező és 10 kHz frekvencia esetén. Ennek értéke (1/10kHz) * 0,2 = 20 us. A megkívánt +- 5% mérési pontossághoz legalább 20 * 0,05 = 1 us-onként mintát kell venni. A mintavételi frekvencia minimális értéke 1 MHz. (Ha a belső óra frekvenciájának szokásos bizonytalanságát is figyelembe vesszük, akkor kicsit több mint 1 MHz kell.) &lt;br /&gt;
&lt;br /&gt;
(Magyarázat: A legkisebb időtartamot úgy lehet elérni, hogy a legnagyobb frekit választjuk, és a legkisebb kitöltési tényezőt. Kitöltési tényező: azt határozza meg, hogy egy perióduson belül a négyszögjel a teljes periódusidő hány százalékában vesz fel logikai 1-es értéket. --&amp;gt; Logikai 1: H állapot.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7. Miért nem ajánlott, hogy egy Verilog tervben több órajel forrást használjunk?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Az FPGA-ban az órajelnek egy speciális, &amp;quot;gyors vezeték&amp;quot; van dedikálva. Ha az órajelet pl. leosztva továbbítod, akkor mivel már nem fog a dedikált órajelvezetéken közlekedni, nem garantált, hogy az pontos lesz, azért könnyen hazárdokat idézhet elő.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8. Miért kerülendő a Latch-ek használata? Mire kell figyelni a Verilogban, ha if vagy case szerkezettel írunk le egy kombinációs logikát?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pont amiatt, ami a kérdés második része - mert nagyon nagy az esélye, hogy kihagyunk egy if/else esetet a sok állapot közül, vagy egy case-t. És arra kell figyelni, hogy minden lehetséges állapot le legyen kódolva. (Verilog ismertetőben ez le van írva szépen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;9. Készítsen 3 bemenetű és/vagy kaput 2 bemenetű és/vagy kapuk (and2/or2) példányosításával!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 module and2(&lt;br /&gt;
             input a, b,&lt;br /&gt;
             output z);&lt;br /&gt;
 assign z = a&amp;amp;b;&lt;br /&gt;
 endmodule&lt;br /&gt;
 module and3(&lt;br /&gt;
      	     input a,b,c,&lt;br /&gt;
      	     output z);&lt;br /&gt;
 wire x;&lt;br /&gt;
 and2 a1(&lt;br /&gt;
         .a(a),&lt;br /&gt;
         .b(b),&lt;br /&gt;
         .z(x));&lt;br /&gt;
 and2 a2(&lt;br /&gt;
         .a(c),&lt;br /&gt;
         .b(x),&lt;br /&gt;
         .z(z));&lt;br /&gt;
 endmodule&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10. Adja meg azt a Verilog Test Fixture kódrészletet, ami 10 MHz frekvenciájú órajelet biztosít a vizsgálandó modul számára!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 reg clk;&lt;br /&gt;
 initial clk=0;&lt;br /&gt;
 always #X clk &amp;lt;= ~clk; &lt;br /&gt;
&lt;br /&gt;
Itt X értéke mondja meg, hogy az egy órajelen belüli élváltás hol van - tehát az órajel periódusideje ennek a kétszerese. Ez alapján már lehet számolni, és a megfelelő timescale alkalmazásával.&lt;br /&gt;
Ha nem tévedek, akkor a 10 Mhz periódusideje 100 ns, tehát X megfelelő értéke 50ns. &lt;br /&gt;
( &#039;timescale 1ns/1ps sor a test fixtur elején)&lt;br /&gt;
&lt;br /&gt;
== Xilinx ISE bugok ==&lt;br /&gt;
&lt;br /&gt;
Ide sorolhatjátok fel a Xilinx ISE használatakor felfedezett bugokat. A tárgy honlapján is van felsorolás, de ahhoz te nem tudsz írni..&lt;br /&gt;
* A Windows 8 a 14.2-es verziónál még nem támogatott, van, ami a 64 bites verzióval megy csak, van, ami a 32 bitessel. Nekem telepíteni sem sikerült.&lt;br /&gt;
* Telepítéskor a telepítési könyvtár ne tartalmazzon se szóközt, se számot, se ékezetes karaktert, a c: meghajtóra érdemes rakni. C:\Xilinx könyvtár menni szokott, Linux alatt pl. a /opt/Xilinx megfelelő&lt;br /&gt;
* Windows alatt ISE futása alatt ne válts billentyűkiosztást, lefagy a rendszer (évek óta nem javított ISE bug).&lt;br /&gt;
* Linux alatt érdemes az LC_ALL környezeti változót (meg a LANG-ot, meg a LOCALE-t) en_US-re vagy C-re állítani, különben vacakolhat. Mondjuk a Webpack-nál nem szokott előjönni.&lt;br /&gt;
* Van, hogy az ISE nem veszi észre, hogy egy UCF file-t hozzáadtál. Abban nyílvánul ez meg, hogy a jó kódod letöltve nem csinál semmit. Ilyenkor fogod, eltávolítod a projektből az ucf-et, aztán visszarakod. Illetve van, hogy nem a megfelelő modul alá húzza be az ucf-et, ilyenkor egy random verilog modult top modullá alakítasz (jobb egér, set as top module), majd az igazi top modulodat visszacsinálod top module-ra.&lt;br /&gt;
* Amikor első szimulációkor az ISIM hálózati kommunikációt akar nyitni, engedélyezni kell (lokális gépen nyit socketet saját magának, nem köszön ki a netre), különben nem fog működni.&lt;br /&gt;
&lt;br /&gt;
== Érdeklődőknek ==&lt;br /&gt;
&lt;br /&gt;
Ha felkeltette az érdeklődésedet az FPGA programozás, ezeket a tárgyakat érdemes lehet hallgatni:&lt;br /&gt;
&lt;br /&gt;
*[http://www.mit.bme.hu/oktatas/targyak/vimim286 Logikai tervezés]: bővebben FPGA-ról, hardvertervezésről, perifériákról.&lt;br /&gt;
*[http://www.mit.bme.hu/oktatas/targyak/vimim363 Mikrorendszerek tervezése]: mikroprocesszoros rendszerek tervezése FPGA-n belül.&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Villamosmérnök]]&lt;/div&gt;</summary>
		<author><name>Bak Bálint</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=F%C3%A1jl:Labor10_HFkidolgoz%C3%A1s.pdf&amp;diff=199787</id>
		<title>Fájl:Labor10 HFkidolgozás.pdf</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=F%C3%A1jl:Labor10_HFkidolgoz%C3%A1s.pdf&amp;diff=199787"/>
		<updated>2020-11-07T11:50:47Z</updated>

		<summary type="html">&lt;p&gt;Bak Bálint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Házi amit elfogadtak a 2020 őszi félévben&lt;/div&gt;</summary>
		<author><name>Bak Bálint</name></author>
	</entry>
</feed>