FPGA语法篇 您所在的位置:网站首页 n在语法中是什么意思怎么读 FPGA语法篇

FPGA语法篇

2024-06-01 04:00| 来源: 网络整理| 查看: 265

Verilog语法

目录 Verilog语法一、Verilog基础知识逻辑值数字进制标识符数据类型寄存器类型线网类型参数类型 运算符 二、Verilog程序框架Verilog注释Verilog关键字Verilog程序框架模块调用、例化——模块化设计 三、Verilog高级知识点结构语句initial与always 赋值语句阻塞赋值(Blocking)非阻塞赋值(Non-Blocking)总结assign 和 always 区别 条件语句if_else语句:case语句:latch锁存器 四、Verilog状态机FSM状态机FSM概念状态机模型Mealy状态机(输出=输入+之前状态)Moore 状态机(输出=之前状态) 状态机设计1.状态空间定义2.状态跳转(时序逻辑)3.下一个状态的判断(组合逻辑)4.各个状态下的动作(组合逻辑)总结

一、Verilog基础知识 逻辑值

0、1、X(未知)、Z(高阻态)

数字进制

二进制:4’b0101 表示 4 位二进制数字 0101; 十进制:4’d2 表示 4 位十进制数字 2(二进制 0010); 十六进制:4’ha 表示 4 位十六进制数字 a(二进制 1010) 当代码中没有指定数字的位宽与进制时,默认为 32 位的十进制,比如 100,实际上表示的值为 32’d100。

标识符

用于定义模块名,端口名,信号名,由字母、数字、$和_(下划线)组成,第一个字符必须是字母或者下划线,区分大小写。 不建议大小写混合使用,普通内部信号建议全部小写,参数定义建议大写。 采用一些前缀或后缀,比如:时钟采用 clk 前缀:clk_50m,clk_cpu;低电平采用_n 缀:enable_n;

数据类型

寄存器类型、线网类型和参数类型。

寄存器类型

是一个数据存储单元,常用 reg 类型,默认初始值为X(未知)。

//reg define reg [31:0] delay_cut; //32位寄存器 reg key_reg; //默认位宽为 1

只能在 always 语句和 initial 语句中被赋值。(不允许像C语言一样,在定义同时赋值) 如果该过程语句描述的是时序逻辑,即 always 语句带有时钟信号,则该寄存器变量对应为寄存器; 如果该过程语句描述的是组合逻辑,即 always 语句不带有时钟信号,则该寄存器变量对应为硬件连线。

线网类型

表示结构化实体(e.g.门)的物理连线。不能存储值,它的值由驱动它的元件决定。驱动元件有连续赋值、门、assign等。默认是Z高阻态。 有tri 和 wire型。

//wire define wire data_en; //数据使能信号 wire [7:0] data ; //数据 参数类型

参数其实就是一个常量,用parameter定义(类似C语言中的define)我们可以一次定义多个参数,参数与参数之间需要用逗号隔开。参数的定义是局部的,只在当前模块中有效。

//parameter define parameter DATA_WIDTH = 8; //数据位宽为8位 //可以[DATA_WIDTH : 0]只修改参数值来修改位宽

参数型数据用于定义状态机的状态、数据位宽和延迟大小等,在模块调用时可以通过参数传递来改变调用模块中已定义的参数。

运算符

算术运算符: Verilog 实现乘除比较浪费组合逻辑资源,尤其是除法。所以 2 的指数次幂的乘除习惯用移位,非 2 的指数次幂的乘除调用现成的 IP(ISE提供) 关系运算符 逻辑运算符: !、&& 、 || 条件操作符: a ? b : c 位运算符: ~(取反)、&、 |、^(异或) 移位运算符:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有