Trükkplaadi projekteerimine KiCad'iga

Järgnev õpetus eeldab, et olete arvutiklassis linuxi keskkonnas,
NING baseerub 'Kodutöö 1' optimiseeritud skeemi näitel.

Antud labori eest on võimalik saada 10punkti.
Selleks on vaja teha trükplaadi disaini:

  • On lubatud kasutada DIP ja SMD monteeringuga elemente läbisegi
  • "-1 reegel": vastavalt oma Kodutöö 1 tulemusele tuleb kokku arvestada kasutatud loogika elementide põhjal
    mitut loogika-kiipi peaksid kasutama (Näide: 5x 2-NAND, 3x 2-OR -> 3 loogika-kiipi)
    Nüüd tuleb hakata arvestama -1 reeglit, ehk trükkplaati tehes tohib tegelikult kasutada 2 loogika-kiibi.

    NB!: Kui reegli rakendamine on võimatu, tuleb selgitada põhjalikult (koos arvutustega) miks see nii on.
    NB!: Iga tudengi kiibi arvu piirang on individuaalne
  • Võimalikult väike trükkplaadi pindala!
    Pole lubatud selgelt tühjad trükkplaadi alad kuhu on võimalik ära mahutada lisa loogika kiipe.
    Tuleb kasutada mõlemat trükkplaadi poolt.

Labori tähtaeg on 2 päeva ennem eksamit, millele oled registreerinud.

Alternatiivse laborina on välja pakkuda FPGA plaadil 'Kodutöö 2' optimiseeritud skeemi realiseerimist.
(Tungivalt soovituslik neile kellel on juba kogemusi trükplaadi disainiga)

Kodutöö 1 optimeerimine trükkplaadi disainiks

  • On kohustuslik optimeerida välja 1 loogika kiip
    • NB!: Kui reegli rakendamine on võimatu, tuleb selgitada põhjalikult (koos arvutustega) miks see nii on.
  • Disaini realiseerimiseks tuleb kasutada 74LSxx loogika-kiipe

Üldiselt on 7400 seeria kiipide kopuste sisse mahub mitu loogika elementi:

  • Inverter: 6 elementi
  • 2-AND või 2-OR või 2-NAND jne: 4 elementi
  • 3-AND või 3-OR või .... : 3 elementi
  • 4-AND või 4-OR või .... : 2 elementi 
Optimeerimine Kodutöö 1 - Tulemus #2 näitel

Näide: https://ati.ttu.ee/~lrv/IAS0150/homework/homework1-example.html

Esialgne skeem:

x1i  = (x1 & x1)'
x2i  = (x2 & x2)'
x3i  = (x3 & x3)'
x4i  = (x4 & x4)'
t1a = (x1 & x4)'
t1b = x2 & x3i
t1ci = (t1b & t1a)'
t1di = (t1b & x1i & x4)'
t2b = x1i xor x4
t2ci = (x3 & t2b)'
t3a = (x3 & x4i)'
t3bi = (x2 & t3a)'
t5i = (x2i & x3)'
t6i = x3i + t7i
t7i = (x1i & x4i)'
t8i = (x1 & x2i & x4i)'
t9i = (x1 & x3)'
y1  = (t1ci & t7i & t9i)'
y2  = t1di & t8i & t9i
y3  = (t3bi & t6i & t8i)'
y4  = (t2ci & t5i & t8i)'

Elemendid: 1 x 2-AND, 1 x 3-AND, 12 x 2-NAND, 5 x 3-NAND, 1 x 2-OR, 1 x 2-XOR.

Ehk esialgselt on vaja:

 1x 2-AND korpus / kiip
 1x 3-AND korpus
 3x 2-NAND korpust (12 elementi / 4 elementi korpuses = 3 eraldi seisvat korpust)
 2x 3-NAND korpust
 1x 2-OR korpus
 1x 2-XOR korpus

Esialgu on kasutusel 9 kiipi ehk korpust   (vaja on eemaldada 1 kiip, ehk kokku 8 kiipi)
Kasutamata loogikaelemente: 12

#1 Välja optimeerida 2-AND kiip

Planeeritav teisendus:

c = a AND b ==> c = a AND a AND b
t1b = x2 & x3i ==> = x2 & x2 & x3i
==> = x2 & x3i & x3i
- 1x 2-AND
+ 1x 3-AND

Loogika kiipe kokku: 1+3+2+1+1 = 8
Kasutamata loogikaelemente: 8

#2  asendada 2-OR ==> 2-XOR ja 3-NAND

Planeeritav teisendus:

 x3i  = (x3 & x3)'
 t7i = (x1i & x4i)' 
 t6i = x3i + t7i ==> x3 xor (x3 & x3 & t71)'
