FPGA学习篇——Verilog学习3(关键字+注释方法+程序基本框架)

1 Verilog常用关键字

大概知道以下哪些是关键字就好,如何使用还是得在编写代码中来学习。

2 Verilog注释方法

Verilog有两种注释方式:

2.1 “ // ”

单行。

2.2 “ /*  ...  */ ”

可扩展多行。

3 Verilog程序基本框架

Verilog 的基本设计单元“模块”( block),模块就类似于C语言中的函数

每个Verilog程序包括4个主要的部分端口定义IO说明内部信号声明逻辑功能定义。

module  模块名字(端口定义);

    ...(IO说明)

    ...(内部信号声明)主要描述一些内部可能用到的信号,定义出来

    ...(逻辑功能描述)

endmodule

PS:其中,端口定义可以省略,或者说与IO说明合在一起(见例子1中abcd为端口定义),内部信号声明依具体情况而定也不一定存在。因此,其实一个模块主要的部分是:一部分描述接口(IO说明即端口说明),另一部分描述逻辑功能

3.1  例子1:

这个例子没有内部信号声明这一块,给出了对应的硬件电路图和模块图,比较简单易于理解。

 (1)看上图左侧图,为一个模块的程序:

  • module开始,endmodule结束。
  • IO说明(描述接口部分):红色框,用关键字input定义a,b为模块的输入;用关键字output定义a,b为模块的输出。
  • 逻辑功能定义(描述逻辑功能部分):绿色框,用关键字assign描述逻辑功能。

(2)看上图中间图和右侧图。

  • 中间图就可以看作是你编写的这个程序的模块描述接口的情况,一个黑匣子,输入为你定义的a、b,输出为你定义的c、d。
  • 右侧图就是描写的这个程序实现的硬件电路,程序中assign描述的就是ab连接一个或门,输出为c;ab连接一个与门输出为d。(注意,当程序编写的是可综合模块能够生成对应的硬件电路,不可综合的模块则不行,但可以在仿真中使用不可综合的模块程序。这个不太懂,后续学了再补)

3.2  例子2:

以上例子省略了端口定义这一部分

  • module开始,endmodule结束。
  • IO说明(描述接口部分):黄色框。
  • 内部信号声明:粉色框,这里定义了一个寄存器类型的计数器。
  • 逻辑功能定义(描述逻辑功能部分):蓝色框,这里有两个always,描述了两个逻辑功能。

3.3  总结:

以上两个例子,总结出Verilog程序框架的一些特点吧。

  • 每个Verilog程序包括4个主要的部分端口定义IO说明内部信号声明逻辑功能定义。
  • IO说明默认端口是wire类型,如果要改成reg类型,要写出来(如例子2程序中的output定义。)
  • 逻辑功能定义可多个,且多个逻辑功能是并行的,即例子2中的两个always逻辑功能段谁前谁后无所谓,是同时编译完成逻辑功能的,这和C语言不一样,C语言要强调顺序问题。

另外逻辑功能定义部分有三种方法。

1、assign语句描述组合逻辑。

2、always语句描述组合/时序逻辑。

3、例化实例元件(可理解为画出一个逻辑单元)

       比如这个例子就是先了一个二输入的与门。


PS:组合逻辑电路的输出仅取决于当前的输入状态,与电路之前的状态无关;时序逻辑电路的输出不仅取决于当前的输入,还受到电路原来状态的影响。


注:本文学习及图片来源于哔哩哔哩“正点原子”,如有侵权,请联系我,欢迎指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值