1 Verilog HDL 数字设计总论

1.1 几个重要的概念

  • EDA(Electronic Design Automation)
    电子技术自动化

  • EDA工具
    类似于软件工程中的IDE(集成开发环境),能够使用Verilog HDL语言描述电路设计,并且能够通过逻辑综合工具将用Verilog HDL描述的电路自动转换为门级网表,当然还有其他的一些功能,并且EDA工具的功能越来越强大。

    接下来的章节中,我将使用Vivado 2017.4来进行数字电路设计。

  • RTL(Register Transfer Level):
    寄存器传输级

  • RTL级描述
    即:寄存器传输级描述,一般会使用专业术语RTL级描述,讲这个概念拆分为两部分:寄存器传输级

    在本概念中,寄存器相当于科技黑箱(也就是你只需要知道它的外部接口,以及如何使用,不必管内部是什么),寄存器在本概念中不是重点 ,重点是对于传输的描述

    这也就是说,设计者需要

    • 在概念模型的层次描述清楚数据是如何在寄存器之间传输的
    • 在RTL级描述的层次,使用Verilog HDL语言来“翻译”构建的概念模型(这种概念模型,在数字设计中被称为“行为描述”)。
信息1
信息2
信息3
寄存器1
寄存器2
寄存器3

对于这样的总体结构来说,设计者无需管寄存器或信息内部细节是什么,只需要描述好他们之间的联系,将连线部分内容以及他们的接口描述清楚,并且能够调用信息和寄存器即可进行RTL级描述。

可以将RTL级描述与《数据结构》这门课程进行类比学习,这样你能更轻松明白其含义。

Verilog HDL 数据结构
行为描述 ADT模型
RTL级描述 ADT模型的实现

如果你之前没有学过数据结构这门课程,没有关系,接下来我来解析一下行为描述。

  • 行为描述
    对于一个现实问题,设计者通过分析问题,从抽象的角度,设计出数字电路的总体结构、功能和接口,这也就是行为描述。然后,设计者就可以根据行为描述来进行RTL级描述了。

1.2 典型数字设计流程

先给出当今时代,典型的数字流程设计流程,然后做出解释

设计者分析问题
逻辑综合工具/时序验证
现实问题 设计要求说明
行为描述
RTL级描述
功能验证和测试
门级网表
逻辑验证和测试
其他
  • 对于RTL级描述的后续内容,将会使用Vivado软件进行讲解,在后续内容将会详细提及,目前先了解如下内容即可。

    • 逻辑综合工具:将RTL级描述描述自动转换为门级网表,但是自动转换的门级网表不一定是优化的方案
  • 对于【行为描述】–>【RTL级描述】部分,谈及之前,先来说明一下Verilog HDL的几种描述方式

描述方式 抽象程度 应用 对比学习
门级描述 常嵌套在RTL级描述中 比汇编语言还底层一些
RTL级描述 目前主流都是用它 汇编语言
行为级描述 暂时没有成为主流 高级语言 C/C++
开关级 暂不谈 高级主题先不管

特别注意:在实际数字设计中,RTL级(寄存器传输级)描述通常是指能够被逻辑综合工具接受的行为级描述和数据流级描述的混合描述,这里对于RTL级描述做了概念上的拓展,不再单纯指数据流级描述。

对于行为描述来说,可以使用这三种形式中任意形式来进行实现,并且,对于同一个数字电路模型,这三种形式可以混合使用

目前的主流是使用RTL级描述,行为级描述在更加抽象的程度上来实现了行为描述,行为级综合工具允许直接对电路的算法和行为进行描述,它最符合人类思维方式,基于C/C++描述,但是有些RTL级描述做的事情它并不能完成,目前暂时没有得到主流设计者的认可。

至于门级描述,它就像汇编语言一样,非常繁琐麻烦和恶心,人们很少会直接使用他,但是会在特定的情况下, 为了提高电路的速度,在RTL级描述中嵌套一些必要的门级描述(因为自动生成的门级网表不一定是优化的)。这就好像,软件工程师(比如C++工程师)可能会在他们的程序中直接自定义导入一些由汇编语言编辑的代码一样。

简而言之,数字电路设计者要先分析问题得出行为描述,然后使用RTL级描述来实现行为描述,为了提高电路速度,可以在RTL级描述中嵌套门级描述。

问题1:对于过程“RTL级描述描述–>门级网表”,门级网表等同于门级描述吗?

待解决

问题2:行为级综合工具的出现允许Verilog HDL进行行为级描述,那么它是可以将行为级描述转换为RTL级描述吗?

待解决

问题3:行为级描述与RTL级描述的区别?行为级描述能够完成RTL级描述的所有事情吗?

目前来说,行为级描述只能完成部分工作,以减轻进行RTL级描述的负担,但是有些工作只能用RTL级描述来完成。

至于区别,举一个例子,以Python和C++作比较,对于【输出“你好!”】这件事情。

Python会这样做

print("你好!")

但是C++却需要写这么长的内容

#include <iostream>
int main()
{std::cout << "你好!";return 0;
}

显然,对比之下,Python是高效的。不过,有些事情Python做不到,但是C++可以完成,比如对内存的管理。不过整体来说,Python确实比C++高效。

Python与C++的对比,广义上来说,可以相当于行为级描述与RTL级描述的对比,我这样说,你应该明白了,不过这样的比喻可能并不是很严谨,我想通过类比的方法让你更容易理解这件事,不过你也要明白,类比并不能够一 一对照完全相同。

