0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你学Vivado—以2选1多路选择器为例

冬至子 来源:电子技术实验XJTU 作者:孙敏 2023-10-02 15:58 次阅读

设计任务

在EGO1开发板上实现2选1多路选择器。

设计分析

(1)设计电路逻辑关系如下图,明确输入、输出信号

图片

▲ 2选1多路选择器

(2)确定信号与FPGA引脚关系。(将在第6步添加设计约束中用到)

图片

根据丝印标识可知如下对应关系。(可参考硬件原理图或EGO1用户手册)

a→P4 //SW6

b→P5 //SW7

sel→R1 //SW0

out→F6 //LD2-7

设计流程

1. 创建FPGA设计工程

(1)双击桌面图标启动vivado。

图片

(2)创建一个FPGA工程。

图片

(3)进入新建工程向导。

图片

(4)填写工程名称和路径,选择“Create project subdirectory”。

图片

(5)选择创建“RTL Project”。勾选复选框“Do not specify sources at this time”(不在当前阶段创建源程序)。

图片

(6)选择设计所用的具体FPGA型号,可以根据器件系列,封装,速度等级以及温度级别进行筛选,也可以直接填入器件型号进行搜索。EGO1开发板所用芯片为Xilinx公司xc7a35tcsg324-1 ,属于Artix-7系列,封装为csg324,速度等级为-1。

图片

(7)工程信息概览,单击“Finish”,完成工程创建。

图片

2. 添加源文件

(1)有四种方式可以打开源程序添加窗口。

图片

可以创建约束文件,设计源文件和仿真文件。这里选择创建设计源文件Add or create design sources。

图片

(2)选择“Create File”,弹出对话框中输入文件名“mux2_1”。

图片

图片

图片

(3)模块端口定义,可以添加模块的端口信号。也可以选择不添加,待后续直接在源程序界面输入程序。

图片

设计主界面中sources窗口下出现了如下图所示的mux2_1.v源程序文件,双击打开文件,添加代码。

图片

(4)添加Verilog HDL描述。对同一个电路可以有多种描述方式,以下给大家提供了2类主要功能定义的方法,4种不同的语句描述。请选择1种添加到源程序中。

1.jpg

1.jpg

(5)编辑完成后,保存源文件。

3. RTL分析

用Verilog语言描述电路的时候,可能出现语法或逻辑上的错误。一般语法错误在编写程序的过程中,vivado会自动检测并在程序界面中有所提示,在Messages中也会提示“Error”。对于逻辑错误软件是不会提示的,最多在Messages中的“Warning”提示中找到一些蛛丝马迹。而设计者可以利用RTL分析进行逻辑和功能检查。

(1)点击左侧流程向导栏(Flow Navigator)中的“Open Elaborated Design”,弹出提示框,点“OK”。

图片

图片

(2)RTL原理图查看。下图即打开的RTL原理图。该原理图是根据HDL描述生成的,可以根据原理图检查设计是否符合要求。

图片

4.行为仿真

检验设计是否满足功能要求。如果直接在FPGA芯片上测试,可能因为多次综合、实现而浪费时间。

(1)创建仿真文件sim_mux2_1.v。添加方法与添加源程序方法相同,但选择的是Add or Create Simulation Sources选项。

图片

(2)按下图操作,直接点击“OK”→“Yes”,不添加端口定义。

图片

(3)sources窗口中双击打开仿真文件sim_mux2_1.v,输入代码。这里提供两种测试代码供大家参考比较。

参考代码a:

图片

参考代码b:

图片

(4)保存。保存文件后,sim_mux2_1.v自动变成顶层文件(品字形图标标识),否则,右键选择“Set as Top”。mux2_1.v为下层模块,模块名为uut。

图片

(5)运行仿真。单击左侧Flow Navigator中Run Simulation,选择Run Behavioral Simulation。

图片

(6)观察仿真波形。

图片

代码a仿真结果:

图片

代码b仿真结果:

图片

5.设计综合

综合: 将较高层次逻辑设计代码或原理图等设计输入转化为较低层次的由FPGA芯片中底层基本单元表示的电路网表。

