一、问题:
笔者的毕业设计是基于FPGA的数字水平仪设计
在编辑Verilog代码文件的时候需要一个一千行的case语句,目的是为了做一个函数查找表,根据自变量转换之后的地址码来查找该自变量对应的函数的值。需要存储的值有一千个。
需要的语句类似于这种
二、解决方法
1、因为函数数据是根据MATLAB算出来的,所以思路是在MATLAB是编辑一个文本文档,采用一个for循环来输出不同的地址值很函数值,以及相同的字符:
2、将命令窗口输出的结果保存再记事本中。
地址—函数映射图如下
然后开始新建一个MATLAB文本文件:采用for循环的方式来书写语句,
for i=1:1006
A=[ '10''d' num2str(i) ':' 'angle=8''d' num2str(c(i)) ';' ];
disp(A)
end
这里需要注意的点是:
1、在MATLAB中有一些特殊字符的输出,其中单撇号“ ’ ”,的对应的字符为“ ‘’ ”,也就是说,当需要输出单撇号的字符的时候,我们需要用两个单撇号来代替“ ‘’ ”
2、MATLAB中的for循环需要加上end 来结束。
3、如果需要输出不带‘ [ ] ’的数据,可以将所有的结果放进一个矩阵变量,在笔者这里就是A。
三、结果
最后截取一部分循环出来的代码:
10'd824:angle=8'd33;
10'd825:angle=8'd33;
10'd826:angle=8'd33;
10'd827:angle=8'd33;
10'd828:angle=8'd32;
10'd829:angle=8'd32;
10'd830:angle=8'd32;
10'd831:angle=8'd32;
10'd832:angle=8'd32;
10'd833:angle=8'd32;
10'd834:angle=8'd32;
10'd835:angle=8'd32;
10'd836:angle=8'd32;
10'd837:angle=8'd31;
10'd838:angle=8'd31;