1.3 系统级设计

在这里简单介绍一下系统级设计,它相当于一个大型企业项目,也可以相当于一个图片设计作品。

C++有STL库,程序员可以直接调用别人已经完成的模块,来完成自己的项目;图片设计中,设计师可以直接使用一些已有的素材,将它们进行加工处理来完成自己的设计作品。这样的做法效率会很高。

所以,在系统级设计中,设计者也可以做类似的事情来提高效率,设计者可以使用已有的功能模块来快速搭建自己的系统,然后通过RTL级描述来使他们建立起联系。

我举一个例子来说明这一点

设计一个含有CPU、图形处理芯片、I/O芯片和系统总线的系统

这时候,设计者可以直接使用CPU设计者完成的CPU,图形处理芯片和I/O芯片以及第三方提供的系统总线来快速搭建系。

CPU
图形处理芯片
I/O芯片
系统总线

设计者只需对他们进行RTL级描述,进行系统级仿真等等。这样做效率很高,在工程上大大缩短了开发周期,降低了开发成本。

1.4 小结

将最重要的内容,以最精简的方式呈现出来。

  • EDA与EDA工具:能够帮助硬件开发设计者高效率完成开发工作
  • 行为描述,类似于ADT抽象模型
  • 行为描述的实现(可以互相嵌套)
    • 行为级描述
    • RTL级描述【最常用】
    • 门级描述
    • 开关级描述
  • 自动化功能
    • 行为级综合工具
    • 逻辑综合工具
  • 验证与优化流程
  • 具体实现到物理版图上(不必掌握)

目前来说有个印象记个大概即可,因为这些都是概述,后期不断掌握其细节后,会逐渐加深理解他们!

1.5 章节检测

回顾复习本章的重要内容,如果不能完全掌握,请回顾复习,不要继续往下学!

【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论相关推荐

  1. Cyclone V SoC FPGA学习之路第一章:综述

    Cyclone V SoC FPGA学习之路第一章:总体了解 关键词: adaptive logic modules – ALM 自适应逻辑模块 logic array block --LAB 逻辑阵 ...

  2. 数据结构学习之路-第一章:绪论

    出处:http://blog.csdn.net/libin1105/article/details/47935379 正如很多专业教材一样,绪论是少不了的,自然这本书也不例外. 绪论中概括了我们整本书 ...

  3. 【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模

    2 Verilog HDL的设计方法学--层次建模 重要的思想: 在语文教学中,应该先掌握核心方法论,再用正确的方法论去做题目,这样能够逐渐加深对于方法论的理解,做题的速度和准确率也会越来越高. 在V ...

  4. 菜鸟haqima的Java学习之路第一天

    菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...

  5. 学习笔记-应用光学 第一章 几何光学的基本定律

    学习笔记-应用光学 第一章 几何光学的基本定律 1-1 发光点.波面.光线和光束 发光点:本身发光或被照明后发光的几何点 波面:发光点在某一时刻发出的光形成波面 (在各向同性均匀介质中波面是球形) 光 ...

  6. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  7. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  8. Cyclone V SoC FPGA学习之路第二章:硬件篇

    Cyclone V SoC FPGA学习之路第二章:硬件篇(内部资源) 前言 上一章了解了<cycloneV device datasheet>,其中数据手册里重点介绍了电源要求,时序参数 ...

  9. 萌新的java学习之路——第一周

    萌新的java学习之路--第一周 第一周的学习 这是我学习Java的第一周,写这个博客更多的时为了总结自己这一周的学习情况,如果有人看到我写的博客,有什么问题的话,可以问我.虽然我也是一个小白,但我会 ...

最新文章

  1. SSH暴力破解IP大曝光
  2. Codeforces Round #541 (Div. 2) C.Birthday
  3. 使用泛型实现单例提供者(原创翻译)
  4. Reactive Extensions 相见恨晚的Rx.Net
  5. python notebook软件_Jupyter notebook快速入门教程(推荐)
  6. C# 委托的三种调用示例(同步调用 异步调用 异步回调)
  7. laravel 模型事件几种用法
  8. SQL Server启动的几种方法
  9. 基于MATLAB BP神经网络的数字图像识别
  10. net: 熟悉传统的交换机芯片
  11. Django 搭建知乎热榜 API
  12. RabbitMQ使用案例
  13. codecombat计算机科学入门二(python)
  14. python 爬取movie时光网
  15. JAVA儿童接种系统计算机毕业设计Mybatis+系统+数据库+调试部署
  16. 使用Selenium实现微博爬虫:预登录、展开全文、翻页
  17. 在Java程序员能够从事哪些岗位
  18. 北大AI公开课13讲全链接+最强干货盘点:视频+笔记+文字实录
  19. 12、Tello 进行起飞命令执行和视频显示
  20. 基于Matlab的磁力计校准(附源码)

热门文章

  1. Error0---local variable S is accessed from within inner class; needs to be declared final
  2. 多线程中的volatile和伪共享
  3. DevExpress GridControl 后台设置列
  4. Python服务器开发三:Socket
  5. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...
  6. FileUpload之单个文件上传
  7. flower.php,flower.php
  8. 要配置php环境_只需修改,要配置Apache的PHP环境,只需修改()。
  9. php gps 坐标,php 计算gps坐标 距离
  10. 假设mysql数据表t1有字段_使用ROMA Connect集成数据