明德扬至简设计法--verilog综合器和仿真器


Verilg是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能。而我们最终是要在电路上实现该功能的。当Verilog描述出硬件功能后,我们需要综合器对Verilog代码进行解释,将代码转化成实际的电路来表示,最终实际的电路,我们称之为网表。这种将Verilog代码转成网表的工具,就是综合器。上图左上角是一份verilog代码,该代码描述了一个加法器功能。该代码经过综合器解释后,转化成一个加法器电路。QUARTUS、ISE和VIVADO都是综合器,集成电路常用的综合器是DC。

我们在FPGA设计的过程中,不可避免会出现各种BUG。如果我们编写好代码,综合成电路,烧写到FPGA后,才看到问题,此时去定位问题就会非常地困难了。在综合前,我们可以在电脑里对代码进行仿真测试一下,把BUG找出来解决,最后才烧写进FPGA。我们可以认为,没有经过仿真验证的代码,一定是存在BUG的。

为了模拟真实的情况,我们需要编写测试文件。该文件也是用verilog编写的,描述了仿真对象的输入激励情况。该激励力求模仿最真实的情况,产生最将近的激励信号,将该信号的波形输入给仿真对象,查看仿真对象的输出是否与预期一致。

为了做仿真验证,我们编写了测试文件。将测试文件和被测试对象加入到仿真器中。仿真器对测试文件和被测试对象的代码进行解释。根据测试文件,产生测试激励,输入给被测试对象;根据补测试对象的代码,产生被测试对象的输出。需要注意的是,在仿真过程中,没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该电路是否可转成电路,仿真器是不关心的。

常用的仿真器是MODELSIM和VCS等。

由此可见,verilog的代码不仅可以描述电路,还可以用于测试。事实上,Verilog定义的语法非常之多,但绝大部分都是为了仿真测试来使用的。只有少部分才是用于电路设计,详细可以参考本书的“可综合逻辑设计”一节。

Verilog中用于设计的语法,才是学习的重点。掌握好设计的语法,熟练应用于各种复杂的项目,这是技能的核心。其他测试用的语法,需要时查找和参考就已经足够了。

本书着重点,是用于本科、研究生的教学用途,因此将重点讲解设计用的语法。

在本章讲解Verilg时,将从综合器和仿真器角度,解释语法的用途,读者可以明白要学习的关键内容。

原文地址:http://blog.51cto.com/13494035/2298297

时间: 2024-10-10 03:08:56

明德扬至简设计法--verilog综合器和仿真器的相关文章

明德扬至简设计法设计的8位串行乘法器

一.功能描述 在两个N位二进制数x.y的乘积用简单的方法计算就是利用移位操作来实现. 二进制乘法原理: 就是左移,然后相加,根据二进制数的权位来决定左移几位,实际上乘法结果就是被乘数乘以每一位乘以模(10)的N次方的累积和. 本案例实现8位串行乘法器的功能. 二.平台效果图 仿真效果图 三.实现过程 输入输出信号列表如下: 信号名 I/O 位宽 说明 clk I 1 系统工作时钟50M rst_n I 1 系统复位信号,低电平有效 vld_in I 2 输入有效指示信号 x I 8 数据a y

明德扬至简设计法设计的IP核加法器

一.功能描述 在Quartus II 和ISE中都有加法器的IP core,可以完成无符号数和有符号数的加.减法,支持有符号数的补码.原码操作及无符号数的加.减操作,引入了最佳流水线操作,可以方便的为用户生成有效的加法器,用户可以根据自己的需要来完成配置加法器 ,本案例用Altera和Xilinx的IP核实现了26位加法器的功能. 二.平台效果图 Altera仿真效果图 Xilinx仿真效果图 三.实现过程 Xilinx输入输出信号列表如下: 信号名 I/O 位宽 说明 clk I 1 系统工作

基于至简设计法实现的PWM调制verilog

