Nomor Versi Quartus® II Tcl di Verilog Register Bank

author-image

Oleh

Contoh prosedur ini menghasilkan file Verilog dengan nilai heksadesimal yang disimpan di bank register. Anda dapat menggunakan prosedur ini untuk mengotomatiskan penulisan data dalam jumlah kecil (seperti nomor revisi) ke bank register dalam desain Anda.

Berkas Verilog yang dihasilkan diberi nama version_reg.v. Hubungi prosedur dengan nomor heksadesimal yang ingin Anda simpan di bank register. Ada contoh cara menghubungi prosedur di bagian bawah halaman ini.

Ketika Anda menghubungi prosedur dalam skrip Tcl, Anda harus membungkus panggilan prosedur dalam pernyataan tangkapan karena prosedur mengembalikan kesalahan jika ada masalah saat membuat file Verilog. Anda dapat menangkap kesalahan dan menampilkannya.

proc generate_verilog { hex_value } {

    set num_digits [string length $hex_value]
    set bit_width [expr { 4 * $num_digits } ]
    set high_index [expr { $bit_width - 1 } ]
    set reset_value [string repeat "0" $num_digits]

    if { [catch {
        set fh [open "version_reg.v" w ]
        puts $fh "module version_reg (clock, reset, data_out);"
        puts $fh "    input clock;"
        puts $fh "    input reset;"
        puts $fh "    output \[$high_index:0\] data_out;"
        puts $fh "    reg \[$high_index:0\] data_out;"
        puts $fh "    always @ (posedge clock or negedge reset) begin"
        puts $fh "        if (!reset)"
        puts $fh "            data_out <= ${bit_width}'h${reset_value};"
        puts $fh "        else"
        puts $fh "            data_out <= ${bit_width}'h${hex_value};"
        puts $fh "    end"
        puts $fh "endmodule"
        close $fh
    } res ] } {
        return -code error $res
    } else {
        return 1
    }
}

 

Menggunakan Pernyataan Penangkapan

Berikut adalah contoh cara menghubungi prosedur di atas dan menangkap kesalahan apa pun:

set my_hex_number "A5"
if { [catch { generate_verilog $my_hex_number } res] } {
    post_message -type error "Couldn't generate Verilog file\n$res"
}
# If the script gets here, there were no errors.

Isi halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten berbahasa Inggris. Konten ini diberikan hanya untuk kenyamanan Anda serta sebagai informasi umum dan tidak bisa dianggap sebagai lengkap atau akurat. Jika terdapat kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris akan didahulukan. Lihat versi bahasa Inggris halaman ini.