FPGA
pyh880
这个作者很懒,什么都没留下…
展开
-
Vivado 除法器IP核 小数模式(Fractional)下结果的修正
在使用Vivado的除法器IP核时,Remainder Type可以选择为余数模式(Remainder),或者小数模式(Fractional)。输出的结果即为整数+余数(或者小数):而当输入信号是有符号数据时,小数模式下的数据是无法直接使用的,因为小数部分也会自带一个符号(可视作一个无整数位的定点数),所以需要进一步修正。在使用过程中,对可能出现的三种情况 进行说明1.若结果无整数部分,则直接对小数部分根据要求进行操作即可。2.若结果存在整数部分,则对数据的正负进行判断:若为正数,则舍去小数原创 2022-01-06 10:25:12 · 6551 阅读 · 1 评论 -
Verilog中整数取反的溢出问题
在写Verilog代码中,常常会将一个整数取反(将定点化后的数也视为整数,因为操作一致),通常的做法是:step1:位取反;step2:+1。 但在写代码的过程中发现了,这样会存在溢出的问题。比如对一个4bit的数-8(二进制1000)取反+1后依旧是-8(1000),这样便是取反溢出了。究其原因,我觉得是因为0000和1000都是表示0的,但在补码中让1000表示了-8导致的,所以需要人为多进行一步判断,将-8变为+7(因为最大只能表示到+7)。以下是我写的一个简单的...原创 2021-11-30 18:43:40 · 1299 阅读 · 1 评论 -
Verilog读写文件以及验证数据准确性
在完成FPGA代码后往往需要先进行功能仿真,而最直观观察对错的方案便是将FPGA生成的数据与MATLAB生成的数据进行对比,若定点合理且代码正确,误差往往会在预期范围内,譬如,数据定点为(1,16,10),那么转换后的小数后三位应该是与MATLAB一致的(1/(2^10)=0.0009)。关于定点化后续会谈,下文会写一些FPGA读取,写入数据的方式。FPGA生成数据的写入与读取此处的写入或者读取往往是在tb文件中的,主程序中不推荐使用。读取:其中readmemb表示读取的是二进制...原创 2021-11-02 22:19:13 · 1016 阅读 · 0 评论