t6i| a b | b' | a&b | (a&b)' | ax(a&b)'
 1 | 0 0 | 1  |  0  |   1    |    1
 1 | 0 1 | 0  |  0  |   1    |    1
 0 | 1 0 | 1  |  0  |   1    |    0
 1 | 1 1 | 0  |  1  |   0    |    1
- 1x 2-OR
+ 1x 3-NAND
+ 1x 2-XOR

Loogika kiipe kokku: 1+1+3+2{+1}+1 = 8
Kasutamata elemente: 7

#3 - Optimeering #1 ja #2 kombineeritult
 - 1x 2-AND
- 1x 2-OR
+ 1x 3-AND
+ 1x 3-NAND
+ 1x 2-XOR

Loogika kiipe kokku: 1+3+2+1 = 7
Kasutamata elemente: 3
Skeem 2 kiipi väiksem

#4 - asendada 2x 3-NAND -> 2x 2-XOR ja 2x 3-AND

Planeeritav teisendus:

 c = (a & b & c)' ==> (a & b & c) x 1

Andes XORi ühele sisendile pideva kõrge signaali, käitub XOR kui inverter.
Loogika kiipe kokku: 1+1+3+1+1+1 = 8

Trükkplaadi projekteerimine tarkvaras KiCad

KiCad'i leiab Linuxi programmide seast

Käivitamisel küsib KiCad kasutaja sätete kohta. Kuna Teil pole midagi importida, valige "Start with default settings" ja vajutage OK.

Projekti loomine

Projekti loomiseks tuleb valida File -> New Project...

Klassis looge projekt kasuta Desktop
>>>> Ennem klassist lahkumist tuleb see P kettale või mujale liigutada!!! <<<<

Skeemi koostamine

 

Skeemi redaktori saav avada vajutades "Schematic Editor".
Esmalt küsitakse teegi seadistuste kohta, kus tuleb valida "Copy deafult global symbol library table" ja seejärel OK

Toite ahel

GND, VDD, VCC ja teised toite ahelatega seotud makro elemendid teostavad automaatse sidumise vastavate PINide vahel (digitaalskeemidel), väljaarvatud sissetuleval toiteahelal.

Kuna on tegemist täiesti digitaalse skeemiga, siis antud juhul on vooluahelate ettevalmistamine väga lihtne.

On vaja lisada 2 voolu elementi: GND, +5V VCC.

Voolu elemendid leiab "Place" -> "Place Power Symbols" alamaknast.
Nii VCC kui ka GND juhtmele tuleb lisada PWR_FLAG, et simulaator saaks aru, et sealt saab plaat voolu.

PIN header asub "Place" -> "Place Symbols", mis on liigitatud "Connector" alamossa.
Näites kasutasin "Screw_Terminal_01x02"

Lisaks on vaja pinge ühtlustamiseks lisada 2 konensaatorit: 1x elektrolüüt ehk polariseeritud ja keraamiline
Lisasin skeemile 20uF elektrolüüt ja 10nF keraamilise konensaatori.

Elemendid saab ühendada omavahel kasutades "Place" -> "Draw Wires" tööriista.
Elemente saab ligutada, kui teha element aktiivseks ja vajutada klaviatuuril "M" klahvi Move tööriista jaoks.  

Skeemi koostamine

Kuna lähteülesandeks on Kodutöö 1 optimiseeritud skeem, siis tuleb esmalt üles otsida 4 viiguga 'Connector' ja neid 2 tükki skeemi aknasse asetada.
Aktiveerides elemendi saab, vasakul sätete aknas sisend ja väljund pinnidele nimetused anda.

Seejärel vastavalt Teie enda lahendusele tuleb üles otsida vastavad loogika elemendid "74LSxx" teegist. Igal elemendil on ka kirjeldus sellekohta mida antud elemendi seest võib leida.

NB! Antud teegis on välja toodud Loogika elementide grupid, näiteks pildil olev digitaal lülituse kiip peidab endas 2 sisendiga NAND elementi mida on neli tükki:

 Nüüd on vastavalt Teie ülesandele vaja üles otsida vajalikud loogika elemendid need skeemi aknasse vedada ja ühendused vedada vastavalt Teie kodutöö lahendusele.

Kuna antud samm on personaalne ja nõuab "loomingulist" lähenemist siis, näidet elementide paigutamise ja ühendamiste kohta on võimalik näha praktikumi salvestuses.

Nagu varasemalt mainitud, on igas loogika kiibis mitu elementi, need tuleb kõik Skeemi aknasse vedada, sest kõige viimase elemendina ilmub ekraanile antud kiibi voolu pinnid
Need on KINDLASTI vaja ka ära ühendada, kiibi VCC globaalse VCCga, sama ka GND puhul.

