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

news2024/12/27 12:21:40

前言:

本章内容主要是演示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 实验流程分析

 


 Ⅱ. Verilog代码设计 

0x00 工程的创建

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

 

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

 

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

 

 

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

 

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

到此,创建完成! 

 

 0x01 功能电路的创建

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

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

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

 

在对话框中点击create按钮,

 

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

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

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

 

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

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

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

 

 

图 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,

如图:

 

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

 

0x02 添加仿真激励程序

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

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

 

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

 

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

 

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

 

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

 

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

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

 

编辑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,得结构如图: 

 

 0x03 观察记录仿真波形

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

 

 

进入仿真状态,如图:

 

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

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

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

 

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

 

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

 

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

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

0x00 添加硬件约束文件

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

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

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

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

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

 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 完成约束过程。 

 

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

 

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

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

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

 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,并生成二进制流文件。

 

0x02 实验板使用

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

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

如下图:

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

如图:

 

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

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

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研政治 马原 易混淆知识点

马哲 1. 哲学基本问题 从何者为第一性,分为唯物主义和唯心主义 从是否具有同一性,分为可知论(有同一性)和不可知论(无同一性) 辩证法:联系,发展的观点看世界,认为发展的…

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)

文章目录前言一、IP定位1.请求URL2.获取IP定位封装函数3.输出结果二、国内天气查询1.请求url2.天气查询封装函数3.输出结果三、行政区划区域检索1.请求url2.区域检索封装函数3.输出结果四、地理编码1.请求url2.地理编码封装函数3.输出结果五、坐标转换1.请求url2.坐标转换封装函…

一文细说Linux虚拟文件系统原理

在 Unix 的世界里,有句很经典的话:一切对象皆是文件。这句话的意思是说,可以将 Unix 操作系统中所有的对象都当成文件,然后使用操作文件的接口来操作它们。Linux 作为一个类 Unix 操作系统,也努力实现这个目标。 虚拟…

CSS 这个就叫优雅 | 多行文本溢出省略

CSS 这个就叫优雅 | 多行文本溢出省略 文章目录CSS 这个就叫优雅 | 多行文本溢出省略一、文本溢出省略方式二、WebKit内核浏览器解决方法🥙三、通用解决方法四、CSS 预处理器封装🥩五、参考资料💘六、推荐博文🍗一、文本溢出省略方…

小样本学习(Few-Shot Learning)训练参数意义

一、常规参数 1.1 epoch 是指所有的训练数据都要跑一遍。假设有6400个样本,在训练过程中,这6400个样本都跑完了才算一个epoch。一般实验需要训练很多个epoch,直到LOSS稳定后才停止。 1.2 batch_size 中文名称是批大小,之前的640…

【数据结构趣味多】二叉树概念及性质