(1)单击左侧Flow Navigator中的Run Synthesis。

图片

综合运行时,在软件右上角会显示当前状态,如下图所示。

图片

(2)运行完毕,弹出对话框,选择Open Synthesized Design,会自动打开Device窗口,显示的是芯片内部构架。

图片

图片

▲ Artix-7 FPGA器件的内部结构图

(3)打开Schematic,可以看到综合后的原理图,采用的是FPGA中基本单元搭建的,如本实验使用了一个LUT3查找表。

图片

图片

(4)在Sources窗口下方Cell Properties窗口中,选择Truth Table,可以看到逻辑表达式和真值表。

图片

(5)单击Report Utilization,可以查看当前设计的资源利用率的详细报告。

图片

图片

可以看到本设计使用了 1个LUT ,总共20800个,利用率小于0.01%; 4个I/O ,总共120个,利用率为1.90%。

图片

6.添加设计约束

(1)在Window下拉菜单中选择I/O Ports。

图片

(2)按照下图修改电压标准,添加端口对应的FPGA引脚编号。

图片

(3)保存。Sources视图中可以看到Constraints目录下生成的mux2_1.xdc文件。打开可以看到自动生成的约束代码,如下图所示:

图片

(4)在Window下拉菜单中选择Package,可以打开I/O规划视图,如下图所示。可以看到设计所占用的FPGA引脚分布(图中用红色圆圈标识)。

图片

添加约束的快捷方式:新建空白约束文件,打开EGO1官方提供的约束文件“EGo1.xdc”,选择相应的约束语句,直接拷贝,并修改端口名称即可。

7.设计实现

实现: 将综合后的电路网表针对具体指定器件以及相关物理与性能约束进行优化、布局、布线并生成最终可以下载到FPGA芯片内的配置文件的过程。

(1)单击左侧Flow Navigator中的Run Implementation。

图片

(2)实现过程结束后弹出对话框,可以选择Open Implemented Design,也可以选择Generate Bitstream(生成配置FPGA的比特流文件)。这里选择Open Implemented Design。

图片

可以看到在器件结构图中设计所用到的器件,如图中红色圆圈标识部分,可以放大查看。

图片

点击工具栏中布线图标,放大视图,可以看到器件之间的连线(图中绿色部分)。

图片

图片

8.时序仿真

时序仿真: 之前的行为仿真是功能仿真,并未涉及毛刺、竞争冒险等时序问题。实现执行后器件完成了布局布线,在此阶段后的仿真可得到各种时序所导致的延时问题。

(1)单击Run Simulation,在浮动菜单中单击Run Post-Implementation Timing Simulation。

图片

(2)仿真波形如下,调整波形,可以观察信号延时。下图中,输入信号a在100ns处由0变为1,而输出信号out在108.590ns处才发生变化,时延约8.6ns。

图片

9.比特流文件的生成与下载

(1)实现结束后直接选择Generate Bitstream,或单击左侧Flow Navigator中Generate Bitstream。

图片

(2)将开发板与电脑连接,并确保电源开关打开。点击Open target,单击Auto Connect。

图片

(3)点击Program device,在出现的对话框中直接点击Program,比特流文件就配置到器件中了。

图片

图片

10.实验现象观察

将SW0置0,拨动SW6,则最左侧LED灯随SW6的状态变化;将SW0置1,则LED灯随SW7的状态变化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59693
  • FPGA芯片
    +关注

    关注

    3

    文章

    246

    浏览量

    39775
  • 时序仿真
    +关注

    关注

    0

    文章

    14

    浏览量

    7404
  • HDL语言
    +关注

    关注

    0

    文章

    46

    浏览量

    8908
  • 多路选择器
    +关注

    关注

    1

    文章

    22

    浏览量

    6517
