ตัวอย่าง Quartus® II Tcl: หมายเลขเวอร์ชันในธนาคารลงทะเบียน VHDL

author-image

โดย

ขั้นตอนตัวอย่างนี้สร้างไฟล์ VHDL ด้วยมูลค่าฐานสิบหกที่จัดเก็บไว้ในการลงทะเบียนของธนาคาร คุณสามารถใช้ขั้นตอนนี้เพื่อเขียนข้อมูลจํานวนน้อยโดยอัตโนมัติ (เช่น หมายเลขการปรับปรุง) ไปยังธนาคารลงทะเบียนในการออกแบบของคุณ

ไฟล์ VHDL ที่สร้างขึ้นมีชื่อ ว่า version_reg.vhd. โทรติดต่อขั้นตอนด้วยหมายเลขฐานสิบหกที่คุณต้องการจัดเก็บไว้ในธนาคารลงทะเบียน มีตัวอย่างวิธีโทรติดต่อขั้นตอนที่ด้านล่างของหน้านี้

เมื่อคุณเรียกใช้กระบวนการในสคริปต์ Tcl คุณควรห่อหุ้มการเรียกขั้นตอนในคําชี้แจงเนื่องจากขั้นตอนส่งคืนข้อผิดพลาดหากมีปัญหาในการสร้างไฟล์ VHDL คุณสามารถเกิดข้อผิดพลาดและแสดงผลได้

ตั้งค่าgenerate_vhdl proc { hex_value } {

    { set num_digits [ความยาวสตริง $hex_value] bit_width
    [expr { 4 * $num_digits } ]
    ตั้งค่าhigh_index [expr { $bit_width - 1 } ]
    ตั้งค่าreset_value [string repeat "0" $num_digits]

    หาก { [protected { set
        fh [open "version_reg.vhd" ]
        ใส่$fh "LIBRARY ieee;\nUSE ieee.std_logic_1164.ALL;"
        ใส่$fh "ENTITY version_reg IS" ใส่
        $fh "    PORT ("
        ใส่$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 "PROCESS (clock,reset)" ใส่ $fh
        "    BEGIN"
        ใส่$fh " IF    (reset='0') THEN"
        ใส่$fh "        data_out <=X\"${reset_value}\""
        ใส่$fh "    ELSIF rising_edge (clock) THEN"
        ใส่ $fh "        data_out <= X\"$hex_value}\""
        ใส่ $fh " END    IF;"
        ใส่$fh "END PROCESS;"
        ใส่$fh "END rtl;"
        ปิด $fh
    } res ] } {
        ข้อผิดพลาด return -code $res
    } อื่นๆ { return
        1
}

การใช้งบแสดงความได้เปรียบ

ต่อไปนี้เป็นตัวอย่างวิธีเรียกขั้นตอนข้างต้นและแสดงข้อผิดพลาดใดๆ

ตั้งค่าmy_hex_number "A5"
หาก { {generate_vhdl $my_hex_number } res] } {
    post_message -type error "การให้ข้อมูลไม่ได้สร้างไฟล์ VHDL\n$res"
} #
หากสคริปต์มาถึงนี่ แสดงว่าไม่มีข้อผิดพลาด

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้