Archive

Archive for the ‘Fedora’ Category

Altera Quartus 2 on Fedora 11

2009/07/02 aalonso 9 comments

On the past months I was enrolled in a “Hardware Description Languages” course where we work with FPGAs implementing several hardware designs, the class cover VHDL and Verilog and I feel quite comfortable working with Verilog. As target platform I use an Altera DE2 devboard and Quartus II IDE;

Installing Quartus II is quite trivial on Fedora 11

1. Install tcsh shell

su -c “yum install tcsh”

2. From www.altera.com/download

Download Quartus II web-install script

3. Give executable permissions to the script

chmod +x 90_altera_webinstall.sh

4. Install dependencies for the installer script (Only for 64 bit systems)

su -c “yum install glibc.i586 glibc-devel.i586″

su -c “yum install libSM.i586 libzip.i586 libXi.i586 libXrender.i586 libXrandr.i586″

su -c “yum install freetype.i586 fontconfig.i586″

5. Run the Quartus II web-install script

./90_altera_webinstall.sh

Follow the installer

altera-webinstall

altera-webinstall-02

altera-webinstall-03

6. Edit ~/.bashrc file and add the path for “quartus/bin”

export PATH=$PATH:/<quartus-install-dir>/quartus/bin

7. Open a new terminal and launch Quartus II IDE

quartus –64bit

With the previous steps you have Quartus II installed, you can now create your own design and simulate them, for downloading your designs to the FPGA you will need a helper script that will start/stop the jtag demon and to create a udev rule file to allow all user to access the usb-blaster device.

On DE2 development platform usb-blaster is used to interface the Jtag server and the FPGA. I have found some references about using usb-blaster in Linux by adding udev rules to properly handle the usb programmer.

8. Create a udev rules file at /etc/udev/rules.d/ such as 30-usb-blaster.rules

Add the following lines

# Altera DE2 USB blaster udev rules
# Adrian Alonso <aalonso00@gmail.com>
#
SUBSYSTEM==”usb”,SYSFS{idVendor}==”09fb”,SYSFS{idProduct}==”6001″,MODE=”0666″,SYMLINK+=”usb-blaster”

Basically when the Usb-blaster is connected to the computer, the udev rules are triggered and based on the idVendor and idProduct values a dev node is created /dev/usb-blaster whit the permissions for Read/Write for every user.

Reload udev rules

su -c “udevcontrol –reload_rules”

*Note: This is only necessary the first time to enable the new rules.

9. Copy the next script and place the script at /<quartus-install-dir>/quartus/bin/
*Note: Change the JTAGD variable for the correct path.
————————————————————————————————–
#!/bin/bash
# Jtag server for usb-blaster
# Based on Dalon Jtagd script
# Reference: http://forum.niosforum.com/forum/index.php?showtopic=5486
# Adrian Alonso <aalonso00@gmail.com>
# Fix stop demon

# Source functions library
source /etc/rc.d/init.d/functions

RET=0
PROG=”jtagd”
PID_FILE=/var/run/jtagd.pid
JTAGD=/opt/altera9.0/quartus/bin/jtagd

start ()
{
echo -n $”Starting $PROG sever:”
$JTAGD && success || failure
RET=$?
pidofproc $PROG >> $PID_FILE
echo
}

stop ()
{
local pid
pidfileofproc $JTAG >> pid
if [ -n $pid]; then
echo -n $”Stopping $PROG server”
killproc $JTAGD
else
failure $”Stooping $PROG”
fi
echo
}

case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart}”
RET=1
esac

exit $RET
————————————————————————————————–

10. Start the Jtag server by

<script-name.sh> start

11. Create a jtag config file

touch /home/<user>/.jtag.conf

Yes, the file is empty, when launching the programmer from Quartus IDE it only checks if this file exits.

12. From Quartus II launch the programmer and select the device “usb-blaster” to be able to download your design.

programmer

13. SOPC builder fix

When I try to start the SOPC builder I just saw an splash screen and nothing happened, looking at the run time log files “sopc_builder_log.txt” (is placed on your main project directory), libXtst library is missing so just installing it will solve the problem.

