代码:只画波形图,逻辑也会出错 感觉波形图挺正确的,但一仿真就发现问题了,cnt_qh在等于13后,即使有下一个valid信号拉高,cnt_qh也不会发生改变,这是因为cnt_qh的计数规则是:当flag_qh为高时,cnt_qh开始计数,计数到13时就停止计数,停止计数是保持13不变,这样的当他为13时就即使flag_qh为高,cnt_qh也不会计数。所以这个波形图在绘制时,没有注意的点是,当下一次开始计数时,cnt_qh是如何归零的,这里的细节没注意到。背景:解析串口的一个字节,如果这个字节为5,则让一个引脚产生一个脉冲信号。
代码:不写位宽的默认是32bit key是一个1bit的变量,这条警告对应的代码是没有规定位宽的,没有规定位宽时的数字量就是32bit。看小梅哥的视频,如果不规定位宽则默认是32bit,如下,有一条警告,翻译为:截断值,大小为 32,与目标值(1)的大小相匹配。
工具:ILA调试AD DA回环测试 6. 注意RFSOC的采样深度,如果是1024,说明只能采1024个时钟周期的数据,如果一个时钟周期是8ns,则ILA一次能采8us的数据,我现在DA输出的是脉冲信号,也就是说如果重频很大、脉宽很小是很有可能采不到的,因此要设置合理的重频、脉宽。在做AD DA回环测试的过程中,将DA回环到AD上,使用ILA看数据。4.注意这里的参考时钟是外部输入的,硬件设计好的了,不能再改动了。5. 注意RFSOC采出来的数据都是有符号数,ILA上要设置正确。下图中前两个信号是空采的,第三个采的是脉冲信号。
软件使用:vivado关联notepad++后莫名报错 之前设置的是UCS-2 BE BOM,改成ANSI后保存代码,vivado就不报错了。发现原来是notepad++的编码方式设置的不对,这里一直没有改动,出错也不可能在第一行出错,
代码:生成比特流文件报错 我是在原本的工程中添加了一个.v文件,并没有做其他的大改动,本来以为和ILA有关,把新调用的ILA函数都注释掉了,结果还是不行,最后找了半天才发现是,改了一个变量的名字,但原变量名还有一处没有修改。
代码:RAM读数据时有一段单元为X,问题记录 仿真跑出来的图,在读数据时,总是出现一段时间的X,想了一下才意识到,一共就0-9个单元,aadr在代码中写的范围是0-15了!所以才导致在地址为10-15时是X。使用的单端口RAM,IP核中设置的位数是9位,No Change 模式。
代码:时序违例 (尤其是整数除法)在硬件设计中通常非常耗时,因为它涉及多个时钟周期才能完成。相比于加法和移位等操作,除法逻辑更加复杂,可能会导致较大的逻辑延迟和路径时序问题。写好除法公式后,能生成bit流文件,但是生成后的Implementation部分有。把除法修改成其他的符号才没有了报错,还是老实使用PL端进行计算吧。带宽是外部设置输入的,因此需要用到除法,为负数,查了一下是时序违规,
工具:Xilinx下载器插上后电脑灯不亮、ISE显示can not find cable 在电脑有vivado的基础上安装的ISE14.6,遇到了问题,一直不能识别到仿真器,重新加载了license成功了