Help progetto FPGA

Sezione dedicata alle logiche programmabili

Re: Help progetto FPGA

Postby Leonardo » 28 Jan 2015, 21:37

Non ci hai detto se hai risolto col problema della licenza di NIOS II. Sei riuscito innanzitutto a fare un blink dei led sulla board?

Se rileggi le precedenti risposte e ragioni sugli errori sono sicuro che troverai il problema. Prova a fare delle ipotesi su quale può essere il problema, così vediamo inoltre se stai capendo quello che stai facendo.

PS: Ricordati di aggiungere un link al progetto la prossima volta
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 29 Jan 2015, 15:18

Sono riuscito ad eliminare l'errore riguardante il #define era causato dal fatto che non mettevo main (void) ma le avevo lasciate vuote

Gli altri non ne ho proprio idea
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 29 Jan 2015, 15:37

Hai degli errori relativi ad una porta parallela, devi capire perché il compilatore non trova i file header.

Sai che il BSP contiene questi header e che viene generato automaticamente quando crei il template del progetto software ma NON se successivamente modifichi l'hw in QSys.

Quindi devi chiederti:

- E' stato modificato qualcosa in QSys dopo aver creato il template software? Hai ricompilato l'hw e rigenerato il BSP prima di ricompilare il progetto BSP e sw?

Io in genere do il comando Generate BSP e poi Build All per compilare sia il BSP che il progetto SW.

- E' effettivamente usata o hai copiato il codice da qualche parte? Elimina gli include alla porta parallela che non hai.

Se così non risolvi inviaci un link al progetto

Ciao
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 29 Jan 2015, 17:10

fa parte di un tutorial...
non ho modificato nulla tra un passaggio e l'altro...non capisco proprio perchè mi dia questi errori.

https://www.dropbox.com/s/g0hvw46glsmi9 ... 5.rar?dl=0

questo è il link al progetto...

spero possiate aiutarmi.
in ogni caso manca ancora qualcosa per avere il dato salvato nella SDRAM?
Poi dovrei andarlo a prendere passarlo al DAC e successivamente all'uscita?



per quanto riguarda il progetto precedente riesco a far accendere i led in corrispondenza agli sw passando attraverso la SDRAM.
riesco anche a isolare switch che devono fare da freeze per il sistema.
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 29 Jan 2015, 18:58

Molto probabilmente il tutorial è datato ed Altera utilizzava "parallel port" al posto dell'abbreviazione "pio".

Cancella gli include e le istruzioni relative alla "parallel port" ed inserisci degli equivalenti facenti uso del "pio".

Per accedere alla SDRAM devi semplicemente leggere/scrivere i dati all'indirizzo di memoria corrispondente.

Scordati del DAC e dell'uscita, tramite l'audio core hai sostanzialmente una memoria FIFO intermedia associata al "dispositivo audio" che devi leggere e scrivere, al resto pensa il "core audio".

Devi però giustamente configurare correttamente i pin nel pin planner della FPGA, questo il "core audio" non te lo fa :D

Ti ricordo che hai un componente "audio and video config" per configurare il dispositivo audio ftp://ftp.altera.com/up/pub/Altera_Material/13.0/University_Program_IP_Cores/Audio_Video/Audio_and_Video_Config.pdf così come un componente "External Clocks for DE Board Peripherals" per configurare il clock audio. Devi assicurarti che le impostazioni siano corrette (non ho controllato).

per quanto riguarda il progetto precedente riesco a far accendere i led in corrispondenza agli sw passando attraverso la SDRAM.


Cosa intendi per passando attraverso la SDRAM?
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 07 Feb 2015, 17:40

Eccomi qui,