su -c “yum install libXtst.i586″

spoc_builder

14. Working with NIOS IDE

Install dependency libraries

su -c “yum install gtk2.i586 libcanberra-gtk2.i586″

Create a script named nios2.sh and add the following lines (Make the proper changes)
————————————————————————————————–
#!/bin/bash
# User specific aliases and functions
export QUARTUS_64BIT=1
QUARTUS_BASE=/opt/altera9.0
export QUARTUS_ROOTDIR=$QUARTUS_BASE/quartus
export SOPC_KIT_NIOS2=$QUARTUS_BASE/nios2eds
export SOPC_BUILDER_PATH=$QUARTUS_BASE/nios2eds
unset GCC_EXEC_PREFIX
export PERL5LIB=/usr/lib/perl5/5.10.0
bash –rcfile $QUARTUS_ROOTDIR/sopc_builder/bin/nios_bash
————————————————————————————————–
Running the script will set the shell with all the environment variables needed to use the nios2 ide.

Start nios2-ide from the shell

nios2-ide

nios2-ide

There should be  a better way to wrap around 64bit libraries and avoid to install 32bit libraries to work with Quartus II.

GSoC Project

GstEditor

Project goal: Enhance GstEditor.

My purpose is to rewrite GstEditor using Python, PyGooCanvas and Gstreamer bindigns for python in order to deliver an rich eye candy GstEditor; Preserving all the previous good ideas such as the ability to load/save pipelines in gst-xml format.

Brendan Howell GstEditor Python port http://gsteditor.wordpress.com/ is based on PyGooCanvas version 0.40  and there’s a significantly API changes for latest stable API version, the first task will be to fix the user interface.

The benefits for the Gstreamer community:

  • Provide a flexible tool for learning purposes on how the Gstreamer framework works
  • Use the exported pipeline in gst-xml format  in new applications can help new developers to integrate Gstreamer.

I like to take part of the GstEditor team in order to gain experience on Gstreamer framework that in a near feature will let me participate in a complex tasks enhancing the Gstreamer framework.

This project will be part of my semester project for “Object Oriented Programing” course that I’m currently taking.

Work plan:

  1. User interface, create the user interface with Glade.
  2. Connect the appropriate signals for functions callbacks.
  3. Integrate PyGoocanvas for GstElements figure drawing.
  4. Reuse/enhance the Gstreamer playback engine.

About me:

I’m a student in computer engineering, my study fields covers embedded systems and software engineering, my everyday duties are around programming desktop application in C, Python or programming in hardware description languages such us verilog.

I feel comfortable in both fields software/hardware and actually I have some work experience as a software engineer, a year ago I was working with TI OMAP processor dealing with audio/speech codecs, basically I used to work on an API that communicates the DSP side with the GPP side, in top of this Gstreamer is used for QA,  this is where I had my first exposure dealing with pipelines!

I’m a contributor to the Fedora project https://fedoraproject.org/wiki/User:Aalonso, from time to time I give tech talks promoting the use of open source technologies, one way to reduce the technological dependency of my country is to generate open alternatives that can benefit every one.

My home country is Mexico, and my school blocks all the useful ports for software developing svn, git, irc, all blocked, since this can be an issue I will use my home computer as a http_proxy.

Some of the projects that I work on last semester are:

Csmile:

Is an small application that takes pictures from a webcam, is written in C and uses Gstreamer to render the frame video captured from the webcam, the final picture is encoded using pixbuf utilities. The application turn out to be a great example on how not to use Goobject since I never implement an interface for get/set properties that can be used for changing the video frame size, final picture size, and as you ca see the picture orientation.

screenshot-csmile

Sigbox:

Is a simple PyGtk application for digital filter design, the application can load an wav audio file, choose a segment and apply a FIR or IIR filter. I wrote this app to demonstrate that Python, Matplotlib, Scipy and Numpy can be used as a replacement for Matlab, although there’s a minor bug on the installation script that I haven’t fix.
Both projects can be downloaded from github

Categories: Fedora, Linux, Personal, Python Tags: , ,