FPGA verliog语言学习日志

1.什么是verilog语言

Verilog HDL(Hardware Description Language)是一种用于电子系统设计和建模的硬件描述语言。它广泛应用于数字电路的设计和验证,特别是在FPGA(现场可编程门阵列)和ASIC(应用特定集成电路)的开发中。Verilog HDL允许设计师通过编写代码来描述电路的行为和结构,这些代码可以被合成工具转换成实际的硬件电路。

以下是Verilog HDL的一些关键特性和概念:

1. **模块(Module)**:Verilog中的模块是设计的基本构建块。每个模块可以包含逻辑电路的描述,并且可以被实例化多次以形成更复杂的系统。

2. **数据类型**:Verilog提供了多种数据类型,包括线网(wire)、寄存器(reg)、整数(integer)、实数(real)和时间(time)等。

3. **运算符**:Verilog支持多种运算符,包括算术运算符(+、-、*、/)、逻辑运算符(&&、||、!、&、|、~)、关系运算符(==、!=、>、<、>=、<=)和位运算符(&、|、^、~、>>、<<)。

4. **并发语句**:Verilog中的并发语句(如`assign`和`always`块)用于描述电路的并发行为。`assign`语句用于描述连续赋值,而`always`块用于描述过程赋值,可以是组合逻辑或时序逻辑。

5. **时序控制**:Verilog通过`always`块和时钟信号来描述时序逻辑。`always @(posedge clk)`表示在时钟信号的正边沿触发。

6. **条件语句**:`if`、`case`和`if-else`语句用于描述设计中的条件逻辑。

7. **循环语句**:`for`、`while`和`repeat`语句用于描述设计中的循环行为。

8. **任务(Task)和函数(Function)**:任务是用于描述在模块内部执行的过程,而函数用于执行计算并返回一个值。

9. **参数化模块**:Verilog允许使用参数化模块,这使得模块可以在不同的实例中具有不同的行为。

10. **测试台(Testbench)**:Verilog提供了编写测试台的能力,用于模拟和验证设计在不同条件下的行为。

Verilog HDL的一个简单示例代码如下:

FPGA verliog语言学习日志_第1张图片

在这个例子中,定义了一个名为`and_gate`的模块,它实现了一个逻辑与门的功能。然后,定义了一个名为`testbench`的测试台模块来验证`and_gate`模块的功能。在测试台中,使用`initial`块来初始化输入信号并模拟不同的输入组合,同时使用`$monitor`系统任务来监控信号的变化。
 

二、Verilog HDL 基础知识

1、Verilog HDL 语言要素

1.1、命名规则

标识符被用来命名信号、模块、参数等,它可以是任意一组字母、数字、$符号和_(下划线)符号的组合。(标识符中字母区分大小写,且第一个字必须是字母或下划线)

1.2关键字(均小写)

Verilog HDL 内部已经使用的词成为关键字或保留字,是事先定义好的确认符,用来组织语言结构。总结关键字大概有以下这么多:

always, and, assign, begin, buf, bufif0, bufif1, case, casex, casez, cmos, deassign, default, defparam, disable, edge, else, end, endcase, endfunction, endmodule, endprimitive, endspecify, endtable, endtask, event, for, force, forever, fork, function, highz0, highz1, if, ifnone, initial, inout, input, integer, join, large, macromodule, medium, module, nand, negedge, nmos, nor, not, notif0, notif1, or, output, parameter, pmos, posedge, primitive, pull0, pull1, pulldown, pullup, rcmos, real, realtime, reg, release, repeat, rnmos, rpmos, rtran, rtranif0, rtranif1, scalared, small, specify, specparam, strength, strong0, strong1, supply0, supply1, table, task, time, tran, tranif0, tranif1, tri, tri0, tri1, triand, trior, trireg, vectored, wait, wand, weak0, weak1, while, wire, wor, xnor, xor

                                                        Verilog常用的一些关键字

1. always:用于创建一个时序块,其中的代码会按照时序规则执行,产生reg信号语句的关键字。

2. assign:用于创建一个组合块,其中的代码会按照组合逻辑规则执行,产生wire信号语句的关键字。

3. begin/end:用于创建一个代码块,其中的代码会按照顺序执行,语句的起始和结束标志。

4. module:模块开始的定义,用于创建一个模块,其中包含了数字电路的结构和行为。

5. input/output:用于定义模块的输入和输出端口定义。

6. wire/reg:用于定义信号的类型(wire信号定义和reg信号定义),wire表示连续信号,reg表示

你可能感兴趣的:(FPGA,fpga开发,学习)