Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

Aufzeichnungen - VHDL-Beispiel

Das Record-Konstrukt in VHDL kann verwendet werden, um Ihren Code zu vereinfachen. Datensätze ähneln Strukturen in C . Datensätze werden am häufigsten verwendet, um einen neuen VHDL-Typ zu definieren. Dieser neue Typ enthält eine beliebige Gruppe von Signalen, die der Benutzer wünscht. Meistens wird dies verwendet, um Schnittstellen zu vereinfachen. Dies ist sehr praktisch bei Schnittstellen, die eine große Liste von Signalen haben, die immer gleich sind. Beispielsweise können Schnittstellen zu einem Off-Chip-Speicher groß sein und im gesamten Design immer wieder die gleichen Signale haben. Datensätze können verwendet werden, um die Codegröße zu verkleinern und weniger Signale in Ihrer Entität zu verwalten. Der Designer muss lediglich den Datensatztyp in einer einzelnen Paketdatei definieren und dann die Paketdatei für jede Entität verwenden, die diesen Datensatztyp verwendet.

Das folgende Beispiel erstellt zwei Datensatztypen in einer Paketdatei (example_record_pkg.vhd). Diese Typen werden in example_record.vhd verwendet, um eine FIFO-Schnittstelle zu vereinfachen. Für alle Eingänge aus dem FIFO wird ein Signal vom Typ t_FROM_FIFO erzeugt und für alle Ausgänge zum FIFO wird ein separates Signal vom Typ t_TO_FIFO erzeugt .

Zusammenfassung:

  1. Datensätze werden verwendet, um Entitäten und Portzuordnungen in VHDL zu vereinfachen.
  2. Datensätze können Elemente verschiedener Typen enthalten. (std_logic, Integer usw.)
  3. Records ähneln Strukturen in C.
  4. Datensätze, die in mehreren Dateien verwendet werden, sollten in einer einzigen Paketdatei aufbewahrt werden.
  5. Als Datensätze definierte Signale können initialisiert werden.
  6. Es ist möglich, ein Array von Datensätzen zu erstellen.


library ieee;
use ieee.std_logic_1164.all;

package example_record_pkg is

  -- Outputs from the FIFO.
  type t_FROM_FIFO is record
    wr_full  : std_logic;                -- FIFO Full Flag
    rd_empty : std_logic;                -- FIFO Empty Flag
    rd_dv    : std_logic;
    rd_data  : std_logic_vector(7 downto 0);
  end record t_FROM_FIFO;  

  -- Inputs to the FIFO.
  type t_TO_FIFO is record
    wr_en    : std_logic;
    wr_data  : std_logic_vector(7 downto 0);
    rd_en    : std_logic;
  end record t_TO_FIFO;

  constant c_FROM_FIFO_INIT : t_FROM_FIFO := (wr_full => '0',
                                              rd_empty => '1',
                                              rd_dv => '0',
                                              rd_data => (others => '0'));

  constant c_TO_FIFO_INIT : t_TO_FIFO := (wr_en => '0',
                                          wr_data => (others => '0'),
                                          rd_en => '0');
  
  
end package example_record_pkg;



library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

use work.example_record_pkg.all; -- USING PACKAGE HERE!

entity example_record is
  port (
    i_clk  : in  std_logic;
    i_fifo : in  t_FROM_FIFO;
    o_fifo : out t_TO_FIFO := c_TO_FIFO_INIT  -- intialize output record
    );
end example_record;

architecture behave of example_record is

  signal r_WR_DATA : unsigned(7 downto 0) := (others => '0');
  
begin

  -- Handles writes to the FIFO
  p_FIFO_WR : process (i_clk) is
  begin 
    if rising_edge(i_clk) then
      if i_fifo.wr_full = '0' then
        o_fifo.wr_en   <= '1';
        o_fifo.wr_data <= std_logic_vector(r_WR_DATA + 1);
      end if;
    end if;
  end process p_FIFO_WR;
  
  -- Handles reads from the FIFO
  p_FIFO_RD : process (i_clk) is
  begin 
    if rising_edge(i_clk) then
      if i_fifo.rd_empty = '0' then
        o_fifo.rd_en <= '1';
      end if;
    end if;
  end process p_FIFO_RD;
  
end behave;


Beliebteste Nandland-Seiten

VHDL

  1. Lernprogramm - Einführung in VHDL
  2. Beispiele für VHDL-Konvertierungen
  3. Prozeduranweisung – VHDL-Beispiel
  4. Signiert vs. Unsigniert in VHDL
  5. Variablen – VHDL-Beispiel
  6. Analyseoptionen
  7. LP-Platte
  8. Formale Verifizierung in VHDL mit PSL
  9. So erstellen Sie eine Liste von Zeichenfolgen in VHDL
  10. Beispiel für einen Anweisungsentpreller