Diskussions- und Newsboard des DARC-Ortsverbandes I40
allgemeine Kategorie => OVI40 SDR Projekt (English AND German discussions around OVI40 SDR project) => Message started by: DF8OE on 15. April 2020, 08:47:36

Title: How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 08:47:36

Hi to all,

for developing FPGA firmware for OVI40 RF DDC/DUC you need Xilinx ISE. Because there are questions regarding this from time to time I provide a tutorial. I am using Arch Linux - but the setup is nearly identical for different distributions (e.g Debian-base distributions). I cannot provide any informations how to setup this using Windows - my home and my office are "Windows-free" ::)

  • Download Linux Installer for Xilinx ISE 14.7_1015_1 (https://www.xilinx.com/member/forms/download/xef.html?filename=Xilinx_ISE_DS_Lin_14.7_1015_1.tar)
  • unpack the tarball and run the installer with
    Code:
    $ cd Xilinx_ISE_DS_Lin_14.7_1015_1
    $ ./xsetup
    Because I have installed in /opt I had to run the setup as root
  • next I created a startup icon / script for the GUI starter /usr/share/applications/ise.desktop
    Code:
    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=Xilinx ISE
    Exec=sh -c "unset LANG && unset QT_PLUGIN_PATH && source /opt/Xilinx/14.7/ISE_DS/settings64.sh && ise"
    Icon=/opt/Xilinx/14.7/ISE_DS/ISE/data/images/pn-ise.png
    Categories=Development;
    Comment=Xilinx ISE
    StartupWMClass=_pn

  • for using the tool you need a (free of charge) IseWebPack License (https://login.xilinx.com/app/xilinxinc_f5awsprod_1/exknv8ms950lm0Ldh0x7/sso/saml) You need to register and you will obtain the license file via email. Simply copy it to
    Code:
    ~/.Xilinx/Xilinx.lic

  • Because libstdc++.so inside Xilinx package is completely outdated you need to symlink to the one provided by your distribution
    Code:
    $ cd /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/
    $ mv libstdc++.so libstdc++.so.bak
    $ mv libstdc++.so.6 libstdc++.so.6.bak
    $ mv libstdc++.so.6.0.8 libstdc++.so.6.0.8.bak
    $ ln -s /usr/lib/libstdc++.so
    $ ln -s libstdc++.so libstdc++.so.6
    $ ln -s libstdc++.so libstdc++.so.6.0.8

  • Core generator is not working stable using default java of Xilinx (java5) but Xilinx has provided java6, too. But you have to activate this manually
    Code:
    $ mv /opt/Xilinx/14.7/ISE_DS/ISE/java /opt/Xilinx/14.7/ISE_DS/ISE/java5
    $ ln -s /opt/Xilinx/14.7/ISE_DS/ISE/java6 /opt/Xilinx/14.7/ISE_DS/ISE/java


  • After doing that you can fully use Xilinx ISE. I already have designed various DDS, CIC and FIR, also some simple I/O "by hand" (SPI / I2C). All is running flawlessly. If I have forgotten something I will add it here by editing the post. Important: There are different programmers which you can use. Because I do not know what programmer you will use I do not have mentioned configuration of programmer here. But you can find many nice hints in the Arch AUR Wiki page of Xilinx ISE (https://wiki.archlinux.org/index.php/Xilinx_ISE_WebPACK#Download_ISE_WebPACK)

    Good luck - vy 73
    Andreas

Title: Re:How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 10:27:33

Leider bin ich noch nicht so weit dass die FPGA Firmware in sich selbst funktioniert. Ich konnte einzelne Blöcke generieren. Damit ich nicht zu viele verschiedene Baustellen habe ist die Firmware zunächst so ausgelegt, dass ich sie via USB-Schnittstelle ansprechen kann. Sprich: die Header für I2S und SPI sind zwar vorhanden, ich habe auch schon mal probiert (erfolgreich) etwas via USB darauf auszugeben - sie werden aber aktuell noch nicht genutzt. Auf beiden RF-Boards (Kurzwelle und VHF/UHF/SHF) sitzt ja auch eine USB-Schnittstelle. Und mit der arbeite ich zur Zeit. Es ist für mich wesentlich einfacher das Testen mit meinem Linux-System zu machen als mit UHSDR.

Ich hoffe ja immer noch darauf dass doch irgendwann mal jemand mit einsteigt in die FPGA-Programmierung - dann würde es deutlich schneller gehen. Die Testprozedur würde trotzdem zunächst via USB erfolgen (weil man dann eben nicht jedesmal ein neues UHSDR flashen muss um zu sehen ob die FPGA-Firmware geht). Außerdem habe ich bei Nutzung von USB auch auf jeden Fall genug Rechenpower und kann somit auch abschätzen, welche Verfahren ich für UHSDR (F7/H7) anwenden kann.

Ich möchte ja sehr gerne eine größere darstellbare Bandbreite haben als 48KHz.

Mir schwebt da aktuell folgendes vor:
es wird ein I/Q Datenstrom mit 48KHz Samplerate übertragen und gleichzeitig (!!) ein zweiter Datenstrom der von UHSDR für die Darstellung des Spektrums / WF verwendet wird. Dieser wird bereits im FPGA aufbereitet. Der Vorteil wäre dass die rechenintensive Dezimierung nicht im STM erledigt werden muss. Somit könnte man drastisch größere darstellbare Spektren / WF erzeugen. Da die Datenmenge die zum STM überragen wird nun konstant ist (hängt nur von der Auflösung (Pixelbreite) des Spektrums auf dem LCD ab) könnte man im FPGA z.B. schon so aufbereiten, dass das komplette 2m-Band zu sehen ist. Beim reinzoomen würde nur die Aufbereitung im FPGA anders aussehen - die übertragene Datenmenge ist identisch. Die benutzte Menge an Hardware im FPGA lässt das auf jeden Fall zu. Ich liege im Bereich von ca. 50% Ausnutzung aktuell (TX und RX - alle Blöcke da - aber funktioniert noch nicht).

Mit 48KHz wäre aber leider kein FM Stereo möglich - aber das ist dann eine andere Baustelle. Ich habe viele Ideen. Leider fehlt mir die Zeit für eine Einarbeitung. Ich denke wenn ich 6 Monate jeden Tag 4...8 Stunden damit übe dann kann ich das perfekt. Aber wovon soll ich leben wenn ich 6 Monate kein Einkommen habe? Es ist ein Zeitproblem - und das kann so wie es aussieht nur verkürzt werden wenn noch jemand bei der FPGA-Entwicklung mitmacht.

vy 73
Andreas

Title: Re:How to setup Xilinx ISE on Linux
Post by: SP9BSL on 15. April 2020, 11:07:20

Andreas,
would you like to move to Altera/Intel chips? I have board which works great, another one built by my friend works too, 3 more are assembled. you are trying to learn ISE with I can't help nor join, but we can work with Quartus (also free for Linux). As you are at the start of learning curve why just not join me? I can send you the board instantly, at least you have one person (me) ready to answer fpga questions...

The rest of the boards (filter and base board) are in production, 80W amplifier is curently at final stage pcb development. The schematics/pcb views are in private area. Also the power amplifier harmonics/IMD and receiver measurements I have published some time ago.

Title: Re:How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 11:24:37

Hallo Thomas,

das ist EIN Board von vielen - und man kann es 100%-ig mit UHSDR verheiraten. Ich denke sogar es ist das was am einfachsten zu verwenden ist.

Nur: was meinst Du "für den Anfang"?

Meine Boards sind komplette Neuentwicklungen. Es sind zwei Boards:

1) SW-Board
0.01...77MHz (ohne Oversampling etc.)
1 x TX, 1 x RX
1 DAC, 2 ADCs die phasenversetzt mit jeweils ~80MHz samplen (ich weiß noch nicht genau ob ich mit 180° Phasenversatz sample oder gleich mit Quadratur (90°) - ich weiß noch nicht so recht was davon besser ist)

2) VHF/UHF/SHF
70...6000MHz
3 x RX, 3 x TX
AD9363 Transceiverchip

Beide Boards haben einen SPI Flash und einen externen schnellen RAM zusätzlich vorgesehen, wobei ich den RAM aktuell noch nicht nutze(n kann).

Beide Boards haben den gleichen FPGA und die gleichen Schnittstellen (I2S, SPI, USB) und diese sind auch gleich angeschlossen. Ja sogar das PCB-Layout ist in diesen Bereichen identisch. Sie unterscheiden sich nur in dem, was davor ist (ADC/DAC bzw. AD9363). Das bedeutet natürlich, dass große Teile der FPGA-Firmware identisch sein werden.

Ich verwende nicht den Cyclone-FPGA mit dem Code von N2ADR. Ich verwende den Spartan XC6LX9. Das ist schon mal weder hardware- noch softwarekompatibel mit dem Cyclone. Es ist auch nur sehr bedingt möglich Code von N2ADR zu übernehmen, da die FPGAs anders designed sind. Das war aber alles Absicht. Ich wollte nicht die schnellere Lösung - sondern die eigene.

Das von Dir gezeigte Board geht bestimmt - aber es hilft Dir nicht bei einer FPGA-Entwicklung für den OVI40. Es sind komplett andere Entwicklungsumgebungen. Selbst die UHSDR-Entwicklung ist nicht identisch. Wenn das mit den beiden Datenstreams klappt (48KHz und "Spektrumstream") dann müsste ich den Datenstrom auf ein Vielfaches von 48KHz aufsetzen und die beiden Datenstreams verschachteln damit der STM sie einfachst auseinanderbekommt - das ist kompatibel zu gar nichts.

Das Hardwaredesign des VHF/UHF/SHF Teils dürfte nahezu final sein, das des Kurzwellenteils ist es nicht. Wie erzeuge ich den Takt? Extern mit sowas Ähnlichem wie dem 7474? Oder gehe ich mit dem vierfachen Takt gleich in den FPGA und der wirft mir die benötigten Taktsignale für die ADCs raus? Da wird noch Hardware-Forschungsarbeit nötig sein! Die ADCs werden mit 76,8MHz getaktet. Wenn ich mit 180° Phasenversatz arbeite müsste der Systemtakt 153,6MHz betragen, wenn ich mit 90° Versatz arbeite wären es 307,2MHz. Die mittlere Geschwindigkeitsvariante des FPGA geht bis 300MHz - die schnelle bis 550 MHz.

vy 73
Andreas

Title: Re:How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 11:31:53

@Slawek:

Next step is planned using Xilinx Zynq7000 where I can use much stuff which already exists for Red Pitaya. Also there is a Linux system running which makes development very easy. But: this is complete future (but I already have a multilayer design for the signal and system included sdcard for Linux system). I "only" have to adapt the frontends - and because of Zynq does have enough inputs it would be possible to put all on one PCB.

Of course I am interested in your project - but I will stay at my design. I have spend ~1.500,-- Euros for senseless development of "improved mixer concept" and killed it - now I want to finish this path. Money I spend is "only" ~600,-- Euros - but tons of time for multilayer PCBs. And I was finished with PCBs ~70% as I got your decision to work on DUC/DDC, too. Too late for stopping...

vy 73
Andreas

Title: Re:How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 12:31:03

Hallo Thomas,

in der Tat wird das so nicht funktionieren. Um da nicht nur blind copy & paste zu machen (das ist sowieso nicht meine Welt) muss man von ganz unten anfangen.

Ich habe meine ersten Schritte mit diesem Entwicklungsboard (https://www.ebay.de/itm/Mojo-V3-FPGA-Development-Board-Module-Spartan-6-XC6SLX9-for-Arduino-DIY-DE/122831191265) gemacht. Damit kann man prinzipiell auch schon weite Teile der RF-Entwicklung machen. Freilich ist das Board-Design nicht wirklich HF-gerecht. Aber zum Starten ist das schon mal geeignet. Wenn Du schon weite Erfahrungen im Selbstschreiben in irgendeiner Programmiersprache (nicht c&p!!) hast würdest Du das in ein paar Monaten mit entsprechendem Zeit(Lern)-Einsatz hinbekommen. Wenn man noch gar keine Programmiersprache wirklich "spricht" fehlen Dir auch Basics, die Du eben bei jeder Art der Programmierung brauchst. Je mehr Sprachen man spricht desto leichter fällt es neue dazuzulernen.

Bei den FPGA-Tools gibt es sogenannte "Core-Engines". Da kannst Du dann einen kompletten Block nur mit Angabe dessen, was er können soll, designen. Hier zum Beispiel ein FIR[youtube 5ibYafzxiPA]. Es gibt natürlich auch youtube-Tutorials für alle möglichen anderen cores: zum Beispiel einen DDS oder einen CIC oder, oder, oder. Nur reicht es eben nicht die "nebeneinander" zu bauen - man muss sie auch (im FPGA, versteht sich) "richtig verdrahten". Und da das Debuggen eines FPGA ungleich schwieriger ist als eines STM (da schließt Du den STLINK an und gut ist) frisst das unendlich Zeit und Nerven. Vor Allem wenn man vorher noch nie FPGAs designed hat.

vy 73
Andreas

Title: Re:How to setup Xilinx ISE on Linux
Post by: DF8OE on 15. April 2020, 18:51:06

Hallo Thomas,

mein Tipp: starte gleich mit einer auf Arch basierenden Distri. Du hast echt weniger Streß auf dem Laufenden zu bleiben. Keine Versionssprünge ;D...

Ich habe eben erfahren dass ich auf jeden Fall bis 27.04. keine festen Schultermine habe - ich unterrichte ja via Internet und unserem Forum. Unser Ministerpräsident ist wieder mal vorgeprescht (27.04.) - unsere Mutter hat ja den 4.5. festgelegt. Bin gespannt wer da wieder wen zurückpfeift. Vielleicht habe ich ja sogar bis zum 04.05. Zeit. Da werde ich mir wieder mal ein zwei Tage mit jeweils > 10 Stunden für das Projekt gönnen - vielleicht gelingt mir ja ein Durchbruch. Übrigens möchte ich zum Testen ein Modul für gnu radio companion schreiben, dann kann ich den Rest der Bearbeitung von UHSDR schon mal vorab simulieren. GRC kann ich auch nur wärmstens empfehlen - geiles Tool. Aber auch das: nichts für jemanden der nicht gewillt ist tiefer einzusteigen.

Die Perlen sind immer ganz unten.

vy 73
Andreas


Diskussions- und Newsboard des DARC-Ortsverbandes I40 | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.