mikrocontroller.net

Forum: FPGA, VHDL & Co. zu wenig LED's/Anzeigen auf dem Altera-/Intel-Board?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Markus F. (mfro)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
... kein Problem. Braucht's nicht.

Die Intel-/Altera-FPGAs können das USB-Blaster Interface als 
jtag-Terminal benutzen, man kann also einfach Debug-Ausgaben an den 
Host-Rechner zurückschicken. Mit dem Qsys-/Nios-Geraffel wird das auch 
fleissig benutzt, leider hat Altera/Intel "vergessen" zu dokumentieren, 
wie man das Interface mit "normalem" VHDL nutzen kann:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity jtag_uart is
    generic
    (
        LOG2_RXFIFO_DEPTH               : natural;
        LOG2_TXFIFO_DEPTH               : natural
    );
    port
    (
        clk                             : in std_ulogic;
        reset_n                         : in std_ulogic;

        rx_data                         : out character;    -- received data
        rx_ready                        : out std_ulogic;   -- received data valid
        rx_data_req                     : in std_ulogic;    -- ask for data
        rx_paused                       : out std_ulogic;   -- receive paused

        tx_data                         : in  character;    -- data to send
        tx_start                        : in  std_ulogic;   -- start sending data
        tx_idle                         : out std_ulogic    -- we are not busy sending
     );
end entity jtag_uart;

architecture rtl of jtag_uart is
    component alt_jtag_atlantic
        generic
        (
            INSTANCE_ID                 : integer := 0;
            LOG2_RXFIFO_DEPTH           : integer := 0;
            LOG2_TXFIFO_DEPTH           : integer := 0;
            SLD_AUTO_INSTANCE_INDEX     : string := "YES"
        );
        port
        (
            clk                         : in std_ulogic;
            rst_n                       : in std_ulogic;
            
            r_dat                       : in character;                         -- data to send
            r_val                       : in std_ulogic;                        -- data is valid
            r_ena                       : out std_ulogic;                       -- allow to send data
            
            t_dat                       : out character;                        -- incoming data
            t_dav                       : in std_ulogic;                        -- give us more data
            t_ena                       : out std_ulogic;                       -- received data available
            t_pause                     : out std_ulogic
        );
    end component alt_jtag_atlantic;

begin
    i_jtag_uart : component alt_jtag_atlantic
        generic map
        (
            INSTANCE_ID                 => 0,
            LOG2_RXFIFO_DEPTH           => LOG2_RXFIFO_DEPTH,
            LOG2_TXFIFO_DEPTH           => LOG2_TXFIFO_DEPTH,
            SLD_AUTO_INSTANCE_INDEX     => "YES"
        )
        port map
        (
            clk                         => clk,
            rst_n                       => reset_n,

            -- alt_jtag_atlantic ports have _very_ strange (backwards) names...
            
            -- this is the receiving part of alt_jtag_atlantic, the ports
            -- we actually *send* data to
            r_dat                       => tx_data,
            r_val                       => tx_start,
            r_ena                       => tx_idle,

            -- this is the sending part of alt_jtag_atlantic, i.e. the ports
            -- we receive data from
            t_dat                       => rx_data,
            t_dav                       => rx_data_req,
            t_ena                       => rx_ready,
            t_pause                     => rx_paused
        );
end architecture rtl;

Mit dieser Komponente kann man Daten (character) über die (ja sowieso 
vorhandene JTAG-Anbindung) an den Host schicken und mit dem (etwas 
versteckten) Programm "nios2-terminal" anzeigen lassen.
Wenn einem die Anzeige nicht paßt, kann man auch eine eigene bauen.

Mir unerklärlich, warum Intel das nicht dokumentiert - schließlich ist 
das ein sehr brauchbares Feature...

Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus F. schrieb:
> Wenn einem die Anzeige nicht paßt, kann man auch eine eigene bauen.

Und wie?
Gibts Sourcecode für den PC?

Ich würde das gerne nutzen, aber nicht als Anzeige sondern als RS232 
Ersatz.

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FPGA zum Spass schrieb im Beitrag #5816492:
> Markus F. schrieb:
>> Wenn einem die Anzeige nicht paßt, kann man auch eine eigene bauen.
>
> Und wie?
> Gibts Sourcecode für den PC?
>
> Ich würde das gerne nutzen, aber nicht als Anzeige sondern als RS232
> Ersatz.

Dann schau dir mal das hier an:
http://idle-logic.com/2014/07/12/virtual-com-port-connection-de0-nano-vj-uart/
und das hier:
http://idlelogiclabs.com/2012/04/15/talking-to-the-de0-nano-using-the-virtual-jtag-interface/

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hier dürfte geeigneter/einfacher sein:

https://github.com/thotypous/alterajtaguart

(im "software") Verzeichnis. Einfach die Altera-C++-Libraries linken, 
das war's.

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.

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