文章目录

  • 前言
  • 一、IP核的介绍
  • 二、VIO核
    • 1.作用
    • 2.调用方法
  • 总结

前言

提示:本篇文章所使用的软件为Vivado2018.3:

以四选一数据选择器为例,使用verilog hdl语言以及Vivado自带的VIO,IP来实现功能


提示:以下是本篇文章正文内容,下面案例可供参考

一、IP核的介绍

IP核有三种不同的存在形式:HDL语言形式,网表形式、版图形式。分别对应我们常说的三类IP内核:软核、固核和硬核。软核就是RTL代码,方便修改。固核是综合后的网表,不宜修改。硬核就是经过完整后端设计的掩模,基本不能修改。
简单来说,就是相当于嵌入式开发调用的库文件。下面以VIO核为介绍,简单阐述IP的调用方法

二、VIO核

1.作用

VIO:Virtual input output,即虚拟IO。
主要用作虚拟IO使用;VIO的输出可以控制模块的输入,VIO的输入可以显示模块的输出值。 即在设置VIO的输入和输出时,将实际应用中的输入设置成VIO核中的输出,将实际应用中的输出设置成VIO核中的输入。
连接如下图:
代码如下(示例):

2.调用方法

1).添加源文件。

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/04/07 14:46:17
// Design Name: MoWenQi
// Module Name: MUX4_MWQ
// Project Name:
// Target Devices:
// Tool Versions:
// Description: 基于verilog hdl调用VIO核的四选一多路器
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module MUX4_MWQ(input sys_clk );    //定义一个输入时钟信号reg[3:0] out;                   //定义四位的一个输出wire[1:0] a, b, c, d;           //定义四个2位的输入wire[1:0] sel;                  //定义一个两位的sel使能端always @(*)                     //always模块中的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行。包括电平触发和时沿触发begin                           //自上而下,按照顺序逐个对分支表达式进行判断,如果这一分支表达式等于控制表达式的值,就执行其对应操作;均不相等时,执行default操作;case(sel)                     //判断条件为sel的值2'b00: out=a;               //当sel为 00 时 把a的值赋值给out2'b01: out=b;               //当sel为 01 时 把b的值赋值给out2'b10: out=c;               //当sel为 10 时 把c的值赋值给out2'b11: out=d;               //当sel为 11 时 把d的值赋值给outdefault: out=2'bx;          //武上述条件时,把out赋值x不确定态endcaseend
endmodule

2).点击IP Catalog-搜索VIO进行添加(完成初始化配置)


3)对输入输出个数和位宽的配置



点击生成

4)例化
点击IP Sources-打开vio-0.evo文件

找到vio_0.evo文件中大概57行,拷贝到源文件中,将()里面的名称改成源文件的名称

vio_0 your_instance_name (.clk(clk),                // input wire clk.probe_in0(probe_in0),    // input wire [3 : 0] probe_in0.probe_out0(probe_out0),  // output wire [1 : 0] probe_out0.probe_out1(probe_out1),  // output wire [1 : 0] probe_out1.probe_out2(probe_out2),  // output wire [1 : 0] probe_out2.probe_out3(probe_out3),  // output wire [1 : 0] probe_out3.probe_out4(probe_out4)  // output wire [1 : 0] probe_out4
);

再进行,分析综合,布局布线

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/04/07 14:46:17
// Design Name: MoWenQi
// Module Name: MUX4_MWQ
// Project Name:
// Target Devices:
// Tool Versions:
// Description: 基于verilog hdl调用VIO核的四选一多路器
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module MUX4_MWQ(input sys_clk );    //定义一个输入时钟信号reg[3:0] out;                   //定义四位的一个输出wire[1:0] a, b, c, d;           //定义四个2位的输入wire[1:0] sel;                  //定义一个两位的sel使能端always @(*)                     //always模块中的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行。包括电平触发和时沿触发begin                           //自上而下,按照顺序逐个对分支表达式进行判断,如果这一分支表达式等于控制表达式的值,就执行其对应操作;均不相等时,执行default操作;case(sel)                     //判断条件为sel的值2'b00: out=a;               //当sel为 00 时 把a的值赋值给out2'b01: out=b;               //当sel为 01 时 把b的值赋值给out2'b10: out=c;               //当sel为 10 时 把c的值赋值给out2'b11: out=d;               //当sel为 11 时 把d的值赋值给outdefault: out=2'bx;          //武上述条件时,把out赋值x不确定态endcaseendvio_0 MUX4_MWQ (.clk(sys_clk),                // input wire clk.probe_in0(out),    // input wire [3 : 0] probe_in0.probe_out0(a),  // output wire [1 : 0] probe_out0.probe_out1(b),  // output wire [1 : 0] probe_out1.probe_out2(c),  // output wire [1 : 0] probe_out2.probe_out3(d),  // output wire [1 : 0] probe_out3.probe_out4(sel)  // output wire [1 : 0] probe_out4
);
endmodule

