Xilinx系FPGA学习笔记(四)VIO、ISSP(Altera)及串口学习

系列文章目录


文章目录


VIO(Vivado)

VIO 的全称叫 Virtual Input/Output,建立一个虚拟的输入/输出信号,可以对需要调试的模块的输出信号的数值进行在线的查看,以及模拟一些信号输给需要调试模块,方便调试查找问题和验证模块的实际上板工作的正确性。该工具和 Altera Quartus 中的 ISSP 工具类似。

设置输入

这里有一个提示,提示通过该界面设置最多可设置 64 个探针,如果想设置更多的探针需要使用 Tcl 脚本命令去设置

设置输入输出的个数/位数、默认值

使能 Input Probe 的 Active detectors 功能,每个 VIO Croe 输入都有额外的单元来捕获输入信号的变化。由于设计时钟(待捕获的信号所处的时钟)可能比分析仪的采样时钟要快,因此被监测的信号可能在连续采样之间多次变化。Active detectors 功能就是用来捕获此行为,让其结果与 vivado 逻辑分析器中的值一起显示。

然后我们在对应的模块里面例化该ip核就行

c 复制代码
//使用 vio 设置串口发送数据
vio_0 vio_0 (
.clk(clk), // input wire clk
.probe_out0(test_en), // output wire [0 : 0] probe_out0
.probe_out1(data_byte) // output wire [7 : 0] probe_out1
);

之后编译下载 bit 文件,还同时需要下载 ltx 文件,ltx 文件是由于添加在线调试工具 VIO IP Core 额外产生的,这个文件生成位置和 bit 文件是在同一个目录下,下载的时候,软件会自动关联到 ltx 文件和 bit 文件一起下载到板子

下载后,点击右边 vio 界面的 +,选择要添加的信号

对于单bit信号,右键可以设置为按键,以右键Active-High Button为例,可以将其设置为一个按键,按键按下,test_en 的值变为 1,松开鼠标后值变为 0

ISSP(Altera)

IP核--ISSP (Iln-System Sources and Probes),这个IP核可以提供一个输出用来在线输出,相当于一个简单的信号发生器--Source,此外还可以提供探针Probes来在线监控信号的输出。

选择是否指定例化IP的编号,默认设置,不用修改

是否设置IP核的ID号。因为在一个工程中,可以例化多个In-System Sources and Probes Editor IP核,该ID号就是用来区分不同的IP核

用来设置探测(Probes)端口,probe功能我们用来检测信号,以此验证输入数值是否能有对应的正确输出,位宽设置为7,

用来设置驱动(Sources)端口,比如我们检测一个模块是否正常的时候,source可以用于输入,probes用于检测输出

高级设置选项。可以用来设置驱动信号的初始值以及发送驱动信号是否与源时钟同步。(通常保持默认即可)

下载程序后,在Quartus ll中Tools打开In-System Sources and Probes Editor,然后就可以观测数据了,看上去类似signeltap

c 复制代码
//例化ISSP IP核
Sou_Pro	Sou_Pro_inst (
	.probe 			(xxx	),			
	.source 		(xxxxx  )			
);

串口学习

FPGA串口发送

首先根据波特率设置一个合适的数据发送时钟,之后在发送端口赋值就行,有起始位、数据位、停止位的共10bit

设置一个发送开始和结束标志信号,方便外部模块调用

有一点注意:发送的数据是外部给的,这个数据该打几拍,是否是跨时钟域的

下图是打排一次的情况,这是必要的,串口数据发送的时候,这个数据不能变,但如果跨时钟域,是否该打拍两次呢?这样数据会延后两个时钟周期,对应的程序设计也要打排,可以把使能信号也打排延迟,进行对齐

FPGA串口接收

串口接收,首先要对数据线打拍寄存,捕获边沿,抓取起始位,之后如何获取数据有各自不同的方式

可以在一位数据的时钟周期中间抓取高低电平,也可以抓取几次,例如在中间抓8次,累计,最后计数值大于4就是高电平

相关推荐
lichuangcsdn1 小时前
【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)
学习·spring cloud·eureka
靡樊1 小时前
网络基础概念
linux·服务器·网络·c++·学习
tiantianuser1 小时前
NVMe简介1
fpga开发·nvme·可编程逻辑·verilogy
郭尘帅6661 小时前
vue3基础学习(上) [简单标签] (vscode)
前端·vue.js·学习
虾球xz2 小时前
游戏引擎学习第279天:将实体存储移入世界区块
c++·学习·游戏引擎
yanyanwenmeng2 小时前
智能体制作学习笔记2——情感客服
笔记·学习
FPGA_ADDA2 小时前
基于RFSOC ZU28DR+DSP 6U VPX处理板
fpga开发·dsp·rfsoc28dr·zu28dr·射频采集
笑鸿的学习笔记2 小时前
虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析
笔记·ue5·虚幻
Cloud Traveler2 小时前
从 “学会学习” 到高效适应:元学习技术深度解析与应用实践
人工智能·学习·自然语言处理
孤寂大仙v2 小时前
【Linux笔记】——Linux线程理解与分页存储的奥秘
linux·运维·笔记