【准研一学习】狂肝15小时整理的Verilog语言入门知识
闲言稍叙
Verilog和VHDL就是目前使用最多的两个硬件描述语言(HDL),如果阅读本文的你也是Verilog新手,这部分闲言或许对你有所启发。
作者本科是计算机科学与技术专业,现在是准研一,方向和硬件相关。
由于学艺不精,只会点C、Java,电路、信号、单片机等硬件课程都只懂皮毛。由于课题组研究需要,学习了Verilog语言并总结为本文。
C语言是软件描述语言,编码的核心目的在于经过编译、链接后能够产生机器能够识别的指令序列,进而完成代码功能。而Verilog是硬件描述语言,编码的核心目的在于描述门与门之间的连接,通过综合、实现所写的代码,产生可以转化为芯片的图纸,交由厂商通过光刻来生产所设计的电路,最终经过封装、测试,即通常所称的芯片。
要学习Verilog首先需要一个编程平台,有Vivado、Modelsim等,其中Vivado是用的最多的,但是运行比较慢,Modelsim运行的快,但是界面丑,这个看个人喜好安装就好。
有编程平台后,通过在网站上刷题和看书,逐渐就可以上手了。那么下面列举出我学习Verilog所使用过的网站、书籍:
网站:
1.HDLBits
网站地址
该网站是全英文的,里面有100多道练习题,题解可以在Github上找到。
2.VLab Verilog OJ
网站地址
这是由中科大团队开发的Verilog在线评测系统,类似于软件编程的洛谷等网站。
其中每个题都会给出比较充分的知识点叙述,然后再让你动手编码,目的在于帮助大家学习Verilog。
有挺多的简单题,适合我这样的零基础菜鸟,但这个网站没有题解,网上只能查到前27题的题解。
其他网站:
- 菜鸟教程(有Verilog的内容,但没有OJ)
- EDA Playground(英文网站,可以在线运行代码,很流畅)
书籍
《EDA技术与Verilog HDL》 王金明编著 清华大学出版社
这本书是基于Vivado平台的,讲了Vivado的基本操作、Verilog语法和一些实例,硬件用EGO1实验板。《自己动手写CPU》 雷思磊 电子工业出版社
这本书是基于Modelsim平台的,主要是使用Verilog设计能运行mips32指令的处理器。《Vivado入门与FPGA设计实例》 廉玉欣 侯博雅编著 电子工业出版社
这本书也是基于Vivado和EGO1的,介绍了不少组合逻辑和时序逻辑的基本器件设计,如加法器设计。
一、简介
Verilog HDL(Hardware Description Language)是IC设计者常用的两种HDL之一,另一种是VHDL,通过比较Verilog和C语言的区别可以更好地理解它。
Verilog和C语言的区别:
- 描述对象不同:
Verilog语法和C接近,但C描述的是算法逻辑,依赖于硬件对其进行实现。而Verilog是硬件描述语言,描述的是硬件本身。 - 处理方式不同:
C需要经过编译、汇编、链接来将代码转化为可由计算机执行的二进制代码,而Verilog则需要经过综合来生成描述门与门之间互联关系的网表文件。 - 执行方式不同:
Verilog的部分描述语句可以并行执行,而C只能串行执行。
二、模块
2.1 模块是Verilog的设计实体
Verilog的基本设计思想是自顶向下(top-down),设计实体是模块,所有Verilog代码都将在模块内书写。
如下图所示,先定义顶层模块,分析顶层模块中所需的各个子模块,然后进一步对各个子模块进行分解和设计,最终可以将一个大的系统分解为多个子系统。
在Verilog中,成熟的、封装好的模块称为IP(intelligent property),调用已有IP的本质就是模块实例化。