【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形

前言:

本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载的完整过程、Verilog语言基本运用,电路设计和Test Bench程序的编写、以及实验开发板的使用,通过观察和数据记录理解仿真和FGPA实现的差异。

 

目录

Ⅰ. 基础知识速览:

0x00 硬件信息

0x01 实验流程分析

 Ⅱ. Verilog代码设计 

0x00 工程的创建

0x01 功能电路的创建

0x02 添加仿真激励程序

0x03 观察记录仿真波形

Ⅲ.  通过实验板观察与验证

0x00 添加硬件约束文件

0x01 电路生成

0x02 实验板使用


Ⅰ. 基础知识速览:

0x00 硬件信息

  • 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片 
  • 配置方式:USB-JTAG/SPI Flash
  • 高达100MHz 的内部时钟速度 
  • 存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A)
  • 通用IO:Switch :x8LED:x16Button:x5DIP:x8   通用扩展IO:32pin
  • 音视频/显示: 7段数码管:x8 VGA视频输出接口 Audio音频接口 
  • 通信接口:UART:USB转UART   Bluetooth:蓝牙模块 
  • 模拟接口: DAC:8-bit分辨率   XADC:2路12bit 1Msps ADC

0x01 实验流程分析

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第1张图片

 


 Ⅱ. Verilog代码设计 

0x00 工程的创建

打开vivado,点击create project新建工程;

 

选择自己的工作区文件夹,输入合适的工程名;

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第2张图片

 

工程类型可以默认,即RTL项目,不包含指定代码;

 

 

器件选择需要跟硬件一致,本专栏采用Family:Artix-7,Package:csg324,具体型号为xc7a35tcsg324-1;

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第3张图片

 

最后核对相应工程信息,检查无误后点击Finish即可进入工程操作界面

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第4张图片

到此,创建完成! 

 

 0x01 功能电路的创建

A)创建功能电路有两种方法,本专栏介绍方法一:利用verilog语言描述设计电路。

点击左边Flow Navigator中,PROJECT MANAGER中Add Sources,(或者点击Source窗口中“Add Sources”按钮或快捷键Alt+A)

在对话框中选中design sources类型后点击next,

 

在对话框中点击create按钮,

 

在对话框中设定文件名之后

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第5张图片

对话框会自动变成如图所示

点击Finish后会自动出现如图的引脚配置。

 

值得一提的是,本篇博客旨在演示如何实施基本步骤操作,因此先做原理仿真,不会深入讲解。

这里可以直接点击OK并确认跳过;

 操作区的源码列表自动update后如图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第6张图片

 

 

图 1.12

B)点击First.v,编辑Verilog文件,保存。

module First( input wire a, input wire b, output wire [2:0] z );                              

    assign z[0] = a&b;

    assign z[1] = a|b;

    assign z[2] = a^b;

endmodule

C)点击Flow Navigator中的RTL ANALYSIS的Open Elaborated Design,

如图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第7张图片

 

自动生成器件原理图,如图:

 

0x02 添加仿真激励程序

依照第2步A内容,点击左边Flow Navigator中,PROJECT MANAGER中Add Sources,(或者点击Source窗口中“Add Sources”按钮或快捷键Alt+A);

在如图对话框中选中simulation sources类型后点击next:

 

接着在话框中点击create按钮:

 

在如图对话框中设定文件名后:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第8张图片

 

对话框会自动变成如图所示:

 

点击Finish后会自动出现如图示意的引脚配置:

 

可以直接点击OK并确认跳过。

操作区的源码列表自动update后如图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第9张图片

 

编辑sim4First.v,加入仿真输入信号和时序。