一.   功能描述 脉冲宽度调制(pulse width modelation)简称PWM,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量.通信到功率控制与变换的许多领域中脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量.通信到功率控制与变换的许多领域中. 在本章的应用中可以认为PWM就是一种方波.如图所示: PWM波形图 上图是一个周期为10ms,高电平为6ms,低电平时间为4ms的PWM,其占空比(高电平时间占整

基于至简设计法实现的万年历功能

一.  功能描述 1.上板复位后从元年1月1号开始计数,为方便上板调试,将一天的时间压缩为1秒: 2.按键用于设置日历,按下按键0进入设置状态,再次按下按键0退出设置状态: 3.按键1来选择想要设置的年月日的各个位: 4.按键2在设置状态进行计数设置,每按下一次数码管显示数字加1: 5.平年365天(52周+1天),闰年366天(52周+2天).平年2月28天,闰年2月29天. 6.闰年:每400年整一闰,或每4年且不为百年的一闰.即能被400整除,或不能被100整除但能被4整除的年份为闰年.

组合逻辑设计法的编程步骤-一帆自动化

组合逻辑设计法适合于设计开关量控制程序,它是对控制任务进行逻辑分析和综合,将元件的通.断电状态视为以触点通.断状态为逻辑变量的逻辑函数,对经过化简的逻辑函数,利用PLC逻辑指令可顺利地设计出满足要求且较为简练的程序.这种方法设计思路清晰,所编写的程序易于优化,.用组合逻辑设计法进行程序设计一般可分为以下几个步骤:1)明确控制任务和控制要求,通过分析工艺过程绘制工作循环和检测元件分布图,取得电气执行元件功能表.2)详细绘制系统状态转换表.通常它由输出信号状态表.输入信号状态表.状态转换主令表和中间

LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法

LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐波源并联,除起滤波作用外,还兼顾无功补偿的需要. LC滤波器是利用电感.电容和电阻的组合设计构成的滤波电路,可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3.5.7)构成低阻抗旁路:单调谐滤波器.双调谐滤波器.高通滤波器都属于无源滤波器. LC滤波器的分类

移动开发中的极简设计

原文链接: The Art of Minimalism in Mobile App UI Design 原文作者 : Nick Babich 译文出自 : 掘金翻译计划 译者 : edvardhua 校对者 : owenlyn, jiaowoyongqi, Graning 文章结尾有英文原文 设计是一件用户驱动很强的工作.随着用户越来越偏好更简洁的交互界面,如何剔除多余的元素,保留最基础最重要的元素是极简设计的关键.极简设计形式和功能完美结合.它最大的优点是极简的表现形式,简洁的线条,大方的留白

JavaScript学习总结(十三)——极简主义法编写JavaScript类

前两天在网上无意中发现了一篇使用极简主义法定义JavaScript类的文章,原文链接,这个所谓的"极简主义法"我还是第一次听说,是荷兰程序员Gabor de Mooij提出来的,这种方法不使用this和prototype,代码部署起来非常简单,这大概也是它被叫做"极简主义法"的原因.下面就介绍如何使用极简主义法完成JavaScript的封装和继承 1. 封装 首先,它也是用一个对象模拟"类".在这个类里面,定义一个构造函数createNew(),

fir 窗口设计法

加窗的原因.对于理想的低通滤波器H(exp(jw)),其h(n)是无限长序列.这是可以证明的.因此为了得到有限长的h(n)就需要截断,而这个过程就是加窗.由于h(n)截断即其频率响应就和理想的低通滤波器有差别.从感性上分析,h(n)越长,Hw(exp(jw))也就越接近理想低通滤波器,这就对应确定序列的长度.还有就是如何截断即加什么窗,对Hw(exp(jw))也是有影响.这就是对应的窗的设计. 窗口设计法:H(exp(jw)) = F(h(n)), W(exp(jw)) = F(w(n)). F