第12节:语法篇_Verilog基础语法

(1)Verilog 语言四种逻辑:
逻辑 0:表示低电平,也就对应我们电路 GND;
逻辑 1:表示高电平,也就是对应我们电路的 VCC;
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;
逻辑 Z:表示高阻态,外部没有激励信号,是一个悬空状态。
INTEL FPGA学习笔记

(2)数字表示:不给位宽默认32位,不给进制默认d:如1020=32’d1020
(3)标识符:
标识符区分大小写,第一个字符必须是字母或者下划线;
标识符推荐写法:
不建议大小写混合使用;
普通内部信号建议全部小写;
信号命名最好体现信号的含义,简洁、清晰、易懂;
以下是一些推荐的写法:
1、用有意义的有效的名字如 sum 、cpu_addr等。
2、用下划线区分词,如cpu_addr。
3、采用一些前缀或后缀,比如时钟采用clk前缀:clk_50,clk_cpu;

(4)在 Verilog 语言中,主要有三大类数据类型:
从名称中,我们可以看出,真正在数字电路中起作用的数据类型应该是:寄存器数据类型和线网数据类型。

一.寄存器数据类型reg:
(1)表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器储存的值
(2)初值不确定,默认X。
(3)reg类型的数据只能在 always 语句和 initial 语句中被赋值。
(4)reg的位宽:[高位,低位]
INTEL FPGA学习笔记
如果不给位宽,默认为1
(5)reg的物理意义:触发器/硬件连线

二.线网数据类型wire/tri(tri很少用但用法一致):
(1)线网数据类型表示结构实体(例如门)之间的物理连线,不能储存值,它的值是由驱动它的元件所决定的。
(2)驱动的元件有门、连续赋值语句、assign等,如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,即其值为z

三.参数数据类型parameter:
INTEL FPGA学习笔记
(1)参数其实就是一个常量
(2)在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。

(5)移位运算符:
两种移位运算都用0来填补移出的空位。
左移时,位宽增加;右移时,位宽不变
4’b1001 << 2 = 6’b100100;
4’b1001 >> 1 = 4’b0100;
(6)拼接运算符:
{a,b} 将 a 和 b 拼接起来,作为一个新信号
比如:c = { a, b[3:0] };

第13节:语法篇_Verilog程序框架

(1)常用关键字:
INTEL FPGA学习笔记

(2)Verilog 的基本设计单元是“模块”(block)。
一个模块是由两部分组成的,一部分描述接口,另一部分描述逻辑功能。
INTEL FPGA学习笔记

(3)注意:输入端可以是wire类型的,也可以是reg类型的
但输出端只能是wire类型
(4)参数传递:注意看其中的MAX_NUM ,尽管在模块中已经有值了,但仍然可以在外面重赋值。
INTEL FPGA学习笔记
INTEL FPGA学习笔记
(未完待续,原则上每日更新)

第14节:语法篇_Verilog高级知识点

第15节:语法篇_Verilog状态机

第16节:实战篇_流水灯

第17节:实战篇_按键控制LED

第18节:实战篇_按键控制蜂鸣器(按键消抖)

第19节:实战篇_触摸按键控制LED

第20节:实战篇_数码管静态显示

相关文章:

  • 2021-09-20
  • 2021-06-23
  • 2021-11-17
  • 2021-05-12
  • 2021-08-03
  • 2021-06-13
  • 2021-12-03
  • 2021-11-30
猜你喜欢
  • 2021-04-29
  • 2022-01-17
  • 2021-10-09
  • 2022-01-15
  • 2021-08-14
  • 2022-01-23
  • 2021-09-28
相关资源
相似解决方案