收藏 人收藏

    评论

    相关推荐

    请问有stm32控制41多路选择器的程序吗

    求大神提供stm32控制41多路选择器的程序参考,单片机9,10引脚控制多路选择器
    发表于 01-16 06:35

    EDA四多路选择器的设计

    ’=“01”时,输出Y=D1;令AA‘=“10”时,输出Y=D2;令AA’=“11”时,输出Y=D3;真值表如下:2、方案实施(1)设计思路四
    发表于 04-12 09:17

    41多路选择器是什么?

    Verilog数字系统设计三简单组合逻辑实验2文章目录Verilog数字系统设计三前言一、41多路选择器是什么?二、编程
    发表于 02-09 06:00

    基于FPGA的多路选择器设计(附代码)

    1 :二多路选择器模型 根据上述功能,列出真值表。 图2 :二
    发表于 03-01 17:10

    多路选择器Verilog代码及仿真结果MUX_8

    多路选择器 Verilog代码 附仿真结果(modelsim仿真)
    发表于 03-28 15:27 33次下载

    VHDL例程41选择器

    VHDL例程 41选择器,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-10 17:12 2次下载

    多路选择器有哪些_多路选择器分类介绍

    本文开始介绍了多路选择器的分类与多路选择器的41原理图,其次介绍了
    的头像 发表于 04-27 09:13 3.5w次阅读
    <b class='flag-5'>多路</b><b class='flag-5'>选择器</b>有哪些_<b class='flag-5'>多路</b><b class='flag-5'>选择器</b>分类介绍

    41多路选择器电路图(四款多路选择器电路)

    本文主要介绍了四款41多路选择器电路图。多路选择器是数据
    发表于 04-27 09:37 14w次阅读
    4<b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>电路图(四款<b class='flag-5'>多路</b><b class='flag-5'>选择器</b>电路)

    设计一个1位的二多路选择器及其VHDL描述

    本文首先介绍了二多路选择器真值表,其次介绍了1位二多路
    的头像 发表于 04-27 09:52 3.1w次阅读
    设计一个<b class='flag-5'>1</b>位的二<b class='flag-5'>选</b>一<b class='flag-5'>多路</b><b class='flag-5'>选择器</b>及其VHDL描述

    eda四多路选择器的设计

    本文开始对多路选择器进行了详细介绍,其中包括了多路选择器功能、典型芯片及应用,另外还详细介绍了eda四
    发表于 04-27 10:13 3.4w次阅读
    eda四<b class='flag-5'>选</b>一<b class='flag-5'>多路</b><b class='flag-5'>选择器</b>的设计

    81多路选择器电路图(五款81多路选择器电路)

    多路选择器又称数据选择器。81数据选择器(型号有74151、74LS151、74251、74L
    发表于 04-28 17:25 13.1w次阅读
    8<b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>电路图(五款8<b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>电路)

    Verilog HDL之多路选择器设计

    在数字信号的传输过程中,有时需要从多路输入数据中选出某一路数据,完成此功能的逻辑器件称为数据选择器,即所谓多路开关,简称MUX(Multiplexer)。2
    发表于 07-20 08:56 4603次阅读
    Verilog HDL之<b class='flag-5'>多路</b><b class='flag-5'>选择器</b>设计

    使用Verilog语言实现持续赋值方式定义21多路选择器的程序

    本文档的主要内容详细介绍的是如何使用Verilog语言实现持续赋值方式定义的21多路选择器程序免费下载。
    发表于 10-28 16:54 14次下载
    使用Verilog语言实现持续赋值方式定义<b class='flag-5'>2</b><b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>的程序

    使用Verilog语言实现持续赋值方式定义21多路选择器的程序

    本文档的主要内容详细介绍的是如何使用Verilog语言实现持续赋值方式定义的21多路选择器程序免费下载。
    发表于 10-28 16:54 6次下载
    使用Verilog语言实现持续赋值方式定义<b class='flag-5'>2</b><b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>的程序

    Verilog数字系统设计——简单组合逻辑2(41多路选择器

    Verilog数字系统设计三简单组合逻辑实验2文章目录Verilog数字系统设计三前言一、41多路选择器是什么?二、编程
    发表于 12-05 19:06 15次下载
    Verilog数字系统设计——简单组合逻辑<b class='flag-5'>2</b>(4<b class='flag-5'>选</b><b class='flag-5'>1</b><b class='flag-5'>多路</b><b class='flag-5'>选择器</b>)