Simulasi VHDL pull up saluran terbuka

S

shaiko

Guest
Halo, Saya ingin mensimulasikan saluran terbuka berhenti pelabuhan di testbench saya. Sebagai contoh: I2C jam dan data port InOut yang dicetak sebagai tinggi 'Z' yang kemudian berhenti di sebuah '1 'dengan pull up resistor untuk mencapai "kabel dan". Dalam simulasi saya, saya ingin output yang mendapatkan
 
Mengapa tidak menggunakan fungsi resolusi yang ada untuk std_logic? Tambahkan baris ini di suatu tempat: my_inout_signal
 
Hi std_match, saya ingin bisa melakukan ini tanpa mengubah kode RTL. Oleh karena itu, sinyal harus diselesaikan dari sisi testbench ...
 
Seharusnya tidak peduli di mana Anda mengemudi sinyal ke 'H', jadi harus OK untuk memilikinya di bangku tes.
 
Anda menambahkan driver untuk sinyal bangku tes (std_logic) yang terhubung ke "some_inout_signal". test_bench_signal_connected_to_dut_open_drain
 
Mencobanya, tidak baik. Saya perlu RTL saya untuk "melihat" (mendaftar kembali) '1 'ketika dirinya drive output ke' Z 'dan tidak ada sinyal lain pada bus menariknya ke '0'. Untuk examle: - kami berkendara port InOut untuk 'Z' di suatu tempat di kode RTL kami inout_port
 
jika Anda menulis fungsi resolusi, Anda harus mengubah semua logika Anda dengan jenis 2, yang wont didukung oleh synthesisor dengan benar. Aku masih tidak mengerti apa yang Anda coba lakukan di testbench Anda. Ini seperti jika Anda mencoba untuk melihat sesuatu di testbench yang tidak ada hubungannya dengan UUT tersebut. Saya juga tidak mengerti apa yang Anda maksud dengan port "terdaftar" InOut. Ini tidak mungkin. Register hanya pergi dalam 1 arah, dengan output yang terhubung ke buffer tri-state.
 
Mencoba itu, tidak baik. Saya perlu RTL saya untuk "melihat" (mendaftar kembali) '1 'ketika dirinya drive output ke' Z 'dan tidak ada sinyal lain pada bus menariknya ke '0'. Untuk examle: - kami berkendara port InOut untuk 'Z' di suatu tempat di kode RTL kami inout_port
 
'H' tidak memiliki efek yang sama sebagai '1 '. inout_signal = 'H' tidak sama dengan inout_signal = '1 'apa jika saya tidak memiliki akses ke RTL tersebut. VHD?
 
maka mengapa tidak hanya menghubungkan inout_signal untuk '1 '? jika penggeraknya 'Z' intenerally maka logika membaca akan dapat melihat '1 '. Anda juga harus memiliki akses ke sinyal memungkinkan sehingga Anda tahu kapan harus beralih ke 'Z'
 
'H' tidak memiliki efek yang sama sebagai '1 '. inout_signal = 'H' tidak sama dengan inout_signal = '1 'apa jika saya tidak memiliki akses ke RTL VHD?.
Ok,' H 'dapat mematahkan simulasi. Semua fungsi dalam std_logic_1164 akan bekerja, tetapi kode seperti "jika inout_signal = '1 '" akan gagal. Satu hal lagi untuk mencoba di bangku tes (saya belum diuji):
Code:
 pull_up: proses (test_bench_signal_connected_to_dut_open_drain) mulai - Output dari proses ini akan terkunci untuk '1 'atau' Z 'jika test_bench_signal_connected_to_dut_open_drain =' Z 'maka test_bench_signal_connected_to_dut_open_drain
 
maka mengapa tidak hanya menghubungkan inout_signal untuk '1'?'
Itu port InOut ... sisi tesbench juga drive sinyal. Pikirkan berikut pada I2C bus: master A mengirimkan alamat dan menunggu budak untuk mengakui dengan menarik bus ke '0 '. Tidak ada drive bus untuk '1 '... '1' tingkat dicapai oleh pull up resistor. Aku butuh fungsi resolusi sederhana yang mengubah 'Z untuk '1' ...
 
Sebuah '1 'dan' Z 'didorong bersama-sama akan memberikan '1'.
 
Sebuah '1 'dan' Z 'didorong bersama-sama akan memberikan '1'
Para DUT dan bangku tes juga harus dapat mengarahkan sinyal ke '0 '.. Jika testbench drive ke '1 ', tidak pernah bisa '0', hanya '1 'dan' X '. Kami memiliki dua atau lebih driver, mereka berkendara '0 'atau' Z '. Kami ingin sinyal yang akan '0 'jika driver apapun drive '0', kalau tidak kita inginkan '1 '.
 
tepatnya ... di "dunia nyata" itu dilakukan pada PCB atau dengan internal pull up pada IC. Saya ingin melakukan hal yang sama pada testbench
 
Satu hal lagi untuk mencoba di bangku tes (saya belum diuji):
Jika Anda mendapatkan 'U' dalam simulasi, berubah sehingga 'X' atau 'U' akan mengaktifkan driver 'Z':
Code:
 pull_up: proses (test_bench_signal_connected_to_dut_open_drain) mulai - Output dari proses ini akan terkunci untuk '1 'atau' Z 'jika test_bench_signal_connected_to_dut_open_drain =' Z ', kemudian test_bench_signal_connected_to_dut_open_drain
 
Sepertinya untuk melakukan pekerjaan ... namun sinyal yang "sangat colorfull". Di sisi kenaikan dari sinyal itu berhenti biru (konon 'Z') untuk jumlah waktu dan Terkecil di tepi jatuh itu merah (konon 'X'). Jika ketika sinyal stabil warnanya hijau (di '1 'atau '0' seperti itu seharusnya). Beberapa jenis kondisi lomba di tepi ...
 

Welcome to EDABoard.com

Sponsor

Back
Top