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


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

相关文章:

  • VC++ 获取目的IP的路由
  • python导入语句的几点说明
  • OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()
  • TypeError: Cannot create property ‘xxx‘ on string ‘xxx‘
  • HTTP 与 HTTPS 协议:从基础到安全强化
  • C语言学习知识点总结(适合新手/考试复习)
  • 项目--高并发CPP内存池,低配版本
  • 【人工智能】Deepseek 与 Kimi 联袂:重塑 PPT 创作,开启智能演示新纪元
  • springBoot集成声明式和编程式事务的方式
  • Python基于Django的图书馆管理系统【附源码、文档说明】
  • RangeError: Invalid array length
  • linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
  • 高颜值多端适用软件:兼具屏保功能,PC 端登录可用
  • 数据结构(队列)
  • DeepSeek-R1本地化部署(Mac)
  • 【原创】springboot+vue实验室预约管理系统设计与实现
  • 增删改查 数据下载 一键编辑 删除
  • SpringSecurity认证授权完整流程
  • 城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • instr,locate是否使用索引实验
  • 密云区住房和城乡建设委员会网站/网站seo优化服务商
  • 嘉兴网站建设推广/如何提升百度关键词排名
  • 济南正规网站建设公司哪家好/百度推广登陆平台
  • 百度免费做网站吗/如何自己开网站
  • 深圳城市规划设计研究官方网站/seo助理
  • 最低成本做企业网站 白之家/google play商店