模型功能
- verilog的文件和module是一一對應(yīng)的關(guān)系
- verilog支持include,也就是可以使用頭文件vh
- verilog的文件在工程模式下自動更新調(diào)用
- 文件的層次劃分可以按照邏輯結(jié)構(gòu)進(jìn)行展開
模型框圖
- 略
實現(xiàn)步驟
- 文件與模塊同名
- 雖然一個文件可以放入多個模塊
- 但是這種結(jié)構(gòu)不利于工程模式的模塊調(diào)用
- 比如modelsim就無法尋找不同名的模塊
- 文件的包含使用`include
- 可以使用相對路徑以防止移植時文件丟失
- 包含的文件可以是任何文件,但是都會按照預(yù)編譯的原則進(jìn)行編譯
- vivado支持全局包含,但是這種只能在vivado工程模式使用,一致性不好,不推薦使用
- vivado設(shè)置文件的自動更新
- vivado支持對修改的文件進(jìn)行自動更新
- 但是這種更新必須是在程序未運行過程中
- 當(dāng)程序運行,源文件進(jìn)入鎖定,不會再進(jìn)入vivado的運行
- 但是預(yù)編譯文件不在此列
- 如果使用hook文件在綜合前修改預(yù)編譯文件
- 就可以實現(xiàn)自動修改文件
- 還有就是使用腳本進(jìn)行運行,也可以在自動修改文件后在綜合
- 基于這點,就可以使用hook文件實現(xiàn)verilog版本的自動更新
- 文件的層次劃分
- 對于一般的工程,應(yīng)該包含以下的層次:
- 頂層:負(fù)責(zé)調(diào)用所有的模塊以及控制FPGA的IO的名稱的文件
- 子系統(tǒng)層: 包含獨立時鐘域的復(fù)雜邏輯處理單元
- 模塊層: 負(fù)責(zé)單時鐘域邏輯功能的單元
- 區(qū)塊層:負(fù)責(zé)關(guān)聯(lián)各種功能模塊的文件
- 功能層:各種功能的實現(xiàn)邏輯,比如驅(qū)動、交互、流水線、狀態(tài)機等等
- 明確的層次劃分有利于后續(xù)的拓展
- FPGA的邏輯閉合是穩(wěn)定性和可讀性的關(guān)鍵
- 以最少的信號完成最大的邏輯的定義,可以有效增加邏輯的穩(wěn)定性
- 所以,使用標(biāo)準(zhǔn)的邏輯劃分,可以增加設(shè)計時的區(qū)分度,提高效率
最終效果
- 略,本章主要是提示層次劃分和文件的關(guān)系,無具體的模型
調(diào)用接口
- 略
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:綠葉落秋風(fēng),專注FPGA技術(shù)分析和分享,轉(zhuǎn)載請注明原文鏈接:http://www.rzrgm.cn/electricdream/p/18109349,文中資源鏈接如下:
1. GITHUB開源倉庫
浙公網(wǎng)安備 33010602011771號