FPGA学习笔记书.docx

上传人:b****4 文档编号:12288889 上传时间:2023-04-17 格式:DOCX 页数:7 大小:19.47KB
下载 相关 举报
FPGA学习笔记书.docx_第1页
第1页 / 共7页
FPGA学习笔记书.docx_第2页
第2页 / 共7页
FPGA学习笔记书.docx_第3页
第3页 / 共7页
FPGA学习笔记书.docx_第4页
第4页 / 共7页
FPGA学习笔记书.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

FPGA学习笔记书.docx

《FPGA学习笔记书.docx》由会员分享,可在线阅读,更多相关《FPGA学习笔记书.docx(7页珍藏版)》请在冰豆网上搜索。

FPGA学习笔记书.docx

FPGA学习笔记书

前序:

1)可编程逻辑器件分类:

2)简单可编程逻辑器件SPLD(包括:

可编程制度存储器PROM、可编程逻辑阵列PLA、可编程阵列逻辑PAL、通用阵列逻辑GAL)

3)复杂可编程逻辑器件CPLD

4)现场可编程门阵列FPGA

5)在系统可编程逻辑器件ISP

Verilog数字设计教程(第二版)学习笔记:

第一章、VerilogHDl语言基本知识

1)VerilogHDl语言是一门硬件语言,用于数字电子系统设计。

允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。

VeilogHDl产生于1983年,有GDA公司首创。

2)VerilogHDl与VHDl的比较:

都是用于逻辑设计的硬件描述语言,都成为了IEEE的标准,VerilogHDl的全名是VHSICHardwareDescriptionLanguage,而VHSIC是VeryHighSpeedIntegeratedCircuit的缩写词,意为高速集成电路,故VHDL的准确中文名字是高速集成电路的硬件描述语言。

3)这几流程简介:

自顶向下的设计的基本概念(书中的15页有介绍)

层次管理的概念、使用的是模块的设计(包含设计开发和设计验证)、器件的优化和布局布线

第二章、Verilog语法的基本概念

1)一个简单的语句:

always@(sloraorb)表示的意义是,只要输入的是sl或a或b,其中若有一个变化时就执行下面的语句。

2)Verilog用于模块的测试,分成的模块主要有两个类型:

一种就是为了让模块最终能生成电路的结构;第二种只是为了测试所设计电路的逻辑功能是否正确。

3)编写Verilog的时候要注意每一个模块都要进行端口的定义,并且要说明输入、输出端口,然后对模块的功能进行描述。

在Verilog语言中/**/和//代表注释,“·”表示被引用模块的端口。

第三章、模块的结构、数据类型、变量和今本运算符号

第一个内容:

1)Verilog基本设计的单元是“模块”,有两个部分组成描述接口和描述逻辑功能(定义输入是如何影响输出的),Verilog程序包括4个主要部分:

端口定义、I/O说明、内部信号声明和功能定义。

2)模块的端口定义:

module模块名(口1,口2,口3,…)

模块的端口表示的是模块的输入和输出口名,有几点要注意:

首先就是,严格按照模块定义的端口来进行定义,不用标明原来原模块定义时的端口名;第二,引用的时候用“·”的时候,它后面跟着的是定义时的端口号,而括号中的内容是连接的信号名(如果有个不明白的地方请看例2.7)

3)I/O说明:

主要就是声明端口是输入还是输出口,格式内容在书27页。

4)内部信号说明:

在模块内用到的和与端口有关的wire和reg类型变量声明。

5)功能定义:

用三种方法:

第一种就是用assign声明、第二种就是用实例元件、第三种就是用“always”块声明(在“always”模块内部是按照指定的顺序执行,因此它也叫做“过程块”)。

但是三者如果同时在一个程序中出现的话,这三者都是并行的。

6)要点补充:

Verilog模块中的所有过程块、连续赋值语句、实例引用都是并行的;它们表示的是一种通过变量名互相连接的关系、同一模块中这三者出现的先后次序没有关系;只有后两个可以独立于过程块存在于模块的功能定义部分。

第二个内容:

数据类型及常量和变量:

Verilog一共有19种数据类型,数据类型用来表述数字电路硬件中的数据储存和传送元素的,4个基本的类型是reg型、wire型、integer型、parameter型,其它类型在29页。

1)常量:

数字(整数、x和z值、负数、下划线),参数型(用parameter来定义常量)

2)变量:

Wire型、reg型、memory型

memmory型定义:

reg[7:

0]mema[255:

0],这个定义的含义是定义了一个名为mema的存储器,这个存储器有256个8位存储器,换句话说就是定义了一个存储器组,而reg只是定义了一个存储器,举例说明reg[n-1]rega;是定义了一个n位的寄存器;而regmema[n-1,0]是定义了一个n

第四章、运算符、赋值语句和结构说明语句

1)&&与、||或、!

非,这三个逻辑运算符前两个是两目运算的,第三个的级别高于前两个的运算级别,这三个运算级别都高于数学运算级别。

2)关系运算的时候,如果声明的关系是真的,返回值为1,否则返回值为0,当关系是模糊的时候,返回值是不定值。

关系运算符的级别低于算数运算符。

3)主要是区别==和===,即双等号和三等号的区别。

4)主要就是位移的运算,这个运算就是掌握<<和>>,两个符号尖角在那个方向上,就向那个方向进行位移

