当前位置: 首页 > 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.gsyq.cn/news/195033.html

相关文章:

  • YOLOFuse依赖库列表曝光:PyTorch、Ultralytics等全部预装
  • 太原代写标书哪个更值得选择
  • YOLOFuse科研工作者首选:SCI论文实验基线模型搭建
  • YOLOFuse检测结果用于MATLAB数据分析:跨平台协作路径
  • 三位3D视觉从业者的2025年终总结!
  • framebuffer驱动中的显存管理机制详细解析
  • es可视化管理工具助力精准数据检索实践
  • 逆向分析某手游基于异常的内存保护
  • YOLOFuse缉毒犬训练辅助:可疑物品藏匿点热成像提示
  • YOLOFuse自动驾驶感知层补充:恶劣天气目标识别
  • 快速理解vivado使用教程核心要点:初学者必备知识
  • YOLOFuse新生儿保温箱监控:温度波动即时提醒
  • 单精度浮点数转换误区:IEEE 754常见陷阱与规避策略
  • 深入理解UDS 31服务:ECU编程前的必备知识
  • 非阻塞ioctl调用场景:用户空间异步控制策略
  • YOLOFuse机场行李遗落提醒:长时间停留物品检测
  • YOLOFuse海滩溺水预警系统:漂浮不动目标识别
  • 零基础入门:Multisim安装与实验平台搭建
  • YOLOFuse甘蔗种植基地监控:非法砍伐与盗窃预警
  • YOLOFuse驾驶员疲劳检测:闭眼与点头行为识别
  • YOLOFuse火车站旅客遗失物品识别:智能广播寻物
  • 微信4.0 hook,三端(mac,windows,安卓)都可用的可行性方案,附带frida脚本
  • YOLOFuse训练日志保存路径揭秘:runs/fuse目录内容解读
  • 快速理解Multisim界面汉化原理与路径
  • YOLOFuse电商直播背景审核:违禁品出现自动遮挡
  • YOLOFuse自动化脚本编写建议:批量推理与定时任务配置
  • 使用调试器调试某UE4手游
  • YOLOFuse体育馆赛事安保:人群冲撞风险预测
  • YOLOFuse罐头食品封口检查:胀罐隐患提前发现
  • 一文说清usb_burning_tool刷机工具的镜像定制原理