Hallo,
ich habe seit knapp 2 Wochen nun mein Spartan 3E Board und wollte darauf
nun mal versuchen ein Software Defined Radio (SDR) zu implementieren.
Ich stehe was SDR betrifft noch ganz am Anfang. VHDL habe ich 2 Semester
an der Hochschule gehabt und befasse mich auch privat ab und zu mal
damit.
Jetzt würde ich mal gerne wissen, ob noch jemand Interesse hat ein SDR
auf obengenanntem Board zu implementieren. Zunächst strebe ich nur mal
den Empfang von DRM an, damit man auch etwas zum Vorführen hat.
Hardwaremäßig ist auf dem Board ja einiges da, nur den HF-Teil müsste
man noch dazu entwickeln und einen Softwareteil für den PC.
Wikipedia ist dein Freund..
DRM ist digitales Radio auf Kurzwelle
SDR ist software defined radio
Grundsätzlich ein sehr interessantes Projekt, aber ein DRM Empfänger
wird ziemlich aufwendig im Digitalteil (COFDM Empfänger mit allem
Schnick-Schnack).
Da bräuchte man ein etwas groesseres Team um in absehbarer Zeit zum
Erfolg zu kommen.
Mich würde das interessieren, allerdings nur als Stand-Alone Version
ohne PC. Mit dem PC kann man (ich) ja heute schon mit SW-Empfängern und
einem KW-Radio über die Soundkarte DRM empfangen.
Das ist ein anspruchsvolles Projekt. Habt Ihr mal beim GNU Radio Projekt
nachgesehen:
http://www.gnu.org/software/gnuradio/
Da steht das an DRM gearbeitet wird und vielleicht hilft die Hardware
(A/D Karten) auch.
Ob DRM am Anfang sinnvoll ist, weiß ich nicht, für was leichteres bin
ich auch zu haben. Vorschläge bitte! Genauso wenig wie ich jetzt schon
abschätzen kann ob man das komplett als Stand-Alone Gerät auf dem Board
hinbekommt, als Endziel wäre das natürlich sicherlich denkbar. Also ich
dachte man geht da mal Schritt für Schritt ran. Das ganze soll ein
Einstieg in SDR sein und eine Auffrischung für VHDL. A/D- und
D/A-Wandler hat das Board ja.
@SuperUser: Hast Du schon mal ein SDR gemacht?
@Günther: Danke das Projekt ist bekannt. Welche Hardware meinst Du? Hast
du einen Link dazu?
@tom
Sorry, ich kannte dein Board nicht genau und wusste nicht das es schon
A/D und D/A Wandler hat. Ich dachte daran von GNU radio die Wandler zu
nutzen.
Ich habe gerade gelesen, dass FM bzw. UKW-Empfang mit einem SDR auch
möglich sein soll, stimmt das? Das wäre dann für den Einstieg sicher
einfacher als gleich mit DRM zu starten?
> Ich habe gerade gelesen, dass FM bzw. UKW-Empfang mit einem SDR auch> möglich sein soll, stimmt das? Das wäre dann für den Einstieg sicher> einfacher als gleich mit DRM zu starten?
Auf jeden Fall einfacher. Schau dir mal den folgenden Link an:
http://andraka.com/shortwave.htm
Da hat einer einen Kurzwellenempfänger in einen Spartan II gebaut.
Das interessante daran ist natürlich, dass du erst mal den Empfänger für
dein DRM hast ;)
Aber mal eine Frage um zu verstehen was du genau machen willst. Unter
den Begriff SDR verstehe ich eine Software die auf einen Prozessor
läuft. Ist das was du dir vorstellst mit dem FPGA oder möchtest du den
Empfänger direkt in VHDL implementieren?
So einfach der Empfänger von Andraka aussieht, ich sehe trotzdem einigen
Aufwand für die Implementierung, außer du hast genug Ressourcen und
machst das in floating-point.
Normalerweise wird das in fixed-point Notation gemacht und da musst du
einigen Aufwand rein stecken um Überläufe zu vermeiden, bzw. zu
entscheiden wann du zurückskalieren kannst ohne die Qualität des
Algorithmus zu beeinträchtigen.
Hi Tom,
ja so etwa habe ich auch vor. Es ist aber ein sehr umfangreiches
Projekt. Aber man hat danach viele Themengebiete der digitalen
Signalverarbeitung angeschnitten und seinen Horizont erweitert.
Ein SDR setzt sich aus verschiedenen Komponenten zusammen, FIR, CIC
Filter, NCO, Mixer, Demodulatoren und und und.
Es gibt im Interent (Xilinx ???) irgendwo ein PDF, welches den Entwurf
eines SDR anhand von Core-Generator Modulen erläutert. Man könnte die
einzelnen Module von Hand programmieren um einen wirklichen Einblick in
der digitalen Signalverabeitung zu bekommen. Es reicht alles in
fixed-point zu kodieren.
Nachdem du ein Konzept darüber erstellt was genau du haben möchtest,
könnte man mit dem "digitalen Front-End" beginnen. d.h. einen digitalen
Mischer (Multiplizierer, NCO) mit anschließender sample-rate Reduzierung
(durch CIC und oder FIR-Filter).
Damit ist man erst mal beschäftigt. Danach hat man eine gute Basis
verschiedene Demodulierungsverfahren zu implementieren.
Viel Spass
Stefan
Einfache Anwendungen im Hobbybereich auf XC2S.. oder XC3S.. würden mich
auch interessiern.Bin aber absoluter Anfänger. Bis jetzt läuft nur ein
Zähler bis 0.2/50 Mhz und fast keine Programmierkenntnisse. Bei
Interesse an Erfahrungsaustausch bitte mal kurze Email. mfg...
@Günter: Also mein Gedanke war eigentlich folgender, ich habe da jetzt
ein Spartan 3E-Board das schon sehr viel Peripherie hat, 2 A/D-, 4
D/A-Wandler, 1 LCD, 8 LED's, 4 Tasten, 4 Schiebeschalter,1 Ethernet,1
USB,1 VGA,1 Drehtaster,1 RS232, SRAM, dieses wollte ich jetzt mal in
einem größeren Projekt nutzen (Ampelsimulationen werden sehr schnell
langweilig ;-).
Ich bin dann auf die Idee gekommen, ein SDR zu bauen (angeregt durch
Elektor, CCZwei, Herr Kainka), also die Berechnungen die der PC macht
auf das Board zu verlagern und erst dann im PC zu verarbeiten wenn auf
dem Board keine andere Möglichkeit mehr besteht, wenn möglich vielleicht
auch eine stand-alone Sache daraus zu machen. Allerding muss ich sagen
steh ich was SDR angeht erst am Anfang. Ob dann zum Schluß DRM aus dem
Lautsprecher kommt oder ob ich nur das DCF77-Signal dekodiert habe ist
offen, ich will die Details verstanden haben und nicht nur das grobe
Prinzip. Die ganze Sache ist rein hobbymäßig und nicht kommerziell oder
so.
@Stefan Dk
Dein Ansatz/ Vorschlag ist schon mal interessant. Welches Board benutzt
du, auch das Spartan 3E-Board Rev.D von Xilinx? Was hast Du dir zum Ziel
gesetzt zu dekodieren?
Hallo Tom,
ich besitze auch das Spartan 3E Board, daneben benutze ich noch ein
Altera DE1 mit dem CyclonII.
Jedoch will ich nicht das komplette SDR selbst kodieren. Ich werde den
AD6620 von Analog verwenden. Dies ist ein digital down converter (DDC).
Es brauchen nur noch ein paar Parameter übertragen werden und fertig ist
das "digitale Front end". Dazu kommt noch ein schneller ADC mit etwa
50MHz.
Trotzdem brauche ich auf dem FPGA noch viele Blöcke (FIR, NCO) für die
weitere Verarbeitung der I/Q-Daten vom AD6620. Im Grunde läuft es bei
mir auf einen Amplituden und Phasendemodulator hinaus.
Für den Anfang rate ich dir (aus Erfahrung ;-) fange erstmal mit einem
FIR-Filter oder einen NCO an. Dies sind grundlegende Blöcke im SDR
Design. Vielleicht noch eine Datenanbindung zum PC. Darauf kannst du
super aufbauen!
Stefan
Hallo Tom
Ich hab hier auch ein "Spartan 3E Starter Board" rumliegen und hab mir
auch schon Gedanken gemacht, damit einen SDR Empfänger zu bauen, ähnlich
den USRP von "GNU Radio".
Übrigens gibt es dort Pläne, im Nachfolger von USRP, dem USRP2, auch
einen Spartan FPGA zu verwenden und die Schnittstelle zum PC über
Ethernet zu machen.
Zum Einstieg in SDR hab ich mir jetzt erst mal den ElektorSDR Empfänger
gekauft.
Der funktioniert gut, aber Ziel des Spartan Projekts wäre, nicht über
die Soundkarte zu gehen, sondern mit dem ADC auf dem Xilinx Board eine
höhere Abtastrate und damit Bandbreite zu erreichen, und dann mit
möglichst hoher Abtastrate in den PC zu gehen, und möglichst viel in
Software zu rechnen. Natürlich kann man auch, wenn es damit
Geschwindigkeits-Probleme gibt, einen DDC im FPGA programmieren.
Bzgl HF-Teil hab ich an einen TV-Tuner gedacht. Damit kann man
Frequenzen von etwa 40 MHz bis ca 800 MHz runtermischen. Viele TV-Tuner
haben ein I2C Interface und können damit digital angesteuert werden.
TV-Tuner haben überlicherweise eine Bandbreite von ca 6 MHz.
Falls du in der Richtung etwas entwickelst, würde mich das sehr
interessieren.
Ich selbst werde aber wahrscheinlich aus Zeit-Gründen nicht dazu kommen.
Wahrscheinlich spar ich dann doch auf ein USRP Board.
Hier mal die technischen Daten zum "Spartan 3E Starter Board":
* LTC1407A-1 dual ADC: 3Msps, 14 bit
* LTC2624 Quad DAC
* Spartan 3E XC3S500E-4FG320C
* Ethernet 10/100 Phy
Viele Grüße
Chris
GNU Radio USRP:
<http://article.gmane.org/gmane.comp.gnu.radio.general/12329/match=usrp2>
USRP Hersteller:
<http://www.ettus.com/>
Info zum USRP2:
<http://article.gmane.org/gmane.comp.gnu.radio.general/12329/match=usrp2>
Elektor SDR:
<http://b-kainka.de/sdrusb.html>
Spartan 3E Starter Board:
<http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G.htm>
<http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf>
ADC auf dem Starter Board:
<http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1155,C1001,C1150,P2484,D2198>
Das Spartan 3E Starter Board kann man privat am einfachsten bei
Trenz-Electronic kaufen. 135 Euro.
<http://shop.trenz-electronic.de/catalog/product_info.php?products_id=92>