文件与module的对应关系

Posted on   绿叶落秋风  阅读(35)  评论(0编辑  收藏  举报

 


模型功能

  • verilog的文件和module是一一对应的关系
  • verilog支持include,也就是可以使用头文件vh
  • verilog的文件在工程模式下自动更新调用
  • 文件的层次划分可以按照逻辑结构进行展开

模型框图

实现步骤

  1. 文件与模块同名
  • 虽然一个文件可以放入多个模块
  • 但是这种结构不利于工程模式的模块调用
  • 比如modelsim就无法寻找不同名的模块
  1. 文件的包含使用`include
  • 可以使用相对路径以防止移植时文件丢失
  • 包含的文件可以是任何文件,但是都会按照预编译的原则进行编译
  • vivado支持全局包含,但是这种只能在vivado工程模式使用,一致性不好,不推荐使用
  1. vivado设置文件的自动更新
  • vivado支持对修改的文件进行自动更新
  • 但是这种更新必须是在程序未运行过程中
  • 当程序运行,源文件进入锁定,不会再进入vivado的运行
  • 但是预编译文件不在此列
    • 如果使用hook文件在综合前修改预编译文件
    • 就可以实现自动修改文件
  • 还有就是使用脚本进行运行,也可以在自动修改文件后在综合
  • 基于这点,就可以使用hook文件实现verilog版本的自动更新
  1. 文件的层次划分
  • 对于一般的工程,应该包含以下的层次:
    1. 顶层:负责调用所有的模块以及控制FPGA的IO的名称的文件
    2. 子系统层: 包含独立时钟域的复杂逻辑处理单元
    3. 模块层: 负责单时钟域逻辑功能的单元
    4. 区块层:负责关联各种功能模块的文件
    5. 功能层:各种功能的实现逻辑,比如驱动、交互、流水线、状态机等等
  • 明确的层次划分有利于后续的拓展
    • FPGA的逻辑闭合是稳定性和可读性的关键
    • 以最少的信号完成最大的逻辑的定义,可以有效增加逻辑的稳定性
    • 所以,使用标准的逻辑划分,可以增加设计时的区分度,提高效率

最终效果

  • 略,本章主要是提示层次划分和文件的关系,无具体的模型

调用接口

相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示