<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 零基礎學(xué)FPGA(五)Verilog語(yǔ)法基基礎基礎(下)

零基礎學(xué)FPGA(五)Verilog語(yǔ)法基基礎基礎(下)

作者: 時(shí)間:2014-12-31 來(lái)源:網(wǎng)絡(luò ) 收藏

  (4)系統任務(wù)$stop

本文引用地址:http://dyxdggzs.com/article/267553.htm

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

  (5)系統任務(wù)$random

  這個(gè)系統函數提供了一個(gè)產(chǎn)生隨機數的手段,當函數被占用時(shí)返回一個(gè)32位的隨機數,它是一個(gè)帶符號的整形數。

  下面是一個(gè)產(chǎn)生隨機數的例子

  reg[23:0] rand;

  rand=$random %60;

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

  下面的例子通過(guò)并位產(chǎn)生一個(gè)值在0—59之間的隨機數

  reg[23:0 rand];

  rand = {$random} %60;

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

  下面是個(gè)產(chǎn)生隨機脈沖序列的例子

  

360桌面截圖20140417132822.jpg

 

  

360桌面截圖20140417133014.jpg

 

  (6)關(guān)于編譯預處理

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

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

  `define WINDOWS 8

  module

  reg [1:`WINDOWS] date;

  ……

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

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

  對于`timescale,就是一個(gè)時(shí)間尺度,C語(yǔ)言里面沒(méi)有,這里說(shuō)一下。

  `timescale 包括兩部分,一部分是時(shí)間單位,一部分是時(shí)間精度,下面舉個(gè)例子

  

360桌面截圖20140417142814.jpg

 

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

  小結

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

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

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

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

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

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

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

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

  語(yǔ)法就到這里吧,謝謝大家!

fpga相關(guān)文章:fpga是什么


c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA Verilog

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>