www.mikrocontroller.net

Forum: FPGA, VHDL & Co. NIOS II Demo Project - Hello World "kein gewünschtes ergebniss"


Autor: Yassin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo leute,

ich bin dabei meine diplomarbeit zu machen, um mitzufolgen wo mein 
problem ist, ich beschreibe mal das ganze:

Die Platine die ich habe ist die Cyclone II FPGA Starter Board

QuartusII, SOPC Builder und NIOS II IDE habe ich installiert.

Cyclone II Starter Development Ki v1.0.0 habe ich auch installiert. Dort
gibt es ein CII_Starter_NIOS Projekt.

Ich habe schon eine E-fkt programmiert (VHDL) und im Quartus II 
simuliert, das Ergebniss ist hervorragend

Danach gehe ich zum NIOS II IDE(ich befolge das Tutorial) und will eine
C Applikation auf der Platine starten(Hello World). mit hilfe einer 
"for-schleife" wollte ich 300 werte lesen und schreiben lassen... soweit 
die theorie. Nun kommt die böse überraschung: nur ein wert kommt raus " 
65535 "
und wiederhot sich natürlich :((

hier sind einige datei von dem prblem

ich weiss nicht wo der fehler ist, für eure hilfe bin ich sehr dankbar

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Yassin,
nach dem Starten und dem anschliessendem Auslesen deines e-Fkt. Blocks 
vergeht soviel Ziet, dass du lediglich nur noch den Maximalwert zu sehen 
bekommst. Puffer die einzelnen Ausgabewerte deiner e-Fkt. in einem FIFO 
und lese sie via Interrupt aus (FIFO.Full).
Gruss, Marko

Autor: Yassin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marko,

danke erstmal für deine antwort..

wie kann man das verhindern ?? ich meine programmmässig oder so,denn 
soviel ahnung vom c habe nicht.

nochmal zur überischit hier sind die beiden VHDL- und C-code:

------------------------------------------------------------------------ 
---
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity EFkt is

port (
    clk,reset_n    : in  std_logic;
    start      : in  std_logic;
    d_in  : in  std_logic_vector (15 downto 0);    -- Eingang 
-- Eingang
    d_out  : out std_logic_vector (15 downto 0)    -- Ausgang
  );

end EFkt;

architecture verhalten of EFkt is

signal d_in1  : std_logic_vector (16 downto 0);
signal d_out1  :std_logic_vector (31 downto 0);

begin

EFkt:process (clk, reset_n,start)
  begin
    if reset_n='0' then
      d_in1 <=(others=>'0');
      d_out1 <=(others=>'0');
    elsif clk = '1' and clk'event then
      if start<='1'then
          d_in1 <= ( '0'& x"FFFF" ) - ( '0' & d_out1(31downto 16) ) ;
        d_out1 <= d_in1 + d_out1;
      end if;
    end if;
  end process EFkt ;
  d_out  <= d_out1(31 downto 16);
end verhalten;

------------------------------------------------------------------------ 
----

#include <stdio.h>
#include <system.h>
#include <stdlib.h>

volatile unsigned short *e_funktion     = (void*) E_FCT_DATA_BASE;
volatile unsigned short *start          = (void*) START_BASE ;

unsigned short werte[1000] ;
unsigned int i ;

int main()
{
    *start = 0;
    for(i=0;i<=300;i++){
        if ( i == 10 ){
            *start = 0 ;
        }
        werte[i] = *e_funktion;
    }
    for(i=0;i<=300;i++){
        printf("  %u \n" , werte[i]);
    }
    return 0;
}

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wuerdest deiner Efkt entity am besten ein Avalon Interface verpassen, 
dann wuerde sie naemlich mitkriegen  wann die CPU auf diese Zugreift und 
kann so nach jedem Zugriff eine Iteration weiterschalten.

Ganz ohne FIFO und Interrupt.

Bei deinem Kentnissstand ist es wohl besser du organisierst dir eine 
Nios C2H Lizenz, schreibst die Funktion nochmals in C hin und laesst das 
den C-to-Hardware Accelerator fuer dich erledigen.

Cheers, Roger

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAllo Yassin,

hat dein NIOS Prozessor Cache integriert?

Gruß Jörn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.