1.树的定义 定义:树(Tree)是n(n>0)个结点的有限集。n0时称为空树。在任意一棵非空树种; 有且仅有一个根结点(root)。当n>1时,其余结点可分为m(m>0&a…

H13-531云计算HCIE V2.0——400~600常错题和知识点总结

400~600 422、在 FusionCloud 6.x 中,以下关于备份的说法哪项是错误的? A.备份协议支持本地,通过 FTP/SFTP 到第三方服务器及 OBS B. 为了保证系统稳定运行,对管理数据进行备份恢复可以确保在异常时对业务的影响降到…

没有完美的项目,也轮不到你,找到适合自己的,先干起来再说

首先明确一点,没有百分百完美的项目,即使有,也轮不到你。不要认为你必须先找到一个完美的项目,然后再去工作。这个想法最后的结局就是项目一直在找,观望,迟迟不行动,不赚钱。如果你真的想找个项…

C++ 语法基础课 习题7 —— 类、结构体、指针、引用

文章目录例题1. 21.斐波那契数列2. 16.替换空格3. 84.123...n4. 28.O(1)时间删除链表结点5. 36.合并两个排序的链表例题 1. 21.斐波那契数列 Acwing 21.斐波那契数列 class Solution { public:int Fibonacci(int n) {if(n < 1) return n;return Fibonacci(n - 1) Fibon…

并发编程 - ThreadLocal

前言 ThreadLocal 用于解决多线程对于共享变量的访问带来的安全性问题。ThreadLocal 存储线程局部变量。每个线程内置 ThreadLocalMap&#xff0c;ThreadLocalMap 的 key 存储 ThreadLocal 实例&#xff0c;value 存储自定义的值。与同步机制相比&#xff0c;它是一种“空间换…

vue性能优化之预渲染prerender-spa-plugin+vue-meta-info解决seo问题

单页面应用中&#xff0c;web项目只有一个页面&#xff0c;前端根据路由不同进行组件之间的对应切换&#xff0c;动态的渲染页面内容。这就是客户端渲染&#xff0c;具有减少服务器端压力、响应速度快等优点。但是单页应用在优化用户体验的同时&#xff0c;也给我们带来了一些对…

阅读 | 001《人工智能导论》(三)知识应用篇1

文章目录知识应用第9章、专家系统9.1 专家系统概述9.2 推理方法9.3 一个简单的专家系统9.4 非确定性推理9.5 专家系统工具9.6 专家系统的应用9.7 专家系统的局限性9.8 本章小结第10章、计算机视觉10.1 计算机视觉概述10.2 数字图像的类型及机内表示10.3 常用计算机视觉模型和关…

计算机重装系统方法教程

​计算机在使用的过程中出现各种问题也是在所难免的&#xff0c;当计算机出现了一些系统故障问题没有办法解决时&#xff0c;或是计算机使用长了以后运行就会变得越来越慢时&#xff0c;这时大家可以考虑通过电脑重装系统来解决&#xff0c;那么&#xff0c;计算机如何重装系统…

ArcGIS基础实验操作100例--实验71多图层叠加查询

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验71 多图层叠加查询 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&am…

MATLAB——PCM编译码实验

目录MATLAB——PCM编译码一、实验原理1.掌握PCM编码原理和译码原理2. 练习使用Matlab编程实现PCM编码和译码3. 了解失真度的概念&#xff0c;能对译码结果进行失真度分析二、实验原理三、实验要求1、用Matlab产生一模拟信号&#xff0c;如&#xff1a; 或者自己编写一信号&…

“微综艺+虚拟场景”,蓝海创意云利用元宇宙技术撬动流量杠杆

1月1日&#xff0c;抖音微综艺节目“友问必答”2023新年直播盛大开幕&#xff0c;蓝海创意云利用vLive虚拟直播系统为此档节目搭建了专属的“元宇宙问答直播间”&#xff0c;整场直播观看人次突破 30W 人次&#xff0c;最高同时在线人数达 3W 人次&#xff0c;独特的直播形式和…

基于Spring+Mybatis框架的人事管理系统源码+数据库,含视频部署教程

人事管理系统 下载地址&#xff1a;基于SpringMybatis框架的人事管理系统源码数据库 部署说明&#xff1a; 项目启动后&#xff0c;在浏览器中访问地址&#xff1a;http://127.0.0.1:8080/personnel/ 由于很多同学反映部署有问题&#xff0c;所以我录了一个视频来演示一下&…

【Python爬虫项目实战】Python爬虫采集某外包平台数据保存本地

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、开发工具二、环境搭建三、数据来源查询分析四、代码实现1. 发送请求2.数据获取3.解析数据4. 保存数据总结前言 今天给大家介绍的是Python爬虫某外包平台数据…

架构设计---搜索引擎的原理

前言&#xff1a; 搜索引擎的倒排索引&#xff0c;数据的搜索与查找技术是计算机软件的核心算法&#xff0c;这方面已有非常多的技术和实践经验。而对于搜索引擎来说&#xff0c;要面对海量的文档进行快速的内容检索、查询的话&#xff0c;最主要的技术是倒排索引技术。 像百…

从0.5到4.0,OceanBase单机分布式一体化的技术演进|DTCC 2022

2022 年 12 月 14 日~16 日&#xff0c;由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办的第 13 届中国数据库技术大会&#xff08;DTCC 2022&#xff09;在线上隆重召开。大会以“数据智能 价值创新”为主题&#xff0c;上百位技术领袖齐聚云端&#xff0c;进行多维度、…