Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> VHDL

Catatan - Contoh VHDL

Konstruksi Record dalam VHDL dapat digunakan untuk menyederhanakan kode Anda. Catatan mirip dengan struktur di C . Rekaman paling sering digunakan untuk mendefinisikan tipe VHDL baru. Tipe baru ini berisi kelompok sinyal apa pun yang diinginkan pengguna. Paling sering ini digunakan untuk menyederhanakan antarmuka. Ini sangat berguna dengan antarmuka yang memiliki daftar besar sinyal yang selalu sama. Misalnya antarmuka ke memori off-chip mungkin besar dan memiliki sinyal yang sama berulang-ulang di seluruh desain Anda. Rekaman dapat digunakan untuk mengecilkan ukuran kode dan memiliki lebih sedikit sinyal di entitas Anda untuk dipelihara. Perancang hanya perlu mendefinisikan tipe record dalam satu file paket, kemudian menggunakan file paket untuk entitas apa pun yang menggunakan tipe record tersebut.

Contoh di bawah ini membuat dua jenis record dalam file paket (example_record_pkg.vhd). Jenis ini digunakan dalam example_record.vhd untuk menyederhanakan antarmuka FIFO. Satu sinyal tipe t_FROM_FIFO dibuat untuk semua input dari FIFO dan sinyal terpisah dari tipe t_TO_FIFO dibuat untuk semua keluaran ke FIFO .

Ringkasan:

  1. Rekam digunakan untuk menyederhanakan entitas dan peta port di VHDL.
  2. Data mungkin berisi elemen dari jenis yang berbeda. (std_logic, integer, dll)
  3. Record mirip dengan struktur di C.
  4. Catatan yang digunakan di beberapa file harus disimpan dalam satu file paket.
  5. Sinyal yang didefinisikan sebagai record dapat diinisialisasi.
  6. Dimungkinkan untuk membuat larik record.


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;


Halaman Nandland Paling Populer

VHDL

  1. Tutorial - Pengantar VHDL
  2. Contoh Konversi VHDL
  3. Pernyataan Prosedur - Contoh VHDL
  4. Ditandatangani vs. Tidak Ditandatangani di VHDL
  5. Variabel - Contoh VHDL
  6. Opsi Analisis
  7. Rekor LP
  8. Verifikasi formal dalam VHDL menggunakan PSL
  9. Cara membuat daftar string di VHDL
  10. Buat contoh pernyataan debouncer