Exemple Quartus® II Tcl : numéro de version d’une banque de registre VHDL

author-image

Par

Cette procédure par exemple génère un fichier VHDL avec une valeur hexculcicule stockée dans une banque de registres. Vous pouvez utiliser cette procédure pour automatiser l’écriture de petites quantités de données (comme un numéro de révision) à une banque de registre dans votre conception.

Le fichier VHDL généré est nommé version_reg.vhd. Appelez la procédure avec le numéro hex conservable dans la banque de registre. Il y a un exemple de comment appeler la procédure en bas de cette page.

Lorsque vous appelez la procédure dans un script Tcl, vous devez envelopper l’appel de la procédure dans un relevé de captures, car la procédure renvoie une erreur en cas de problèmes pour créer le fichier VHDL. Vous pouvez détecter l’erreur et l’afficher.

proc generate_vhdl { hex_value }

    {set num_digits [longueur de chaîne $hex_value]
    défini bit_width [expr { 4 * $num_digits } ]
    réglé high_index [expr { $bit_width - 1 } ] a défini reset_value [répétition de
    la chaîne « 0 » $num_digits]

    si
        {[catch {set fh [open « version_reg.vhd » w ]
        met $fh « LIBRARY ieee;\nUSE ieee.std_logic_1164.ALL ; »
        met $fh « ENTITÉ VERSION_REG IS »
        met $fh «    PORT » ( »
        met $fh « horloge : IN STD_LOGIC ;        »
        met $fh «        réinitialisation : IN STD_LOGIC ; »
        met $fh «        data_out : OUT STD_LOGIC_VECTOR (${high_index} \
             downto 0) »
        met $fh «    ; »
        met $fh « VERSION_REG FIN » ;
        met $fh « ARCHITECTURE rtl OF version_reg IS »
        met $fh « BEGIN » met $fh « PROCESS
        (clock,reset) »
        met $fh « BEGIN » met $fh « IF    (reset='0') then »
        met $fh »        data_out <=X\"${reset_value}\ »
        met $fh «    ELSIF rising_edge (horloge) »
        met $fh «        data_out <= X\"${hex_value}\ » met $fh
        « END IF ;    »
        met $fh « PROCESSUS FINAL »
        met $fh « END rtl ; »
        fermez $fh
    } res ] } {
        erreur de retour de code $res }
    d’autre
        {retour 1
}

À l’aide d’une déclaration de capture

Voici un exemple montrant comment appeler la procédure ci-dessus et détecter les erreurs éventuelles.

définissez my_hex_number « A5 »
si {[capture { generate_vhdl $my_hex_number } res] } { erreur de type post_message « Impossible de générer un
    fichier VHDL\n$res »
} } # Si le script
arrive, il n’y a pas eu d’erreurs.

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.