5)也就是所谓的{}大括号,含义就是把两个或是多个信号的某些位拼接起来进行运算操作,在拼接的表达式子中必须要指明位数的信号。

6)缩减运算就像是多米诺骨牌一样,一位一位往后推,第一位和第二位先进性运算,再把结果和第三位进行运算,最终得到结果。

书中42页

7)要区分阻塞和非阻塞赋值(见书中44页)

8)块语句有两种:

一个是begin_end,是顺序块,一个语句到下一个语句都有一个延迟的时间,这个延迟的时间就是每一条语句的仿真时间;另一个是fork_join,是并行块,每一条块内的语句都是并行执行的,延迟时间可以自己在每一条语句中控制,换句话说就是顺序语句是按语句位置来计算起始时间和结束时间,而并行块是按照时间位置的排序进行起始时间和结束时间的计算的。

第六章结构语句、系统任务、函数语句和显示系统任务

第一个内容:

1)所有模块都从属于下面的语句:

initial语句(只执行一次)、always语句(不断运行知道程序结束)、task语句、function语句

2)initial语句:

可以用来赋初值,并且不需要任何的仿真时间;另一个用途就是,生成激励波形作为电路的测试仿真信号。

3)awlays语句:

always语句总和一个时序控制相结合在一起用,看是否满足触发条件(一定要和时序相结合否则会被锁死)

always的补充内容:

always中的or可以用逗号来隔开;

always@(a,b,c,d,.....)这种情况有的时候会落下某一个输入,所以用always@(*)代替所有输入,如果有看不明白的话看书中的81页;always语句可以和wait结合在82页

第四个内容

1)$display和$write任务:

都是输出信息的功能,不同点在于display可以自动地再输出之后进行换行,而write则不是这样。

说明在书中的91页中在这部分的内容中主要时注意一点,就是数据输出的宽度,在书中的93页,还有就是有关于X,x,z的内容,在94页。

2)打开文件、写文件、关闭文件

第七章调试用系统任务和常用编译预处理语句

1)系统任务$monitor

2)时间度量系统函数$time和$realtime:

time受到时间尺度比例的影响,输出的时间总是时间尺度的倍数,并且输出的总是整数。

realtime作用和time是一样的,但是realtime返回的数字是一个实型数,也是一时间尺度为基准的。

(书中101、102页)

3)系统任务$finish的作用是退出仿真器,返回操作系统,也就是结束仿真的过程。

4)$stop是把EDA工具(仿真器)设置成暂停的模式,提供一个交互式的提示符,把控制权交给用户。

5)系统任务$readmemb(每一个数字是2进制)和$readmemh(每一个数字是16进制):

都是从文件中读取数据到存储器中,可以再仿真的任何时刻被执行使用。

6)系统任务$random:

提供了一个产生随机数的手段用法$random%b,其中b是大于0的,且产生的数字实在(-b+1)到(b-1)之间的随机数字,也可以通过位并接操作产生0到(b-1)的随机数字,利用这个任务可以产生随即脉冲序列(105页)

7)预编译处理(预编译处理命令前面都有`开头,这个符号对应的上键盘符是~):

利用宏定义可以提高程序的可移植性和可读性,有关于宏定义的说明在107页。

8)“文件包含处理”`include

一个源文件可以将另一个源文件全都包含进来,即将另一个文件包含在本文件之中,简单的说就像是c语言中调用函数的作用相类似(具体说明在书中109页例7.9)

9)时间尺度`timescale:

定义模块中的时间单位和时间精度都必须是整数,其有效数字是1、10、100,单位是s、ms、µs、ns、ps、fs。

10)条件编译命令`ifdef、`else、`endif:

具体内容看例7.13

第九章、VerilogHDL模型的不同抽象级别

Verilog语法支持数字电路5种不同的描述方法:

系统级、算法级、RTL级、门级、开关级

前三种是行为级,第四种属于结构级

第一个内容门级结构描述

1)有关于门类型的关键字有26个,

and、nand、nor、or、xor、xnor、buf、not

2)要注意说明门类型的引用的时候,输出和输入的顺序:

书的131页上有具体的例子。

3)用已经设计的模块构成更高级别的模块:

引用的词语用的是flop,(具体的内容见132页)

第二个内容VerilogHDL的行为描述建模

1)Veilog语言的核心思路就是:

利用比较直观的行为描述来开始设计过程,仿真测试后,利用一种工具把行为模块自动转化成为门级结构,再次经过Verilog仿真测试验证后,完成了逻辑设计,在进行后面的制造工作。

(行为级转化成门级结构的工具是综合器)

2)对于模块进行检验需要产生信号,输入到已设计的模块中去,并检查已设计模块的输出,这就是编写测试模块。

3)一个语法event:

它用来定义一个事件以便在后面的操作中触发这一事件,触发方式#timen(触发时刻)->(事件名)例子9.4重要

4)行为建模的思路:

通过行为建模把一个复杂的系统分解成可操作的若干个的模块。

第三个内容用户定义的原语

1)用户定义的原语UDp:

开头用primitive,结束用endprimitive

2)UDp遵守的要点:

定义primitive的语法;强调只有一个输出,说明列表的第一位;可以有多个输入;只有0,1,x三种逻辑值;端口变量必须是标量;只有输出端能定义为寄存器类型变量;initial用于为时序电路内部赋初值;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1