Kui jäävad mõned elemendid üle tuleb need paigutada skeemi alale ja viigur ära markeerida tööriistaga "Place No Connect Flags"

 

Skeemi korrektsust saab kontrollida tööriistaga "Tools -> ERC". Kõik vead peale kasutamata elementide tuleks ära parandada, mis on näiteks:

  • Close connectionmissing value
  • open net
  • jne

Kui skeemilt on vead eemaldatud saab edasi minna pinnalaotuse projekteerimisega.

Ennem tuleb valida kõigile elementidele füüsilised korpused.
Seda saab teha tööriistaga "Tools" -> "Assign Footprints..."

Akna keskkosas on Teie valitud elemendid.
Valides kindla rea, saab paremal akna osas, valida elemendile korpust.
Vasakus akna osas saab kopuste valikut filtreerida.

Peale valikute tegemist tuleb salvestada valikud nupuga "Apply, Save Schematic & Continue"

Pinnalaotuse projekteerimine

Ennem kui pinnalaotuse planeerimisega edasi minna, tuleks installeerida automaatse juhtme vedamise tööriist "Freerouting"

Seda saab teha KiCad põhi aknas -> "Plugin and Content Manager" -> "Plugins" -> "Freerouting" -> "Install" -> "Apply Penging Changes

Avada saab "Tools" -> "Switch to PCB Editor"

Esimese on vaja Skeemi elemendid PCB editori aknasse saada.
Selleks kasutada tööriista "Tools" -> "Update Schematic from PCB..."

Ennem kui saab pinnalaotuse planeerimisega edasi minna, tuleb joonistada esialgsed trükkplaadi ääred.

  1. Tuleb valida "Edge.Cuts" layer
    Selle leiab akna paremas osas, "Layers" alamosas
  2. Muuta joonistamis granulaarsus 1.0000mm peale
  3. Valida joonistamis tööriist "Place" -> "Draw Rectangles"
  4. Joonistada ristkülik skeemi akna keskele, mis on umbes sama suur kui kõrval olev elementide kogum.
    HIljem saab ka seda ala suurust muuta.

Nüüd on võimalik kasutada "Auto-Place Footprints" tööriista
"Place" -> "Auto-Place Footprints" -> "Place Off-Board Footprints"

See asetus ei tule ideaalne, kindlasti on vaja ise asetust veel muuta.

Järgmisena on vaja lisada 4 "MountingHole" objekti tähistamaks kruvide kinnituskohti.

Selleks on need vaja lisada esmalt "Schematic" vaates. (KiCad "heatava")

"Place" -> "Place Footprints" -> alamgrupp "MountingHole" -> valida näiteks M2 kruviauk.
NB! Veendu, et Footprint sai määratud!  (Assign Footprints...)

See järel PCB editori aknas tuleb värskendada objektide nimistut (F8 ehk Update PCB from Schematic)

Seejärel asetada kruvi augud trükkplaadi 4 nurka.

Nüüd tuleb käsitsi kiibid ja teised elemendid 

  • Elemendi liigutamise ajal saab antud elementi keerata 90 kraadi.
  • Tehes trükkplaadi ala ääre aktiivseks saab seda väiksemaks nihutada. Eesmärk on võimalikult väikest ala hoida, et trükkplaadi tegemise kulusi madalana hoida

Kui elemendid enamvähem paigas tuleb teha erinevate ühenduste ruutimine.

Originaalselt tehakse seda KiCad'is käsitsi.

Küll, aga on on loodud tasuta plugin "Freerouting", mis võimaldab antud sammu automatiseerida.
Tegemist on java põhis pluginniga, ehk esmasel käivitamisel ta võib küsida Java21 installi kohta.
Seal vajutada "YES", tööriist installib ise vajalikud teegid.

Tööriista ise saab tööle panna "Tools" -> "External Plugins" -> "Freerouting"

Vaike sätetel teeb tööriist automaatselt ruutimise ära, nii et midagi lisaks ei pea tegema.

Kui Ruutimine tehtud, peab veenduma, et DRC (Design Rule Check) on korras.

Kõik Errorid on vaja korda saada.
Warningute korda tegemine on valikuline.

Errori parandamisel tõenäoliselt läheb pinnalaotus ja ruutimine paigast ära, ehk seda viimast peab uuesti tegema.

Selleks Tuleb "Freerouting" tööriist uuesti tööle panna, aga siis kui võimalus tegib "Cancel" vajutada.
Seejärel üles otsida prügikasti-ikooniga tööriist "Delete all tracks and vias in order to start the board routing from scratch", mis nagu nimetuski ütleb, kustutab ruutimise tulemuse ära.

Auto-ruuteri saab samas aknas tööle panna nupuga mis on täistatud võlukepi-ikooniga.

 

Last modified: Friday, 9 May 2025, 1:51 AM