当前位置: 首页 > news >正文

FPGA应用开发和仿真【2.0】

2.15 生成块

初学者可跳过此节,当觉得在模块中重复写类似的有规律的内容比较烦琐时,再来学习本节。

代码2-42 8位格雷码到二进制码转换

生成块可根据一定的规律,使用条件生成语句、循环生成语句等,重复构造生成块的内容,等效于按照规律重复书写了生成块中的内容。考虑代码2-42。

该代码描述了一个将8位格雷码转换到二进制码的组合逻辑,可以看到书写了8行很有规律的持续赋值。试想,如果需要像这样描述64位格雷码到二进制码的转换呢?如果需要参数化位数呢?生成块可完成类似的需求。

生成常用形式如下:

这与过程中的for语句形式相似,不过,循环条件所用的变量必须使用genvar关键字定义,循环步进和条件必须只由生成变量决定。

if生成语句和case生成语句的形式与过程中的if语句和case语句相似,不过,所有的条件表达式必须是常量表达式。

生成语句中的生成内容与模块中能包含的内容基本一致,生成内容中还可以再嵌套其他生成语句。

如果使用生成块,代码2-42可参数化,改写为代码2-43。

代码2-43 参数化位数的格雷码到二进制码转换

2.16 任务和函数

任务和函数将一些语句实现的一定功能封装在一起,以便重复使用。任务和函数都只能在过程块中调用。

任务定义的一般形式:

其中的static和automatic关键字用于指定任务和函数的生命周期,使用automatic关键字的任务和函数中的变量均为局部变量,在每次任务或函数调用时均会重新初始化,可被多个同时进行的过程调用,或被递归调用,类似于编程语言的可重入。FPGA开发工具一般只支持automatic类型的任务和函数。

任务和函数本身类似于顺序块,因而在顺序块中能使用的语句(过程赋值、流程控制等)都能在任务和函数中使用。

任务中可以有时序控制(延时、事件),而函数中不能有。

代码2-44是任务和函数的例子。

代码2-44 任务和函数示例

第4行的任务gen_reset用于在reset上产生复位信号,第14行的函数用于求输入x的底2对数。

2.17 包

包(package)用来封装一些常用的常量变量定义、数据类型定义、任务和函数定义等,在需要使用时,可使用import关键字导入。

包定义的形式是:

http://www.jsqmd.com/news/178767/

相关文章:

  • YOLOFuse GitHub项目地址分享:欢迎Star支持开发者持续更新
  • 图解说明有限状态机在VHDL中的实现方式
  • YOLOFuse依赖库列表曝光:PyTorch、Ultralytics等全部预装
  • 基于AT89C51的proteus示波器信号分析实战案例
  • YOLOFuse训练日志保存路径揭秘:runs/fuse目录内容解读
  • YOLOFuse科研工作者首选:SCI论文实验基线模型搭建
  • 全面沦陷:所有 LLM 与 AI 绘画、视频模型已被攻破——红队实战全景报告(2026 修订版)
  • xv6 进程调度
  • 太原代写标书哪个更值得选择
  • YOLOFuse检测结果用于MATLAB数据分析:跨平台协作路径
  • YOLOFuse检测结果用于MATLAB数据分析:跨平台协作路径
  • YOLOFuse train_dual.py高级用法:调整学习率与batch size
  • FPGA应用开发和仿真【2.3】
  • 基于VOFA+的数据可视化操作指南
  • 三位3D视觉从业者的2025年终总结!
  • YOLOFuse直播演示预告:手把手教你运行第一个demo
  • 时钟分频电路设计详解:vhdl课程设计大作业系统学习
  • Multisim14.2安装后无法启动?Win10专项修复
  • framebuffer驱动中的显存管理机制详细解析
  • 一文说清理想二极管在多电源选择中的作用
  • es可视化管理工具助力精准数据检索实践
  • 微信4.0 hook,三端(mac,windows,安卓)都可用的可行性方案,附带frida脚本
  • YOLOFuse自动化脚本编写建议:批量推理与定时任务配置
  • YOLOFuse缉毒犬训练辅助:可疑物品藏匿点热成像提示
  • YOLOFuse自动驾驶感知层补充:恶劣天气目标识别
  • AI应用架构师实战分享:AI系统性能测试方案经验
  • YOLOFuse深海探测器视觉系统:黑暗环境目标识别
  • YOLOFuse新生儿保温箱监控:温度波动即时提醒
  • YOLOFuse适用于哪些场景?夜间监控、烟雾穿透、安防系统应用前景
  • 快速理解vivado使用教程核心要点:初学者必备知识