news 2026/4/23 13:04:35

FPGA应用开发和仿真【2.1】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA应用开发和仿真【2.1】

2.19 编译指令

编译指令用来设置编译过程的一些属性、控制编译流程等,Verilog所有的编译指令均以沉音符号“`”(ASCII码0x60)开头。注意不要将沉音符号与撇点“'”混淆。编译指令均独占一行,并不以分号结尾,可带有注释。这里简单介绍几个常用的编译指令。

·`default_nettype,设定默认线网类型

·`define、`undef和`undefineall,宏定义。

·`include,包含文件。

·`ifdef、`ifndef、`elsif、`else和`endif,条件编译。

·`timescale,时间单位和精度设置。

·`resetall,重置所有编译指令。

`default_nettype用来设置默认的线网类型,形式为:

2.13节提到了模块端口的默认线网类型为wire,便可以使用这个编译指令来更改。Verilog有一个比较危险的特性是可以隐式定义线网,即编译器将把未定义过的标识符认定为默认类型的线网,因而任何地方一个笔误,都将形成一个默认类型的线网,这多半是不可预期的,所以建议初学者将线网类型的默认值设置为none:

这样便杜绝了编译器将笔误认定为新线网,当然也使得我们在简写模块的端口定义时,不能省略wire关键字。

`define、`undef和`undefineall用来定义宏和解除宏定义,宏可以在代码中使用或用于条件编译指令中,编译器直接将宏按定义时的文本展开。它们的使用形式如下:

其中`define还可以带有参数,宏内容中参数部分会以使用时的参数内容替代,`undefineall用于解除所有已定义的宏。例如:

注意其中MAX宏的内容大量使用了括号,这是为了防止处于复杂表达式中的宏展开时优先级错乱。

使用宏的格式是:`<宏名>。注意宏名前面带有沉音符。

`include用于包含文件,等同于直接将被包含的文件的全部内容替换在当前位置,当需要实例化位于其他文件中的模块、导入位于其他文件中的包时,往往需要使用该编译指令。一般形式为:

其中文件路径可以是绝对路径或相对路径。使用双引号时,相对路径以编译器当前工作目录(常常是文件所在目录)为起点;使用尖括号时,以编译器和规范设定的目录为起点。

大多数EDA工具,特别是带有图形界面的工具,都以工程的形式管理多个源文件,在同一个工程中的任何源文件中均可直接实例化定义在其他源文件中的模块,并不需要使用`include编译指令。

`ifdef、`ifndef、`elsif、`else和`endif为条件编译指令,常用形式为:

使用`ifdef时,如果宏名1被定义,则代码段1将被编译,否则如果宏名i被定义,代码段i将被编译;如果宏名1至宏名i均未定义,则代码段k将被编译。使用`ifndef时,如果宏名1未被定义,则代码段1将被编译,否则,如果宏名i被定义,代码段i将被编译;如果宏名1被定义而宏名i均未被定义,则代码段k将被编译。

`timescale用于设定时间单位和精度,在2.12.1节中介绍延迟时,所有的时间都带有单位,比如“ns”,而如果使用`timescale编译指令设定了单位和精度,则可省略单位。一般形式是:

其中m、u(μ)、n、p、f为国际单位制词头,“/”左侧为时间单位,右侧为时间精度,时间精度必须不大于时间单位。定义了时间单位和精度之后,所有不带单位的时间均会乘以时间单位,所有时间均会被四舍五入到时间精度。例如:

代码2-46 begin-end块中延迟的示例

第3章 ModelSim和仿真

本章介绍使用ModelSim软件进行仿真的方法,相当于ModelSim的简明入门教程。书中使用的ModelSim软件为ModelSim PE Student Edition 10.4a(以下简称ModelSim PESE或ModelSim),它为免费的学生版,支持Windows操作系统,虽有仿真效率和代码长度的限制,但应对学习过程中涉及的小规模设计绰绰有余。

读者可在Mentor公司官方网站中ModelSim PESE相关页面下载安装文件。安装过程比较简单,可参照页面上的介绍。安装完成需填写相关表格,并通过电子邮件获取学生版授权文件。

本章介绍的仿真都是2.2节中提及的功能验证,至于门级时序验证,则需要结合具体的FPGA及其开发工具。

3.1 仿真和测试的相关概念

第2章已经提到,任何数字系统不可能设计完成就能保证正确,一定是需要经过测试的,仿真技术使得数字系统不必真实地把电路或芯片做出来就能做测试,而是在代码设计完成后或综合完成后便

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 20:56:13

YOLOFuse文件管理界面操作指南:可视化浏览检测结果图片

YOLOFuse 文件管理界面操作指南&#xff1a;可视化浏览检测结果图片 在智能安防、夜间监控和无人系统日益普及的今天&#xff0c;单一可见光摄像头在低光照或复杂气象条件下常常“力不从心”。如何让机器“看得更清”&#xff0c;尤其是在黑暗中依然能准确识别行人、车辆&#…

作者头像 李华
网站建设 2026/4/23 11:15:30

YOLOFuse直播演示预告:手把手教你运行第一个demo

YOLOFuse&#xff1a;如何用双模态检测突破夜间视觉极限 在城市安防摄像头拍不到的深夜小巷&#xff0c;或是自动驾驶汽车被浓雾遮蔽的前路&#xff0c;传统基于可见光的目标检测系统往往“失明”。这时候&#xff0c;如果能像蝙蝠一样感知热辐射&#xff0c;会怎样&#xff1f…

作者头像 李华
网站建设 2026/4/22 8:13:37

非阻塞ioctl调用场景:用户空间异步控制策略

如何让 ioctl 不再“卡住”你的程序&#xff1f;——深入理解非阻塞控制与异步策略你有没有遇到过这样的场景&#xff1a;在调用一个ioctl命令后&#xff0c;整个应用程序突然“卡死”&#xff0c;界面无响应&#xff0c;日志也不更新&#xff1f;排查半天才发现&#xff0c;原…

作者头像 李华
网站建设 2026/4/23 13:03:47

AI应用架构师实战分享:AI系统性能测试方案经验

AI应用架构师实战分享&#xff1a;AI系统性能测试全流程方案与经验总结 副标题&#xff1a;从需求分析到优化落地的全链路实践 摘要/引言 在AI应用大规模落地的今天&#xff0c;性能问题已成为制约用户体验和商业价值的关键瓶颈——一个延迟1秒的图像识别接口&#xff0c;可能让…

作者头像 李华
网站建设 2026/4/16 15:49:31

YOLOFuse体育馆赛事安保:人群冲撞风险预测

YOLOFuse体育馆赛事安保&#xff1a;人群冲撞风险预测 在一场深夜的足球决赛中&#xff0c;看台上的观众情绪高涨&#xff0c;荧光棒与闪光灯交织成一片刺眼的光海。与此同时&#xff0c;场馆角落的通道内&#xff0c;几簇人群因拥挤开始发生推搡——而这一切正悄然逼近失控边…

作者头像 李华
网站建设 2026/4/23 13:00:52

镜像视界核心关键技术一:视频动态实时三维重构与统一空间建模技术

——空间智能数字孪生的底层空间引擎1️⃣ 技术摘要针对传统数字孪生体系依赖人工建模、静态空间表达、难以适应真实世界高动态变化的问题&#xff0c;本技术提出一种基于多源视频的动态实时三维重构与统一空间建模方法&#xff0c;在无人工测绘、无外部标定条件下&#xff0c;…

作者头像 李华