Editor Downcodes akan membawa Anda memahami penulisan kode Verilog dan metode pengujian simulasi register geser delapan-bit yang diintegrasikan ke dalam keluaran serial. Artikel ini merinci cara merancang register geser delapan bit dengan pemuatan paralel dan keluaran serial, termasuk definisi modul, register internal dan desain logika, implementasi logika kontrol, dan penulisan modul simulasi. Melalui langkah-langkah yang jelas dan kode contoh, ini membantu Anda memahami dan menguasai penerapan Verilog HDL dalam desain sirkuit digital, dan akhirnya mewujudkan register geser delapan-bit yang berfungsi penuh.
Register geser delapan bit paralel-in dan serial-out adalah register yang dapat memuat data secara paralel dan mengeluarkan data secara serial. Untuk menulis kode Verilog untuk jenis register ini, Anda dapat menentukan proses yang dipicu oleh tepi jam, menggunakan variabel register lebar 8-bit untuk menyimpan status, dan menentukan sinyal kontrol untuk mengontrol beban paralel dan keluaran serial. Saat menulis kode, mode operasi yang berbeda harus diperhitungkan dan kontrol serta antarmuka data yang sesuai harus disediakan.
Berikut ini dijelaskan secara rinci bagaimana merancang fungsi pembebanan paralel:
Untuk mengimplementasikan fungsi pembebanan paralel, Anda dapat menentukan sinyal kontrol, seperti beban. Ketika beban berada pada tingkat tinggi, status register segera diperbarui berdasarkan data paralel pada ujung masukan, bukan melalui masukan berurutan. Dalam kode Verilog, logika ini dapat diimplementasikan dalam blok clock edge yang selalu dipicu. Dengan mendeteksi sinyal beban, dapat diputuskan apakah akan memuat data paralel yang disediakan secara eksternal ke dalam register atau menggeser berdasarkan input serial.
modul ShiftRegister_8bit(
kabel masukan clk,
kabel masukan terlebih dahulu,
beban kawat masukan,
kabel masukan serial_in,
kabel input [7:0] parallel_in,
pengaturan keluaran [7:0] data_out
);
reg [7:0] shift_reg;
selalu @(posege clk atau posedge dulu) dimulai
jika (pertama) dimulai
shift_reg <= 8'b0;
data_out <= 8'b0;
akhiri yang lain jika (memuat) dimulai
shift_reg <= parallel_in; // Pemuatan paralel
akhiri yang lain mulai
shift_reg <= shift_reg << 1; // geser ke kiri
shift_reg[0] <= serial_in; //Data masukan serial memasuki bit terendah
akhir
akhir
selalu @(*) dimulai
data_out = shift_reg; // Selalu mengupdate data keluaran
akhir
Pada blok selalu di atas, register diinisialisasi dengan mendeteksi sinyal reset terlebih dahulu, dan sinyal beban digunakan untuk mengontrol apakah akan melakukan pembebanan paralel atau perpindahan serial. Dalam operasi serial shift, selain menggeser seluruh register ke kiri untuk mewujudkan pergerakan bit data, input serial baru juga perlu diterima melalui sinyal serial_in.
modul ShiftRegister_8bit_tb;
// pelabuhan masukan
reg clk_tb;
reg pertama_tb;
reg load_tb;
reg serial_in_tb;
reg [7:0] paralel_in_tb;
//pelabuhan keluaran
kabel [7:0] data_out_tb;
// Buat instance modul yang akan diuji
ShiftRegister_8bit uut (
.clk(clk_tb),
.pertama(pertama_tb),
.beban(beban_tb),
.serial_in(serial_in_tb),
.parallel_in(parallel_in_tb),
.data_out(data_out_tb)
);
//Pembuatan sinyal jam
awal awal
clk_tb = 0;
forever #10 clk_tb = ~clk_tb; // Membuat sinyal clock dengan periode 20 satuan waktu
akhir
//Uji urutan stimulus
awal awal
//Inisialisasi sinyal
tb_pertama = 1; beban_tb = 0;
#25 rst_tb = 0; // Lepaskan sinyal reset
#20 load_tb = 1; parallel_in_tb = 8'b10101010; // Memuat data pengujian secara paralel
#20 load_tb = 0; // Matikan pemuatan paralel dan mulai perpindahan serial
serial_in_tb = 1; //Mulai input data serial dan amati hasilnya
#(8 * 20) serial_in_tb = 0; //Masukkan data serial dari beberapa siklus jam dan periksa hasilnya
// Tes selesai, setel ulang setel ulang
#40 tb_pertama = 1;
#20 tb_pertama = 0;
akhir
modul akhir
Dalam modul simulasi, sinyal clock pertama kali dihasilkan untuk menggerakkan pengoperasian seluruh register geser. Kemudian, input eksternal disimulasikan dengan mengubah nilai stimulus uji pada titik waktu tertentu, seperti sinyal reset pertama, sinyal kontrol beban paralel beban, dan sinyal input serial_in serial. Selama simulasi, periksa apakah perubahan keluaran data_out sesuai dengan perilaku yang diharapkan dari register geser di bawah eksitasi sinyal yang berbeda. Verifikasi kebenaran fungsional register dengan mengamati bentuk gelombang simulasi atau log simulasi.
Singkatnya, desain kode Verilog yang masuk akal dan pengujian verifikasi fakta adalah langkah-langkah kunci untuk memastikan pengoperasian yang benar dari register geser delapan-bit paralel-in dan serial-out.
Q: 1. Bagaimana cara menulis dan mengeksekusi kode Verilog dari register geser delapan-bit? J: Untuk menulis dan mengeksekusi kode Verilog untuk register geser delapan-bit, Anda perlu mengikuti langkah-langkah berikut:
Gunakan bahasa Verilog untuk menulis kode modul register geser dan menentukan port input dan output. Tulis kode testbench untuk pengujian simulasi modul register geser. Gunakan alat simulasi Verilog, seperti ModelSim atau Vivado, untuk memuat dan mengkompilasi file desain dan file pengujian. Jalankan simulasi, amati keluaran register geser, dan lakukan analisis bentuk gelombang untuk memverifikasi fungsinya.Q: 2. Bagaimana cara mensimulasikan dan menguji kode Verilog dari register geser delapan-bit? J: Untuk melakukan tes simulasi kode Verilog dari register geser delapan-bit, ikuti langkah-langkah di bawah ini:
Tulis kode testbench, termasuk vektor uji yang memberikan nilai pada sinyal masukan modul register geser, dan pernyataan yang memverifikasi hasil keluaran. Dalam kode testbench, gunakan perintah $monitor atau $display di Verilog untuk menampilkan nilai sinyal input dan output modul secara real time. Selama simulasi, hasilkan sinyal jam yang sesuai untuk mengontrol pengoperasian register geser dan mengamati hasil keluarannya. Jalankan simulasi dan amati serta analisis bentuk gelombang simulasi untuk memverifikasi bahwa register geser berfungsi dengan benar.Q: 3. Apakah ada alat simulasi Verilog yang dapat Anda rekomendasikan untuk melakukan simulasi kode Verilog dari register geser delapan-bit? J: Saat melakukan simulasi kode Verilog pada register geser delapan-bit, ada beberapa alat simulasi Verilog umum yang dapat dipilih, termasuk ModelSim, Vivado, ISE, Quartus, dll.
ModelSim adalah alat simulasi Verilog yang umum digunakan yang menyediakan fungsi simulasi dan debugging yang kuat dan dapat digunakan untuk melakukan pengujian simulasi kode Verilog. Vivado adalah rangkaian alat komprehensif yang dikembangkan oleh Xilinx, yang juga mencakup fungsi simulasi dan cocok untuk menjalankan tes simulasi kode Verilog. ISE dan Quartus adalah rangkaian alat komprehensif untuk perangkat Xilinx dan Altera FPGA. Mereka juga menyediakan fungsi simulasi yang dapat digunakan untuk melakukan pengujian simulasi kode Verilog. Saat memilih alat simulasi Verilog, Anda dapat memilih berdasarkan preferensi pribadi dan kebutuhan proyek, serta mengambil keputusan berdasarkan karakteristik masing-masing.Saya harap artikel ini dapat membantu Anda lebih memahami dan menguasai penulisan kode Verilog dan metode pengujian simulasi register geser delapan-bit. Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya.