0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA入门之综合和仿真

jf_78858299 来源:CSDN 作者:原来如此呀 2023-03-21 10:31 次阅读

2.1 综合

Verilog硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能,最终在硬件电路上实现该功能。 在 Verilog 描述出硬件功能后需要使用综合器对 Verilog 代码进行解释并将代码转化成实际的电路来表示,最终产生实际的电路, 也被称为网表。这种 将 Verilog 代码转成网表的工具就是综合器

上图左上角是一段 Verilog 代码,该代码实现了一个加法器的功能。 在经过综合器解释后该代码被转化成一个加法器电路。 QUARTUS、 ISE 和 VIVADO 等 FPGA 开发工具都是综合器, 而在集成电路ASIC设计领域常用的综合器是 DC

2.2 仿真

在 FPGA 设计的过程中,不可避免会出现各种 BUG。如果在编写好代码、 综合成电路、 烧写到FPGA 后才发现问题,此时再去定位问题就会非常地困难。 而在综合前, 设计师可以在电脑里通 过仿真软件对代码进行仿真测试, 检测出 BUG 并将其解决,最后再将程序烧写进 FPGA。一般情况下可以认为没有经过仿真验证的代码,一定是存在 BUG 的。

为了模拟真实的情况,需要编写测试文件。该文件也是用 Verilog 编写的, 其描述了仿真对象的输入激励情况。该激励力求模仿最真实的情况,产生最接近的激励信号,将该信号的波形输入给仿真对象,查看仿真对象的输出是否与预期一致。需要注意的是: 在仿真过程中没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该代码是否可转成电路,仿真器并不关心。

由此可见, Verilog 的代码不仅可以描述电路,还可以用于测试。事实上, Verilog 定义的语法非常之多,但绝大部分都是为了仿真测试来使用的, 只有少部分才是用于电路设计,详细可以参考本书的“可综合逻辑设计”一节。 Verilog 中用于设计的语法是学习的重点, 掌握好设计的语法并熟练应用于各种复杂的项目是技能的核心。 而其他测试用的语法, 在需要时查找和参考就已经足够了。

2.3 可综合设计

Verilog 硬件描述语言有类似高级语言的完整语法结构和系统,这些语法结构的应用给设计描述带来很多方便。但是, Verilog 是描述硬件电路的, 其建立在硬件电路的基础之上。而有些语法结构只是以仿真测试为目的,是不能与实际硬件电路对应起来的。 也就是说在使用这些语法时, 将一个语言描述的程序映射成实际硬件电路中的结构是不能实现的,也称为不可综合语法。

综合就是把编写的 rtl 代码转换成对应的实际电路。比如编写代码 assign a=b&c; EDA 综合工具就会去元件库里调用一个二输入与门, 将输入端分别接上 b 和 c,输出端接上 a。

同样地,如果设计师编写了一些如下所示的语句:

综合工具就会像搭积木一样把这些“逻辑”电路用一些“门”电路来搭起来。当然,工具会对必要的地方做一些优化,比如编写一个电路 assing a=b&~b,工具就会将 a 恒接为 0,而不会去调用一个与门来搭这个电路。

综述所述,“综合”要做的事情有:编译 rtl 代码,从库里选择用到的门器件,把这些器件按照“逻辑”搭建成“门”电路。

不可综合,是指找不到对应的“门”器件来实现相应的代码。比如“ #100”之类的延时功能,简单的门器件是无法实现延时 100 个单元的, 还有打印语句等,也是门器件无法实现的。在设计的时候要确保所写的代码是可以综合的,这就依赖于设计者的能力,知道什么是可综合的代码,什么是不可综合的代码。对于初学者来说,最好是先记住规则,遵守规则,先按规则来设计电路并在这一过程中逐渐理解,这是最好的学习路径。

下面表格中列出了 不可综合或者不推荐使用的代码

1679365800(1).png

下表为 推荐使用的设计代码

