新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 零基礎學FPGA(五)Verilog語法基基礎基礎(下)

        零基礎學FPGA(五)Verilog語法基基礎基礎(下)

        作者: 時間:2014-12-31 來源:網絡 收藏

          (4)系統任務$stop

        本文引用地址:http://www.104case.com/article/267553.htm

          $stop任務作用是把EDA工具置成暫停模式,在仿真環境下給出一個交互式的命令操作符,將控制權交給用戶。這個任務可以帶有參數表達式,根據參數值(0、1、2)的不同,輸出不同的信息,參數值越大,輸出信息越多。

          (5)系統任務$random

          這個系統函數提供了一個產生隨機數的手段,當函數被占用時返回一個32位的隨機數,它是一個帶符號的整形數。

          下面是一個產生隨機數的例子

          reg[23:0] rand;

          rand=$random %60;

          上面的例子產生一個-59到59之間的隨機數,所以$random的用法是產生一個(-b+1)到(b-1)之間的隨機數。

          下面的例子通過并位產生一個值在0—59之間的隨機數

          reg[23:0 rand];

          rand = {$random} %60;

          利用這個系統函數可以產生隨機脈沖序列或寬度隨機的脈沖序列,用于電路的測試。

          下面是個產生隨機脈沖序列的例子

          

        360桌面截圖20140417132822.jpg

         

          

        360桌面截圖20140417133014.jpg

         

          (6)關于編譯預處理

          編譯預處理這部分和C語言差不多,主要用到的是`define、`include、和時間尺度`timescale

          `define 就是宏定義,在C語言了用的也比較多,在verilog中靈活的使用宏定義可以增加程序的可讀性,又方便修改。例如在聲明一個8位寄存器時用宏定義

          `define WINDOWS 8

          module

          reg [1:`WINDOWS] date;

          ……

          習慣上一般宏定義的內容用大寫字母表示,這里的WINDOWS就代表數字8,在下面的程序中調用WINDOWS時加個 `,表示調用,這樣宏定義的好處就是,在大的程序中如果想改變寄存器的大小,可以直接改數字8為16,這樣,所有的WINDOWS都變成了16,這樣改一個就可以改變所有的,給程序員帶來了方便。

          對于`include,C語言里用的比較多這里就不在多提,主要是模塊化編程思想的應用,這個很重要,練好模塊化編程,可以大大提高程序的可讀性和可移植性,也使修改程序變得更加方便。

          對于`timescale,就是一個時間尺度,C語言里面沒有,這里說一下。

          `timescale 包括兩部分,一部分是時間單位,一部分是時間精度,下面舉個例子

          

        360桌面截圖20140417142814.jpg

         

          在這個例子中,時間單位是10ns,時間精度是1ns,這里d=1.55,也就是說d等于1.55乘10納秒,也就是15.5納秒,再看時間精度是一納秒,四舍五入就是16納秒,所以在16納秒時,set置零,32納秒時set置一。

          小結

          (1)、在多模塊調試的情況下,$monitor需配合$monitoron和$monitoroff來使用。

          (2)、$monitor和$diplay的區別在于$monitor是連續監視數據的變化,因而往往只要在測試模塊的initial塊中調用一次就可以監控被測模塊中所有感興趣的信號不需要,也不能在always塊中調用$monitor.

          (3)、$time常在$monitor中作時間標記

          (4)、$stop 和 $finish 常用在測試模塊的initial塊中,配合時間延遲用來控制仿真的持續時間。

          (5)、$random在編寫程序是非常有用的,可以用來產生邊沿不穩定的波形和隨機出現的脈沖。正確的使用它能有效的發現設計中出現的問題。

          (6)、$readman在編寫測試程序時很有用,可以用來生成給定的復雜數據流。復雜數據可以用C語言產生,存在文件中。用$readman取出存入存儲器,再按節拍輸出這在驗證算法邏輯電路中特別有用。

          (7)、在用`timescale時要注意當多個帶不同`timescale定義的模塊包含在一起時,只有最后一個才起作用,所以屬于一個項目,但`timescale定義不同的多個模塊最好分開編譯,以免把時間單位搞混。

          (8)、宏定義字符串和include引用時,不要忘記用“`”這個標號。

          語法就到這里吧,謝謝大家!

        fpga相關文章:fpga是什么


        c語言相關文章:c語言教程



        上一頁 1 2 下一頁

        關鍵詞: FPGA Verilog

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 莫力| 江阴市| 庆安县| 筠连县| 灵台县| 临颍县| 阿克| 巨野县| 九寨沟县| 皋兰县| 怀安县| 九台市| 塔河县| 平陆县| 祁连县| 轮台县| 鄂托克前旗| 周宁县| 同江市| 海安县| 吉木萨尔县| 绥芬河市| 汶上县| 双鸭山市| 隆德县| 东明县| 志丹县| 东乡县| 延长县| 大洼县| 东兴市| 汉中市| 林口县| 焦作市| 静宁县| 沙田区| 精河县| 离岛区| 微博| 石景山区| 斗六市|