ho continuato a lavorare sul progetto (che ormai ritengo troppo ambizioso), il tempo sta per finire ed io non ho tirato fuori nulla di buono.
Dopo un colloquio con l'insegnante, quest'ultimo mi ha detto di utilizzare ALTERA MONITOR PROGRAM e non ECLIPSE per gestire il NIOS II, e che è meglio che utilizzi la una programmazione in C priva dei costrutti di Eclipse, privilegiando gli indirizzamenti con la scrittura dell'indirizzo ad hoc (meno portabile ma più semplice a detta sua).
Sta di fatto che ad oggi io riesco ad utilizzare la DE1 come un riproduttore in tempo reale di un segnale audio, ho un VUMETRO sui lei rossi e verdi e con gli SW0 e SW1 escludo in riproduzione il canale DX e SX.
Ora però io devo riuscire ad usare il circuito come registratore, e cioè far si che il dato una volta passato dalla FIFO ai registri LEFT_DATA e RIGHT_DATA dell'audio core venga scritto nella SDRAM.
Come posso fare? La memoria SDRAM è mappata all'indirizzo 0x00800000
Datemi qualche idea SEMPLICE
Ah altra cosa, devo inserire uno START/STOP rec ed un PLAY (del dato registrato), come mi consigliate di farlo? Utilizzare i tasti KEY della DE1 non è per nulla semplice, devo implementare una macchina a stati finiti o sbaglio?
Allego il link al progetto
https://www.dropbox.com/sh/2585hb6ks8g7 ... ges7a?dl=0


grazie mille
sono davvero in grossissima difficoltà
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Francesco » 07 Feb 2015, 17:42

Lo start, stop, e play posso tranquillamente farlo utilizzando gli SW che secondo me è più semplice, non hanno rimbalzi e non tornando allo stato iniziale forse non neccessito nemmeno di dover creare una macchina a stati finiti
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Francesco » 07 Feb 2015, 18:24

Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 07 Feb 2015, 19:26

Ciao Francesco e bentornato,

Perché dici che non hai tirato fuori nulla di buono se sei riuscito a riprodurre l'audio?

Come ti avevo già consigliato userei la SRAM al posto della SDRAM , ad ogni modo il funzionamento dal punto di vista della programmazione è analogo, ecco un esempio

Code: Select all
unsigned int *mem = (unsigned  int*)0x00800000; // puntatore alla memoria
mem[0] = 0; // scrivi la prima parola di 32 bit in memoria col valore 0x00000000
mem[1] = .. // scrivi la seconda parola di 32 bit in memoria ..
..


Col memory browser (o l'analogo del'Altera Monitor Program se esiste) potrai verificare se la memoria è stata correttamente scritta.

Per i tasti una volta prese le dovute accortezze per il debouncing (se presente) non mi sembra così impegnativo.. devi implementare una FSM per forza di cose, ma in sw può essere semplicemente una variabile che ricorda lo stato attuale nel caso di due stati. Puoi utilizzare anche gli SW ma non credere si semplifichi così tanto..

Buon lavoro
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 09 Feb 2015, 09:51

Grazie Leonardo

i tuoi consigli sono sempre molto importanti per indirizzarmi nel lavoro.
Posso farti un paio di domande...
- Perche useresti la SRAM e non la SDRAM?
-Che vantaggi ha la SRAM, forse la velocità?
-E' proprio il problema del DEBOUNCING a farmi dire uso gli switch, ma giustamente potrei evitare la FSM e i relativi problemi programmando via softare il tutto.
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 09 Feb 2015, 10:15

Ciao Francesco,

Generalmente la SRAM ha tempi di accesso alla memoria minori, non richiede il refresh delle righe (cosa di cui si occupa il controller), etc.. è in sostanza più semplice anche se poi il controller nasconde le complessità aggiuntive della SDRAM.

E' vero che è meno capiente ma per pochi secondi di registrazione ad un campionamento magari non elevatissimo dovrebbe bastare.

Il debouncing via hw può essere poco più complesso di un contatore, per evitare la metastabilità vista la natura asincrona rispetto al clock del tuo sistema dovrai comunque sincronizzare il segnale per fare le cose fatte bene. E' da ricordare però che il tuo è un progetto con un termine quindi potresti sorvolare su questi aspetti più tecnici.
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 12 Feb 2015, 13:54

Ciao

il progetto prosegue... Ho provato a registrare 15 secondi di file audio nella memoria SDRAM e alla fine del tempo accendo tutti i led verdi, questo è soltanto per vedere che va a buon fine la scrittura.
Ora il passo successivo sarebbe quello di far partire questa registrazione con un BUTTON o con uno SWITCH (quale mi consigliate, vantaggi e problematiche).