1679365822(1).png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    读《FPGA入门教程》

    成的逻辑连接,输出门级网表文件。门级仿真(综合仿真) 在综合后通过后仿真来检查综合结果是否与原
    发表于 03-29 16:42

    FPGA入门资料

    本帖最后由 eehome 于 2013-1-5 09:55 编辑 哪位大侠有FPGA入门级的资料,跪求!!!关于FPGA可以实现哪些功能,进行哪些方面的功能扩展,比如内嵌硬核、
    发表于 07-22 08:45

    FPGA入门:基本开发流程概述

    FPGA入门:基本开发流程概述 本文节选自特权同学的图书《FPGA/CPLD边练边学——快速入门Verilog/VHDL》书中代码请访问网盘:http://pan.baidu.com/
    发表于 02-09 20:14

    Xilinx FPGA无痛入门,海量教程免费下载

    用notepad++的关联设置Lesson07 特权Xilinx FPGA SF-SP6入门指南 -- ISE与Modelsim联合仿真库编译Lesson08 特权Xilinx
    发表于 07-22 11:49

    Xilinx FPGA入门连载13:PWM蜂鸣器驱动综合、实现与配置文件产生

    `Xilinx FPGA入门连载13:PWM蜂鸣器驱动综合、实现与配置文件产生特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jGjAh
    发表于 10-16 10:48

    Xilinx FPGA入门连载74:波形发生器IP核CORDIC(正弦波)功能仿真

    `Xilinx FPGA入门连载74:波形发生器IP核CORDIC(正弦波)功能仿真特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jG
    发表于 04-25 08:33

    功能仿真综合仿真与时序仿真

    功能仿真:可以验证代码的逻辑性,不加任何的时延信息。仿真工具为modelsim(组合逻辑和时序逻辑都可以功能仿真),modelsim不能综合。在modelsim中添加相应的激励信号,调
    发表于 08-23 16:57

    FPGA的逻辑仿真以及逻辑综合的一些原则

    apex20ke_atoms.v编译到其中。2:在图形界面中的Load Design对话框中装入仿真设计时,在Verilog 标签下指定预编译库的完整路径。(见下图)逻辑综合目前可用的FPGA
    发表于 05-15 07:00

    入门笔记:FPGA不是单片机

    按钮,一口气从综合做到PAR(ISE和QuartusII都能一个按钮跑整个flow),然后仿真仿真OK?皆大欢喜。不OK?改code。咋改?不清楚。 这个过程中最大的问题在于把FPGA
    发表于 11-02 17:27

    综合仿真设计指南

    综合仿真设计指南提供了使用硬件描述语言(HDL)设计FPGA。它包括为HDL设计新手提供设计提示,以及为第一次使用FPGA做设计的经验丰富的工程师。在使用
    发表于 11-02 10:06 43次下载

    FPGA入门技术教程

    FPGA入门技术教程,适合新手刚入门的时候看
    发表于 01-24 16:29 47次下载

    C2837x入门:系统的调试仿真

    C2837x入门指南(十五)—系统设计调试仿真
    的头像 发表于 08-23 00:06 2644次阅读

    FPGA入门:第一个工程实例之功能仿真平台搭建

    FPGA入门:第一个工程实例之功能仿真平台搭建 本文节选自特权同学的图书《FPGA/CPLD 边练边学——快速入门Verilog/VHDL
    发表于 12-28 00:07 840次阅读

    FPGA基础HLS

    实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。 传统的 FPGA 开发,首先写 HDL 代码,然后做行为仿真
    的头像 发表于 12-02 12:30 4835次阅读

    FPGA入门FPGA 开发流程

    硬件电路描述方法。其中,运用 HDL 设计方法具有更好的移植性、通用性以及利于模块划分的特点,在工作学习中被广泛使用。典型 FPGA 的开发流程一般如下图所示, 其包括功能定义/器件选型、设计输入、功能仿真综合优化、
    的头像 发表于 03-21 10:26 3163次阅读