当前位置: 首页 > news >正文

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


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


http://www.mrgr.cn/news/93566.html

相关文章:

  • 蓝桥杯单片机——第十五届蓝桥杯省赛
  • STM32之I2C硬件外设
  • C语言100天练习题【记录本】
  • STM32之硬件SPI
  • 苦瓜书盘官网,免费pdf/mobi电子书下载网站
  • 100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)
  • Kubernetes Pod网络组件解析与选型指南
  • python从入门到精通(二十五):文件操作和目录管理难度分级练习题
  • 【华三】STP端口角色与状态深度解析
  • MySQL------存储引擎和用户和授权
  • 从0开始的操作系统手搓教程25:使用环状缓冲区来让我们的键盘驱动真正的有作用起来
  • 200W数据去重入库的几种方法及优缺点
  • STM32-I2C通信协议
  • Browser Use+DeepSeek的使用教程
  • LTC6804、LTC6811、LTC6813的使用
  • Linux 软硬链接
  • 音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析
  • python从入门到精通(二十四):python爬虫实现登录功能
  • 996引擎-问题处理:实现自定义道具变身卡
  • 【C++ 函数重载】—— 现代编译技术下的多态表达与性能优化