知乎上看到RS官方账号的点赞和评论,备受鼓舞,又有了写东西的动力。平时一直在使用RS家的信号源、频谱仪等,确实功能很强大。
进入正题:
某年某月某日...
数据记录的必要性
在程序基本功能已经实现的情况下,项目转入集中测试与排故阶段时,这个时候一般来说就会测试出各种各样的问题。作为一个完整的通信系统或通信设备,往往集成了多个模块软件,遇到问题的时候,如果仅从现象出发,往往比较难定位。
然后呢,各个软件开始抓包,抓取问题数据进行分析,如果是FPGA的话可能需要重新抓取数据,而编译时间又较慢,一次抓取分析不出来,可能又要再抓取新的数据,再去编译,如此下来,一天时间可能就过去了,如果问题又是偶发出现的,则复现问题又要耗费大量的时间。
这个时候,数据记录就很有必要性了,在各个软件中,考虑各自软件想要记录的信息,加入数据记录逻辑,并加入数据记录相应的接口,通过相应的线路传输至数据记录硬件模块,存入存储器。
在设备运行过程中,记录下各个时间的状态信息,最终通过解析数据记录,回溯出问题时候的状态,以此分析问题原因,省去了抓取数据、编译程序、挂仿真器等步骤,更方便高效。
基于RAM的数据记录
从上述方式可以看出,完备的数据记录系统,需要多个软件协同,设计好数据记录的内容和格式,设计好数据传输路径,有数据记录硬件模块,有数据记录解析软件。
这里我想说的一种情况,也是我之前实际遇到的,也就是在项目比较着急的情况下,来不及规划数据记录系统时,该怎么办呢?
当时想到一种基于RAM的数据记录方式,具体操作就是,例化一个深度较大的RAM,将想要记录的信息作为RAM的数据输入,可以拼接不同的信息变量输入,也可以单独输入。
RAM的写使能用事件触发,或者周期触发,比如每次发送的时候记录一次即写一次,或者每隔100ms记录一次即写一次。
那么怎么把数据记录内容取出来呢?可以同时加一个VIO和ILA,ILA同时抓取VIO的输出和RAM的输出,通过VIO输出信号的上升沿触发,并在VIO输出信号变高时从RAM中读出数据,触发后导出数据分析即可。
举一反三
其实不仅数据记录,在某些难以一次性抓取数据的场景下,都可以用这个方法,将想要抓取的数据,在特定条件下写入RAM,不写其他无用的数据,最终触发后读出即可。
Tips
全部0条评论
快来发表一下你的评论吧 !