Verilog学习心得(一)

时间:2022-06-30 14:00:06

​          

     作为一个萌新,第一次让我学习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模块内部,逻辑是按照指定的顺序执行的.