添加约束文件,进行管脚分配

create_clock -period 20.00 -name clk [get_ports sys_clk]set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports sys_clk]

总结

后面测试部分等拿到板子再仿真测试

Vivado调用VIO核相关推荐

  1. FPGA设计中,Vivado 调用IP核详细操作步骤

    FPGA设计中,Vivado 调用IP核详细操作步骤 今天给大侠带来了FPGA设计中,Vivado 调用IP核详细操作步骤,话不多说,手把手教学,请往下看. 首先咱们来了解一下vivado的IP核,I ...

  2. vivado调用IP核详细介绍

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  3. 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩

    弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩 IP核:知识产权核,指某一方提供的.形式为逻辑单元的可重用模块.IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以 ...

  4. 调用IP核、移植/复制IP核以及解决IP核被锁住/红锁问题(基于vivado)

    在上一篇的文章中:https://blog.csdn.net/weixin_44502554/article/details/126228405?spm=1001.2014.3001.5502 讲述了 ...

  5. FPGA series # 关于ChipScope的ICON核、ILA核和VIO核

    刚入门接触vivado其实是陌生的,陌生之处在于不了解历史.即使是日益更新的技术也是从最初那个0和1一点点垒起来的,每当看到类似于这就是可以这么做,你不用去知道它底层怎么跑的,只要知道怎么使用就行这种 ...

  6. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  7. modelsim 独立仿真vivado fifo IP核

    1.前言 vivado内自带仿真器,或者可以通过vivado启动第三方仿真工具,联合仿真.但是很多时候,我们希望脱离vivado,利用modelsim或者vcs等第三方仿真工具,高效地仿真.本文介绍如 ...

  8. Vivado FIFO IP核接口信号介绍

    1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...

  9. Vivado MMCM IP核接口信号介绍

    1.1 Vivado MMCM IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado MMCM IP核接口信号介绍: 5)结束语. 1.1.2 ...

最新文章

  1. Application package 'AndroidManifest.xml' must have a minimum of 2 segments错误
  2. 阿里Sentinel控制台源码修改-对接Apollo规则持久化
  3. cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务
  4. tcppwebbrower 关闭安全警报_【知识】锅炉与压力容器安全
  5. 数据结构实验之查找四:二分查找
  6. eclipse 取消置顶
  7. 百度图神经网络学习——day01
  8. 这是我的第一个用例图
  9. co88 sap 实际结算_SAP 物料帐的基本原理
  10. 怎么批量修改图片尺寸大小?
  11. VMWare安装Win10虚拟机详细教程
  12. 阿里云服务器哪个便宜?
  13. 《禅者的初心》读书笔记(3)
  14. Lync Server 2013 实战系列之七:标准版-测试内部登陆
  15. linux备份文件命令
  16. linux 嵌入式 快照_Linux下搭建Cortex-M嵌入式开发环境
  17. 【手把手教安装】VM16 Pro安装Win10!!!
  18. Fragment 可见性监听方案 - 完美兼容多种 case
  19. 私藏!认认真真推荐几个技术公众号
  20. 字符串判断相等和不相等

热门文章

  1. 计算机运算定律,乘法运算定律
  2. 把Excel表格通过MySql Workbench导入数据库表中的使用总结
  3. 3. 10分钟学会ts类型 之 ts新增类型
  4. SQL 插入前校验是否存在重复数据
  5. 「目前最好的文生视频AI」来了!做广告、电影都不在话下,网友:很丝滑
  6. Cisco VXLAN配置
  7. 中級から学ぶ日本語_なぞなぞ
  8. java字符串计算_java处理字符串公式运算
  9. neovim常用命令
  10. 芯片翻译之ICM20602(一)