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

Menguasai Instantiasi Port Map dalam VHDL: Panduan Praktis

Dalam VHDL, modul adalah unit yang contained yang berkomunikasi dengan dunia luar melalui entity nya. Klausa port map dari instantiasi menghubungkan port formal entity ke sinyal dalam desain sekitar.

Modul, Entitas, dan Testbench

Saat kita mengembangkan untuk FPGA atau ASIC, logika desain tinggal dalam modul yang memiliki port input dan output yang didefinisikan dengan jelas. Modul yang tidak memiliki port adalah testbench—wraper simulasi yang memberikan stimuli ke device under test (DUT) tetapi tidak pernah muncul pada chip fisik.

Dalam pos sebelumnya kita menulis semua VHDL dalam satu berkas, yang nyaman untuk eksperimen cepat tetapi tidak cocok untuk desain produksi. Memisahkan DUT dari testbenchnya meningkatkan keterbacaan, penggunaan kembali, dan menjadikan hierarki simulasi jelas.

Konvensi Penamaan Umum

Banyak tim mengikuti skema sederhana: berkas desain adalah MyModule.vhd, sementara testbenchnya adalah MyModuleTb.vhd. Arsitektur DUT sering disebut rtl (register-transfer level), dan arsitektur testbench disebut sim. Konvensi ini segera memberitahu Anda apakah berkas dimaksudkan untuk sintesis atau simulasi.

Menguasai Instantiasi Port Map dalam VHDL: Panduan Praktis

Sintaks VHDL untuk Instantiasi Port Map

Definisikan antarmuka modul dengan kata kunci entity:

 entity <entity_name> is port( <entity_signal_name> : in|out|inout <signal_type>; ... ); end entity; 

Instantiasi modul dalam berkas VHDL lain dengan port map eksplisit:

 <label> : entity <library_name>.<entity_name>(<architecture_name>) port map( <entity_signal_name> => <local_signal_name>, ... ); 

<label> muncul dalam hierarki simulator, <library_name> default ke work, dan setiap port formal harus terikat ke sinyal lokal.

Contoh Praktis: MUX 4-ke-1

Di bawah ini adalah pasangan testbench dan DUT lengkap yang mengimplementasikan multiplexer 4-ke-1 menggunakan sinyal unsigned 8-bit.

Kode Testbench

 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T15_PortMapTb is end entity; architecture sim of T15_PortMapTb is signal Sig1 : unsigned(7 downto 0) := x"AA"; signal Sig2 : unsigned(7 downto 0) := x"BB"; signal Sig3 : unsigned(7 downto 0) := x"CC"; signal Sig4 : unsigned(7 downto 0) := x"DD"; signal Sel : unsigned(1 downto 0) := (others => '0'); signal Output : unsigned(7 downto 0); begin -- Instantiate the MUX with architecture rtl i_Mux1 : entity work.T15_Mux(rtl) port map( Sel => Sel, Sig1 => Sig1, Sig2 => Sig2, Sig3 => Sig3, Sig4 => Sig4, Output => Output); -- Stimulus process process is begin wait for 10 ns; Sel <= Sel + 1; wait for 10 ns; Sel <= Sel + 1; wait for 10 ns; Sel <= Sel + 1; wait for 10 ns; Sel <= Sel + 1; wait for 10 ns; Sel <= "UU"; wait; end process; end architecture; 

Kode Modul

 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T15_Mux is port( -- Inputs Sig1 : in unsigned(7 downto 0); Sig2 : in unsigned(7 downto 0); Sig3 : in unsigned(7 downto 0); Sig4 : in unsigned(7 downto 0); Sel : in unsigned(1 downto 0); -- Output Output : out unsigned(7 downto 0) ); end entity; architecture rtl of T15_Mux is begin process(Sel, Sig1, Sig2, Sig3, Sig4) is begin case Sel is when "00" => Output <= Sig1; when "01" => Output <= Sig2; when "10" => Output <= Sig3; when "11" => Output <= Sig4; when others => Output <= (others => 'X'); end case; end process; end architecture; 

Analisis Gelombang

Menjalankan testbench di ModelSim menghasilkan gelombang yang sesuai dengan perilaku yang diharapkan dari MUX. Cuplikan gelombang di bawah ini memastikan bahwa DUT dengan benar beralih di antara keempat sinyal input saat sinyal Sel berubah.

Menguasai Instantiasi Port Map dalam VHDL: Panduan Praktis

Hal Utama yang Perlu Diingat

Lanjutkan ke tutorial berikutnya untuk wawasan yang lebih dalam tentang pola desain VHDL.

VHDL

  1. Bagaimana Molibdenum Mengubah Industri Modern: Penggunaan, Manfaat, dan Dinamika Pasokan
  2. Membuat Daftar String dalam VHDL: Praktik Terbaik & Contoh
  3. Membuat Testbench yang Diakibatkan Tcl untuk Modul Kode-Kunci VHDL
  4. Mengakhiri Simulasi Testbench VHDL dengan Elegan
  5. Implementasi Pengontrol PWM dalam VHDL: Desain, Simulasi, dan Demo FPGA
  6. Menghasilkan Angka Acak dalam VHDL: Dari Uniform hingga OSVVM
  7. Memanfaatkan Prosedur Dalam Proses untuk Desain FSM VHDL yang Lebih Bersih
  8. Menggunakan Fungsi Tidak Murni di VHDL: Meningkatkan Keterbacaan dan Pemeliharaan FSM
  9. Menguasai Fungsi VHDL: Panduan Praktis untuk Desain Efisien
  10. Menguasai Teknik Mesin Gerinda Cutter: Panduan Praktis