有用的程式技巧.ppt_第1页
有用的程式技巧.ppt_第2页
有用的程式技巧.ppt_第3页
有用的程式技巧.ppt_第4页
有用的程式技巧.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章有用的程式技巧 UsefulModelingTechniques 9 1程序持續指定 ProceduralContinuousAssignments 9 1 1assign和deassign關鍵字assign和deassign是用來表示 第一種型態的程式持續指定 程式持續指定的左邊 可以是暫存器或者連續的暫存器 而不能是一個接點的部份位元或暫存器的陣列 程式持續指定複寫正規程序指定 其一般運用在週期控制 範例6 8的非同步設定負緣觸發D型正反器 在範例9 1中將使用assign和deassign完成 非同步設定負緣觸發D型正反器moduleedge dff q qbar d clk reset 輸出輸入outputq qbar inputd c k reset regq qbar 宣告q和qbar是暫存器變數always negedgeclk 在clock負緣指定q和qbar的值beginq d qbar d endalways reset 當reset為高電位使用程序持續指定複寫q 和qbar 範例9 1程序持續指定D型正反器 if reset begin 如果reset為高電位 使用程序持續指定複寫q和qbarassignq 1 b0 assignqbar 1 b1 endelsebegin 如果reset為低電位 移除複寫在移除複寫後 q d andqbar d將要等到下一個clock負緣才能更改暫存 器變數的值deassignq deassignqbar endendmodule 9 2複寫參數 OverridingParameters 9 2 1defparam敘述關鍵字defparam可用來模組別名 moduleinstance 中之參數 模組別名之階層名可用來複寫參數值 範例9 2說明使用defparam敘述 來更改參數的方法 範例9 2defparam敘述 定義模組hello worldmodulehello world parameterid num 0 定義一模組識別數 0initial 顯示識別數 display Displayinghello worldidnumber d id num endmodule 定義最高層次模組moduletop 改變在這取別名模組的參數值 使用defparam敘述defparamw1 id num 1 w2 id num 2 取別名二個hello world模組hello worldw1 hello worldw2 endmodule 9 3有條件的編譯與執行 ConditionalCompilationandExecution vVerilog程式的部分可能是用某些環境 而不是用某些環境 再某些旗標被設定時才被編譯 這就是有條件的編譯 9 3 2有條件的編譯有條件的編譯是由編譯指令 ifdef ifndf else elsif和 endif來完成 有條件的編譯 範例1 ifdefTEST 如果文字巨集TEST北定義 編譯模組test moduletest endmodule else 否則預設編譯模組stimulusmodulestimulus endmodule endif 完成 ifdef條件敘述 範例9 5有條件的編譯 範例2moduletop bus masterb1 無條件取別名模組 ifdefADD B2bus masterb2 如果文字巨集ADD B2被定義 取別名模組b2 elsifADD B3bus masterb3 如果文字巨集ADD B3被定義 取別名模組b3 elsebus masterb4 預設取別名模組b4 endif 範例9 5有條件的編譯 續 ifdifIGNORE B5bus masterb5 如果文字巨集ADD B3未被定義 取別名模組b5 endifendmodule 範例9 5有條件的編譯 續 9 4時間刻度 TimeScales 模擬當中經常需要在某一模組中定義延遲數值的時間單位 如lus 而在另一模組又中定義不同的時間單位 如100ns 範例9 8時間刻度 定義模組dummy1的時間刻度 時間單位為100奈秒 精確度為1奈秒 timescale100ns 1nsmoduledummy1 regtoggle 設定toggle初始值initialtoggle 1 b0 每5個時間單位 反轉toggle暫存器變數值 在模組中 每5個時間單位 500ns 5usalways 5 begintoggle toggle display d In mtoggle b time toggle endendmodule 定義模組dummy2的時間刻度 時間單位為1微秒 精確度為10奈秒 timescale1us 10nsmoduledummy2 regtoggle 設定toggle初始值initialtoggle 1 b0 每5個時間單位 反轉toggle暫存器變數值 在模組中 每5個時間單位 5us 5000ns always 5begintoggle toggle display d In mtoggle b time toggle endendmodule 9 5有用的系統任務 UsefulSystemTasks 系統任務 檔案輸出 顯示階層 閃控 亂數產生器 9 5 1檔案輸出 FileOutput 系統任務 fopen可開啟一個檔案語法 fopen 語法 fopen 任務 fopen將傳回32位元的值叫作多通道描述符號 僅有一個位元會被設定 標準輸出的多通道描述符號的最末一個位元會被設定 bit 0 標準輸出叫作通道0 channel0 Writingtofiles Thesystemtasks fdisplay fmonitor fwrite and fstrobeareusedtowritetofilesUsage fdisplay p1 p2 pn fmonitor p1 p2 pn 9 5 3閃控 Strobing 關鍵字為 strobe類似 display 但是 當有多個敘述和 display在同一時間執行 則其執行順序是不可知的 如果 strobe運用在相同的地方 則可確定在同一時間執行的敘述 將先執行後才執行 strobe alwaysexecutedafterallotherassignmentstatements 範例9 11閃控 閃控always posedgeclock begina b c d endalways posedgeclock strobe Displayinga b c b a c 在正緣觸發顯示值 9 5 4亂數產生器 RandomNumberGeneration 語法 random 語法 random 參數可以是reg integer或是time變數 系統任務 random會送出32位元的有號整數 如範例9 12 產生亂數並送至一個簡單的ROMmoduletest integerr seed reg 31 0 addr 輸入到ROMwire 31 0 data 從ROM輸出 ROMrom1 data addr 範例9 12亂數產生 initialr seed 2 任意定義seed為2always posedgeclock addr random r seed 產生亂數 endmodule 9 5 5InitializingMemoryfromFile Twotasksareprovidedtoreadnumbersinbinaryorhexadecimalformat Keywords readmemband readmemhUsage readmemb readmemb readmemb start addr Identicalsyntaxfor readmemh Example9 14InitializingMemory moduletest reg 7 0 memory 0 7 declarean8 bytememoryintegeri initialbegin readmemoryfileinit dat addresslocationsgiveninmemory readmemb init dat memory moduletest displaycontentsofinitializedmemoryfor i 0 i 8 i i 1 display Memory 0d b i memory i endendmodule Example9 14InitializingMemory Asamplefile init dat isshownbelow 00211111111010101010000000010101010 0061111zzzz00001111Whenthetestmoduleissimulated wewillgetthefollowingoutput Memory 0 xxxxxxxxMemory 1 xxxxxxxxMemory 2 11111111Memory 3 01010101Memory 4 00000000Memory 5 10101010Memory 6 1111zzzzMemory 7 00001111 9 5 6數值變化轉儲檔案 ValueChangeDumpFile 所有的信號或一組被選擇的信號 在模擬時皆可被寫入數值變化轉儲檔案 後置處理器可以將數值變化轉儲檔案輸入 並顯示階層資訊 信號值和信號波形 使用數值變化轉儲檔案除錯分析的流程如圖9 1 儲至數值 改變計畫 VCDFile 後置處理器 除錯 分析原因 數值變化轉儲檔案除錯分析的流程 圖9 1 VCDSystemtasks Systemtasksareprovidedforselectingmoduleinstancesormoduleinstancesignalstodump dumpvars nameofVCDfile dumpfile startingandstoppingthedumpprocess dumpon dumpoff andgeneratingcheckpoints dumpall Example9 15VCDFileSystemTasks specifynameofVCDfile Otherwise defaultnameis assignedbythesimulator initial dumpfile myfile dmp Simulationinfodumpedtomyfile dmp Dumpsignalsinamoduleinitial dumpvars noarguments dumpallsignalsinthedesigninitial dumpvars 1 top dumpvariablesinmoduleinstancetop Number1indicateslevelsofhierarchy Dumpone hierarchylevelbelowtop i e dumpvariablesintop butnotsignalsinmodulesinstantiatedbytop initial dumpvars 2 top m1 dumpupto2levelsofhierarchybelowtop m1initial dum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论