超全面!Verilog入门到实战系列(1)

部分内容是参考夏宇闻老师的《Verilog数字系统设计教程》,西电数字课、网络资料等搜集整理以及个人经验的综合,有需要改进的地方请多指正。

1.Verilog概述:

Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。描述完设计的功能之后,进行“综合”才能生成所设计功能的硬件电路。C语言串行执行,而Verilog并行执行。

2.Verilog环境搭建

  • FPGA 开发环境-- Xilinx 公司的 ISE,VIVADO;
  • 因特尔公司的--Quartus II;
  • ASIC 开发环境-- Synopsys 公司的 VCS ,

      ISE 或者 Quartus II 都会自带仿真器,但功能还是有欠缺。所以,比较推荐Quartus II+Modelsim 联合仿真的测试方法,运行环境为 64bit-win10 系统。

      下载地址:https://fpgasoftware.intel.com/13.1/?edition=subscription&platform=windows

      下载 13.1 以上的 quartus II 时,官网也会推荐相应版本的 Modelsim,一起下载即可。

3.Verilog应用:

Verilog生成专用集成电路主要有三个途径:

  • 可编程逻辑器件

FPGA 和 CPLD 是实现这一途径的主流器件。他们直接面向用户,具有极大的灵活性和通用性,实现快捷,测试方便,开发效率高而成本较低。

  • 半定制或全定制 ASIC

通俗来讲,就是利用 Verilog 来设计具有某种特殊功能的专用芯片。根据基本单元工艺的差异,又可分为门阵列 ASIC,标准单元 ASIC,全定制 ASIC。

  • 混合 ASIC

主要指既具有面向用户的 FPGA 可编程逻辑功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如CPU,RAM,锁相环,乘法器等。

4.软核、固核、硬核

  • 软核(Softcore):功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型。
  • 固核:在某一种现场可编程门阵列(FPGA)器件上实现的,经验证是正确的总门数在5000以上的电路结构编码文件。
  • 硬核:在某一种专用的半导体集成工艺(ASIC)的器件上实现的,经验证是正确的总门数在5000以上的电路结构掩膜

5.描述方法区分

  • 行为级描述/寄存器传输级(RTL)描述/系统级描述:把module当成黑盒,描述module输入与输出的关系。门级实现由综合工具推断,常常能做到最优。
  • 结构级描述/门级描述:把module作为白盒,而描述组成module的门电路(部件)

6.verilog模块基本结构

  • 系统的设计可以按照下面三个步骤进行:

(1)把系统划分成模块;

(2)规划各模块的接口;

(3)对模块编程并连接各模块完成系统设计。

  • 模块是什么

模块(module)是verilog最基本的概念,是verilog设计中的基本单元,每个verilog设计的系统中都由若干module组成。

(1)模块的实际意义是代表硬件电路上的逻辑实体。

(2)每个模块都实现特定的功能。

(3)模块之间是并行运行的。

(4)模块是分层的,高层模块通过调用、连接低层模块的实例来实现复杂的功能。

(5)各模块连接完成整个系统需要一个顶层模块(top-module)

  • Verilog 基本语法结构(基本模块组成):

    • module和endmodule关键词用来标记模块的开始和结束,在module和endmodule之间的代码都是属于本模块的,一个最简单的模块是由模块命名、端口列表两个部分组成。整个模块是由 module 开头,endmodule 结尾,module 后面紧跟着的是模块名,每个模块都有它自己的名字。
    • input、output和 inout 用于端口定义
    • wire 和 reg 是用来声明数据类型
    • parameter 是用来声明参数类型
    • always 是过程赋值语句,assing 是连续赋值语句
    • if 和 else 成对使用,是条件判断语句,和 C语言中的 if 和 else 是一样的功能,begin 和 end 也是成对使用,相当于 C 语言中的大括号,case、endcase 和 default 成对使用,是一个多分支条件语句,和 C 语言中的 switch 一样的功能
    • posedege、negedge 和 or 这三个关键字是和 always 关键字联合使用的,posedge 是上升沿触发,negedge 是下降沿触发,posedge or negedge 是既有上升沿又有下降沿。
    • 在Verilog中,注意关键字使用小写。借鉴博文的参考图如下:

超全面!Verilog入门到实战系列(1)_第1张图片

------->下一章:Verilog基本语法之模块以及模块调用详解

章节进程条-STEP1超全面!Verilog入门到实战系列(1)_第2张图片

你可能感兴趣的:(fpga开发)