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就是高电平

相关推荐
咸鱼翻身小阿橙17 小时前
现在这个四通道出现的问题
学习
wgego18 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
云贝教育-郑老师19 小时前
OceanBase 是如何搞定海量数据分片(Sharding)的?
学习·oceanbase·dba
编程圈子19 小时前
电机驱动开发学习23. 保护体系与故障状态机
驱动开发·学习
别动我齐刘海20 小时前
Day6 unitree_G1人形机器人GMR—— MotionInput
c语言·c++·人工智能·学习·机器学习·机器人·github
weixin_4526006920 小时前
D2632大电流低差压可调线性稳压器介绍,D2632可替换MIC29302
fpga开发·机器人·无人机·电动工具·车载摄像头
神秘的MT21 小时前
C# WinForm Socket 服务器 + 串口转发
服务器·网络·学习·c#
依然范特东21 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
zzzll111121 小时前
0基础入门大模型:一份清晰的学习路线图
人工智能·学习·chatgpt
正经人_x1 天前
学习日记48:DenseCLIP
学习