https://wiki.ham.hu/index.php?title=SDR_algoritmus:_kever%C3%A9s&feed=atom&action=history
SDR algoritmus: keverés - Laptörténet
2024-03-28T10:08:25Z
Az oldal laptörténete a wikiben
MediaWiki 1.34.1
https://wiki.ham.hu/index.php?title=SDR_algoritmus:_kever%C3%A9s&diff=13972&oldid=prev
HG2ECZ, 2016. április 10., 08:19-n
2016-04-10T08:19:23Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="hu">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Régebbi változat</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">A lap 2016. április 10., 08:19-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l20" >20. sor:</td>
<td colspan="2" class="diff-lineno">20. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></source></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></source></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Az oszcillátor minden minta esetén más fázisszöget mutat, hiszen f_osc frekvenciával forog a komplex fazorja. <del class="diffchange diffchange-inline">Ezt se sin(ujfazis) és sin(ujfazis) módszerrel </del>Taylor<del class="diffchange diffchange-inline">-sorral számoljuk</del>, <del class="diffchange diffchange-inline">hanem ugyanúgy szorzóforgatással</del>.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Az oszcillátor minden minta esetén más fázisszöget mutat, hiszen f_osc frekvenciával forog a komplex fazorja. <ins class="diffchange diffchange-inline">Ehhez sem érdemes a szögfüggvények </ins>Taylor <ins class="diffchange diffchange-inline">sorához nyúlni</ins>, <ins class="diffchange diffchange-inline">helyette inkább szorzóforgatást érdemes processzor esetén alkalmazni</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><source lang=C></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><source lang=C></div></td></tr>
</table>
HG2ECZ
https://wiki.ham.hu/index.php?title=SDR_algoritmus:_kever%C3%A9s&diff=13971&oldid=prev
HG2ECZ: bevezető javítása
2016-04-10T08:16:56Z
<p>bevezető javítása</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="hu">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Régebbi változat</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">A lap 2016. április 10., 08:16-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >1. sor:</td>
<td colspan="2" class="diff-lineno">1. sor:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>A szoftverrádiónál a digitalizált jelet az analóghoz hasonlóan <del class="diffchange diffchange-inline">gyaktan </del>keverjük a digitális térben.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>A szoftverrádiónál a digitalizált jelet az analóghoz hasonlóan <ins class="diffchange diffchange-inline">gyakran </ins>keverjük a digitális térben<ins class="diffchange diffchange-inline">. Szorzókeverés alatt értjük ez esetben azt a műveletet, amelynek célja, hogy a frekvenciatartományban eltoljuk a jelet</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Gyors keverés processzorral ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Gyors keverés processzorral ==</div></td></tr>
</table>
HG2ECZ
https://wiki.ham.hu/index.php?title=SDR_algoritmus:_kever%C3%A9s&diff=13970&oldid=prev
HG2ECZ: Kezdet+kategória
2016-04-10T08:13:33Z
<p>Kezdet+kategória</p>
<p><b>Új lap</b></p><div>A szoftverrádiónál a digitalizált jelet az analóghoz hasonlóan gyaktan keverjük a digitális térben.<br />
<br />
== Gyors keverés processzorral ==<br />
<br />
A sin() és cos() függvények lassan számolhatóak, főleg ha nincs ezt gyorsító hardveres számoló a processzorban. Ezért próbáljuk meg kihagyni az állandó számítását. Nézzük az alábbi összefüggéseket:<br />
<br />
<source lang=C><br />
// origp: eredeti fázisszög<br />
// diffp: fáziseltérés<br />
<br />
x_uj = amplitudo * cos ( origp + diffp ) = amplitudo * (cos origp * cos diffp - sin origp * sin diffp );<br />
y_uj = amplitudo * sin ( origp + diffp ) = amplitudo * (sin origp * cos diffp + cos origp * sin diffp );<br />
</source><br />
<br />
A fenti összefüggést tovább gondolva a 0 fokos i és a 90 fokos q jellel a keverés:<br />
<br />
<source lang=C><br />
out.i = in.i * osc.i - in.q * osc.q;<br />
out.q = in.q * osc.i + in.i * osc.q;<br />
</source><br />
<br />
Az oszcillátor minden minta esetén más fázisszöget mutat, hiszen f_osc frekvenciával forog a komplex fazorja. Ezt se sin(ujfazis) és sin(ujfazis) módszerrel Taylor-sorral számoljuk, hanem ugyanúgy szorzóforgatással.<br />
<br />
<source lang=C><br />
osc_uj.i = osc_orig.i * osc_faziselteres.i - osc_orig.q * osc_faziselteres.q;<br />
osc_uj.q = osc_orig.q * osc_faziselteres.i + osc_orig.i * osc_faziselteres.q;<br />
</source><br />
<br />
ahol a faziselteres.i csak a frekvenciaváltásnál változik, így csak ekkor számolandó újra mint cos(2*pi*frekvencia/mintavételitempó), a faziselteres.q pedig a fázis szinuszaként.<br />
<br />
Megjegyzés: az oszcillátornál az akkumulálódó hibák elkerülése miatt double pontosságú változó javasolt.<br />
<br />
== Gyors keverés FPGA-val ==<br />
<br />
FPGA esetén egy másik megoldással, a Cordic algoritmussal lehet nagyon hatékony keverést elérni. A Cordic algoritmus shiftelésen és összeadáson alapuló közelítő módszer, amely meglepően hatékony. További előnye, hogy az FPGA-ban elkerüli a sokkal költségesebben megvalósító szorzást. <br />
<br />
Bővebben az algoritmusról:<br />
* https://en.wikipedia.org/wiki/CORDIC<br />
<br />
Fontos megjegyezni, hogy a Cordic keverésnél használt bemenetei:<br />
* I jel<br />
* Q jel<br />
* fázisszög, amely minden új mintára tovább lesz léptetve 2*pi*frekvencia/mintavételitempó lépéssel.<br />
<br />
[[Kategória: SDR algoritmusok]]</div>
HG2ECZ