Hello :D
Kann man (eigene ) Komponenten auch ohne Avalon Bus mit dem Nios
verbinden ?
Oder wenigstens indirekt indem man Daten an einen PIO schickt.
Danke.
Jetzt mache ich weiter mit Trial and Error und Recherche :D
Habe noch mal ein Bild im Anhang.
Ich werde einfach mal versuchen die Signale zu verknüpfen.
Kenne mich noch nicht so gut mit HDL aus.
Will das gerade erst mal in System Verilog machen ..
Geldesch B. schrieb:> Kann man (eigene ) Komponenten auch ohne Avalon Bus mit dem Nios> verbinden ?
An welche Schnittstelle hast Du da gedacht?
Und mit welchen Nios-Befehlen willst Du mit Deiner Komponente
kommunizieren?
> Oder wenigstens indirekt indem man Daten an einen PIO schickt.
Ja, sowas geht. Ähnlich wie man es beim Mikrocontroller machen würde.
Nutze ich gerne für einzelne Status- bzw. Steuersignale, wo ein
komplettes Businterface eine Übertreibung wäre.
Duke
Vorschlag/Stichwort: memory mapped register.
Schritte:
- Register/Adressen definieren
- Adress-Decoder implementieren oder generieren
- Per C Register im entsprechend codierten Memory-Bereich (MMR_Offset)
ansteuern.
Z.B.
>An welche Schnittstelle hast Du da gedacht?
Auf dem FPGA soll ein SPI Slave laufen- er empfängt Daten und legt diese
ab. Ich möchte genau darauf zugreifen.
Außerdem soll ein HDMI Stream genutzt werden können. ( Einfach nur weiße
Pixel auf den sonst schwarzen Stream legen)
>Und mit welchen Nios-Befehlen willst Du mit Deiner Komponente>kommunizieren?
Habe mal unten ein Beispiel wie ich es jetzt versucht habe.. aber gerne
verwende ich auch andere Befehle.
@Martin S.
Deine Antwort schaue ich mir noch genauer an. Habe gerade erst mal meine
Idee getestet. War mir wichtig.
Vielen Dank für deinen Tipp - Vielleicht es ja sogar sowas ähnliches !
:D
*Mein testmodul, was einem Signal die Kombination 101 zuweist (also 5)*
1
module test1 (
2
input logic clk_s,
3
input logic x,
4
input logic y,
5
output logic sum,
6
output bit [2:0] t1
7
);
8
9
always @(clk_s)
10
begin
11
sum <= x + y;
12
t1<=3'b101; //6'b10_0011 => 100011
13
end
14
15
endmodule
* Mein Toplvl Modul was mein testmodul instanziiert und das Signal an
den NIOS weitergibt... *
volatile unsigned int * key_ptr = (volatile unsigned int *) 0x80009000;
8
alt_putstr("Hello from Nios II!\n");
9
int swValue = IORD(0x80009000, 0);
10
printf("key: %d", swValue);
11
/* Event loop never exits. */
12
while (1) {
13
14
}
15
16
return 0;
17
}
Wenn man den NIOS ausführt ( an dieser stelle stürzt eclipse beim copy
und pasten einfach ab- aber so in etwas steht das da:) - das ist 101 ,
also das was ich oben im testmodul zugewiesen habe..
Hi , ich wollte euch mitteilen, dass es so höchstwahrscheinlich klappt.
Auch wenn man es normalerweise so nicht machen würde.
Ein Beispiel hat bei mir funktioniert:
Ich wählte mir in meinem Toplvl vhdl Modul einen Input Slide.
Anschließend habe ich diesem Eingangssignal einen Eingang eines
Test-HDL-Moduls zugewiesen, welche in einer Bitkombination ein
bestimmtes Bit setzen soll, wenn der Slide-Switch gesetzt ist. Dieses
Modul leitete ich weiter an einen 8 Bit PIO meines Avalon Busses, an dem
auch der NIOS angeschlossen ist. Ich hatte nun Zugriff auf diese 8 Bit
und konnte diese zum Beispiel mit alt_putstr ausgeben.
Außerder war an den Avalon Bus noch ein 8 Bit Ausgang angeschlossen. An
diesen habe ich meine Daten vom PIO-In weitergeleitet. Der PIO Out
wiederum war an ein weiteres Test-HDL-Modul angeschlossen, welche die
Bitkombination toggelte und an die 8 LEDs ausgeben sollte.
Es hat geklappt :DDDD
Man konnte beobachten, dass je nach Slide-Switch-Stellung das eine Bit
aktiv oder eben deaktiviert war, wobei alles noch invertiert war !
Grüße !
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