Per quanto riguarda il PLAY dell'audio registrato mi sorge il dubbio di dover sincronizzare la lettura della memoria ad un clock adatto per non avere l'audio troppo veloce o troppo lento...è corretto oppure viene gestito tutto dal controller clock del NIOS?
Pensavo di far si che i dati letti in memoria vengano scritti nuovamente nella FIFO e spediti fuori...
Che ne dite?

Consigli? Aiuti?
Grazie


Di seguito metto il file.txt del software
--------------------------------------------------------------------------------------------------------------------------------
Code: Select all
#include "stdio.h"
#include "math.h"

#define soglia_buffer 96

int main (void)
{
   volatile int * red_LED_ptr = (int*)  0x01109040;    //puntatore all'indirizzo di memoria dei led rossi   
    volatile int * green_LED_ptr = (int*) 0x01109020;   //puntatore all'indirizzo di memoria dei led verdi   
   volatile int * audio_ptr = (int*) 0x01109010;       //puntatore all'indirizzo di memoria della periferica audio, alla prima locazione
       int * switches_ptr = (int*) 0x01109050;    //puntatore all'indirizzo di memoria degli switch
   volatile unsigned int * mem =(unsigned int*) 0x00800000;

   int fifospace;           //variabile per la gestione della memoria fifo
   int right_data;          //variabile per la gestione del dato audio del canale destro
   int left_data;           //variabile per la gestione del dato audio del canale sinistro
   int left_tmp;
   int right_tmp;
   char reg_switch;          //registro delle posizioni degli switch
   long  sizeofrec=1440000;   //corrispondente a 15 secondi in stereo
   long  index;



// INSERIRE UN TASTO DI START REGISTRAZIONE   
   index=0;
        while (1)                //ciclo while infinito
   {   
      
// VU METER sui led rossi e verdi, posizionato fuori dal ciclo if altrimenti abbiamo distorsione del segnale per il troppo utilizzo di risorse

      left_tmp=left_data>>24;
      right_tmp=right_data>>24;
      *(green_LED_ptr) = pow(abs(left_tmp+right_tmp),.5); 
           *(red_LED_ptr) = pow(abs(left_tmp+right_tmp),.5);   

// Si fa puntare il puntatore audio_ptr al secondo registro del CORE AUDIO che corrisponde al registro fifospace

      fifospace = *(audio_ptr +1);
 
      

// scrivo in fifospace il dato
// con l'operatore & fa un AND bit a bit del registro fifospace e della locazione 0x000000FF 
     
      if ((fifospace & 0x000000FF) > soglia_buffer)   
      {

// se la soglia di occupazione della FIFO è superata si devono spostare i dati nei registri left_data e right_data dell' AUDIOCORE
   
      while (fifospace & 0x000000FF)
      {
         left_data = *(audio_ptr + 2);   //sposto il puntatore e il contenuto al registro left_data del componente audio   
         right_data = *(audio_ptr + 3);  //sposto il puntatore e il contenuto al registro right_data del componente audio
 

// INSERIRE SPOSTAMENTO DATI NELLA MEMORIA SDRAM
         if (index<sizeofrec)
         {
            mem[index++]=left_data;
            mem[index++]=right_data;
         }
         else
            *(green_LED_ptr)=0xFF;
             
// INSERIRE UN TASTO DI STOP REGISTRAZIONE

//INSERIRE UN TASTO DI PLAY
//INSERIRE LETTURA DA SDRAM
//RIEMPIRE LA FIFO
//DARE IL DATO IN USCITA


 
         reg_switch = *switches_ptr;     //
         
         if ((reg_switch & 0x01) == 1)   // taglio il canale dx
            right_data = 0;
   
         if ((reg_switch & 0x02) == 2)   // taglio il canale sx PERCHE' MI ESCLUDE I LED DEL VUMETRO
            left_data = 0;


         *(audio_ptr + 2) = left_data;   
         *(audio_ptr + 3) = right_data;

         fifospace = *(audio_ptr + 1);   // si ricomincia a riempire la fifo



         


            
         }
      }
   }

----------------------------------------------------------------------------------------------------------------------------------
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 12 Feb 2015, 15:23

Penso che nel datasheet del core audio puoi trovare risposta alle tue domande:

The Audio core requires certain clock frequencies based on the sample rate of the audio. The University Program’s
IP core, Audio Clock for DE-series Boards, can be use to provide those required clock frequencies. The Audio core
also requires that the audio chip be initialized with some default values. The University Program’s IO core, Audio
and Video Config, provides the functionality required to initialize the audio chip. Refer to the specific documentation
for those cores for more information


When using the Memory-Mapped Avalon Type in Qsys, Altera recommends that the Audio core be used with
the standard or fast versions of the Altera Nios® II processor, so that a program running on the processor can keep
up with the generation of audio data. If the economic version of the processor is used, then the program may run too slowly, and the audio may not be clear. In such, cases, it may be possible to improve the audio clarity by selecting a
lower sampling rate in the audio chip


Mi spiace ma al momento non dispongo di una DE1 e non posso testare il tuo codice, direi però che ormai hai tutto per ultimare il progetto. Non scordare di farci sapere poi come va a finire.

Ciao
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 19 Feb 2015, 13:43

Scusate

forse me lo sono perso per strada ma..... qual'era il modo per usare le librerie HAL in Altera monitor program?
Non posso usare eclipse ma il docente mi ha detto che anche in altera posso usare tutte le librerie del caso.
A me servono quelle del core audio...
Grazie mille...
Francesco
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 20 Feb 2015, 08:03

Eclipse alla generazione del BSP aggiunge tutto il necessario, bisogna solamente aggiungere gli #include corretti nel proprio codice. Probabilimente con Altera Monitor Program si ha la stessa situazione.

Prego
Leonardo
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 02 Mar 2015, 19:45

Ma perché io non riesco ad avere le librerie neccessarie per gli audio codec

#include altera_avalon_up_audio.h

ho installato quartus 13.0, ho installato gli university program dal sito e dal link che Leonardo mi aveva fornito ma niente da fare.
Quando metto l'include Altera Monitor Program non ne vuole sapere e anche facendo un cerca nel PC non trovo nulla di tutto cio.
Come posso fare? ce un modo per forzare l'installazione di queste librerie?
Sto seguendo i tutorial di Altera e sembra tutto così ovvio che le librerie devono essere presenti all'interno del pc...ho disinstallato e reinstallato più volte tutto per sicurezza ma niente...
AIUTO panico
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 02 Mar 2015, 19:49

Io le ho in C:\altera\13.0sp1\ip\University_Program\Audio_Video\altera_up_avalon_audio\HAL\inc
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Francesco » 03 Mar 2015, 11:44

ma...è forse possibile che per far funzionare le HAL in ALtera Monitor Program devo impostare non "Custom System" ma "DE1 media computers"...
Facendo così non mi da l' errore per la mancanza dell # include ma il programma che funzionava correttamente non funziona più...Come mai? Da quello che ho capito sposta indirizzi o altro?

Non ce la faccio più, faccio un passo avanti e tre indietro...Perché Altera Monitor è così complicato da far funzionare?
Consigli per il settaggio corretto, io ho la DE1 e devo caricare il file SOF che è il mio progetto con il Nios oltre al file .C

Grazie
Francesco
 
Posts: 23
Joined: 20 Jan 2015, 13:09

Re: Help progetto FPGA

Postby Leonardo » 03 Mar 2015, 17:37

Ciao Francesco,

Perchè non provi a chiedere una mano a chi ti aveva consigliato di usare l'Altera Monitor al posto di Eclipse?

L'Altera Monitor è pensato principalmente per semplici programmi scritti ad esempio in Assembly per corsi di Computer Architecture. Puoi però benissimo realizzare progetti più complessi come il tuo.

Il file SOF è da "caricare" nella FPGA per "programmarla".

Ciao
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Help progetto FPGA

Postby Leonardo » 17 Mar 2015, 19:12

Ciao Francesco,

Alla fine come è andato il progetto?
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

PreviousNext

Return to FPGA & CPLD

Who is online

Users browsing this forum: No registered users and 20 guests

cron