作为一个萌新,第一次让我学习Verilog我是拒绝的,连数电都没有学习过学Verilog真是一种折磨...不过自己选择的路不管怎么样都要走下去.
硬件描述语言HDL(Hardware Description Language)是一种用文本形式描述数字电路和设计数字逻辑系统的语言.而Verilog HDL作为一种IEEE标准化的语言,正是我所学的对象.
Verilog和C的风格很类似,反正比VHDL容易多了2333.
表1 C语言与Verilog相对应的关键字与控制结构表
| C |
Verilog |
| sub-function |
module、function、task |
| if-then-else |
if-then-else |
| case |
case |
| {,} |
begin、end |
| for |
for |
| while |
while |
| break |
disable |
| define |
define |
| int |
int |
| printf |
monitor、display、strobe |
表2 C语言与Verilog对应运算符表
| C |
Verilog |
功 能 |
| * |
* |
乘 |
| / |
/ |
除 |
| + |
+ |
加 |
| - |
- |
减 |
| % |
% |
取模 |
| ! |
! |
反逻辑 |
| && |
&& |
逻辑与 |
| || |
|| |
逻辑或 |
| > |
> |
大于 |
| < |
< |
小于 |
续表
| C |
Verilog |
功 能 |
| >= |
>= |
大于等于 |
| <= |
<= |
小于等于 |
| == |
== |
等于 |
| != |
!= |
不等于 |
| ~ |
~ |
位反相 |
| & |
& |
按位逻辑与 |
| | |
| |
按位逻辑或 |
| ^ |
^ |
按位逻辑异或 |
| ~^ |
~^ |
按位逻辑同或 |
| >> |
>> |
右移 |
| << |
<< |
左移 |
| ?: |
?: |
相当于if-else |
实际上,Verilog语言与C语言最大的不同在于,C是顺序执行语句,Verilog HDL程序是并行执行语句.这应在设计时充分考虑.另外,Verilog语言可以和C语言搭配使用.
Verilog程序的基本设计单元是模块(module)
input 为输入端口,output为输出端口.
每个Verilog程序包括四个部分:模块声明,I/O说明,信号类型说明和逻辑功能描述.
1. 模块声明:
module 模块名(口1,口2,口3,.......);
模块结束关键字:endmodule.
2. I/O说明(三种形式)
(1) 输入口
input 端口名1,端口名2,.....,端口名N; //(共有N个输入口)
(2)输出口
output 端口名1,端口名2,.....,端口名N; //(共有N个输出口)
(3)输入输出口
inout 端口名1,端口名2,.....,端口名N; //(共有N个输入输出口)
I/O说明也可以写在端口声明语句中.其格式如下:
module module_name(input port1,input port2,...,output port1,output port2,...,inout port1,inout port2,...);
3.信号类型说明
默认为wire(网线)类型.
4.逻辑功能描述
(1)用assign声明例句,一般给wire类型赋值
(2)用元件例化
(3)用always块
always块既可以描述组合逻辑,又可描述时序逻辑
模块虽然是并行(同时)执行的,但是在always模块内部,逻辑是按照指定的顺序执行的.
