笔记:verilogHDL学习笔记1

笔记 :verilogHDL学习笔记1

笔记目录

1.FPGA与单片机区别
2.FPGA的基本结构
3.FPGA数据存储以及配置方式
4.FPGA开发流程&数字芯片开发流程
5.代码综合
6.模块结构
7.信号类型

1.FPGA与单片机区别
FPGA:(a)是一种微处理器,类似于电脑的 CPU,一般是基于 哈佛总线结构或者冯·诺依曼结构;(b)FPGA 的结构是查找表, 它的结构比较复杂,相对应的它可以实现的功能也很强大;©应用于通信接口设计、数字信号处理、ASIC 的原型验证;等比较高端的场合;(d)效率更高、功耗更低,但是易于开发程度远远不如单片机、CPU。
单片机:用途广泛,多用于控制流水线上
2.FPGA的基本结构
(a)主流的 FPGA 芯片仍是基于 SRAM 工艺的查找表结构。查找表(Look-Up-Table)简称为 LUT,其本质上就是一个 RAM。目前 FPGA 内部中多使用 4 输入的 LUT,每一个 LUT 可以看成一个有 4 位地址线的 RAM。当用户在 EDA 工具上通过原理图或硬件描述语言设计了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把 真值表(即结果)事先写入 RAM 中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行 查找表操作,通过地址找到对应的 RAM 中的结果,最后将其输出。
(b)随着技术的发展和工艺 节点的进步,FPGA 的容量和性能在不断提高的同时,其功耗却不断的优化减少。
(c)在 FPGA 内部,有着“软内核”与“硬内核”之分。软内核实现算法逻辑设计等功能,硬内核实现芯片内部逻辑电路功能。二者互补,但与软内核相比硬内核可用于实现模拟功能,例如锁相环的倍频功能。
3.FPGA数据存储以及配置方式
1)并行模式:通过并行 PROM、Flash 配置 FPGA; 2)主从模式:使用一片 PROM 配置多片 FPGA; 3)串行模式:串行 PROM 配置 FPGA; 4)外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。
主流的 FPGA 都是基于 SRAM 工艺的,在大部分的 FPGA 开发板上,使用的都是串行配 置模式。由于 SRAM 掉电就会丢失内部数据,因此往往都会外接一个能够掉电保存数据的片外存储 器以保存程序。
4.FPGA开发流程&数字芯片开发流程
在这里插入图片描述
在这里插入图片描述
5.代码综合
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.模块结构
模块有五个主要部分:端口定义、参数定义(可选)、 I/O 说明、内部信号声明、功能定义。
在这里插入图片描述
在这里插入图片描述
(1)端口定义:module 模块名(端口 1,端口 2,端口 3,……);
(2)参数定义:是一个可选择的语句, 用不到的情况下可以省略,参数定义一般格式如下: parameter DATA_W = x;
(3)输入端口: input [信号位宽-1 : 0] 端口名 1;
; 输出端口: output [信号位宽-1 : 0] 端口名 1;
; 双向端口:inout [信号位宽-1 : 0] 端口名 1;
(4)信号类型:reg 寄存器型,wire线形寄存器
(5)功能描述:有三种方法可在模块 中产生逻辑。 1. 用“assign”声明语句,如描述一个两输入与门:assign a = b & c。详细功能见“功能描述- 组合逻辑”一节。 2. 用“always”块。即前面介绍的时序逻辑和组合逻辑。 3. 模块例化。
(6)模块例化:
在这里插入图片描述
在这里插入图片描述
没有用到的管脚可以采用空格 空白处理(高阻态Z)
7.信号类型
线网类型(net type) 和寄存器类型 (reg type)
(1)定义信号位宽:能表示的无符号数最大值是:2n-1,其中 n 表示该信号的位宽。
(2)线网类型 wire:型用于对结构化器件之间的物理连线的建模,如器件的管脚,芯片内部器件如与门的输出等。通常用 assign 进 行赋值,如 assign A = B ^ C。例子:wire [31:0] Kisp, Pisp, Lisp ;// Kisp, Pisp, Lisp 都是 32 位的线型信号。
(3)寄存器类型 reg:reg 是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,寄存器类型信号的特点是在某种触发机制下分配了一个值,在下一触发机制到来之前保留原值。 但必须注意的是:reg 类型的变量不一定是存储单元,如在 always 语句中进行描述的必须是用 reg 类型的变量。例子:reg [31:0] Kisp, Pisp, Lisp ; // Kisp, Pisp, Lisp 都是 32 位的寄存器型信号。
(4) wire 和 reg 的区别:reg 型信号并不一定生成寄存器。使用 always 设计的信号都定义为 reg 型,其他信 号都定义为 wire 型。(若df 是例化模块的输出。由于 df 不是由 always 产生的,而是例化产生 的,因此要定义成 wire 型。)

注:该篇博客知识点总结于:
[1]明德扬FPGA至简设计于应用
[2]中国大学MOOC 西南交通 静态时序分析课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sr_shirui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值