FPGA笔记1——Verilog语法

本文详细介绍了Verilog的基础语法和高级知识点,包括逻辑值、数字进制、标识符、数据类型(如寄存器、线网、参数类型)、运算符、程序框架(如注释、关键字、模块结构和调用)、条件语句(if_else、case语句)、状态机的设计(状态空间定义、状态跳转、下个状态判断和动作)。内容适用于FPGA开发人员学习Verilog语言。
摘要由CSDN通过智能技术生成

目录

一、Verilog基础语法

1.1 逻辑值:

1.2 数字进制:

1.3 标识符 

1.4 数据类型:

寄存器

线网

参数类型

1.5 运算符

二、Verilog程序框架

2.1 注释

2.2 关键字

2.3 模块的结构

2.4 模块的调用

三、Verilog高级知识点

3.1 赋值语句

3.2 结构语句

initial

always

 3.3 条件语句

if_else 语句

case语句(多分支选择语句)

四、状态机

4.1 概念与模型

 4.2 状态机设计

1、状态空间定义

2、状态跳转

3、下个状态判断

4、各个状态下的动作


一、Verilog基础语法

1.1 逻辑值:

0、1、X(不定)、Z(高阻态 悬空状态)


1.2 数字进制:

二进制 b:4’b0101 四位二进制数字0101
八进制 o
十进制 d:4'd2 四位十进制数2(二进制0010)
十六进制 h:4'ha 四位十六进制数a(二进制1010)
若未指定,默认32'd(前面的位数是指二进制的位数)


1.3 标识符 

用于定义模块名、端口名、信号名

任意一组字母、数字、&、_的组合

  1. 第一个字符必须是字母或者下划线
  2. 区分大小写,不建议大小写混合使用
  3. 普通内部信号建议全部小写

推荐:sum cpu_addr clk_50 clk_cpu


1.4 数据类型:

  • 寄存器

         关键字reg 默认初始值x

//reg difine
reg[31:0] delay_cnt;   //延时计数,32位寄存器(0~31),指定位宽时高位在前
reg    key_reg;   //未指定位宽,默认为1

        只能在always、initial语句中被赋值

        若时序逻辑,always语句带时钟信号,该寄存器为触发器

        若组合逻辑,always语句不带时钟信号,该寄存器对应变量为硬件连接

  • 线网

        表示结构实体之间的物理连线

        关键字wire/tri 不能存储值,是由驱动他的元件(门、连续赋值语句、assign)决定的,若无驱动,则默认为高阻

//wire define
wire key_flag;   //按键标志,默认1位

  • 参数类型

        即常量用parameter定义

//parameter define 4.3'RGB LCD
parameter H_SYNC = 11'd41;   //行同步。可以一次定义多个参数,参数参数之间需要用逗号隔开

        常用于定义状态机的状态、数据位宽、延迟大小。

1.5 运算符

算数运算符:+ - * /(整除,只保留整数部分) %(模除,求余)

关系运算符:>,<, <=,>=,==,!=

逻辑运算符:!a, a&&b, a||b

条件运算符:?:(a?b:c  如果啊为正,就选择b,否则选择c)

                             result = (a>=b)?a:b;   //a,b取高位

位运算符:~a, a&b, a|b, a^b (若两变量位宽不同,小位宽前补零)

移位运算符:a<<b(a左移b位),a>>b(a右移b位)

                                用0填补移出的空位:

                                4'b1001<<2=6'b100100(位宽增加)

                                4'b1001>>1=4'b0100(最后一位丢弃,空位用0补齐)

拼接运算符:{a,b}(将a和b拼接起来,作为一个新的信号)

                                c[11:0]= { a[7:0],b[3:0] }

运算符的优先级

二、Verilog

### 回答1: 《FPGA自学笔记——设计与验证》是一本关于FPGA设计和验证的入门教材。本书以VHDL和Verilog两种HDL语言为主要工具,通过实例讲解FPGA的基本概念、设计流程和验证方法。同时,本书还通过实例演示了如何使用Xilinx ISE和ModelSim这两个主流软件工具进行FPGA设计和验证。 本书的内容分为五个部分,分别是FPGA基础知识、FPGA设计流程、FPGA验证方法、FPGA性能优化以及FPGA应用实例。其中,FPGA基础知识部分介绍了FPGA的基本构成、组成部件以及通用数字电路设计知识;FPGA设计流程部分从设计输入、RTL设计、布局布线、实现生成等方面详细介绍了FPGA设计流程;FPGA验证方法部分主要介绍了功能验证和时序验证这两个方面的知识;FPGA性能优化部分介绍了FPGA的几种性能指标以及如何通过一定的优化方法提高FPGA性能;FPGA应用实例部分通过几个实例演示了如何应用FPGA进行数字电路设计。 本书的难度适中,适合初学者学习和参考,同时也可以作为FPGA初学者的参考书籍。本书涉及的知识点较为全面,可以为初学者提供一个全面的FPGA设计和验证入门指南。其内容易于理解,实例讲解深入浅出,对于想要学习FPGA设计和验证的人群来说是一本很好的参考书。 ### 回答2: 《FPGA自学笔记——设计与验证》PDF是一本很好的自学FPGA的书籍。这本书包含了FPGA基本概念、设计流程、Verilog HDL语言、开发工具、测试方法等多个主题,非常详尽地介绍了FPGA的基本知识和开发技巧。读这本书可以帮助我们更好地理解FPGA的原理和功能,从而更加熟练地掌握FPGA的设计和验证。 此外,这本书还提供了很多实例来帮助我们更好地理解FPGA的设计和验证。这些实例包含多种应用场景,例如数字逻辑、时序控制、通信等,能够帮助我们从不同角度学习FPGA的相关知识。而且,这本书还提供了实验指导,通过做实验来让我们更深入地理解FPGA的各种知识和技能。 总之,这本书《FPGA自学笔记——设计与验证》PDF是一本非常好的FPGA自学指南,通过阅读这本书,我们可以掌握FPGA基本知识和开发技能,更好地应用FPGA进行各种应用开发。我相信,读完这本书,你一定能够对FPGA有更深刻的认识,并且能够灵活运用FPGA进行各种应用开发。 ### 回答3: 《FPGA自学笔记——设计与验证》是一本以FPGA为研究对象的书籍。它详细介绍了FPGA的诸多特性和应用。该书主要分为两部分,第一部分介绍了FPGA的基本概念,并讲解了Verilog语法和使用方法。第二部分是实践性较强的部分,通过编写案例代码进行实际操作。 该书着重强调了FPGA设计流程,通过案例演示了FPGA设计的全过程。该书还提供了大量的练习题和案例代码,读者可以通过反复练习和实际操作,逐渐掌握FPGA的设计和验证技能。 总体来说,《FPGA自学笔记——设计与验证》是一本非常实用的FPGA入门教材。它从基础知识入手,循序渐进地讲解了FPGA的各个方面。并且,该书重点讲解了如何运用Verilog语言进行FPGA设计,这对FPGA初学者来说是一个非常实用的指南。 如果你对FPGA领域感兴趣,且希望通过自学来掌握FPGA的基本操作和设计方法,那么《FPGA自学笔记——设计与验证》是一本非常值得推荐的书籍。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值