模型功能
- verilog的文件和module是一一对应的关系
- verilog支持include,也就是可以使用头文件vh
- verilog的文件在工程模式下自动更新调用
- 文件的层次划分可以按照逻辑结构进行展开
模型框图
- 略
实现步骤
- 文件与模块同名
- 虽然一个文件可以放入多个模块
- 但是这种结构不利于工程模式的模块调用
- 比如modelsim就无法寻找不同名的模块
- 文件的包含使用`include
- 可以使用相对路径以防止移植时文件丢失
- 包含的文件可以是任何文件,但是都会按照预编译的原则进行编译
- vivado支持全局包含,但是这种只能在vivado工程模式使用,一致性不好,不推荐使用
- vivado设置文件的自动更新
- vivado支持对修改的文件进行自动更新
- 但是这种更新必须是在程序未运行过程中
- 当程序运行,源文件进入锁定,不会再进入vivado的运行
- 但是预编译文件不在此列
- 如果使用hook文件在综合前修改预编译文件
- 就可以实现自动修改文件
- 还有就是使用脚本进行运行,也可以在自动修改文件后在综合
- 基于这点,就可以使用hook文件实现verilog版本的自动更新
- 文件的层次划分
- 对于一般的工程,应该包含以下的层次:
- 顶层:负责调用所有的模块以及控制FPGA的IO的名称的文件
- 子系统层: 包含独立时钟域的复杂逻辑处理单元
- 模块层: 负责单时钟域逻辑功能的单元
- 区块层:负责关联各种功能模块的文件
- 功能层:各种功能的实现逻辑,比如驱动、交互、流水线、状态机等等
- 明确的层次划分有利于后续的拓展
- FPGA的逻辑闭合是稳定性和可读性的关键
- 以最少的信号完成最大的逻辑的定义,可以有效增加逻辑的稳定性
- 所以,使用标准的逻辑划分,可以增加设计时的区分度,提高效率
最终效果
- 略,本章主要是提示层次划分和文件的关系,无具体的模型
调用接口
- 略
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:绿叶落秋风,专注FPGA技术分析和分享,转载请注明原文链接:https://www.cnblogs.com/electricdream/p/18109349,文中资源链接如下:
1. GITHUB开源仓库