`timescale 1ns / 1ps
module sim4First( );
    reg a;
    reg b;
    wire [2:0] z;
       First uut( .a(a), .b(b), .z(z) );
            always begin
            a = 0; b = 0; #100;
            a = 1; b = 0; #100;
            a = 0; b = 1; #100;
            a = 1; b = 1; #100;
        end
endmodule

保存后,操作区的源码列表会自动update,得结构如图: 

 

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第10张图片

 0x03 观察记录仿真波形

点击Flow Navigator – SIMULATION – Run Simulation,如图:

 

 

进入仿真状态,如图:

 

注意此时工具栏的变化,如图:

 点击按钮,将仿真时间点切换至开始。

由于仿真文件中我们加了时间间隙为#100ns,为仿真的简便起见,我们将运行时间片设为100ns,如图:

 

 为了观察方便,运行前点击将波形时间窗调整至合适的尺度,如图:

 

 点击,观察输出波形,局部效果如图:

 

 可以进一步来验证,根据波形,记录输出引脚状态至表,检验真值表与逻辑电路的对应关系。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第11张图片

Ⅲ.  通过实验板观察与验证

0x00 添加硬件约束文件

本篇博客的目的之一,也是为电路的输入输出配置合适的开发板资源。有两种方法可以添加约束文件:

  • 一是可利用Vivado 中IO planning 功能;
  • 二是可以直接新建XDC 的约束文件,手动输入约束命令。

a、先来看第一种方法,利用IO planning

a.1、点击Flow Navigator 中Synthesis 中的Run Synthesis,先对工程进行综合。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第12张图片

 a.2、综合完成之后,选择Open Synthesized Design,打开综合结果。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第13张图片

 a.3、此时应看到如下界面,如果没出现如下界面,在图示位置的layout 中选择IO Ports一项。

a.4、在右下方的选项卡中切换到I/O ports 一栏,并在对应的信号后,输入对应的FPGA 管脚标号(或将信号拖拽到右上方Package 图中对应的管脚上),并指定I/O std。具体的FPGA约束管脚和IO 电平标准,可参考对应板卡的用户手册或原理图)。 

a.5、完成之后,点击左上方工具栏中的保存按钮,工程提示新建XDC 文件或选择工程中已有的XDC 文件。在这里,我们要Create a new file,输入File name,点击OK 完成约束过程。 

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第14张图片

 

 a.6、此时,在Sources 下Constraints 中会找到新建的XDC 文件。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第15张图片

 

b、如何利用第二种方法添加约束文件。

b.1、点击Add Sources,选择第一项Add or Create Constraints 一项,点击Next。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第16张图片

 b.2、点击Create File,新建一个XDC 文件,输入XDC 文件名,点击OK。点击Finish。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第17张图片

 b.3、双击打开新建好的XDC 文件,并按照如图37所示规则,输入相应的FPGA 管脚约束信息和电平标准。

 

本实验电路属于简单的组合逻辑电路,因此可以跳过时序约束设计。

若要实现时序约束,按以下步骤完成。

a、在综合完成后打开选择Open Synthesis Design,或者从Flow Navigator中选择Open Synthesis Design。

b、在Flow Navigator 中选择Synthesis > Synthesized Design > Edit Timing Constraints,打开时序约束界面,为电路添加时钟并配置引脚,进而完成时序约束。

0x01 电路生成

设计网表综合SYNTHESIS和硬件实施IMPLEMENTATION,并生成二进制流文件。

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第18张图片

 

0x02 实验板使用

a、将EGO1实验板通过USB连接电脑,打开实验板电源。

b、点击Flow Navigator 中Open Hardware Manager 一项,进入硬件编程管理(HARDWARE MANAGER),选择Auto Connect连接到板卡,(也可在Flow Navigator 中展开Hardware Manager,点击Open Target,选择Auto Connect连接到板卡)

如下图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第19张图片

 c、连接成功后,在目标芯片上右击,选择“Program Device”。在弹出的对话框中“Bitstream File” 一栏已经自动加载本工程生成的比特流文件,点击“Program”对FPGA芯片进行编程,

如图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第20张图片

 

成功下载后,目标板芯片会显示“Programmed”,如图:

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形_第21张图片

 d、拨动开关SW7和SW6,观察LD2灯组中2-0的状态

 


你可能感兴趣的:(FPGA玩板子,fpga开发,Vivado,Verilog)