VIVADO使用TCL控制VIO核批量写寄存器

文章讲述了在Vivado中调试FPGA时如何使用VIO核和TCL脚本来高效设置和验证多个寄存器。通过实例展示了如何编写和执行TCL命令以及TCL文件来改变寄存器状态,同时指出尽管TCL控制具有便利性,但响应速度可能较慢,不适合需要精确时序控制的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用vivado调试FPGA过程中,通常需要ARM或CPU向FPGA下发指令或配置寄存器,在与ARM或CPU联调之前,需要验证FPGA逻辑是否正常,因此一般需要用到vio核。当涉及单个寄存器控制时,手动输入即可,但很多时候需设置多个寄存器来实现功能的控制,比如滤波器参数配置、ad芯片SPI寄存器控制等,此时可通过TCL批量操作VIO核,避免手动逐个输入,极大提高开发效率。

比如vio例化代码:

vio_adc_cfg vio_adc_cfg (
  .clk(PSCLK),                // input wire clk
  .probe_out0(cfadcwdat[23:0]),  // output wire [23 : 0] probe_out0
  .probe_out1(cfadcEn)  // output wire [0 : 0] probe_out1
);

生成bit并且烧写后,使用tcl控制vio:

1.  tcl栏直接输入

set_property OUTPUT_VALUE 1 [get_hw_probes cfadcEn -of_objects [get_hw_vios hw_vio_2]]
commit_hw_vio [get_hw_probes {cfadcEn} -of_objects [get_hw_vios hw_vio_2]]
set_property OUTPUT_VALUE 0 [get_hw_probes cfadcEn -of_objects [get_hw_vios hw_vio_2]]
commit_hw_vio [get_hw_probes {cfadcEn} -of_objects [get_hw_vios hw_vio_2]]

 即可以实现cfadcEn信号到1再到0。

上述tcl语句中,commit_hw_vio表示将hw_probe OUTPUT_VALUE属性值写入VIO核。注意,TCL语句中VIO名称(hw_vio_2)不是模块中例化的名称(vio_adc_cfg),如果使用vio模块名称,语法如下:

set_property OUTPUT_VALUE 1 [get_hw_probes cfadcEn -of_objects [get_hw_vios -of_objects [get_hw_devices xc7z045_0] -filter {CELL_NAME=~" vio_adc_cfg "}]]

2.  编写tcl文件,从tcl栏打开此文件

比如在D:/04_record/vio路径下新建tcl文件,写入:

set_property OUTPUT_VALUE 000010 [get_hw_probes cfadcwdat -of_objects [get_hw_vios hw_vio_2]]
commit_hw_vio [get_hw_probes {cfadcwdat} -of_objects [get_hw_vios hw_vio_2]]

然后将此文件保存。

在vivado tcl控制台输入       

cd D:/04_record/vio

修改工作目录为vio文件夹下,继续输入

source vio_tcl.tcl

可执行tcl中的内容。

 可见,当使用vio控制执行多个寄存器或同一寄存器多个值时,编写一个tcl文件即可轻松实现。

3. vio控制的实时性

不使用tcl控制vio时,手动连续更改寄存器值,间隔时长无法保证,通常为秒级延迟。为验证使用tcl控制的时间,使用ila抓取控制信号进行测试。

验证每条命令响应时间是否是一个clk时钟,使用ila观察被控制的信号如下图:(tcl语句是控制ps1_wr_en信号写1后立即写0)

可见,写后并不是一时钟周期就改变,响应比较慢,不可实现精确的控制。此次测试至少大于4000个时钟周期,至于具体关系还没有完全验证,这点在使用时是需要注意的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值