天天看點

FPGA開發之Tcl項目設計一

現在在教學的時候看到的一般都是UI進行FPGA的項目建立,但是使用Tcl指令的腳本檔案實作FPGA的項目建立。

一、啥是Tcl,做什麼的?

        Tcl是工具指令語言(tool command language),一條指令就是完成某項工作,比如綜合,仿真之類的。不用再用滑鼠點來點去,好像有點裝逼。确實是有點。

        Tcl的格式一般是:command   arg1   arg2  。。。。。。

二、Tcl的機制是怎麼樣的呢?怎麼工作呢?

        (1)變元數組;

        (2)對嵌套指令,變量和反斜杠進行數值替換;

        (3)調用指令,用最終指令對變元進行解釋。

三、一些常用的Tcl指令:

        (1)變量指派。set指令是将值賦給變量,它接受兩個變元,第一個是變量名,第二個是值。第一次對變量指派時解釋器自動建立變量後,可以通過$擷取該變量的值。

                   set   var   5              //var     =     5;

                   set    b    $var         //    b     =     var    =    5;

        (2)指令替換:在方括号裡嵌套指令,先執行方括号裡面的嵌套指令,得出結果後再替換之前的嵌套指令。

                  比如:set   len    [string  length  ChinaFootball]       //方括号裡面的string  length是求後面字元串的長度。那麼先執行括号裡面的内容,string  length  ChinaFootball

                 得到 的是13,那麼最後指令就是執行set   len   13

        (3)數學表達式:Tcl本身隻完成分組,替換和指令的調用工作,用expr指令對數學表達式進行分析和計算。expr的計算和c還是一樣的,可以處理整數,浮點數和布爾

                  值。

                  邏輯傳回true或者false。

                  數學表達式可以嵌套指令和變量應用。

                  set   x   7

                  set   len   [expr   [string   length  foobar]  +  $x]

                  表達式支援許多内建的函數:

                  set      pi     [expr  2*asin(1.0)]            得到3.141592653589793

                  使用大括号:

                  expr   { 7.2 / 4}

                  set     len     [expr     {[string   length     footbar]} + $x  ]

                  14

                  set     pi        {expr    {2 * asin(1.0)}]

       (4)反斜杠替換:引用特殊意義的字元,比如通過它的引用形式指定一個純粹的美元符号,大括号或者方括号。反斜杠還經常用于在多行續寫一條很長的指令。

                 比如:

                 set     len     [expr     {[string   length \

                 footbar]} + $x  ]

                14