Quartus® II Tcl 範例:VHDL 註冊銀行中的版本編號

author-image

作者

這個範例程式會產生一個 VHDL 檔案,其六重價值儲存在一銀行的收銀機中。您可以使用此程式將少量資料 (例如修訂版編號) 自動寫入設計中的註冊銀行。

所產生的 VHDL 檔案名為 version_reg.vhd。請使用您想要儲存在收銀機中的六倍號碼來呼叫程式。在此頁面底部有一個如何呼叫程式的範例。

當您在 Tcl 腳本中呼叫程式時,您應該在擷取聲明中結束程式通話,因為如果建立 VHDL 檔案有問題,程式會退回錯誤。您可以揑取錯誤並顯示。

proc generate_vhdl { hex_value \

    設定 num_digits [字串長度 $hex_value]
    集 bit_width [expr { 4 * $num_位數 ] ]
    設定為 high_index [expr { $bit_寬度 - 1 ]
    設定reset_value [字串重複「0」$num_位數

    ],如果 { [catch {
        set fh [開啟「version_reg.vhd」w ]
        $fh「LIBRARY ieee;\nUSE ieee.std_logic_1164.ALL;」
        將$fh「實體version_reg IS」
        放入$fh「    埠
        (」,$fh「        頻率:IN STD_LOGIC;」
        將$fh「        重設:IN STD_LOGIC;」
        將        $fh「data_out:OUT STD_LOGIC_VECTOR(${high_index\
             downto 0)」
        放    $fh「);」
        將$fh「END version_reg;」
        將$fh「ARCHITECTURE rtl of version_reg IS」
        放$fh「BEGIN」,
        將$fh「流程(頻率,重設)」
        放    $fh「開始
        」,$fh「IF(    重設='0')」放入
        $fh」        data_out <=X\"${reset_value\\"」
        將    $fh「ELSIF rising_edge(時鐘)」
        放$fh「data_out <=        X\"${hex_value\\",
        讓$fh「END    IF;」
        將$fh「END PROCESS;」
        放$fh「END rtl;」
        關閉$fh [
    res ] \
        回程代碼錯誤 $res
    { 其他 {
        退回 1
=

使用捕捉聲明

以下是如何將上述程式稱為並摽取任何錯誤的範例。

設定my_hex_number「A5」,如果
{[捕捉 { generate_vhdl $my_hex_number [ res] {
    { post_message -類型錯誤「無法產生 VHDL 檔案\n$res」。

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。